@availity/mui-autocomplete 0.1.0 → 0.2.0
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/CHANGELOG.md +7 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +29 -2
- package/dist/index.mjs +33 -5
- package/package.json +3 -3
- package/src/lib/Autocomplete.stories.tsx +6 -14
- package/src/lib/Autocomplete.tsx +30 -4
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [0.2.0](https://github.com/Availity/element/compare/@availity/mui-autocomplete@0.1.0...@availity/mui-autocomplete@0.2.0) (2023-11-22)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **mui-autocomplete:** use new select slots and styling ([37cac37](https://github.com/Availity/element/commit/37cac37f2670d669b7b6c38cbc52fd1453e3e4e4))
|
|
11
|
+
|
|
5
12
|
## 0.1.0 (2023-11-15)
|
|
6
13
|
|
|
7
14
|
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import * as react from 'react';
|
|
|
2
2
|
import { ChipTypeMap, AutocompleteProps as AutocompleteProps$1 } from '@mui/material';
|
|
3
3
|
import { TextFieldProps } from '@availity/mui-textfield';
|
|
4
4
|
|
|
5
|
-
interface AutocompleteProps<T, Multiple extends boolean | undefined, DisableClearable extends boolean | undefined, FreeSolo extends boolean | undefined, ChipComponent extends React.ElementType = ChipTypeMap['defaultComponent']> extends Omit<AutocompleteProps$1<T, Multiple, DisableClearable, FreeSolo, ChipComponent>, 'renderInput'> {
|
|
5
|
+
interface AutocompleteProps<T, Multiple extends boolean | undefined, DisableClearable extends boolean | undefined, FreeSolo extends boolean | undefined, ChipComponent extends React.ElementType = ChipTypeMap['defaultComponent']> extends Omit<AutocompleteProps$1<T, Multiple, DisableClearable, FreeSolo, ChipComponent>, 'renderInput' | 'slotProps'> {
|
|
6
6
|
FieldProps?: TextFieldProps;
|
|
7
7
|
}
|
|
8
8
|
declare const Autocomplete: <T, Multiple extends boolean | undefined = false, DisableClearable extends boolean | undefined = false, FreeSolo extends boolean | undefined = false, ChipComponent extends react.ElementType<any> = "div">({ FieldProps, ...props }: AutocompleteProps<T, Multiple, DisableClearable, FreeSolo, ChipComponent>) => JSX.Element;
|
package/dist/index.js
CHANGED
|
@@ -25,20 +25,47 @@ __export(src_exports, {
|
|
|
25
25
|
module.exports = __toCommonJS(src_exports);
|
|
26
26
|
|
|
27
27
|
// src/lib/Autocomplete.tsx
|
|
28
|
+
var import_react = require("react");
|
|
28
29
|
var import_material = require("@mui/material");
|
|
29
30
|
var import_mui_textfield = require("@availity/mui-textfield");
|
|
30
31
|
var import_mui_form_utils = require("@availity/mui-form-utils");
|
|
31
32
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
33
|
+
var PopupIndicatorWrapper = (0, import_react.forwardRef)((props, ref) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
34
|
+
children: [
|
|
35
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_mui_form_utils.SelectDivider, {
|
|
36
|
+
orientation: "vertical",
|
|
37
|
+
className: "MuiSelect-avEndAdornmentDivider"
|
|
38
|
+
}),
|
|
39
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_material.IconButton, {
|
|
40
|
+
...props,
|
|
41
|
+
ref
|
|
42
|
+
})
|
|
43
|
+
]
|
|
44
|
+
}));
|
|
32
45
|
var Autocomplete = ({
|
|
33
46
|
FieldProps,
|
|
34
47
|
...props
|
|
35
48
|
}) => {
|
|
49
|
+
const resolvedProps = (params) => ({
|
|
50
|
+
InputProps: {
|
|
51
|
+
...FieldProps == null ? void 0 : FieldProps.InputProps,
|
|
52
|
+
...params == null ? void 0 : params.InputProps
|
|
53
|
+
},
|
|
54
|
+
inputProps: {
|
|
55
|
+
...FieldProps == null ? void 0 : FieldProps.inputProps,
|
|
56
|
+
...params == null ? void 0 : params.inputProps
|
|
57
|
+
}
|
|
58
|
+
});
|
|
36
59
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_material.Autocomplete, {
|
|
37
60
|
renderInput: (params) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_mui_textfield.TextField, {
|
|
38
61
|
...FieldProps,
|
|
39
|
-
...params
|
|
62
|
+
...params,
|
|
63
|
+
...resolvedProps(params)
|
|
64
|
+
}),
|
|
65
|
+
popupIcon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_mui_form_utils.SelectExpandIcon, {
|
|
66
|
+
className: "MuiSelect-avExpandIcon"
|
|
40
67
|
}),
|
|
41
|
-
|
|
68
|
+
slotProps: { popupIndicator: { component: PopupIndicatorWrapper } },
|
|
42
69
|
...props
|
|
43
70
|
});
|
|
44
71
|
};
|
package/dist/index.mjs
CHANGED
|
@@ -1,20 +1,48 @@
|
|
|
1
1
|
// src/lib/Autocomplete.tsx
|
|
2
|
+
import { forwardRef } from "react";
|
|
2
3
|
import {
|
|
3
|
-
Autocomplete as MuiAutocomplete
|
|
4
|
+
Autocomplete as MuiAutocomplete,
|
|
5
|
+
IconButton as MuiIconButton
|
|
4
6
|
} from "@mui/material";
|
|
5
7
|
import { TextField } from "@availity/mui-textfield";
|
|
6
|
-
import {
|
|
7
|
-
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
import { SelectDivider, SelectExpandIcon } from "@availity/mui-form-utils";
|
|
9
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
var PopupIndicatorWrapper = forwardRef((props, ref) => /* @__PURE__ */ jsxs(Fragment, {
|
|
11
|
+
children: [
|
|
12
|
+
/* @__PURE__ */ jsx(SelectDivider, {
|
|
13
|
+
orientation: "vertical",
|
|
14
|
+
className: "MuiSelect-avEndAdornmentDivider"
|
|
15
|
+
}),
|
|
16
|
+
/* @__PURE__ */ jsx(MuiIconButton, {
|
|
17
|
+
...props,
|
|
18
|
+
ref
|
|
19
|
+
})
|
|
20
|
+
]
|
|
21
|
+
}));
|
|
8
22
|
var Autocomplete = ({
|
|
9
23
|
FieldProps,
|
|
10
24
|
...props
|
|
11
25
|
}) => {
|
|
26
|
+
const resolvedProps = (params) => ({
|
|
27
|
+
InputProps: {
|
|
28
|
+
...FieldProps == null ? void 0 : FieldProps.InputProps,
|
|
29
|
+
...params == null ? void 0 : params.InputProps
|
|
30
|
+
},
|
|
31
|
+
inputProps: {
|
|
32
|
+
...FieldProps == null ? void 0 : FieldProps.inputProps,
|
|
33
|
+
...params == null ? void 0 : params.inputProps
|
|
34
|
+
}
|
|
35
|
+
});
|
|
12
36
|
return /* @__PURE__ */ jsx(MuiAutocomplete, {
|
|
13
37
|
renderInput: (params) => /* @__PURE__ */ jsx(TextField, {
|
|
14
38
|
...FieldProps,
|
|
15
|
-
...params
|
|
39
|
+
...params,
|
|
40
|
+
...resolvedProps(params)
|
|
41
|
+
}),
|
|
42
|
+
popupIcon: /* @__PURE__ */ jsx(SelectExpandIcon, {
|
|
43
|
+
className: "MuiSelect-avExpandIcon"
|
|
16
44
|
}),
|
|
17
|
-
|
|
45
|
+
slotProps: { popupIndicator: { component: PopupIndicatorWrapper } },
|
|
18
46
|
...props
|
|
19
47
|
});
|
|
20
48
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@availity/mui-autocomplete",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Availity MUI Autocomplete Component - part of the @availity/element design system",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"publish:canary": "yarn npm publish --access public --tag canary"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@availity/mui-form-utils": "0.
|
|
37
|
-
"@availity/mui-textfield": "0.
|
|
36
|
+
"@availity/mui-form-utils": "0.6.0",
|
|
37
|
+
"@availity/mui-textfield": "0.4.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@mui/material": "^5.11.9",
|
|
@@ -1,20 +1,7 @@
|
|
|
1
1
|
// Each exported component in the package should have its own stories file
|
|
2
2
|
|
|
3
3
|
import type { Meta, StoryObj } from '@storybook/react';
|
|
4
|
-
import { Autocomplete
|
|
5
|
-
import {
|
|
6
|
-
Box,
|
|
7
|
-
Chip,
|
|
8
|
-
MenuItem,
|
|
9
|
-
Autocomplete as MuiAutocomplete,
|
|
10
|
-
AutocompleteProps as MuiAutocompleteProps,
|
|
11
|
-
TextField as MuiTextField,
|
|
12
|
-
SelectChangeEvent,
|
|
13
|
-
Typography,
|
|
14
|
-
} from '@mui/material';
|
|
15
|
-
import { TextField } from '@availity/mui-textfield';
|
|
16
|
-
import { Select, SelectPropOverrides } from '@availity/mui-form-utils';
|
|
17
|
-
import { useState } from 'react';
|
|
4
|
+
import { Autocomplete } from './Autocomplete';
|
|
18
5
|
|
|
19
6
|
const meta: Meta<typeof Autocomplete> = {
|
|
20
7
|
title: 'Components/Autocomplete/Autocomplete',
|
|
@@ -41,4 +28,9 @@ export const _Variants: StoryObj<typeof Autocomplete> = {
|
|
|
41
28
|
<Autocomplete {...args} FieldProps={{ label: 'Multi Select', margin: 'normal' }} multiple />
|
|
42
29
|
</>
|
|
43
30
|
),
|
|
31
|
+
parameters: {
|
|
32
|
+
controls: {
|
|
33
|
+
exclude: ['FieldProps'],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
44
36
|
};
|
package/src/lib/Autocomplete.tsx
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
1
2
|
import {
|
|
2
3
|
Autocomplete as MuiAutocomplete,
|
|
3
4
|
AutocompleteProps as MuiAutocompleteProps,
|
|
4
5
|
AutocompleteRenderInputParams,
|
|
6
|
+
IconButton as MuiIconButton,
|
|
7
|
+
IconButtonProps as MuiIconButtonProps,
|
|
5
8
|
ChipTypeMap,
|
|
6
9
|
} from '@mui/material';
|
|
7
10
|
import { TextField, TextFieldProps } from '@availity/mui-textfield';
|
|
8
|
-
import {
|
|
11
|
+
import { SelectDivider, SelectExpandIcon } from '@availity/mui-form-utils';
|
|
9
12
|
|
|
10
13
|
export interface AutocompleteProps<
|
|
11
14
|
T,
|
|
@@ -13,10 +16,20 @@ export interface AutocompleteProps<
|
|
|
13
16
|
DisableClearable extends boolean | undefined,
|
|
14
17
|
FreeSolo extends boolean | undefined,
|
|
15
18
|
ChipComponent extends React.ElementType = ChipTypeMap['defaultComponent']
|
|
16
|
-
> extends Omit<
|
|
19
|
+
> extends Omit<
|
|
20
|
+
MuiAutocompleteProps<T, Multiple, DisableClearable, FreeSolo, ChipComponent>,
|
|
21
|
+
'renderInput' | 'slotProps'
|
|
22
|
+
> {
|
|
17
23
|
FieldProps?: TextFieldProps;
|
|
18
24
|
}
|
|
19
25
|
|
|
26
|
+
const PopupIndicatorWrapper = forwardRef<HTMLButtonElement, MuiIconButtonProps>((props, ref) => (
|
|
27
|
+
<>
|
|
28
|
+
<SelectDivider orientation="vertical" className="MuiSelect-avEndAdornmentDivider" />
|
|
29
|
+
<MuiIconButton {...props} ref={ref} />
|
|
30
|
+
</>
|
|
31
|
+
));
|
|
32
|
+
|
|
20
33
|
export const Autocomplete = <
|
|
21
34
|
T,
|
|
22
35
|
Multiple extends boolean | undefined = false,
|
|
@@ -27,10 +40,23 @@ export const Autocomplete = <
|
|
|
27
40
|
FieldProps,
|
|
28
41
|
...props
|
|
29
42
|
}: AutocompleteProps<T, Multiple, DisableClearable, FreeSolo, ChipComponent>): JSX.Element => {
|
|
43
|
+
const resolvedProps = (params: AutocompleteRenderInputParams) => ({
|
|
44
|
+
InputProps: {
|
|
45
|
+
...FieldProps?.InputProps,
|
|
46
|
+
...params?.InputProps,
|
|
47
|
+
},
|
|
48
|
+
inputProps: {
|
|
49
|
+
...FieldProps?.inputProps,
|
|
50
|
+
...params?.inputProps,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
30
53
|
return (
|
|
31
54
|
<MuiAutocomplete
|
|
32
|
-
renderInput={(params: AutocompleteRenderInputParams) =>
|
|
33
|
-
|
|
55
|
+
renderInput={(params: AutocompleteRenderInputParams) => (
|
|
56
|
+
<TextField {...FieldProps} {...params} {...resolvedProps(params)} />
|
|
57
|
+
)}
|
|
58
|
+
popupIcon={<SelectExpandIcon className="MuiSelect-avExpandIcon" />}
|
|
59
|
+
slotProps={{ popupIndicator: { component: PopupIndicatorWrapper } }}
|
|
34
60
|
{...props}
|
|
35
61
|
/>
|
|
36
62
|
);
|