diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml
index 95b6c845f0..ba2fae3a2b 100644
--- a/.github/workflows/commitlint.yml
+++ b/.github/workflows/commitlint.yml
@@ -12,7 +12,7 @@ jobs:
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
- node-version: '22'
+ node-version: '24'
- run: yarn install --immutable
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index e0a3a7c870..ee6daf761f 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -26,7 +26,7 @@ jobs:
- name: Set Node Version
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
- node-version: 22
+ node-version: 24
- name: Get yarn cache directory path
id: yarn-cache-dir-path
@@ -38,9 +38,9 @@ jobs:
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
- key: ${{ runner.os }}-22-yarn-${{ hashFiles('**/yarn.lock') }}
+ key: ${{ runner.os }}-24-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
- ${{ runner.os }}-22-yarn-
+ ${{ runner.os }}-24-yarn-
- name: Install Dependencies
run: yarn install --immutable
@@ -74,7 +74,7 @@ jobs:
- name: Set Node Version
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
- node-version: 22
+ node-version: 24
- name: Get yarn cache directory path
id: yarn-cache-dir-path
@@ -86,9 +86,9 @@ jobs:
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
- key: ${{ runner.os }}-22-yarn-${{ hashFiles('**/yarn.lock') }}
+ key: ${{ runner.os }}-24-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
- ${{ runner.os }}-22-yarn-
+ ${{ runner.os }}-24-yarn-
- name: Install Dependencies
run: yarn install --immutable
@@ -159,7 +159,7 @@ jobs:
- name: Set Node Version
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
- node-version: 22
+ node-version: 24
cache: 'yarn'
cache-dependency-path: 'yarn.lock'
diff --git a/.github/workflows/pr-build.yml b/.github/workflows/pr-build.yml
index 3c2403b62a..2c140b03f2 100644
--- a/.github/workflows/pr-build.yml
+++ b/.github/workflows/pr-build.yml
@@ -22,7 +22,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
- node: [18, 20, 22]
+ node: [20, 22, 24]
steps:
- name: Checkout Code
@@ -61,7 +61,7 @@ jobs:
run: yarn build
- name: Build Docs
- if: ${{ matrix.node == 22 }}
+ if: ${{ matrix.node == 24 }}
run: yarn build:storybook
- name: Lint
diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml
index b263379f9a..06147f51a9 100644
--- a/.github/workflows/preview.yml
+++ b/.github/workflows/preview.yml
@@ -27,7 +27,7 @@ jobs:
- name: Set Node Version
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
- node-version: 22
+ node-version: 24
- name: Get yarn cache directory path
id: yarn-cache-dir-path
@@ -39,9 +39,9 @@ jobs:
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
- key: ${{ runner.os }}-22-yarn-${{ hashFiles('**/yarn.lock') }}
+ key: ${{ runner.os }}-24-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
- ${{ runner.os }}-22-yarn-
+ ${{ runner.os }}-24-yarn-
- name: Install Dependencies
run: yarn install --immutable
diff --git a/.nvmrc b/.nvmrc
index 2bd5a0a98a..a45fd52cc5 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-22
+24
diff --git a/apps/element-storybook/.storybook/preview.tsx b/apps/element-storybook/.storybook/preview.tsx
index 687019a1e1..e338943f41 100644
--- a/apps/element-storybook/.storybook/preview.tsx
+++ b/apps/element-storybook/.storybook/preview.tsx
@@ -5,7 +5,7 @@ import { Title, Subtitle, Description, Primary, Controls, Stories, useOf } from
import type { StoryContext } from '@storybook/types';
import { ThemeProvider } from '@availity/theme-provider';
-const withThemeProvider = (Story: () => JSX.Element, context: StoryContext) => {
+const withThemeProvider = (Story: () => React.JSX.Element, context: StoryContext) => {
return (
diff --git a/apps/element-storybook/src/FormComponentExamples.tsx b/apps/element-storybook/src/FormComponentExamples.tsx
index 6059e16012..cbc7b50283 100644
--- a/apps/element-storybook/src/FormComponentExamples.tsx
+++ b/apps/element-storybook/src/FormComponentExamples.tsx
@@ -41,10 +41,16 @@ export const AutocompleteExample = () => (
);
+function sleep(ms: number) {
+ return new Promise(resolve => setTimeout(resolve, ms))
+}
+
+const loadOptions = async (offset: number, limit: number) => {await sleep(10000); return({options: [], hasMore: false, offset: 0})};
+
export const AsyncAutocompleteExample = () => (
-
+
);
diff --git a/apps/element-storybook/src/bs4-migration/FormMigration.stories.tsx b/apps/element-storybook/src/bs4-migration/FormMigration.stories.tsx
index 492b48b1c9..041433b40c 100644
--- a/apps/element-storybook/src/bs4-migration/FormMigration.stories.tsx
+++ b/apps/element-storybook/src/bs4-migration/FormMigration.stories.tsx
@@ -155,7 +155,7 @@ const dropdownOptions = ['Bulbasaur', 'Squirtle', 'Charmander'];
// />
// {errors.radio ? {errors.radio?.message} : null }
//
-//
+//
// Submit
//
//
@@ -185,7 +185,7 @@ export const _YupValidation: StoryObj = {
});
const isRequired = (name: string) => {
- return(!schema.describe().fields[name]?.optional || undefined)
+ return(!(schema.describe().fields[name] as yup.SchemaDescription)?.optional || undefined)
}
type FormInputsType = yup.InferType;
@@ -237,7 +237,7 @@ export const _YupValidation: StoryObj = {
} value="1" label="Option 1" />
} value="2" label="Option 2" />
-
+
Submit
@@ -338,7 +338,7 @@ export const _YupValidation: StoryObj = {
//
// )}
// />
-//
+//
// Submit
//
//
@@ -401,7 +401,7 @@ export const _RHFRules: StoryObj = {
} value="1" label="Option 1" />
} value="2" label="Option 2" />
-
+
Submit
diff --git a/apps/element-storybook/src/bs4-migration/form-migration.md b/apps/element-storybook/src/bs4-migration/form-migration.md
index 68ce5dc196..1b8e14b110 100644
--- a/apps/element-storybook/src/bs4-migration/form-migration.md
+++ b/apps/element-storybook/src/bs4-migration/form-migration.md
@@ -340,7 +340,7 @@ export const Form = () => {
} value="1" label="Option 1" />
} value="2" label="Option 2" />
-
+
Submit
@@ -430,7 +430,7 @@ export const Form = () => {
/>
{errors.radio ? {errors.radio?.message} : null }
-
+
Submit
diff --git a/apps/element-storybook/src/layouts/sidebar-tables/DataGridSection.tsx b/apps/element-storybook/src/layouts/sidebar-tables/DataGridSection.tsx
index ef891e89e9..746a6aa7d2 100644
--- a/apps/element-storybook/src/layouts/sidebar-tables/DataGridSection.tsx
+++ b/apps/element-storybook/src/layouts/sidebar-tables/DataGridSection.tsx
@@ -1,4 +1,4 @@
-import { AttachmentIcon, Badge, Chip } from '@availity/element';
+import { AttachmentIcon, Badge, StatusChip } from '@availity/element';
import { Paper, Typography } from '@mui/material';
import { DataGrid, GridColDef, GridRenderCellParams, GridValueGetterParams } from '@mui/x-data-grid';
import type { AlertColor } from '@mui/material';
@@ -53,12 +53,12 @@ const columns: GridColDef[] = [
Denied: 'error',
Approved: 'success',
};
- return ;
+ return ;
},
},
];
-export const DataGridSection = (): JSX.Element => (
+export const DataGridSection = (): React.JSX.Element => (
DataGrid
diff --git a/apps/element-storybook/src/layouts/sidebar-tables/HeaderSection.tsx b/apps/element-storybook/src/layouts/sidebar-tables/HeaderSection.tsx
index 13beb769c1..6c2f69e903 100644
--- a/apps/element-storybook/src/layouts/sidebar-tables/HeaderSection.tsx
+++ b/apps/element-storybook/src/layouts/sidebar-tables/HeaderSection.tsx
@@ -1,6 +1,6 @@
import { Box, Breadcrumbs, HomeIcon, IconButton, Link, Typography } from '@availity/element';
-export const HeaderSection = (): JSX.Element => {
+export const HeaderSection = (): React.JSX.Element => {
return (
diff --git a/apps/element-storybook/src/layouts/sidebar-tables/SearchSection.tsx b/apps/element-storybook/src/layouts/sidebar-tables/SearchSection.tsx
index 43b7385b93..55b31605a9 100644
--- a/apps/element-storybook/src/layouts/sidebar-tables/SearchSection.tsx
+++ b/apps/element-storybook/src/layouts/sidebar-tables/SearchSection.tsx
@@ -12,7 +12,7 @@ import {
ChartColumnIcon,
} from '@availity/element';
-export const SearchSection = (): JSX.Element => {
+export const SearchSection = (): React.JSX.Element => {
const [searchValue, setSearchValue] = useState('');
return (
diff --git a/apps/element-storybook/src/layouts/sidebar-tables/TablesSection.tsx b/apps/element-storybook/src/layouts/sidebar-tables/TablesSection.tsx
index 2a2f02800a..b37cadb88b 100644
--- a/apps/element-storybook/src/layouts/sidebar-tables/TablesSection.tsx
+++ b/apps/element-storybook/src/layouts/sidebar-tables/TablesSection.tsx
@@ -143,7 +143,7 @@ function EnhancedTableHead(props: EnhancedTableProps) {
);
}
-export const TablesSection = (): JSX.Element => {
+export const TablesSection = (): React.JSX.Element => {
const [order, setOrder] = useState();
const [orderBy, setOrderBy] = useState();
diff --git a/apps/element-storybook/src/upgrading-to-v2.mdx b/apps/element-storybook/src/upgrading-to-v2.mdx
new file mode 100644
index 0000000000..251446b9c5
--- /dev/null
+++ b/apps/element-storybook/src/upgrading-to-v2.mdx
@@ -0,0 +1,58 @@
+import { Meta } from '@storybook/addon-docs';
+
+
+
+## Upgrading to Element v2
+
+Element v2 introduces major upgrades to `@mui/material` v7 and `@mui/x-*` v8. For a
+comprehensive list of the changes made see
+
+- [`@mui/material` Upgrade to v7 Guide](https://mui.com/material-ui/migration/upgrade-to-v7/)
+- [`@mui/x-date-pickers` Migration from v7 to v8](https://mui.com/x/migration/migration-pickers-v7/)
+- [`@mui/x-tree-view` Migration from v7 to v8](https://mui.com/x/migration/migration-tree-view-v7/)
+
+### Critical Changes
+
+#### React Upgrade and Dependency Coordination
+
+By default the material packages will use v19 of react, however if using a lower version of react a resolution will need to be
+set for the corresponding version of `react-is`. See the MUI notes on [React 18 and below](https://mui.com/material-ui/migration/upgrade-to-v7/#react-18-and-below)
+
+### Potential Impact Changes
+
+These changes may affect your application depending on component usage:
+
+#### Component-Specific Changes
+
+- [Datepicker](https://mui.com/x/migration/migration-pickers-v7/)
+ - [New DOM structure for the field](https://mui.com/x/migration/migration-pickers-v7/) moves away from the old text input. The new section list input is more accessible,
+ but removes any `placeholder` from the field. If you are passing your own `TextField` you will need to swap to a `PickersTextField`.
+ - [Treat partially filled date as `null` in `onChange`](https://mui.com/x/migration/migration-pickers-v7/#treat-partially-filled-date-as-null-in-onchange)
+ - [disableOpenPicker prop deprecated](https://mui.com/x/migration/migration-pickers-v7/#deprecate-the-disableopenpicker-prop)
+ - [Do not pass the date object as a generic](https://mui.com/x/migration/migration-pickers-v7/#do-not-pass-the-date-object-as-a-generic)
+- FileSelector/FileSelector2
+ - `isCloud` is true by default
+- LoadingButton
+ - LoadingButton pattern now matches Button, removing the `variant` prop
+
+#### Removed Internals
+
+We are cleaning up our exports to no longer include internal utils/components
+
+- Alert: `AlertIcons`
+- Autocomplete: `fetchCodes`, `handleGetCodesOptionLabel`, `fetchOrgs`, `handleGetOrgOptionLabel`, `fetchProviders`, `handleGetProviderOptionLabel`, `Code` type, `Organization` type, `Provider` type
+- Dialog: `CloseButtonSlot`
+- FileSelector: `outerBoxStyles`, `innerBoxStyles`, `createCounter`, `DropzoneContainer`, `formatFileTooLarge`, `CLOUD_URL`
+- Form Utils: `InputPropOverrides`, `SearchByContainer`, `SelectDivider`, `SelectExpandIcon`, `SelectPropOverrides`, `SelectAccessibilityOverrides`
+- Spaces: `INITIAL_STATE`
+
+### Non-Impact Changes
+
+The following changes should not require any action:
+
+- [Deprecated APIs removed](https://mui.com/material-ui/migration/upgrade-to-v7/#deprecated-apis-removed)
+ - [Dialog onBackdropClick prop removal]()
+- [Grid and Grid2 renamed](https://mui.com/material-ui/migration/upgrade-to-v7/#grid-and-grid2-renamed) - see `element` v1 codemods
+- [TablePaginationActions types import path changed](https://mui.com/material-ui/migration/upgrade-to-v7/#tablepaginationactions-types-import-path-changed)
+- [Use Simple Tree View instead of Tree View](https://mui.com/x/migration/migration-tree-view-v7/#%E2%9C%85-use-simple-tree-view-instead-of-tree-view)
+
diff --git a/netlify.toml b/netlify.toml
index 20acd1e40f..b6fca308a3 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -3,7 +3,7 @@
command = "yarn build:storybook:ci"
[build.environment]
- NODE_VERSION = "22"
+ NODE_VERSION = "24"
YARN_VERSION = "1.19.1"
[[redirects]]
diff --git a/package.json b/package.json
index 3d910f2537..4986476783 100644
--- a/package.json
+++ b/package.json
@@ -11,7 +11,7 @@
],
"engines": {
"yarn": "^3.0.0",
- "node": "^18.0.0 | ^20.0.0 | ^22.0.0"
+ "node": "^20.0.0 | ^22.0.0 | ^24.0.0"
},
"scripts": {
"build": "nx run-many --target=build --all",
@@ -42,8 +42,8 @@
"@commitlint/config-conventional": "^18.6.3",
"@commitlint/config-nx-scopes": "^18.6.1",
"@jscutlery/semver": "~5.5.1",
- "@mui/lab": "6.0.0-beta.12",
- "@mui/x-data-grid": "^7.26.0",
+ "@mui/lab": "7.0.1-beta.18",
+ "@mui/x-data-grid": "^8.16.0",
"@nx/devkit": "20.8.2",
"@nx/eslint": "20.8.2",
"@nx/eslint-plugin": "20.8.2",
@@ -66,10 +66,10 @@
"@testing-library/react": "16.1.0",
"@testing-library/user-event": "^14.6.1",
"@types/jest": "29.5.14",
- "@types/node": "18.19.31",
+ "@types/node": "24.10.0",
"@types/qs": "^6.9.18",
- "@types/react": "18.3.1",
- "@types/react-dom": "18.3.0",
+ "@types/react": "19.2.2",
+ "@types/react-dom": "19.2.2",
"@typescript-eslint/eslint-plugin": "7.18.0",
"@typescript-eslint/parser": "7.18.0",
"babel-jest": "29.7.0",
@@ -94,7 +94,7 @@
"prettier": "^3.5.3",
"react-hook-form": "^7.55.0",
"react-imask": "7.6.1",
- "react-number-format": "5.4.0",
+ "react-number-format": "5.4.4",
"remark-gfm": "^4.0.1",
"ts-jest": "29.1.2",
"ts-node": "10.9.1",
@@ -102,7 +102,7 @@
"typescript": "5.7.3",
"undici": "^5.29.0",
"vite": "6.2.7",
- "vite-plugin-node-polyfills": "^0.22.0"
+ "vite-plugin-node-polyfills": "^0.24.0"
},
"packageManager": "yarn@3.3.1",
"msw": {
diff --git a/packages/accordion/package.json b/packages/accordion/package.json
index 734896b81a..44002feed8 100644
--- a/packages/accordion/package.json
+++ b/packages/accordion/package.json
@@ -44,16 +44,16 @@
"@availity/mui-chip": "workspace:^",
"@availity/mui-layout": "workspace:^",
"@availity/mui-typography": "workspace:^",
- "@mui/material": "^6.4.5",
- "react": "18.2.0",
- "react-dom": "18.2.0",
+ "@mui/material": "^7.3.4",
+ "react": "19.2.0",
+ "react-dom": "19.2.0",
"tsup": "^8.4.0",
"typescript": "^5.4.5"
},
"peerDependencies": {
"@availity/mui-icon": "workspace:^",
- "@mui/material": "^6.4.5",
- "react": ">=16.3.0"
+ "@mui/material": "^7.0.0",
+ "react": ">=17.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/alert/package.json b/packages/alert/package.json
index 2cca4c7c50..c1fa9dd97a 100644
--- a/packages/alert/package.json
+++ b/packages/alert/package.json
@@ -45,15 +45,15 @@
"@availity/mui-icon": "workspace:*"
},
"devDependencies": {
- "@mui/material": "^6.4.5",
- "react": "18.2.0",
- "react-dom": "18.2.0",
+ "@mui/material": "^7.3.4",
+ "react": "19.2.0",
+ "react-dom": "19.2.0",
"tsup": "^8.4.0",
"typescript": "^5.4.5"
},
"peerDependencies": {
- "@mui/material": "^6.4.5",
- "react": ">=16.3.0"
+ "@mui/material": "^7.0.0",
+ "react": ">=17.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/alert/src/lib/AlertTitle.tsx b/packages/alert/src/lib/AlertTitle.tsx
index 25f7c492ba..fe8cfc4676 100644
--- a/packages/alert/src/lib/AlertTitle.tsx
+++ b/packages/alert/src/lib/AlertTitle.tsx
@@ -5,6 +5,6 @@ export type AlertTitleProps = {
children: React.ReactNode;
} & MUIAlertTitleProps;
-export const AlertTitle = ({ children, ...rest }: AlertTitleProps): JSX.Element => (
+export const AlertTitle = ({ children, ...rest }: AlertTitleProps): React.JSX.Element => (
{children}
);
diff --git a/packages/authorize/package.json b/packages/authorize/package.json
index 0ceb6533ff..738e8e0558 100644
--- a/packages/authorize/package.json
+++ b/packages/authorize/package.json
@@ -45,15 +45,15 @@
"@tanstack/react-query": "^4.36.1"
},
"devDependencies": {
- "@mui/material": "^6.4.5",
- "react": "18.2.0",
- "react-dom": "18.2.0",
+ "@mui/material": "^7.3.4",
+ "react": "19.2.0",
+ "react-dom": "19.2.0",
"tsup": "^8.4.0",
"typescript": "^5.4.5"
},
"peerDependencies": {
- "@mui/material": "^6.4.5",
- "react": ">=16.3.0"
+ "@mui/material": "^7.0.0",
+ "react": ">=17.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/authorize/src/lib/Authorize.stories.tsx b/packages/authorize/src/lib/Authorize.stories.tsx
index 5794430126..a58fd03c20 100644
--- a/packages/authorize/src/lib/Authorize.stories.tsx
+++ b/packages/authorize/src/lib/Authorize.stories.tsx
@@ -10,7 +10,7 @@ const meta: Meta = {
component: Authorize,
tags: ['autodocs'],
decorators: [
- (Story: () => JSX.Element) => (
+ (Story: () => React.JSX.Element) => (
diff --git a/packages/authorize/src/lib/Authorize.tsx b/packages/authorize/src/lib/Authorize.tsx
index 663524c729..1ef7f4f0a9 100644
--- a/packages/authorize/src/lib/Authorize.tsx
+++ b/packages/authorize/src/lib/Authorize.tsx
@@ -35,7 +35,7 @@ export const Authorize = ({
permissions,
parameters = {},
queryOptions
-}: AuthorizeProps): JSX.Element | null => {
+}: AuthorizeProps): React.JSX.Element | null => {
const { authorized, isLoading } = useAuthorize(permissions, parameters, queryOptions);
if (isLoading) {
diff --git a/packages/autocomplete/package.json b/packages/autocomplete/package.json
index 119f3686d9..cc5311fc61 100644
--- a/packages/autocomplete/package.json
+++ b/packages/autocomplete/package.json
@@ -41,7 +41,7 @@
"publish:canary": "yarn npm publish --access public --tag canary"
},
"dependencies": {
- "@mui/types": "^7.2.21",
+ "@mui/types": "^7.4.7",
"qs": "^6.14.0"
},
"devDependencies": {
@@ -49,10 +49,10 @@
"@availity/mui-form-utils": "workspace:^",
"@availity/mui-icon": "workspace:^",
"@availity/mui-textfield": "workspace:^",
- "@mui/material": "^6.4.5",
+ "@mui/material": "^7.3.4",
"@tanstack/react-query": "^4.36.1",
- "react": "18.2.0",
- "react-dom": "18.2.0",
+ "react": "19.2.0",
+ "react-dom": "19.2.0",
"tsup": "^8.4.0",
"typescript": "^5.4.5"
},
@@ -60,9 +60,9 @@
"@availity/api-axios": "^8.0.7",
"@availity/mui-form-utils": "workspace:^",
"@availity/mui-textfield": "workspace:^",
- "@mui/material": "^6.4.5",
+ "@mui/material": "^7.0.0",
"@tanstack/react-query": "^4.36.1",
- "react": ">=16.3.0"
+ "react": ">=17.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/autocomplete/src/lib/AsyncAutocomplete.test.tsx b/packages/autocomplete/src/lib/AsyncAutocomplete.test.tsx
index 6edf584d12..141eeb1caa 100644
--- a/packages/autocomplete/src/lib/AsyncAutocomplete.test.tsx
+++ b/packages/autocomplete/src/lib/AsyncAutocomplete.test.tsx
@@ -64,6 +64,9 @@ describe('AsyncAutocomplete', () => {
jest.restoreAllMocks();
});
+ // terminate the server
+ afterAll(() => server.close());
+
test('should render successfully', () => {
const client = new QueryClient();
diff --git a/packages/autocomplete/src/lib/Autocomplete.test.tsx b/packages/autocomplete/src/lib/Autocomplete.test.tsx
index de56f891b2..ae740bc49d 100644
--- a/packages/autocomplete/src/lib/Autocomplete.test.tsx
+++ b/packages/autocomplete/src/lib/Autocomplete.test.tsx
@@ -13,8 +13,10 @@ describe('Autocomplete', () => {
});
test('aria-controls should not be empty when open', () => {
const { getByRole } = render();
- const combobox = getByRole('combobox', { hidden: true })
+
+ const combobox = getByRole('combobox', { hidden: true });
+ const listbox = getByRole('listbox');
expect(combobox.getAttribute('aria-controls')).not.toEqual('');
- expect(combobox.getAttribute('aria-controls')).toMatch(':r');
+ expect(combobox.getAttribute('aria-controls')).toEqual(listbox.getAttribute('id'));
});
});
diff --git a/packages/autocomplete/src/lib/Autocomplete.tsx b/packages/autocomplete/src/lib/Autocomplete.tsx
index 6a95a8a015..160ed59e10 100644
--- a/packages/autocomplete/src/lib/Autocomplete.tsx
+++ b/packages/autocomplete/src/lib/Autocomplete.tsx
@@ -66,7 +66,7 @@ export const Autocomplete = <
>({
FieldProps,
...props
-}: AutocompleteProps): JSX.Element => {
+}: AutocompleteProps): React.JSX.Element => {
// Availity desired default props are not making it into component context through theme defaultProps.
// Can be overridden by props passed to TextField through `FieldProps`.
const defaultProps = {
diff --git a/packages/autocomplete/src/lib/CodesAutocomplete.test.tsx b/packages/autocomplete/src/lib/CodesAutocomplete.test.tsx
index 34e3980d11..b45e709da2 100644
--- a/packages/autocomplete/src/lib/CodesAutocomplete.test.tsx
+++ b/packages/autocomplete/src/lib/CodesAutocomplete.test.tsx
@@ -21,6 +21,9 @@ describe('CodesAutocomplete', () => {
client.clear();
});
+ // terminate the server
+ afterAll(() => server.close());
+
test('providers are fetched and displayed by name', async () => {
render(
diff --git a/packages/autocomplete/src/lib/OrganizationAutocomplete.test.tsx b/packages/autocomplete/src/lib/OrganizationAutocomplete.test.tsx
index 28f98e7714..b5327b03e2 100644
--- a/packages/autocomplete/src/lib/OrganizationAutocomplete.test.tsx
+++ b/packages/autocomplete/src/lib/OrganizationAutocomplete.test.tsx
@@ -21,6 +21,9 @@ describe('OrganizationAutocomplete', () => {
client.clear();
});
+ // terminate the server
+ afterAll(() => server.close());
+
test('organizations are fetched and displayed by name', async () => {
render(
diff --git a/packages/autocomplete/src/lib/ProviderAutocomplete.test.tsx b/packages/autocomplete/src/lib/ProviderAutocomplete.test.tsx
index 319833c8b2..3d81ec9853 100644
--- a/packages/autocomplete/src/lib/ProviderAutocomplete.test.tsx
+++ b/packages/autocomplete/src/lib/ProviderAutocomplete.test.tsx
@@ -21,6 +21,9 @@ describe('ProviderAutocomplete', () => {
client.clear();
});
+ // terminate the server
+ afterAll(() => server.close());
+
test('providers are fetched and displayed by name', async () => {
render(
diff --git a/packages/avatar/package.json b/packages/avatar/package.json
index 9f6637bb1f..8201bc9db9 100644
--- a/packages/avatar/package.json
+++ b/packages/avatar/package.json
@@ -41,16 +41,16 @@
},
"devDependencies": {
"@availity/mui-icon": "workspace:^",
- "@mui/material": "^6.4.5",
- "react": "18.2.0",
- "react-dom": "18.2.0",
+ "@mui/material": "^7.3.4",
+ "react": "19.2.0",
+ "react-dom": "19.2.0",
"tsup": "^8.4.0",
"typescript": "^5.4.5"
},
"peerDependencies": {
"@availity/mui-icon": "workspace:^",
- "@mui/material": "^6.4.5",
- "react": ">=16.3.0"
+ "@mui/material": "^7.0.0",
+ "react": ">=17.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/avatar/src/lib/Avatar.stories.tsx b/packages/avatar/src/lib/Avatar.stories.tsx
index bfe10f2a6a..3f4a87dda0 100644
--- a/packages/avatar/src/lib/Avatar.stories.tsx
+++ b/packages/avatar/src/lib/Avatar.stories.tsx
@@ -3,7 +3,7 @@
import type { Meta, StoryObj } from '@storybook/react';
import { Avatar, AvatarProps } from './Avatar';
import { HomeIcon } from '@availity/mui-icon';
-import Grid from '@mui/material/Grid2';
+import Grid from '@mui/material/Grid';
const meta: Meta = {
title: 'Components/Avatar/Avatar',
diff --git a/packages/avatar/src/lib/Avatar.tsx b/packages/avatar/src/lib/Avatar.tsx
index 6b396c96e1..cb50b79b92 100644
--- a/packages/avatar/src/lib/Avatar.tsx
+++ b/packages/avatar/src/lib/Avatar.tsx
@@ -33,7 +33,7 @@ const formatChildren = (children: React.ReactNode, size: 'xs' | 's' | 'm' | 'l'
return children;
};
-export const Avatar = ({ children, size = 'xl', src, sx, ...rest }: AvatarProps): JSX.Element => {
+export const Avatar = ({ children, size = 'xl', src, sx, ...rest }: AvatarProps): React.JSX.Element => {
const [avatar, setAvatar] = React.useState();
useEffect(() => {
diff --git a/packages/backdrop/package.json b/packages/backdrop/package.json
index c1f7b6ccd5..dc2f4a9719 100644
--- a/packages/backdrop/package.json
+++ b/packages/backdrop/package.json
@@ -40,15 +40,15 @@
"publish:canary": "yarn npm publish --access public --tag canary"
},
"devDependencies": {
- "@mui/material": "^6.4.5",
- "react": "18.2.0",
- "react-dom": "18.2.0",
+ "@mui/material": "^7.3.4",
+ "react": "19.2.0",
+ "react-dom": "19.2.0",
"tsup": "^8.4.0",
"typescript": "^5.4.5"
},
"peerDependencies": {
- "@mui/material": "^6.4.5",
- "react": ">=16.3.0"
+ "@mui/material": "^7.0.0",
+ "react": ">=17.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/backdrop/src/lib/Backdrop.tsx b/packages/backdrop/src/lib/Backdrop.tsx
index 52d040a7ce..266286b2ca 100644
--- a/packages/backdrop/src/lib/Backdrop.tsx
+++ b/packages/backdrop/src/lib/Backdrop.tsx
@@ -4,6 +4,6 @@ export interface BackdropProps extends MuiBackdropProps {
children?: React.ReactNode;
}
-export const Backdrop = ({ children, ...rest }: BackdropProps): JSX.Element => {
+export const Backdrop = ({ children, ...rest }: BackdropProps): React.JSX.Element => {
return {children};
};
diff --git a/packages/badge/package.json b/packages/badge/package.json
index 6bf1615485..668b307363 100644
--- a/packages/badge/package.json
+++ b/packages/badge/package.json
@@ -42,15 +42,15 @@
},
"devDependencies": {
"@availity/mui-icon": "workspace:^",
- "@mui/material": "^6.4.5",
- "react": "18.2.0",
- "react-dom": "18.2.0",
+ "@mui/material": "^7.3.4",
+ "react": "19.2.0",
+ "react-dom": "19.2.0",
"tsup": "^8.4.0",
"typescript": "^5.4.5"
},
"peerDependencies": {
- "@mui/material": "^6.4.5",
- "react": ">=16.3.0"
+ "@mui/material": "^7.0.0",
+ "react": ">=17.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/badge/src/lib/Badge.tsx b/packages/badge/src/lib/Badge.tsx
index 3bb63105e2..d7df649623 100644
--- a/packages/badge/src/lib/Badge.tsx
+++ b/packages/badge/src/lib/Badge.tsx
@@ -7,7 +7,7 @@ export interface BadgeProps extends MUIBadgeProps {
color?: 'primary' | 'error' | 'success';
}
-export const Badge = ({ children, color = 'error', ...rest }: BadgeProps): JSX.Element => (
+export const Badge = ({ children, color = 'error', ...rest }: BadgeProps): React.JSX.Element => (
{children}
diff --git a/packages/block-ui/package.json b/packages/block-ui/package.json
index 82fed4c57a..8c10ffcaa8 100644
--- a/packages/block-ui/package.json
+++ b/packages/block-ui/package.json
@@ -40,15 +40,15 @@
"devDependencies": {
"@availity/mui-button": "workspace:*",
"@availity/mui-paper": "workspace:*",
- "@mui/material": "^6.4.5",
- "react": "18.2.0",
- "react-dom": "18.2.0",
+ "@mui/material": "^7.3.4",
+ "react": "19.2.0",
+ "react-dom": "19.2.0",
"tsup": "^8.4.0",
"typescript": "^5.4.5"
},
"peerDependencies": {
- "@mui/material": "^6.4.5",
- "react": ">=16.3.0"
+ "@mui/material": "^7.0.0",
+ "react": ">=17.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/block-ui/src/lib/BlockUi.tsx b/packages/block-ui/src/lib/BlockUi.tsx
index d3185b19a1..22256551fe 100644
--- a/packages/block-ui/src/lib/BlockUi.tsx
+++ b/packages/block-ui/src/lib/BlockUi.tsx
@@ -75,7 +75,7 @@ export type BlockUiProps = {
/** Set whether the blocking component should follow the scroll or stay at a fixed postion */
keepInView?: boolean;
/** Loader component to use */
- loader?: JSX.Element;
+ loader?: React.JSX.Element;
/** The message to display. Can also be a component. */
message?: string | ReactNode;
/** Control if the children are shown when the component is being blocked */
@@ -91,7 +91,7 @@ export function BlockUi({
message,
renderChildren = true,
...rest
-}: BlockUiProps): JSX.Element {
+}: BlockUiProps): React.JSX.Element {
const [top, setTop] = useState('50%');
const blockerRef = useRef(null);
diff --git a/packages/breadcrumbs/package.json b/packages/breadcrumbs/package.json
index fe199b8cf3..3f2ba760b8 100644
--- a/packages/breadcrumbs/package.json
+++ b/packages/breadcrumbs/package.json
@@ -40,15 +40,15 @@
"publish:canary": "yarn npm publish --access public --tag canary"
},
"devDependencies": {
- "@mui/material": "^6.4.5",
- "react": "18.2.0",
- "react-dom": "18.2.0",
+ "@mui/material": "^7.3.4",
+ "react": "19.2.0",
+ "react-dom": "19.2.0",
"tsup": "^8.4.0",
"typescript": "^5.4.5"
},
"peerDependencies": {
- "@mui/material": "^6.4.5",
- "react": ">=16.3.0"
+ "@mui/material": "^7.0.0",
+ "react": ">=17.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/breadcrumbs/src/lib/Breadcrumbs.tsx b/packages/breadcrumbs/src/lib/Breadcrumbs.tsx
index 19a4e81216..f2cbe1fef4 100644
--- a/packages/breadcrumbs/src/lib/Breadcrumbs.tsx
+++ b/packages/breadcrumbs/src/lib/Breadcrumbs.tsx
@@ -55,7 +55,7 @@ export const Breadcrumbs = ({
homeUrl = '/static/web/onb/onboarding-ui-apps/dashboard-ui/',
LinkProps,
...rest
-}: BreadcrumbsProps): JSX.Element => {
+}: BreadcrumbsProps): React.JSX.Element => {
return (
=16.3.0"
+ "@mui/material": "^7.0.0",
+ "react": ">=17.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/button/src/lib/Button.tsx b/packages/button/src/lib/Button.tsx
index e55a95c0f5..92eee7f262 100644
--- a/packages/button/src/lib/Button.tsx
+++ b/packages/button/src/lib/Button.tsx
@@ -25,6 +25,9 @@ export type ButtonProps = {
| 'centerRipple'
| 'disableRipple'
| 'focusRipple'
+ | 'loading'
+ | 'loadingIndicator'
+ | 'loadingPosition'
| 'size'
| 'TouchRippleProps'
| 'touchRippleRef'
diff --git a/packages/button/src/lib/LoadingButton.stories.tsx b/packages/button/src/lib/LoadingButton.stories.tsx
index 18e4165647..2af9c1e28c 100644
--- a/packages/button/src/lib/LoadingButton.stories.tsx
+++ b/packages/button/src/lib/LoadingButton.stories.tsx
@@ -10,7 +10,6 @@ const meta: Meta = {
args: {
loading: true,
color: 'primary',
- variant: 'contained',
},
};
export default meta;
diff --git a/packages/button/src/lib/LoadingButton.test.tsx b/packages/button/src/lib/LoadingButton.test.tsx
index e18b7fd213..e97bb57363 100644
--- a/packages/button/src/lib/LoadingButton.test.tsx
+++ b/packages/button/src/lib/LoadingButton.test.tsx
@@ -1,4 +1,5 @@
import { render } from '@testing-library/react';
+import '@testing-library/jest-dom';
import { LoadingButton } from './LoadingButton';
describe('LoadingButton', () => {
@@ -16,6 +17,6 @@ describe('LoadingButton', () => {
test('should display spinner in end position when no icon passed', () => {
const { getByRole } = render(Test);
expect(getByRole('progressbar')).toBeTruthy();
- expect(getByRole('progressbar').parentElement).toHaveClass('MuiLoadingButton-loadingIndicatorEnd');
+ expect(getByRole('button')).toHaveClass('MuiButton-loadingPositionEnd');
});
});
diff --git a/packages/button/src/lib/LoadingButton.tsx b/packages/button/src/lib/LoadingButton.tsx
index 6f6a4a5190..e91cd133a9 100644
--- a/packages/button/src/lib/LoadingButton.tsx
+++ b/packages/button/src/lib/LoadingButton.tsx
@@ -1,38 +1,21 @@
import { forwardRef } from 'react';
-import MUILoadingButton, { LoadingButtonProps as MuiLoadingButtonProps } from '@mui/lab/LoadingButton';
+import MUIButton, { ButtonProps as MuiButtonProps } from '@mui/material/Button';
import CircularProgress from '@mui/material/CircularProgress';
+import { ButtonProps } from './Button';
-export type LoadingButtonProps = {
- children: React.ReactNode;
- /**
- * The color of the component.
- */
- color?: 'primary' | 'secondary' | 'error';
-} & Omit<
- MuiLoadingButtonProps,
- | 'color'
- | 'centerRipple'
- | 'disableRipple'
- | 'disableTouchRipple'
- | 'focusRipple'
- | 'disableFocusRipple'
- | 'TouchRippleProps'
- | 'touchRippleRef'
- | 'loadingIndicator'
- | 'loadingPosition'
->;
+export type LoadingButtonProps = ButtonProps & Pick
const LoadingIndicator = ;
export const LoadingButton = forwardRef((props, ref) => {
- const { children, loading, ...rest } = props;
+ const { children, loading = false, ...rest } = props;
//changing default loading button behavior to add end loading icon instead of replacing contents completely with icon
const loadingPosition = rest.startIcon ? 'start' : 'end';
const nonLoadingStyling = rest.startIcon || rest.endIcon || loading ? {} : { padding: '0 .7rem' };
const endIcon = rest.startIcon ? undefined : ;
return (
- ((
ref={ref}
>
{children}
-
+
);
});
diff --git a/packages/card/package.json b/packages/card/package.json
index 8d65baf7f6..87a02df6a4 100644
--- a/packages/card/package.json
+++ b/packages/card/package.json
@@ -42,15 +42,15 @@
"devDependencies": {
"@availity/mui-button": "workspace:^",
"@availity/mui-icon": "workspace:^",
- "@mui/material": "^6.4.5",
- "react": "18.2.0",
- "react-dom": "18.2.0",
+ "@mui/material": "^7.3.4",
+ "react": "19.2.0",
+ "react-dom": "19.2.0",
"tsup": "^8.4.0",
"typescript": "^5.4.5"
},
"peerDependencies": {
- "@mui/material": "^6.4.5",
- "react": ">=16.3.0"
+ "@mui/material": "^7.0.0",
+ "react": ">=17.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/card/src/lib/Card.tsx b/packages/card/src/lib/Card.tsx
index d85d6d4855..caa7644fac 100644
--- a/packages/card/src/lib/Card.tsx
+++ b/packages/card/src/lib/Card.tsx
@@ -4,6 +4,6 @@ export interface CardProps extends Omit {
+export const Card = ({ children, ...rest }: CardProps): React.JSX.Element => {
return {children};
};
diff --git a/packages/card/src/lib/CardActionArea.tsx b/packages/card/src/lib/CardActionArea.tsx
index 5a6068b3ed..cab1dfb645 100644
--- a/packages/card/src/lib/CardActionArea.tsx
+++ b/packages/card/src/lib/CardActionArea.tsx
@@ -11,7 +11,7 @@ export interface CardActionAreaProps
children?: React.ReactNode;
}
-export const CardActionArea = ({ children, ...rest }: CardActionAreaProps): JSX.Element => {
+export const CardActionArea = ({ children, ...rest }: CardActionAreaProps): React.JSX.Element => {
return (
{children}
diff --git a/packages/card/src/lib/CardActions.tsx b/packages/card/src/lib/CardActions.tsx
index ace7c77bb8..a5e65538a5 100644
--- a/packages/card/src/lib/CardActions.tsx
+++ b/packages/card/src/lib/CardActions.tsx
@@ -4,6 +4,6 @@ export interface CardActionsProps extends MuiCardActionsProps {
children?: React.ReactNode;
}
-export const CardActions = ({ children, ...rest }: CardActionsProps): JSX.Element => {
+export const CardActions = ({ children, ...rest }: CardActionsProps): React.JSX.Element => {
return {children};
};
diff --git a/packages/card/src/lib/CardContent.tsx b/packages/card/src/lib/CardContent.tsx
index 85795d4f70..da82377e7d 100644
--- a/packages/card/src/lib/CardContent.tsx
+++ b/packages/card/src/lib/CardContent.tsx
@@ -4,6 +4,6 @@ export interface CardContentProps extends MuiCardContentProps {
children?: React.ReactNode;
}
-export const CardContent = ({ children, ...rest }: CardContentProps): JSX.Element => {
+export const CardContent = ({ children, ...rest }: CardContentProps): React.JSX.Element => {
return {children};
};
diff --git a/packages/card/src/lib/CardHeader.tsx b/packages/card/src/lib/CardHeader.tsx
index 4902b0167d..c454578675 100644
--- a/packages/card/src/lib/CardHeader.tsx
+++ b/packages/card/src/lib/CardHeader.tsx
@@ -22,7 +22,7 @@ export const CardHeader = ({
title,
logo,
...rest
-}: CardHeaderProps): JSX.Element => {
+}: CardHeaderProps): React.JSX.Element => {
return (
{
+export const CardMedia = ({ children, ...rest }: CardMediaProps): React.JSX.Element => {
return {children};
};
diff --git a/packages/checkbox/package.json b/packages/checkbox/package.json
index ce73d9a6f5..c2e15d0c25 100644
--- a/packages/checkbox/package.json
+++ b/packages/checkbox/package.json
@@ -42,15 +42,15 @@
"devDependencies": {
"@availity/mui-icon": "workspace:^",
"@availity/mui-typography": "workspace:^",
- "@mui/material": "^6.4.5",
- "react": "18.2.0",
- "react-dom": "18.2.0",
+ "@mui/material": "^7.3.4",
+ "react": "19.2.0",
+ "react-dom": "19.2.0",
"tsup": "^8.4.0",
"typescript": "^5.4.5"
},
"peerDependencies": {
- "@mui/material": "^6.4.5",
- "react": ">=16.3.0"
+ "@mui/material": "^7.0.0",
+ "react": ">=17.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/chip/package.json b/packages/chip/package.json
index c97e428914..62a2f97c29 100644
--- a/packages/chip/package.json
+++ b/packages/chip/package.json
@@ -41,15 +41,15 @@
},
"devDependencies": {
"@availity/mui-avatar": "workspace:^",
- "@mui/material": "^6.4.5",
- "react": "18.2.0",
- "react-dom": "18.2.0",
+ "@mui/material": "^7.3.4",
+ "react": "19.2.0",
+ "react-dom": "19.2.0",
"tsup": "^8.4.0",
"typescript": "^5.4.5"
},
"peerDependencies": {
- "@mui/material": "^6.4.5",
- "react": ">=16.3.0"
+ "@mui/material": "^7.0.0",
+ "react": ">=17.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/chip/src/lib/Chip.tsx b/packages/chip/src/lib/Chip.tsx
index d35b4fba5f..43bee3712b 100644
--- a/packages/chip/src/lib/Chip.tsx
+++ b/packages/chip/src/lib/Chip.tsx
@@ -5,6 +5,6 @@ export type ChipProps = Omit<
'children' | 'color' | 'variant' | 'skipFocusWhenDisabled' | 'disabled' | 'size' | 'icon' | 'clickable' | 'color'
>;
-export const Chip = (props: ChipProps): JSX.Element => {
+export const Chip = (props: ChipProps): React.JSX.Element => {
return ;
};
diff --git a/packages/chip/src/lib/StatusChip.tsx b/packages/chip/src/lib/StatusChip.tsx
index 8cccb3d18d..082d6808d7 100644
--- a/packages/chip/src/lib/StatusChip.tsx
+++ b/packages/chip/src/lib/StatusChip.tsx
@@ -19,6 +19,6 @@ export type StatusChipProps = {
| 'onDelete'
>;
-export const StatusChip = ({ color = 'default', ...rest }: StatusChipProps): JSX.Element => {
+export const StatusChip = ({ color = 'default', ...rest }: StatusChipProps): React.JSX.Element => {
return ;
};
diff --git a/packages/controlled-form/package.json b/packages/controlled-form/package.json
index 86024fdae4..36b00d7fc2 100644
--- a/packages/controlled-form/package.json
+++ b/packages/controlled-form/package.json
@@ -55,19 +55,19 @@
"@availity/mui-paper": "workspace:^",
"@availity/mui-typography": "workspace:^",
"@hookform/resolvers": "^4.1.3",
- "@mui/material": "^6.4.5",
+ "@mui/material": "^7.3.4",
"@tanstack/react-query": "^4.36.1",
"dayjs": "^1.11.13",
- "react": "18.2.0",
- "react-dom": "18.2.0",
+ "react": "19.2.0",
+ "react-dom": "19.2.0",
"tsup": "^8.4.0",
"typescript": "^5.4.5",
"yup": "^1.6.1"
},
"peerDependencies": {
"@availity/api-axios": "^8.0.7",
- "@mui/material": "^6.4.5",
- "react": ">=16.3.0"
+ "@mui/material": "^7.0.0",
+ "react": ">=17.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/controlled-form/src/lib/AsyncAutocomplete.test.tsx b/packages/controlled-form/src/lib/AsyncAutocomplete.test.tsx
index 39660a2840..1128bc58ca 100644
--- a/packages/controlled-form/src/lib/AsyncAutocomplete.test.tsx
+++ b/packages/controlled-form/src/lib/AsyncAutocomplete.test.tsx
@@ -57,6 +57,9 @@ describe('ControlledAsyncAutocomplete', () => {
jest.restoreAllMocks();
});
+ // terminate the server
+ afterAll(() => server.close());
+
const client = new QueryClient({
defaultOptions: {
queries: {
diff --git a/packages/controlled-form/src/lib/Autocomplete.test.tsx b/packages/controlled-form/src/lib/Autocomplete.test.tsx
index 86be9ccc58..a17c2bb0c7 100644
--- a/packages/controlled-form/src/lib/Autocomplete.test.tsx
+++ b/packages/controlled-form/src/lib/Autocomplete.test.tsx
@@ -4,7 +4,7 @@ import { TestForm } from './UtilComponents';
const onSubmit = jest.fn();
-describe('ControlledAsyncAutocomplete', () => {
+describe('ControlledAutocomplete', () => {
afterEach(() => {
// Remove any handlers you may have added
// in individual tests (runtime handlers).
diff --git a/packages/controlled-form/src/lib/CodesAutocomplete.test.tsx b/packages/controlled-form/src/lib/CodesAutocomplete.test.tsx
index f5a52d04aa..20b1d98d75 100644
--- a/packages/controlled-form/src/lib/CodesAutocomplete.test.tsx
+++ b/packages/controlled-form/src/lib/CodesAutocomplete.test.tsx
@@ -7,7 +7,7 @@ import { TestForm } from './UtilComponents';
const onSubmit = jest.fn();
-describe('ControlledAsyncAutocomplete', () => {
+describe('ControlledCodesAutocomplete', () => {
beforeAll(() => {
// Start the interception.
server.listen();
@@ -20,6 +20,9 @@ describe('ControlledAsyncAutocomplete', () => {
jest.restoreAllMocks();
});
+ // terminate the server
+ afterAll(() => server.close());
+
const client = new QueryClient({
defaultOptions: {
queries: {
diff --git a/packages/controlled-form/src/lib/Datepicker.test.tsx b/packages/controlled-form/src/lib/Datepicker.test.tsx
index 67a93358fe..6d4d5e76d1 100644
--- a/packages/controlled-form/src/lib/Datepicker.test.tsx
+++ b/packages/controlled-form/src/lib/Datepicker.test.tsx
@@ -6,7 +6,7 @@ import { TestForm } from './UtilComponents';
const onSubmit = jest.fn();
-describe('Datepicker', () => {
+describe('ControlledDatepicker', () => {
test('should render successfully and submit selection', async () => {
const screen = render(
@@ -59,7 +59,7 @@ describe('Datepicker', () => {
);
- expect(screen.getByText('*')).toBeDefined();
+ expect(screen.getAllByText('*')).toBeDefined();
});
test('should indicate it is required when passing an object with true', async () => {
@@ -80,7 +80,7 @@ describe('Datepicker', () => {
);
- expect(screen.getByText('*')).toBeDefined();
+ expect(screen.getAllByText('*')).toBeDefined();
});
test('should not indicate it is required when passing an object with false', async () => {
@@ -101,7 +101,7 @@ describe('Datepicker', () => {
);
- expect(screen.queryByText('*')).toBeNull();
+ expect(screen.queryAllByText('*')).toHaveLength(0);
});
});
});
diff --git a/packages/controlled-form/src/lib/Datepicker.tsx b/packages/controlled-form/src/lib/Datepicker.tsx
index a738c4442d..1768bc796d 100644
--- a/packages/controlled-form/src/lib/Datepicker.tsx
+++ b/packages/controlled-form/src/lib/Datepicker.tsx
@@ -39,8 +39,8 @@ export const ControlledDatepicker =