pne-ui 4.0.28 → 4.0.30
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.js +28 -3
- package/cjs/component/PneField.js.map +1 -1
- package/cjs/component/PneFieldContext.d.ts +24 -0
- package/cjs/component/PneFieldContext.js +28 -0
- package/cjs/component/PneFieldContext.js.map +1 -0
- package/cjs/component/PneTextField.js +39 -2
- package/cjs/component/PneTextField.js.map +1 -1
- package/cjs/component/dropdown/PneAsyncAutocomplete.d.ts +1 -0
- package/cjs/component/dropdown/PneAsyncAutocomplete.js +13 -4
- package/cjs/component/dropdown/PneAsyncAutocomplete.js.map +1 -1
- package/cjs/component/dropdown/PneAutocomplete.d.ts +1 -0
- package/cjs/component/dropdown/PneAutocomplete.js +11 -3
- package/cjs/component/dropdown/PneAutocomplete.js.map +1 -1
- package/cjs/component/dropdown/PneSelect.js +15 -5
- package/cjs/component/dropdown/PneSelect.js.map +1 -1
- package/esm/component/PneField.js +29 -4
- package/esm/component/PneField.js.map +1 -1
- package/esm/component/PneFieldContext.d.ts +24 -0
- package/esm/component/PneFieldContext.js +22 -0
- package/esm/component/PneFieldContext.js.map +1 -0
- package/esm/component/PneTextField.js +39 -2
- package/esm/component/PneTextField.js.map +1 -1
- package/esm/component/dropdown/PneAsyncAutocomplete.d.ts +1 -0
- package/esm/component/dropdown/PneAsyncAutocomplete.js +13 -4
- package/esm/component/dropdown/PneAsyncAutocomplete.js.map +1 -1
- package/esm/component/dropdown/PneAutocomplete.d.ts +1 -0
- package/esm/component/dropdown/PneAutocomplete.js +11 -3
- package/esm/component/dropdown/PneAutocomplete.js.map +1 -1
- package/esm/component/dropdown/PneSelect.js +15 -5
- package/esm/component/dropdown/PneSelect.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,9 +3,24 @@ 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 PneFieldContext_1 = require("./PneFieldContext");
|
|
6
7
|
const PneField = (0, react_1.forwardRef)((props, ref) => {
|
|
7
8
|
const { children, disabled = false, error = false, fullWidth = true, helperText, helperTextSx, htmlFor, id, label, labelSx, required = false, sx, ...rest } = props;
|
|
8
|
-
const
|
|
9
|
+
const generatedId = (0, react_1.useId)();
|
|
10
|
+
const fieldId = id ?? generatedId;
|
|
11
|
+
const childId = getChildId(children);
|
|
12
|
+
const controlId = htmlFor ?? childId ?? `${fieldId}-control`;
|
|
13
|
+
const helperTextId = helperText ? `${fieldId}-helper-text` : undefined;
|
|
14
|
+
const labelId = label ? `${fieldId}-label` : undefined;
|
|
15
|
+
const contextValue = {
|
|
16
|
+
controlId,
|
|
17
|
+
disabled,
|
|
18
|
+
error,
|
|
19
|
+
fullWidth,
|
|
20
|
+
helperTextId,
|
|
21
|
+
labelId,
|
|
22
|
+
required,
|
|
23
|
+
};
|
|
9
24
|
return react_1.default.createElement(material_1.FormControl, { disabled: disabled, error: error, fullWidth: fullWidth, id: id, required: required, ref: ref, sx: [
|
|
10
25
|
{
|
|
11
26
|
gap: '4px',
|
|
@@ -13,11 +28,13 @@ const PneField = (0, react_1.forwardRef)((props, ref) => {
|
|
|
13
28
|
...(Array.isArray(sx) ? sx : [sx]),
|
|
14
29
|
], ...rest },
|
|
15
30
|
label
|
|
16
|
-
? react_1.default.createElement(material_1.FormLabel, { htmlFor:
|
|
31
|
+
? react_1.default.createElement(material_1.FormLabel, { htmlFor: controlId, id: labelId, required: required, sx: [
|
|
17
32
|
{
|
|
33
|
+
alignSelf: 'flex-start',
|
|
18
34
|
color: error ? 'error.main' : 'text.secondary',
|
|
19
35
|
fontSize: '0.875rem',
|
|
20
36
|
lineHeight: '20px',
|
|
37
|
+
maxWidth: '100%',
|
|
21
38
|
'&.Mui-focused': {
|
|
22
39
|
color: error ? 'error.main' : 'text.secondary',
|
|
23
40
|
},
|
|
@@ -28,7 +45,7 @@ const PneField = (0, react_1.forwardRef)((props, ref) => {
|
|
|
28
45
|
...(Array.isArray(labelSx) ? labelSx : [labelSx]),
|
|
29
46
|
] }, label)
|
|
30
47
|
: null,
|
|
31
|
-
children,
|
|
48
|
+
react_1.default.createElement(PneFieldContext_1.PneFieldContext.Provider, { value: contextValue }, children),
|
|
32
49
|
helperText
|
|
33
50
|
? react_1.default.createElement(material_1.FormHelperText, { id: helperTextId, sx: [
|
|
34
51
|
{
|
|
@@ -38,5 +55,13 @@ const PneField = (0, react_1.forwardRef)((props, ref) => {
|
|
|
38
55
|
] }, helperText)
|
|
39
56
|
: null);
|
|
40
57
|
});
|
|
58
|
+
const getChildId = (children) => {
|
|
59
|
+
if (!(0, react_1.isValidElement)(children)) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
return typeof children.props.id === 'string' && children.props.id !== ''
|
|
63
|
+
? children.props.id
|
|
64
|
+
: undefined;
|
|
65
|
+
};
|
|
41
66
|
exports.default = PneField;
|
|
42
67
|
//# sourceMappingURL=PneField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PneField.js","sourceRoot":"","sources":["../../src/component/PneField.tsx"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"PneField.js","sourceRoot":"","sources":["../../src/component/PneField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface PneFieldContextValue {
|
|
2
|
+
controlId?: string;
|
|
3
|
+
disabled?: boolean;
|
|
4
|
+
error?: boolean;
|
|
5
|
+
fullWidth?: boolean;
|
|
6
|
+
helperTextId?: string;
|
|
7
|
+
labelId?: string;
|
|
8
|
+
required?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface PneFieldControlProps {
|
|
11
|
+
ariaDescribedBy?: string;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
error?: boolean;
|
|
14
|
+
fullWidth?: boolean;
|
|
15
|
+
id?: string;
|
|
16
|
+
required?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface ResolvedPneFieldControlProps extends PneFieldControlProps {
|
|
19
|
+
labelId?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare const PneFieldContext: import("react").Context<PneFieldContextValue | undefined>;
|
|
22
|
+
export declare const usePneFieldContext: () => PneFieldContextValue | undefined;
|
|
23
|
+
export declare const usePneFieldControlProps: (props?: PneFieldControlProps) => ResolvedPneFieldControlProps;
|
|
24
|
+
export declare const mergeAriaDescribedBy: (...ids: Array<string | undefined>) => string | undefined;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeAriaDescribedBy = exports.usePneFieldControlProps = exports.usePneFieldContext = exports.PneFieldContext = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
exports.PneFieldContext = (0, react_1.createContext)(undefined);
|
|
6
|
+
const usePneFieldContext = () => (0, react_1.useContext)(exports.PneFieldContext);
|
|
7
|
+
exports.usePneFieldContext = usePneFieldContext;
|
|
8
|
+
const usePneFieldControlProps = (props = {}) => {
|
|
9
|
+
const fieldContext = (0, exports.usePneFieldContext)();
|
|
10
|
+
return {
|
|
11
|
+
ariaDescribedBy: (0, exports.mergeAriaDescribedBy)(props.ariaDescribedBy, fieldContext?.helperTextId),
|
|
12
|
+
disabled: props.disabled ?? fieldContext?.disabled,
|
|
13
|
+
error: props.error ?? fieldContext?.error,
|
|
14
|
+
fullWidth: props.fullWidth ?? fieldContext?.fullWidth,
|
|
15
|
+
id: props.id ?? fieldContext?.controlId,
|
|
16
|
+
labelId: fieldContext?.labelId,
|
|
17
|
+
required: props.required ?? fieldContext?.required,
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
exports.usePneFieldControlProps = usePneFieldControlProps;
|
|
21
|
+
const mergeAriaDescribedBy = (...ids) => {
|
|
22
|
+
const mergedIds = ids
|
|
23
|
+
.flatMap(id => id?.split(/\s+/) ?? [])
|
|
24
|
+
.filter((id, index, allIds) => id !== '' && allIds.indexOf(id) === index);
|
|
25
|
+
return mergedIds.length > 0 ? mergedIds.join(' ') : undefined;
|
|
26
|
+
};
|
|
27
|
+
exports.mergeAriaDescribedBy = mergeAriaDescribedBy;
|
|
28
|
+
//# sourceMappingURL=PneFieldContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PneFieldContext.js","sourceRoot":"","sources":["../../src/component/PneFieldContext.ts"],"names":[],"mappings":";;;AAAA,iCAA+C;AAyBlC,QAAA,eAAe,GAAG,IAAA,qBAAa,EAAmC,SAAS,CAAC,CAAA;AAElF,MAAM,kBAAkB,GAAG,GAAqC,EAAE,CAAC,IAAA,kBAAU,EAAC,uBAAe,CAAC,CAAA;AAAxF,QAAA,kBAAkB,sBAAsE;AAE9F,MAAM,uBAAuB,GAAG,CACnC,QAA8B,EAAE,EACJ,EAAE;IAC9B,MAAM,YAAY,GAAG,IAAA,0BAAkB,GAAE,CAAA;IAEzC,OAAO;QACH,eAAe,EAAE,IAAA,4BAAoB,EAAC,KAAK,CAAC,eAAe,EAAE,YAAY,EAAE,YAAY,CAAC;QACxF,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,YAAY,EAAE,QAAQ;QAClD,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,YAAY,EAAE,KAAK;QACzC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,YAAY,EAAE,SAAS;QACrD,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,YAAY,EAAE,SAAS;QACvC,OAAO,EAAE,YAAY,EAAE,OAAO;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,YAAY,EAAE,QAAQ;KACrD,CAAA;AACL,CAAC,CAAA;AAdY,QAAA,uBAAuB,2BAcnC;AAEM,MAAM,oBAAoB,GAAG,CAChC,GAAG,GAA8B,EACf,EAAE;IACpB,MAAM,SAAS,GAAG,GAAG;SAChB,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SACrC,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAA;IAE7E,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACjE,CAAC,CAAA;AARY,QAAA,oBAAoB,wBAQhC"}
|
|
@@ -3,12 +3,49 @@ 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 PneFieldContext_1 = require("./PneFieldContext");
|
|
6
7
|
const PneTextField = (0, react_1.forwardRef)((props, ref) => {
|
|
7
|
-
const { sx, size = 'small', ...rest } = props;
|
|
8
|
+
const { 'aria-describedby': ariaDescribedBy, disabled, error, fullWidth, id, required, slotProps, sx, size = 'small', ...rest } = props;
|
|
9
|
+
const inputSlotProps = getSlotPropsObject(slotProps?.input);
|
|
10
|
+
const htmlInputSlotProps = getSlotPropsObject(slotProps?.htmlInput);
|
|
11
|
+
const controlProps = (0, PneFieldContext_1.usePneFieldControlProps)({
|
|
12
|
+
ariaDescribedBy: (0, PneFieldContext_1.mergeAriaDescribedBy)(ariaDescribedBy, getAriaDescribedBy(inputSlotProps), getAriaDescribedBy(htmlInputSlotProps)),
|
|
13
|
+
disabled,
|
|
14
|
+
error,
|
|
15
|
+
fullWidth,
|
|
16
|
+
id,
|
|
17
|
+
required,
|
|
18
|
+
});
|
|
8
19
|
const _sx = [
|
|
9
20
|
...(Array.isArray(sx) ? sx : [sx])
|
|
10
21
|
];
|
|
11
|
-
|
|
22
|
+
const resolvedSlotProps = controlProps.ariaDescribedBy
|
|
23
|
+
? {
|
|
24
|
+
...slotProps,
|
|
25
|
+
input: withAriaDescribedBy(slotProps?.input, controlProps.ariaDescribedBy),
|
|
26
|
+
htmlInput: withAriaDescribedBy(slotProps?.htmlInput, controlProps.ariaDescribedBy),
|
|
27
|
+
}
|
|
28
|
+
: slotProps;
|
|
29
|
+
return react_1.default.createElement(material_1.TextField, { disabled: controlProps.disabled, error: controlProps.error, fullWidth: controlProps.fullWidth, id: controlProps.id, ref: ref, required: controlProps.required, size: size, slotProps: resolvedSlotProps, sx: _sx, ...rest });
|
|
12
30
|
});
|
|
31
|
+
const getSlotPropsObject = (slotProps) => {
|
|
32
|
+
return typeof slotProps === 'function' ? undefined : slotProps;
|
|
33
|
+
};
|
|
34
|
+
const getAriaDescribedBy = (props) => {
|
|
35
|
+
const ariaDescribedBy = props?.['aria-describedby'];
|
|
36
|
+
return typeof ariaDescribedBy === 'string' ? ariaDescribedBy : undefined;
|
|
37
|
+
};
|
|
38
|
+
const withAriaDescribedBy = (slotProps, ariaDescribedBy) => {
|
|
39
|
+
if (!ariaDescribedBy) {
|
|
40
|
+
return slotProps;
|
|
41
|
+
}
|
|
42
|
+
if (typeof slotProps === 'function') {
|
|
43
|
+
return slotProps;
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
...slotProps,
|
|
47
|
+
'aria-describedby': ariaDescribedBy,
|
|
48
|
+
};
|
|
49
|
+
};
|
|
13
50
|
exports.default = PneTextField;
|
|
14
51
|
//# sourceMappingURL=PneTextField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PneTextField.js","sourceRoot":"","sources":["../../src/component/PneTextField.tsx"],"names":[],"mappings":";;;AAAA,uDAAwC;AACxC,4CAAiE;
|
|
1
|
+
{"version":3,"file":"PneTextField.js","sourceRoot":"","sources":["../../src/component/PneTextField.tsx"],"names":[],"mappings":";;;AAAA,uDAAwC;AACxC,4CAAiE;AACjE,uDAAgF;AAEhF,MAAM,YAAY,GAAG,IAAA,kBAAU,EAAC,CAC5B,KAAqB,EACrB,GAA8B,EAChC,EAAE;IACA,MAAM,EACF,kBAAkB,EAAE,eAAe,EACnC,QAAQ,EACR,KAAK,EACL,SAAS,EACT,EAAE,EACF,QAAQ,EACR,SAAS,EACT,EAAE,EACF,IAAI,GAAG,OAAO,EACd,GAAG,IAAI,EACV,GAAG,KAAK,CAAC;IAEV,MAAM,cAAc,GAAG,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAC3D,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACnE,MAAM,YAAY,GAAG,IAAA,yCAAuB,EAAC;QACzC,eAAe,EAAE,IAAA,sCAAoB,EACjC,eAAe,EACf,kBAAkB,CAAC,cAAc,CAAC,EAClC,kBAAkB,CAAC,kBAAkB,CAAC,CACzC;QACD,QAAQ;QACR,KAAK;QACL,SAAS;QACT,EAAE;QACF,QAAQ;KACX,CAAC,CAAA;IACF,MAAM,GAAG,GAAY;QACjB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACrC,CAAA;IACD,MAAM,iBAAiB,GAAG,YAAY,CAAC,eAAe;QAClD,CAAC,CAAC;YACE,GAAG,SAAS;YACZ,KAAK,EAAE,mBAAmB,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,eAAe,CAAC;YAC1E,SAAS,EAAE,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,eAAe,CAAC;SACrF;QACD,CAAC,CAAC,SAAS,CAAA;IAEf,OAAO,8BAAC,oBAAS,IACb,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAC/B,KAAK,EAAE,YAAY,CAAC,KAAK,EACzB,SAAS,EAAE,YAAY,CAAC,SAAS,EACjC,EAAE,EAAE,YAAY,CAAC,EAAE,EACnB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAC/B,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,iBAAiB,EAC5B,EAAE,EAAE,GAAG,KACH,IAAI,GACV,CAAA;AACN,CAAC,CAAC,CAAC;AAKH,MAAM,kBAAkB,GAAG,CACvB,SAA2C,EACR,EAAE;IACrC,OAAO,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAgD,CAAA;AACzG,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CACvB,KAA0C,EACxB,EAAE;IACpB,MAAM,eAAe,GAAG,KAAK,EAAE,CAAC,kBAAkB,CAAC,CAAA;IAEnD,OAAO,OAAO,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAA;AAC5E,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CACxB,SAAqB,EACrB,eAAmC,EACM,EAAE;IAC3C,IAAI,CAAC,eAAe,EAAE,CAAC;QACnB,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,OAAO;QACH,GAAI,SAAiD;QACrD,kBAAkB,EAAE,eAAe;KACtC,CAAA;AACL,CAAC,CAAA;AAED,kBAAe,YAAY,CAAC"}
|
|
@@ -9,6 +9,7 @@ export interface PneAsyncAutocompleteProps<T extends PneDropdownChoice, Multiple
|
|
|
9
9
|
error?: boolean;
|
|
10
10
|
helperText?: string;
|
|
11
11
|
placeholder?: string;
|
|
12
|
+
required?: boolean;
|
|
12
13
|
onSearchError?: (reason: any) => void;
|
|
13
14
|
}
|
|
14
15
|
declare const PneAsyncAutocomplete: <T extends PneDropdownChoice, Multiple extends boolean | undefined = false, DisableClearable extends boolean | undefined = false, FreeSolo extends boolean | undefined = false>(props: PneAsyncAutocompleteProps<T, Multiple, DisableClearable, FreeSolo>) => React.JSX.Element;
|
|
@@ -5,8 +5,9 @@ const react_1 = tslib_1.__importStar(require("react"));
|
|
|
5
5
|
const material_1 = require("@mui/material");
|
|
6
6
|
const dropdown_1 = require("../../common/paynet/dropdown");
|
|
7
7
|
const index_1 = require("../../index");
|
|
8
|
+
const PneFieldContext_1 = require("../PneFieldContext");
|
|
8
9
|
const PneAsyncAutocomplete = (props) => {
|
|
9
|
-
const { searchChoices, label, size = 'small', error
|
|
10
|
+
const { searchChoices, disabled, label, size = 'small', error, helperText, fullWidth, id: idProp, sx, placeholder, required, onSearchError, ...rest } = props;
|
|
10
11
|
const innerSx = [
|
|
11
12
|
dropdown_1.dropDownSx,
|
|
12
13
|
...(Array.isArray(sx) ? sx : [sx])
|
|
@@ -15,8 +16,16 @@ const PneAsyncAutocomplete = (props) => {
|
|
|
15
16
|
const [options, setOptions] = (0, react_1.useState)([]);
|
|
16
17
|
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
17
18
|
const [inputValue, setInputValue] = (0, react_1.useState)('');
|
|
18
|
-
const
|
|
19
|
+
const generatedId = (0, react_1.useId)();
|
|
19
20
|
const requestIdRef = (0, react_1.useRef)(0);
|
|
21
|
+
const controlProps = (0, PneFieldContext_1.usePneFieldControlProps)({
|
|
22
|
+
disabled,
|
|
23
|
+
error,
|
|
24
|
+
fullWidth,
|
|
25
|
+
id: idProp,
|
|
26
|
+
required,
|
|
27
|
+
});
|
|
28
|
+
const id = controlProps.id ?? generatedId;
|
|
20
29
|
(0, react_1.useEffect)(() => {
|
|
21
30
|
if (!open) {
|
|
22
31
|
requestIdRef.current += 1;
|
|
@@ -54,7 +63,7 @@ const PneAsyncAutocomplete = (props) => {
|
|
|
54
63
|
active = false;
|
|
55
64
|
};
|
|
56
65
|
}, [open, inputValue, onSearchError, searchChoices]);
|
|
57
|
-
return react_1.default.createElement(material_1.Autocomplete, { id: id, open: open, onOpen: () => setOpen(true), onClose: () => setOpen(false), isOptionEqualToValue: dropdown_1.isOptionEqualToValue, getOptionLabel: dropdown_1.getOptionLabel, getOptionKey: dropdown_1.getOptionKey, options: options, loading: loading, filterOptions: (x) => x, inputValue: inputValue, onInputChange: (e, value) => setInputValue(value), renderInput: (params) => (react_1.default.createElement(index_1.PneTextField, { ...params, label: label, placeholder: placeholder, slotProps: {
|
|
66
|
+
return react_1.default.createElement(material_1.Autocomplete, { disabled: controlProps.disabled, fullWidth: controlProps.fullWidth, id: id, open: open, onOpen: () => setOpen(true), onClose: () => setOpen(false), isOptionEqualToValue: dropdown_1.isOptionEqualToValue, getOptionLabel: dropdown_1.getOptionLabel, getOptionKey: dropdown_1.getOptionKey, options: options, loading: loading, filterOptions: (x) => x, inputValue: inputValue, onInputChange: (e, value) => setInputValue(value), renderInput: (params) => (react_1.default.createElement(index_1.PneTextField, { ...params, label: label, placeholder: placeholder, required: controlProps.required, slotProps: {
|
|
58
67
|
...params.slotProps,
|
|
59
68
|
input: {
|
|
60
69
|
...params.slotProps.input,
|
|
@@ -62,7 +71,7 @@ const PneAsyncAutocomplete = (props) => {
|
|
|
62
71
|
loading ? react_1.default.createElement(material_1.CircularProgress, { color: "inherit", size: 20 }) : null,
|
|
63
72
|
params.slotProps.input.endAdornment)),
|
|
64
73
|
},
|
|
65
|
-
}, error: error, helperText: helperText })), sx: innerSx, size: size, ...rest });
|
|
74
|
+
}, error: controlProps.error ?? false, helperText: helperText })), sx: innerSx, size: size, ...rest });
|
|
66
75
|
};
|
|
67
76
|
exports.default = PneAsyncAutocomplete;
|
|
68
77
|
//# sourceMappingURL=PneAsyncAutocomplete.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PneAsyncAutocomplete.js","sourceRoot":"","sources":["../../../src/component/dropdown/PneAsyncAutocomplete.tsx"],"names":[],"mappings":";;;AAAA,uDAA2E;AAC3E,4CAAyF;AACzF,2DAMsC;AACtC,uCAAyC;
|
|
1
|
+
{"version":3,"file":"PneAsyncAutocomplete.js","sourceRoot":"","sources":["../../../src/component/dropdown/PneAsyncAutocomplete.tsx"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export interface IProps<T extends PneDropdownChoice, Multiple extends boolean |
|
|
|
8
8
|
error?: boolean;
|
|
9
9
|
helperText?: string;
|
|
10
10
|
placeholder?: string;
|
|
11
|
+
required?: boolean;
|
|
11
12
|
}
|
|
12
13
|
declare const PneAutocomplete: <T extends PneDropdownChoice, Multiple extends boolean | undefined = false, DisableClearable extends boolean | undefined = false, FreeSolo extends boolean | undefined = false>(props: IProps<T, Multiple, DisableClearable, FreeSolo>) => React.JSX.Element;
|
|
13
14
|
export default PneAutocomplete;
|
|
@@ -5,14 +5,22 @@ const react_1 = tslib_1.__importDefault(require("react"));
|
|
|
5
5
|
const material_1 = require("@mui/material");
|
|
6
6
|
const dropdown_1 = require("../../common/paynet/dropdown");
|
|
7
7
|
const index_1 = require("../../index");
|
|
8
|
+
const PneFieldContext_1 = require("../PneFieldContext");
|
|
8
9
|
const PneAutocomplete = (props) => {
|
|
9
|
-
const { label, variant, size = 'small', error
|
|
10
|
+
const { disabled, label, variant, size = 'small', error, helperText, fullWidth, id, sx, placeholder, required, ...rest } = props;
|
|
10
11
|
const innerSx = [
|
|
11
12
|
dropdown_1.dropDownSx,
|
|
12
13
|
...(Array.isArray(sx) ? sx : [sx])
|
|
13
14
|
];
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
const controlProps = (0, PneFieldContext_1.usePneFieldControlProps)({
|
|
16
|
+
disabled,
|
|
17
|
+
error,
|
|
18
|
+
fullWidth,
|
|
19
|
+
id,
|
|
20
|
+
required,
|
|
21
|
+
});
|
|
22
|
+
return react_1.default.createElement(material_1.Autocomplete, { disabled: controlProps.disabled, fullWidth: controlProps.fullWidth, id: controlProps.id, isOptionEqualToValue: dropdown_1.isOptionEqualToValue, getOptionLabel: dropdown_1.getOptionLabel, getOptionKey: dropdown_1.getOptionKey, renderInput: (params) => {
|
|
23
|
+
return react_1.default.createElement(index_1.PneTextField, { ...params, placeholder: placeholder, label: label, variant: variant, error: controlProps.error ?? false, helperText: helperText, required: controlProps.required });
|
|
16
24
|
}, size: size, sx: innerSx, ...rest });
|
|
17
25
|
};
|
|
18
26
|
exports.default = PneAutocomplete;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PneAutocomplete.js","sourceRoot":"","sources":["../../../src/component/dropdown/PneAutocomplete.tsx"],"names":[],"mappings":";;;AAAA,0DAAuC;AACvC,4CAAuE;AAEvE,2DAMsC;AACtC,uCAAyC;
|
|
1
|
+
{"version":3,"file":"PneAutocomplete.js","sourceRoot":"","sources":["../../../src/component/dropdown/PneAutocomplete.tsx"],"names":[],"mappings":";;;AAAA,0DAAuC;AACvC,4CAAuE;AAEvE,2DAMsC;AACtC,uCAAyC;AACzC,wDAA2D;AAgB3D,MAAM,eAAe,GAAG,CAKtB,KAKD,EAAE,EAAE;IACD,MAAM,EACF,QAAQ,EACR,KAAK,EACL,OAAO,EACP,IAAI,GAAG,OAAO,EACd,KAAK,EACL,UAAU,EACV,SAAS,EACT,EAAE,EACF,EAAE,EACF,WAAW,EACX,QAAQ,EACR,GAAG,IAAI,EACV,GAAG,KAAK,CAAA;IAET,MAAM,OAAO,GAAY;QACrB,qBAAU;QACV,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACrC,CAAA;IACD,MAAM,YAAY,GAAG,IAAA,yCAAuB,EAAC;QACzC,QAAQ;QACR,KAAK;QACL,SAAS;QACT,EAAE;QACF,QAAQ;KACX,CAAC,CAAA;IAEF,OAAO,8BAAC,uBAAY,IAChB,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAC/B,SAAS,EAAE,YAAY,CAAC,SAAS,EACjC,EAAE,EAAE,YAAY,CAAC,EAAE,EACnB,oBAAoB,EAAE,+BAAoB,EAC1C,cAAc,EAAE,yBAAc,EAC9B,YAAY,EAAE,uBAAY,EAC1B,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE;YACpB,OAAO,8BAAC,oBAAY,OACZ,MAAM,EACV,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,YAAY,CAAC,KAAK,IAAI,KAAK,EAClC,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,YAAY,CAAC,QAAQ,GACjC,CAAA;QACN,CAAC,EACD,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,OAAO,KACP,IAAI,GACV,CAAA;AACN,CAAC,CAAA;AAED,kBAAe,eAAe,CAAA"}
|
|
@@ -5,11 +5,21 @@ const react_1 = tslib_1.__importStar(require("react"));
|
|
|
5
5
|
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
|
+
const PneFieldContext_1 = require("../PneFieldContext");
|
|
8
9
|
const PneSelect = (0, react_1.forwardRef)((props, ref) => {
|
|
9
|
-
const { options, onChange, size = 'small', getOptionLabel = createDefaultOptionLabel, variant = 'outlined', disableMenuItem, label, disabled, error, required, sx, displayEmpty, placeholder, renderValue, ...rest } = props;
|
|
10
|
-
const
|
|
10
|
+
const { 'aria-describedby': ariaDescribedBy, options, onChange, size = 'small', getOptionLabel = createDefaultOptionLabel, variant = 'outlined', disableMenuItem, label, disabled, error, required, sx, displayEmpty, placeholder, renderValue, id, labelId: labelIdProp, ...rest } = props;
|
|
11
|
+
const generatedLabelId = (0, react_1.useId)();
|
|
11
12
|
const hasLabel = label !== undefined && label !== null && label !== '';
|
|
12
13
|
const mappedOptions = options.map(mapChoiceToSelectOption);
|
|
14
|
+
const controlProps = (0, PneFieldContext_1.usePneFieldControlProps)({
|
|
15
|
+
ariaDescribedBy,
|
|
16
|
+
disabled,
|
|
17
|
+
error,
|
|
18
|
+
id,
|
|
19
|
+
required,
|
|
20
|
+
});
|
|
21
|
+
const internalLabelId = labelIdProp ?? generatedLabelId;
|
|
22
|
+
const resolvedLabelId = hasLabel ? internalLabelId : labelIdProp ?? controlProps.labelId;
|
|
13
23
|
const handleChange = (event) => {
|
|
14
24
|
const value = event.target.value;
|
|
15
25
|
onChange((0, type_1.ensure)(options.find(opt => mapChoiceToSelectOption(opt).value === value)));
|
|
@@ -27,9 +37,9 @@ const PneSelect = (0, react_1.forwardRef)((props, ref) => {
|
|
|
27
37
|
}
|
|
28
38
|
return renderSingleSelectedValue(selected, mappedOptions, getOptionLabel);
|
|
29
39
|
};
|
|
30
|
-
return react_1.default.createElement(material_1.FormControl, { size: size, variant: variant, disabled: disabled, error: error, required: required, sx: sx, fullWidth: true },
|
|
31
|
-
hasLabel ? react_1.default.createElement(material_1.InputLabel, { id:
|
|
32
|
-
react_1.default.createElement(material_1.Select, { ref: ref, displayEmpty: displayEmpty ?? shouldRenderPlaceholder,
|
|
40
|
+
return react_1.default.createElement(material_1.FormControl, { size: size, variant: variant, disabled: controlProps.disabled, error: controlProps.error, required: controlProps.required, sx: sx, fullWidth: true },
|
|
41
|
+
hasLabel ? react_1.default.createElement(material_1.InputLabel, { id: internalLabelId }, label) : null,
|
|
42
|
+
react_1.default.createElement(material_1.Select, { ref: ref, "aria-describedby": controlProps.ariaDescribedBy, displayEmpty: displayEmpty ?? shouldRenderPlaceholder, id: controlProps.id, labelId: resolvedLabelId, 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));
|
|
33
43
|
});
|
|
34
44
|
exports.default = PneSelect;
|
|
35
45
|
const createDefaultOptionLabel = (option) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PneSelect.js","sourceRoot":"","sources":["../../../src/component/dropdown/PneSelect.tsx"],"names":[],"mappings":";;;AAAA,uDAAyD;AACzD,4CAA4H;AAE5H,gDAAyF;AACzF,mDAAgF;
|
|
1
|
+
{"version":3,"file":"PneSelect.js","sourceRoot":"","sources":["../../../src/component/dropdown/PneSelect.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,23 @@
|
|
|
1
|
-
import React, { forwardRef } from 'react';
|
|
1
|
+
import React, { forwardRef, isValidElement, useId } from 'react';
|
|
2
2
|
import { FormControl, FormHelperText, FormLabel } from '@mui/material';
|
|
3
|
+
import { PneFieldContext } from './PneFieldContext';
|
|
3
4
|
const PneField = forwardRef((props, ref) => {
|
|
4
5
|
const { children, disabled = false, error = false, fullWidth = true, helperText, helperTextSx, htmlFor, id, label, labelSx, required = false, sx, ...rest } = props;
|
|
5
|
-
const
|
|
6
|
+
const generatedId = useId();
|
|
7
|
+
const fieldId = id ?? generatedId;
|
|
8
|
+
const childId = getChildId(children);
|
|
9
|
+
const controlId = htmlFor ?? childId ?? `${fieldId}-control`;
|
|
10
|
+
const helperTextId = helperText ? `${fieldId}-helper-text` : undefined;
|
|
11
|
+
const labelId = label ? `${fieldId}-label` : undefined;
|
|
12
|
+
const contextValue = {
|
|
13
|
+
controlId,
|
|
14
|
+
disabled,
|
|
15
|
+
error,
|
|
16
|
+
fullWidth,
|
|
17
|
+
helperTextId,
|
|
18
|
+
labelId,
|
|
19
|
+
required,
|
|
20
|
+
};
|
|
6
21
|
return React.createElement(FormControl, { disabled: disabled, error: error, fullWidth: fullWidth, id: id, required: required, ref: ref, sx: [
|
|
7
22
|
{
|
|
8
23
|
gap: '4px',
|
|
@@ -10,11 +25,13 @@ const PneField = forwardRef((props, ref) => {
|
|
|
10
25
|
...(Array.isArray(sx) ? sx : [sx]),
|
|
11
26
|
], ...rest },
|
|
12
27
|
label
|
|
13
|
-
? React.createElement(FormLabel, { htmlFor:
|
|
28
|
+
? React.createElement(FormLabel, { htmlFor: controlId, id: labelId, required: required, sx: [
|
|
14
29
|
{
|
|
30
|
+
alignSelf: 'flex-start',
|
|
15
31
|
color: error ? 'error.main' : 'text.secondary',
|
|
16
32
|
fontSize: '0.875rem',
|
|
17
33
|
lineHeight: '20px',
|
|
34
|
+
maxWidth: '100%',
|
|
18
35
|
'&.Mui-focused': {
|
|
19
36
|
color: error ? 'error.main' : 'text.secondary',
|
|
20
37
|
},
|
|
@@ -25,7 +42,7 @@ const PneField = forwardRef((props, ref) => {
|
|
|
25
42
|
...(Array.isArray(labelSx) ? labelSx : [labelSx]),
|
|
26
43
|
] }, label)
|
|
27
44
|
: null,
|
|
28
|
-
children,
|
|
45
|
+
React.createElement(PneFieldContext.Provider, { value: contextValue }, children),
|
|
29
46
|
helperText
|
|
30
47
|
? React.createElement(FormHelperText, { id: helperTextId, sx: [
|
|
31
48
|
{
|
|
@@ -35,5 +52,13 @@ const PneField = forwardRef((props, ref) => {
|
|
|
35
52
|
] }, helperText)
|
|
36
53
|
: null);
|
|
37
54
|
});
|
|
55
|
+
const getChildId = (children) => {
|
|
56
|
+
if (!isValidElement(children)) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
return typeof children.props.id === 'string' && children.props.id !== ''
|
|
60
|
+
? children.props.id
|
|
61
|
+
: undefined;
|
|
62
|
+
};
|
|
38
63
|
export default PneField;
|
|
39
64
|
//# sourceMappingURL=PneField.js.map
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"PneField.js","sourceRoot":"","sources":["../../src/component/PneField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface PneFieldContextValue {
|
|
2
|
+
controlId?: string;
|
|
3
|
+
disabled?: boolean;
|
|
4
|
+
error?: boolean;
|
|
5
|
+
fullWidth?: boolean;
|
|
6
|
+
helperTextId?: string;
|
|
7
|
+
labelId?: string;
|
|
8
|
+
required?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface PneFieldControlProps {
|
|
11
|
+
ariaDescribedBy?: string;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
error?: boolean;
|
|
14
|
+
fullWidth?: boolean;
|
|
15
|
+
id?: string;
|
|
16
|
+
required?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface ResolvedPneFieldControlProps extends PneFieldControlProps {
|
|
19
|
+
labelId?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare const PneFieldContext: import("react").Context<PneFieldContextValue | undefined>;
|
|
22
|
+
export declare const usePneFieldContext: () => PneFieldContextValue | undefined;
|
|
23
|
+
export declare const usePneFieldControlProps: (props?: PneFieldControlProps) => ResolvedPneFieldControlProps;
|
|
24
|
+
export declare const mergeAriaDescribedBy: (...ids: Array<string | undefined>) => string | undefined;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
export const PneFieldContext = createContext(undefined);
|
|
3
|
+
export const usePneFieldContext = () => useContext(PneFieldContext);
|
|
4
|
+
export const usePneFieldControlProps = (props = {}) => {
|
|
5
|
+
const fieldContext = usePneFieldContext();
|
|
6
|
+
return {
|
|
7
|
+
ariaDescribedBy: mergeAriaDescribedBy(props.ariaDescribedBy, fieldContext?.helperTextId),
|
|
8
|
+
disabled: props.disabled ?? fieldContext?.disabled,
|
|
9
|
+
error: props.error ?? fieldContext?.error,
|
|
10
|
+
fullWidth: props.fullWidth ?? fieldContext?.fullWidth,
|
|
11
|
+
id: props.id ?? fieldContext?.controlId,
|
|
12
|
+
labelId: fieldContext?.labelId,
|
|
13
|
+
required: props.required ?? fieldContext?.required,
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export const mergeAriaDescribedBy = (...ids) => {
|
|
17
|
+
const mergedIds = ids
|
|
18
|
+
.flatMap(id => id?.split(/\s+/) ?? [])
|
|
19
|
+
.filter((id, index, allIds) => id !== '' && allIds.indexOf(id) === index);
|
|
20
|
+
return mergedIds.length > 0 ? mergedIds.join(' ') : undefined;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=PneFieldContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PneFieldContext.js","sourceRoot":"","sources":["../../src/component/PneFieldContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,OAAO,CAAA;AAyB/C,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAmC,SAAS,CAAC,CAAA;AAEzF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAqC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AAErG,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACnC,QAA8B,EAAE,EACJ,EAAE;IAC9B,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAA;IAEzC,OAAO;QACH,eAAe,EAAE,oBAAoB,CAAC,KAAK,CAAC,eAAe,EAAE,YAAY,EAAE,YAAY,CAAC;QACxF,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,YAAY,EAAE,QAAQ;QAClD,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,YAAY,EAAE,KAAK;QACzC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,YAAY,EAAE,SAAS;QACrD,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,YAAY,EAAE,SAAS;QACvC,OAAO,EAAE,YAAY,EAAE,OAAO;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,YAAY,EAAE,QAAQ;KACrD,CAAA;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,GAAG,GAA8B,EACf,EAAE;IACpB,MAAM,SAAS,GAAG,GAAG;SAChB,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SACrC,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAA;IAE7E,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACjE,CAAC,CAAA"}
|
|
@@ -1,11 +1,48 @@
|
|
|
1
1
|
import React, { forwardRef } from 'react';
|
|
2
2
|
import { TextField } from '@mui/material';
|
|
3
|
+
import { mergeAriaDescribedBy, usePneFieldControlProps } from './PneFieldContext';
|
|
3
4
|
const PneTextField = forwardRef((props, ref) => {
|
|
4
|
-
const { sx, size = 'small', ...rest } = props;
|
|
5
|
+
const { 'aria-describedby': ariaDescribedBy, disabled, error, fullWidth, id, required, slotProps, sx, size = 'small', ...rest } = props;
|
|
6
|
+
const inputSlotProps = getSlotPropsObject(slotProps?.input);
|
|
7
|
+
const htmlInputSlotProps = getSlotPropsObject(slotProps?.htmlInput);
|
|
8
|
+
const controlProps = usePneFieldControlProps({
|
|
9
|
+
ariaDescribedBy: mergeAriaDescribedBy(ariaDescribedBy, getAriaDescribedBy(inputSlotProps), getAriaDescribedBy(htmlInputSlotProps)),
|
|
10
|
+
disabled,
|
|
11
|
+
error,
|
|
12
|
+
fullWidth,
|
|
13
|
+
id,
|
|
14
|
+
required,
|
|
15
|
+
});
|
|
5
16
|
const _sx = [
|
|
6
17
|
...(Array.isArray(sx) ? sx : [sx])
|
|
7
18
|
];
|
|
8
|
-
|
|
19
|
+
const resolvedSlotProps = controlProps.ariaDescribedBy
|
|
20
|
+
? {
|
|
21
|
+
...slotProps,
|
|
22
|
+
input: withAriaDescribedBy(slotProps?.input, controlProps.ariaDescribedBy),
|
|
23
|
+
htmlInput: withAriaDescribedBy(slotProps?.htmlInput, controlProps.ariaDescribedBy),
|
|
24
|
+
}
|
|
25
|
+
: slotProps;
|
|
26
|
+
return React.createElement(TextField, { disabled: controlProps.disabled, error: controlProps.error, fullWidth: controlProps.fullWidth, id: controlProps.id, ref: ref, required: controlProps.required, size: size, slotProps: resolvedSlotProps, sx: _sx, ...rest });
|
|
9
27
|
});
|
|
28
|
+
const getSlotPropsObject = (slotProps) => {
|
|
29
|
+
return typeof slotProps === 'function' ? undefined : slotProps;
|
|
30
|
+
};
|
|
31
|
+
const getAriaDescribedBy = (props) => {
|
|
32
|
+
const ariaDescribedBy = props?.['aria-describedby'];
|
|
33
|
+
return typeof ariaDescribedBy === 'string' ? ariaDescribedBy : undefined;
|
|
34
|
+
};
|
|
35
|
+
const withAriaDescribedBy = (slotProps, ariaDescribedBy) => {
|
|
36
|
+
if (!ariaDescribedBy) {
|
|
37
|
+
return slotProps;
|
|
38
|
+
}
|
|
39
|
+
if (typeof slotProps === 'function') {
|
|
40
|
+
return slotProps;
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
...slotProps,
|
|
44
|
+
'aria-describedby': ariaDescribedBy,
|
|
45
|
+
};
|
|
46
|
+
};
|
|
10
47
|
export default PneTextField;
|
|
11
48
|
//# sourceMappingURL=PneTextField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PneTextField.js","sourceRoot":"","sources":["../../src/component/PneTextField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,UAAU,EAAC,MAAM,OAAO,CAAC;AACxC,OAAO,EAAU,SAAS,EAAiB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"PneTextField.js","sourceRoot":"","sources":["../../src/component/PneTextField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,UAAU,EAAC,MAAM,OAAO,CAAC;AACxC,OAAO,EAAU,SAAS,EAAiB,MAAM,eAAe,CAAC;AACjE,OAAO,EAAC,oBAAoB,EAAE,uBAAuB,EAAC,MAAM,mBAAmB,CAAC;AAEhF,MAAM,YAAY,GAAG,UAAU,CAAC,CAC5B,KAAqB,EACrB,GAA8B,EAChC,EAAE;IACA,MAAM,EACF,kBAAkB,EAAE,eAAe,EACnC,QAAQ,EACR,KAAK,EACL,SAAS,EACT,EAAE,EACF,QAAQ,EACR,SAAS,EACT,EAAE,EACF,IAAI,GAAG,OAAO,EACd,GAAG,IAAI,EACV,GAAG,KAAK,CAAC;IAEV,MAAM,cAAc,GAAG,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAC3D,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACnE,MAAM,YAAY,GAAG,uBAAuB,CAAC;QACzC,eAAe,EAAE,oBAAoB,CACjC,eAAe,EACf,kBAAkB,CAAC,cAAc,CAAC,EAClC,kBAAkB,CAAC,kBAAkB,CAAC,CACzC;QACD,QAAQ;QACR,KAAK;QACL,SAAS;QACT,EAAE;QACF,QAAQ;KACX,CAAC,CAAA;IACF,MAAM,GAAG,GAAY;QACjB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACrC,CAAA;IACD,MAAM,iBAAiB,GAAG,YAAY,CAAC,eAAe;QAClD,CAAC,CAAC;YACE,GAAG,SAAS;YACZ,KAAK,EAAE,mBAAmB,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,eAAe,CAAC;YAC1E,SAAS,EAAE,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,eAAe,CAAC;SACrF;QACD,CAAC,CAAC,SAAS,CAAA;IAEf,OAAO,oBAAC,SAAS,IACb,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAC/B,KAAK,EAAE,YAAY,CAAC,KAAK,EACzB,SAAS,EAAE,YAAY,CAAC,SAAS,EACjC,EAAE,EAAE,YAAY,CAAC,EAAE,EACnB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAC/B,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,iBAAiB,EAC5B,EAAE,EAAE,GAAG,KACH,IAAI,GACV,CAAA;AACN,CAAC,CAAC,CAAC;AAKH,MAAM,kBAAkB,GAAG,CACvB,SAA2C,EACR,EAAE;IACrC,OAAO,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAgD,CAAA;AACzG,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CACvB,KAA0C,EACxB,EAAE;IACpB,MAAM,eAAe,GAAG,KAAK,EAAE,CAAC,kBAAkB,CAAC,CAAA;IAEnD,OAAO,OAAO,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAA;AAC5E,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CACxB,SAAqB,EACrB,eAAmC,EACM,EAAE;IAC3C,IAAI,CAAC,eAAe,EAAE,CAAC;QACnB,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,OAAO;QACH,GAAI,SAAiD;QACrD,kBAAkB,EAAE,eAAe;KACtC,CAAA;AACL,CAAC,CAAA;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -9,6 +9,7 @@ export interface PneAsyncAutocompleteProps<T extends PneDropdownChoice, Multiple
|
|
|
9
9
|
error?: boolean;
|
|
10
10
|
helperText?: string;
|
|
11
11
|
placeholder?: string;
|
|
12
|
+
required?: boolean;
|
|
12
13
|
onSearchError?: (reason: any) => void;
|
|
13
14
|
}
|
|
14
15
|
declare const PneAsyncAutocomplete: <T extends PneDropdownChoice, Multiple extends boolean | undefined = false, DisableClearable extends boolean | undefined = false, FreeSolo extends boolean | undefined = false>(props: PneAsyncAutocompleteProps<T, Multiple, DisableClearable, FreeSolo>) => React.JSX.Element;
|
|
@@ -2,8 +2,9 @@ import React, { useEffect, useId, useRef, useState } from 'react';
|
|
|
2
2
|
import { Autocomplete, CircularProgress } from '@mui/material';
|
|
3
3
|
import { dropDownSx, getOptionKey, getOptionLabel, isOptionEqualToValue, } from '../../common/paynet/dropdown';
|
|
4
4
|
import { PneTextField } from "../../index";
|
|
5
|
+
import { usePneFieldControlProps } from '../PneFieldContext';
|
|
5
6
|
const PneAsyncAutocomplete = (props) => {
|
|
6
|
-
const { searchChoices, label, size = 'small', error
|
|
7
|
+
const { searchChoices, disabled, label, size = 'small', error, helperText, fullWidth, id: idProp, sx, placeholder, required, onSearchError, ...rest } = props;
|
|
7
8
|
const innerSx = [
|
|
8
9
|
dropDownSx,
|
|
9
10
|
...(Array.isArray(sx) ? sx : [sx])
|
|
@@ -12,8 +13,16 @@ const PneAsyncAutocomplete = (props) => {
|
|
|
12
13
|
const [options, setOptions] = useState([]);
|
|
13
14
|
const [loading, setLoading] = useState(false);
|
|
14
15
|
const [inputValue, setInputValue] = useState('');
|
|
15
|
-
const
|
|
16
|
+
const generatedId = useId();
|
|
16
17
|
const requestIdRef = useRef(0);
|
|
18
|
+
const controlProps = usePneFieldControlProps({
|
|
19
|
+
disabled,
|
|
20
|
+
error,
|
|
21
|
+
fullWidth,
|
|
22
|
+
id: idProp,
|
|
23
|
+
required,
|
|
24
|
+
});
|
|
25
|
+
const id = controlProps.id ?? generatedId;
|
|
17
26
|
useEffect(() => {
|
|
18
27
|
if (!open) {
|
|
19
28
|
requestIdRef.current += 1;
|
|
@@ -51,7 +60,7 @@ const PneAsyncAutocomplete = (props) => {
|
|
|
51
60
|
active = false;
|
|
52
61
|
};
|
|
53
62
|
}, [open, inputValue, onSearchError, searchChoices]);
|
|
54
|
-
return React.createElement(Autocomplete, { id: id, open: open, onOpen: () => setOpen(true), onClose: () => setOpen(false), isOptionEqualToValue: isOptionEqualToValue, getOptionLabel: getOptionLabel, getOptionKey: getOptionKey, options: options, loading: loading, filterOptions: (x) => x, inputValue: inputValue, onInputChange: (e, value) => setInputValue(value), renderInput: (params) => (React.createElement(PneTextField, { ...params, label: label, placeholder: placeholder, slotProps: {
|
|
63
|
+
return React.createElement(Autocomplete, { disabled: controlProps.disabled, fullWidth: controlProps.fullWidth, id: id, open: open, onOpen: () => setOpen(true), onClose: () => setOpen(false), isOptionEqualToValue: isOptionEqualToValue, getOptionLabel: getOptionLabel, getOptionKey: getOptionKey, options: options, loading: loading, filterOptions: (x) => x, inputValue: inputValue, onInputChange: (e, value) => setInputValue(value), renderInput: (params) => (React.createElement(PneTextField, { ...params, label: label, placeholder: placeholder, required: controlProps.required, slotProps: {
|
|
55
64
|
...params.slotProps,
|
|
56
65
|
input: {
|
|
57
66
|
...params.slotProps.input,
|
|
@@ -59,7 +68,7 @@ const PneAsyncAutocomplete = (props) => {
|
|
|
59
68
|
loading ? React.createElement(CircularProgress, { color: "inherit", size: 20 }) : null,
|
|
60
69
|
params.slotProps.input.endAdornment)),
|
|
61
70
|
},
|
|
62
|
-
}, error: error, helperText: helperText })), sx: innerSx, size: size, ...rest });
|
|
71
|
+
}, error: controlProps.error ?? false, helperText: helperText })), sx: innerSx, size: size, ...rest });
|
|
63
72
|
};
|
|
64
73
|
export default PneAsyncAutocomplete;
|
|
65
74
|
//# sourceMappingURL=PneAsyncAutocomplete.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PneAsyncAutocomplete.js","sourceRoot":"","sources":["../../../src/component/dropdown/PneAsyncAutocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAY,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC3E,OAAO,EAAC,YAAY,EAAqB,gBAAgB,EAAU,MAAM,eAAe,CAAC;AACzF,OAAO,EACH,UAAU,EACV,YAAY,EACZ,cAAc,EACd,oBAAoB,GAEvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"PneAsyncAutocomplete.js","sourceRoot":"","sources":["../../../src/component/dropdown/PneAsyncAutocomplete.tsx"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export interface IProps<T extends PneDropdownChoice, Multiple extends boolean |
|
|
|
8
8
|
error?: boolean;
|
|
9
9
|
helperText?: string;
|
|
10
10
|
placeholder?: string;
|
|
11
|
+
required?: boolean;
|
|
11
12
|
}
|
|
12
13
|
declare const PneAutocomplete: <T extends PneDropdownChoice, Multiple extends boolean | undefined = false, DisableClearable extends boolean | undefined = false, FreeSolo extends boolean | undefined = false>(props: IProps<T, Multiple, DisableClearable, FreeSolo>) => React.JSX.Element;
|
|
13
14
|
export default PneAutocomplete;
|
|
@@ -2,14 +2,22 @@ import React from 'react';
|
|
|
2
2
|
import { Autocomplete } from '@mui/material';
|
|
3
3
|
import { dropDownSx, getOptionKey, getOptionLabel, isOptionEqualToValue, } from '../../common/paynet/dropdown';
|
|
4
4
|
import { PneTextField } from "../../index";
|
|
5
|
+
import { usePneFieldControlProps } from '../PneFieldContext';
|
|
5
6
|
const PneAutocomplete = (props) => {
|
|
6
|
-
const { label, variant, size = 'small', error
|
|
7
|
+
const { disabled, label, variant, size = 'small', error, helperText, fullWidth, id, sx, placeholder, required, ...rest } = props;
|
|
7
8
|
const innerSx = [
|
|
8
9
|
dropDownSx,
|
|
9
10
|
...(Array.isArray(sx) ? sx : [sx])
|
|
10
11
|
];
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
const controlProps = usePneFieldControlProps({
|
|
13
|
+
disabled,
|
|
14
|
+
error,
|
|
15
|
+
fullWidth,
|
|
16
|
+
id,
|
|
17
|
+
required,
|
|
18
|
+
});
|
|
19
|
+
return React.createElement(Autocomplete, { disabled: controlProps.disabled, fullWidth: controlProps.fullWidth, id: controlProps.id, isOptionEqualToValue: isOptionEqualToValue, getOptionLabel: getOptionLabel, getOptionKey: getOptionKey, renderInput: (params) => {
|
|
20
|
+
return React.createElement(PneTextField, { ...params, placeholder: placeholder, label: label, variant: variant, error: controlProps.error ?? false, helperText: helperText, required: controlProps.required });
|
|
13
21
|
}, size: size, sx: innerSx, ...rest });
|
|
14
22
|
};
|
|
15
23
|
export default PneAutocomplete;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PneAutocomplete.js","sourceRoot":"","sources":["../../../src/component/dropdown/PneAutocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAC,YAAY,EAA6B,MAAM,eAAe,CAAC;AAEvE,OAAO,EACH,UAAU,EACV,YAAY,EACZ,cAAc,EACd,oBAAoB,GAEvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"PneAutocomplete.js","sourceRoot":"","sources":["../../../src/component/dropdown/PneAutocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAC,YAAY,EAA6B,MAAM,eAAe,CAAC;AAEvE,OAAO,EACH,UAAU,EACV,YAAY,EACZ,cAAc,EACd,oBAAoB,GAEvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,EAAC,uBAAuB,EAAC,MAAM,oBAAoB,CAAC;AAgB3D,MAAM,eAAe,GAAG,CAKtB,KAKD,EAAE,EAAE;IACD,MAAM,EACF,QAAQ,EACR,KAAK,EACL,OAAO,EACP,IAAI,GAAG,OAAO,EACd,KAAK,EACL,UAAU,EACV,SAAS,EACT,EAAE,EACF,EAAE,EACF,WAAW,EACX,QAAQ,EACR,GAAG,IAAI,EACV,GAAG,KAAK,CAAA;IAET,MAAM,OAAO,GAAY;QACrB,UAAU;QACV,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACrC,CAAA;IACD,MAAM,YAAY,GAAG,uBAAuB,CAAC;QACzC,QAAQ;QACR,KAAK;QACL,SAAS;QACT,EAAE;QACF,QAAQ;KACX,CAAC,CAAA;IAEF,OAAO,oBAAC,YAAY,IAChB,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAC/B,SAAS,EAAE,YAAY,CAAC,SAAS,EACjC,EAAE,EAAE,YAAY,CAAC,EAAE,EACnB,oBAAoB,EAAE,oBAAoB,EAC1C,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE;YACpB,OAAO,oBAAC,YAAY,OACZ,MAAM,EACV,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,YAAY,CAAC,KAAK,IAAI,KAAK,EAClC,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,YAAY,CAAC,QAAQ,GACjC,CAAA;QACN,CAAC,EACD,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,OAAO,KACP,IAAI,GACV,CAAA;AACN,CAAC,CAAA;AAED,eAAe,eAAe,CAAA"}
|
|
@@ -2,11 +2,21 @@ import React, { forwardRef, useId } from 'react';
|
|
|
2
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
|
+
import { usePneFieldControlProps } from '../PneFieldContext';
|
|
5
6
|
const PneSelect = forwardRef((props, ref) => {
|
|
6
|
-
const { options, onChange, size = 'small', getOptionLabel = createDefaultOptionLabel, variant = 'outlined', disableMenuItem, label, disabled, error, required, sx, displayEmpty, placeholder, renderValue, ...rest } = props;
|
|
7
|
-
const
|
|
7
|
+
const { 'aria-describedby': ariaDescribedBy, options, onChange, size = 'small', getOptionLabel = createDefaultOptionLabel, variant = 'outlined', disableMenuItem, label, disabled, error, required, sx, displayEmpty, placeholder, renderValue, id, labelId: labelIdProp, ...rest } = props;
|
|
8
|
+
const generatedLabelId = useId();
|
|
8
9
|
const hasLabel = label !== undefined && label !== null && label !== '';
|
|
9
10
|
const mappedOptions = options.map(mapChoiceToSelectOption);
|
|
11
|
+
const controlProps = usePneFieldControlProps({
|
|
12
|
+
ariaDescribedBy,
|
|
13
|
+
disabled,
|
|
14
|
+
error,
|
|
15
|
+
id,
|
|
16
|
+
required,
|
|
17
|
+
});
|
|
18
|
+
const internalLabelId = labelIdProp ?? generatedLabelId;
|
|
19
|
+
const resolvedLabelId = hasLabel ? internalLabelId : labelIdProp ?? controlProps.labelId;
|
|
10
20
|
const handleChange = (event) => {
|
|
11
21
|
const value = event.target.value;
|
|
12
22
|
onChange(ensure(options.find(opt => mapChoiceToSelectOption(opt).value === value)));
|
|
@@ -24,9 +34,9 @@ const PneSelect = forwardRef((props, ref) => {
|
|
|
24
34
|
}
|
|
25
35
|
return renderSingleSelectedValue(selected, mappedOptions, getOptionLabel);
|
|
26
36
|
};
|
|
27
|
-
return React.createElement(FormControl, { size: size, variant: variant, disabled: disabled, error: error, required: required, sx: sx, fullWidth: true },
|
|
28
|
-
hasLabel ? React.createElement(InputLabel, { id:
|
|
29
|
-
React.createElement(Select, { ref: ref, displayEmpty: displayEmpty ?? shouldRenderPlaceholder,
|
|
37
|
+
return React.createElement(FormControl, { size: size, variant: variant, disabled: controlProps.disabled, error: controlProps.error, required: controlProps.required, sx: sx, fullWidth: true },
|
|
38
|
+
hasLabel ? React.createElement(InputLabel, { id: internalLabelId }, label) : null,
|
|
39
|
+
React.createElement(Select, { ref: ref, "aria-describedby": controlProps.ariaDescribedBy, displayEmpty: displayEmpty ?? shouldRenderPlaceholder, id: controlProps.id, labelId: resolvedLabelId, 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));
|
|
30
40
|
});
|
|
31
41
|
export default PneSelect;
|
|
32
42
|
const createDefaultOptionLabel = (option) => {
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"PneSelect.js","sourceRoot":"","sources":["../../../src/component/dropdown/PneSelect.tsx"],"names":[],"mappings":"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"}
|