From 9b3a094907fb32cab28cbe3ee11e4c6fc98fe223 Mon Sep 17 00:00:00 2001 From: tumms2021389 <97188066+tumms2021389@users.noreply.github.com> Date: Thu, 5 Sep 2024 13:33:03 +0530 Subject: [PATCH 01/21] Fix for breaking changes with 24.2 (#385) --- package-lock.json | 101 +++++++++++++++--- package.json | 10 +- .../infra/RootContainer/RootContainer.tsx | 6 +- .../components/template/AppShell/AppShell.tsx | 19 ++++ .../src/components/widget/ToDo/ToDo.tsx | 85 +++++++++++++-- webpack.config.js | 58 +++++----- 6 files changed, 221 insertions(+), 58 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9dc435ac..9ac4533f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "@material-ui/lab": "^4.0.0-alpha.60", "@material-ui/pickers": "^3.3.10", "@pega/auth": "^0.2.14", + "@pega/constellationjs": "^0.242.3", "@tinymce/tinymce-react": "^4.3.2", "@types/react": "^17.0.74", "dayjs": "^1.11.10", @@ -36,7 +37,6 @@ "@pega/commitlint-config": "^0.7.1", "@pega/commitlint-plugin": "^0.7.1", "@pega/configs": "^0.7.1", - "@pega/constellationjs": "24.1.0", "@pega/cspell-config": "^0.7.1", "@pega/eslint-config": "^0.7.1", "@pega/pcore-pconnect-typedefs": "~3.0.0", @@ -3228,10 +3228,12 @@ } }, "node_modules/@pega/constellationjs": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/@pega/constellationjs/-/constellationjs-24.1.0.tgz", - "integrity": "sha512-uWo81h+sQWScU/1wqVPiaXc+gLZDeVwas1Y4Ng/1yCl6M3q8EzVCZ0MA6asgGswdTfzbSD681QKv/u4T6Fxctg==", - "dev": true + "version": "0.242.3", + "resolved": "https://registry.npmjs.org/@pega/constellationjs/-/constellationjs-0.242.3.tgz", + "integrity": "sha512-t6NIafCXoHkIxtsLdKRji6CBJO1Ja9ioTidX5qxk7nlXoXeBztY0La8k42iaB2NH0s+9GGn1QxQYrWl2crb9Zg==", + "dependencies": { + "fs-extra": "^11.2.0" + } }, "node_modules/@pega/cspell-config": { "version": "0.7.2", @@ -9265,6 +9267,27 @@ "node": ">= 0.6" } }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs-extra/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/fs-monkey": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", @@ -9759,8 +9782,7 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graphemer": { "version": "1.4.0", @@ -12687,6 +12709,25 @@ "node": ">=6" } }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonfile/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -21299,10 +21340,12 @@ } }, "@pega/constellationjs": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/@pega/constellationjs/-/constellationjs-24.1.0.tgz", - "integrity": "sha512-uWo81h+sQWScU/1wqVPiaXc+gLZDeVwas1Y4Ng/1yCl6M3q8EzVCZ0MA6asgGswdTfzbSD681QKv/u4T6Fxctg==", - "dev": true + "version": "0.242.3", + "resolved": "https://registry.npmjs.org/@pega/constellationjs/-/constellationjs-0.242.3.tgz", + "integrity": "sha512-t6NIafCXoHkIxtsLdKRji6CBJO1Ja9ioTidX5qxk7nlXoXeBztY0La8k42iaB2NH0s+9GGn1QxQYrWl2crb9Zg==", + "requires": { + "fs-extra": "^11.2.0" + } }, "@pega/cspell-config": { "version": "0.7.2", @@ -25890,6 +25933,23 @@ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" + } + } + }, "fs-monkey": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", @@ -26253,8 +26313,7 @@ "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "graphemer": { "version": "1.4.0", @@ -28419,6 +28478,22 @@ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" + } + } + }, "jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", diff --git a/package.json b/package.json index 351c6640..9686b020 100644 --- a/package.json +++ b/package.json @@ -35,10 +35,10 @@ "build:dev:ci": "npm run ci && npm run build:dev", "build:prod": "run-p -l lint build-prod-only", "build:prod:ci": "npm run ci && npm run build:prod", - "start-dev": "webpack serve", - "start-dev-https": "webpack serve --https", - "start-prod": "http-server ./dist --port 3502 --gzip --brotli --cors --proxy http://localhost:3502?", - "start-prod-https": "http-server ./dist --port 3502 --gzip --brotli --cors --ssl --cert private.pem --key private.key --proxy https://localhost:3502?", + "start-dev": "webpack serve --mode='development'", + "start-dev-https": "webpack serve --server-type https --mode='development'", + "start-prod": "http-server ./dist --port 3502 --ext html -c-1 --gzip --brotli --cors --proxy http://localhost:3502?", + "start-prod-https": "http-server ./dist --port 3502 --ext html -c-1 --gzip --brotli --cors --ssl --cert private.pem --key private.key --proxy https://localhost:3502?", "test": "node scripts/playwright-message.js && playwright test --project=chromium MediaCo/portal MediaCo/embedded", "test:headed": "playwright test --headed --project=chromium MediaCo/portal MediaCo/embedded", "test-report": "playwright show-report tests/playwright-report", @@ -54,6 +54,7 @@ "@material-ui/lab": "^4.0.0-alpha.60", "@material-ui/pickers": "^3.3.10", "@pega/auth": "^0.2.14", + "@pega/constellationjs": "^0.242.3", "@tinymce/tinymce-react": "^4.3.2", "@types/react": "^17.0.74", "dayjs": "^1.11.10", @@ -75,7 +76,6 @@ "@pega/commitlint-config": "^0.7.1", "@pega/commitlint-plugin": "^0.7.1", "@pega/configs": "^0.7.1", - "@pega/constellationjs": "24.1.0", "@pega/cspell-config": "^0.7.1", "@pega/eslint-config": "^0.7.1", "@pega/pcore-pconnect-typedefs": "~3.0.0", diff --git a/packages/react-sdk-components/src/components/infra/RootContainer/RootContainer.tsx b/packages/react-sdk-components/src/components/infra/RootContainer/RootContainer.tsx index 03464ecf..825662b5 100644 --- a/packages/react-sdk-components/src/components/infra/RootContainer/RootContainer.tsx +++ b/packages/react-sdk-components/src/components/infra/RootContainer/RootContainer.tsx @@ -54,6 +54,7 @@ export default function RootContainer(props: PropsWithChildren { @@ -181,7 +181,7 @@ export default function RootContainer(props: PropsWithChildren - {rootView} + {rootView.current} {MemoizedModalViewContainer}
diff --git a/packages/react-sdk-components/src/components/template/AppShell/AppShell.tsx b/packages/react-sdk-components/src/components/template/AppShell/AppShell.tsx index cde8a6d4..4ac0d12f 100644 --- a/packages/react-sdk-components/src/components/template/AppShell/AppShell.tsx +++ b/packages/react-sdk-components/src/components/template/AppShell/AppShell.tsx @@ -92,6 +92,25 @@ export default function AppShell(props: PropsWithChildren) { setMapChildren(tempMap); }, []); + useEffect(() => { + // @ts-ignore + const caseTypesAvailableToCreateDP = PCore.getEnvironmentInfo().environmentInfoObject?.pxApplication?.pyCaseTypesAvailableToCreateDP; + if (caseTypesAvailableToCreateDP) { + const portalID = pConn.getValue('.pyOwner'); + PCore.getDataPageUtils() + .getPageDataAsync(caseTypesAvailableToCreateDP, pConn.getContextName(), { + PortalName: portalID + }) + .then(response => { + if (response?.pyCaseTypesAvailableToCreate) { + pConn.replaceState('.pyCaseTypesAvailableToCreate', response.pyCaseTypesAvailableToCreate, { + skipDirtyValidation: true + }); + } + }); + } + }, []); + const [iconURL, setIconURL] = useState(''); const [fullIconURL, setFullIconURL] = useState(''); useEffect(() => { diff --git a/packages/react-sdk-components/src/components/widget/ToDo/ToDo.tsx b/packages/react-sdk-components/src/components/widget/ToDo/ToDo.tsx index 09d6571e..3340c4c0 100644 --- a/packages/react-sdk-components/src/components/widget/ToDo/ToDo.tsx +++ b/packages/react-sdk-components/src/components/widget/ToDo/ToDo.tsx @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-shadow */ -import React, { useState } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import { Box, Button, @@ -26,6 +26,38 @@ import { PConnProps } from '../../../types/PConnProps'; import './ToDo.css'; +const fetchMyWorkList = (datapage, fields, numberOfRecords, includeTotalCount, context) => { + return PCore.getDataPageUtils() + .getDataAsync( + datapage, + context, + {}, + { + pageNumber: 1, + pageSize: numberOfRecords + }, + { + select: Object.keys(fields).map(key => ({ field: PCore.getAnnotationUtils().getPropertyName(fields[key]) })) + }, + { + additionalApiParams: { + includeTotalCount + } + } + ) + .then(response => { + return { + ...response, + data: (Array.isArray(response?.data) ? response.data : []).map(row => + Object.keys(fields).reduce((obj, key) => { + obj[key] = row[PCore.getAnnotationUtils().getPropertyName(fields[key])]; + return obj; + }, {}) + ) + }; + }); +}; + interface ToDoProps extends PConnProps { // If any, enter additional props that only exist on this component datasource?: any; @@ -37,7 +69,7 @@ interface ToDoProps extends PConnProps { itemKey?: string; showTodoList?: boolean; type?: string; - // eslint-disable-next-line react/no-unused-prop-types + context?: string; isConfirm?: boolean; } @@ -81,12 +113,20 @@ const useStyles = makeStyles(theme => ({ })); export default function ToDo(props: ToDoProps) { - const { getPConnect, datasource = [], headerText = 'To do', showTodoList = true, myWorkList = {}, type = 'worklist', isConfirm = false } = props; + const { + getPConnect, + context, + datasource = [], + headerText = 'To do', + showTodoList = true, + myWorkList = {}, + type = 'worklist', + isConfirm = false + } = props; const CONSTS = PCore.getConstants(); const bLogging = true; - let assignmentCount = 0; const currentUser = PCore.getEnvironmentInfo().getOperatorName(); const currentUserInitials = Utils.getInitials(currentUser); const assignmentsSource = datasource?.source || myWorkList?.source; @@ -106,17 +146,34 @@ export default function ToDo(props: ToDoProps) { const showlessLocalizedValue = localizedVal('show_less', 'CosmosFields'); const showMoreLocalizedValue = localizedVal('show_more', 'CosmosFields'); const canPerform = assignments?.[0]?.canPerform === 'true' || assignments?.[0]?.canPerform === true; - // const { setOpen } = useNavBar(); + const [count, setCount] = useState(null); + + const { + WORK_BASKET: { MY_WORK_LIST } + } = PCore.getConstants(); function initAssignments(): any[] { if (assignmentsSource) { - assignmentCount = assignmentsSource.length; return topThreeAssignments(assignmentsSource); } // turn off todolist return []; } + const deferLoadWorklistItems = useCallback( + responseData => { + setCount(responseData.totalCount); + setAssignments(responseData.data); + }, + [MY_WORK_LIST] + ); + + useEffect(() => { + fetchMyWorkList(myWorkList.datapage, getPConnect().getComponentConfig()?.myWorkList.fields, 3, true, context).then(responseData => { + deferLoadWorklistItems(responseData); + }); + }, []); + const getAssignmentId = assignment => { return type === CONSTS.TODO ? assignment.ID : assignment.id; }; @@ -146,12 +203,16 @@ export default function ToDo(props: ToDoProps) { function _showMore() { setBShowMore(false); - setAssignments(assignmentsSource); + if (type === CONSTS.WORKLIST && count && count > assignments.length) { + fetchMyWorkList(myWorkList.datapage, getPConnect().getComponentConfig()?.myWorkList.fields, count, false, context).then(response => { + setAssignments(response.data); + }); + } } function _showLess() { setBShowMore(true); - setAssignments(topThreeAssignments(assignmentsSource)); + setAssignments(assignments => assignments.slice(0, 3)); } function clickGo(assignment) { @@ -223,12 +284,14 @@ export default function ToDo(props: ToDoProps) { ); }; + const getCount = () => (type === CONSTS.WORKLIST ? count ?? assignments.length : assignments.length); + const toDoContent = ( <> {showTodoList && ( + {headerText}    } @@ -267,7 +330,7 @@ export default function ToDo(props: ToDoProps) { {showTodoList && ( + {headerText}    } @@ -294,7 +357,7 @@ export default function ToDo(props: ToDoProps) { {type === CONSTS.TODO && !isConfirm && {toDoContent}} {type === CONSTS.TODO && isConfirm && <>{toDoContent}} - {assignmentCount > 3 && ( + {getCount() > 3 && ( {bShowMore ? (
{(!isConfirm || canPerform) && (
- clickGo(assignment)}> + clickGo(assignment)} size='large'>
@@ -343,7 +344,7 @@ export default function ToDo(props: ToDoProps) { clickGo(assignment)}> - clickGo(assignment)}> + clickGo(assignment)} size='large'> diff --git a/packages/react-sdk-components/src/index.tsx b/packages/react-sdk-components/src/index.tsx index 6496e06c..ef70e7e2 100644 --- a/packages/react-sdk-components/src/index.tsx +++ b/packages/react-sdk-components/src/index.tsx @@ -1,5 +1,5 @@ // from react_root.js -import { render } from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { BrowserRouter } from 'react-router-dom'; import TopLevelApp from '../src/samples/TopLevelApp'; import './common.css'; @@ -7,10 +7,10 @@ import './common.css'; const outletElement = document.getElementById('outlet'); if (outletElement) { - render( + const root = createRoot(outletElement); + root.render( - , - document.getElementById('outlet') + ); } diff --git a/packages/react-sdk-components/src/samples/AppSelector/index.tsx b/packages/react-sdk-components/src/samples/AppSelector/index.tsx index 3ca70529..0c3ae1cb 100644 --- a/packages/react-sdk-components/src/samples/AppSelector/index.tsx +++ b/packages/react-sdk-components/src/samples/AppSelector/index.tsx @@ -1,4 +1,4 @@ -import { Switch, Route } from 'react-router-dom'; +import { Route, Routes } from 'react-router-dom'; import EmbeddedTopLevel from '../Embedded/EmbeddedTopLevel'; import FullPortal from '../FullPortal'; @@ -16,15 +16,15 @@ const baseURL = '/'; const AppSelector = () => { return (
- - - - - - - - - + + } /> + } /> + } /> + } /> + } /> + } /> + } /> +
); }; diff --git a/packages/react-sdk-components/src/samples/AuthPage/index.jsx b/packages/react-sdk-components/src/samples/AuthPage/index.jsx deleted file mode 100644 index d15d7915..00000000 --- a/packages/react-sdk-components/src/samples/AuthPage/index.jsx +++ /dev/null @@ -1,15 +0,0 @@ -import { getHomeUrl, authIsMainRedirect, authRedirectCallback } from '@pega/auth/lib/sdk-auth-manager'; -import { authDone } from '@pega/auth/lib/auth-code-redirect'; - -export default function AuthPage() { - if (authIsMainRedirect()) { - authRedirectCallback(window.location.href, () => { - // eslint-disable-next-line no-restricted-globals - location.href = `${getHomeUrl()}portal`; - }); - } else { - authDone(); - } - - return
; -} diff --git a/packages/react-sdk-components/src/samples/Embedded/EmbeddedSwatch/index.tsx b/packages/react-sdk-components/src/samples/Embedded/EmbeddedSwatch/index.tsx index 8a87dd29..de015e33 100644 --- a/packages/react-sdk-components/src/samples/Embedded/EmbeddedSwatch/index.tsx +++ b/packages/react-sdk-components/src/samples/Embedded/EmbeddedSwatch/index.tsx @@ -1,5 +1,5 @@ /* eslint-disable react/button-has-type */ -import { makeStyles } from '@material-ui/core/styles'; +import makeStyles from '@mui/styles/makeStyles'; const useStyles = makeStyles(theme => ({ swatchHeader: { diff --git a/packages/react-sdk-components/src/samples/Embedded/EmbeddedTopLevel/index.tsx b/packages/react-sdk-components/src/samples/Embedded/EmbeddedTopLevel/index.tsx index 76b8bad4..ecbdc1c3 100644 --- a/packages/react-sdk-components/src/samples/Embedded/EmbeddedTopLevel/index.tsx +++ b/packages/react-sdk-components/src/samples/Embedded/EmbeddedTopLevel/index.tsx @@ -1,9 +1,10 @@ /* eslint-disable react/button-has-type */ import { useState, useEffect } from 'react'; -import { render } from 'react-dom'; -import Typography from '@material-ui/core/Typography'; -import CssBaseline from '@material-ui/core/CssBaseline'; -import { createTheme, makeStyles, ThemeProvider } from '@material-ui/core/styles'; +import { createRoot } from 'react-dom/client'; +import Typography from '@mui/material/Typography'; +import CssBaseline from '@mui/material/CssBaseline'; +import { ThemeProvider, StyledEngineProvider } from '@mui/material/styles'; +import makeStyles from '@mui/styles/makeStyles'; import { sdkIsLoggedIn, loginIfNecessary, sdkSetAuthHeader, sdkSetCustomTokenParamsCB, getSdkConfig } from '@pega/auth/lib/sdk-auth-manager'; import StoreContext from '../../../bridge/Context/StoreContext'; @@ -12,9 +13,11 @@ import EmbeddedSwatch from '../EmbeddedSwatch'; import { compareSdkPCoreVersions } from '../../../components/helpers/versionHelpers'; import { getSdkComponentMap } from '../../../bridge/helpers/sdk_component_map'; import localSdkComponentMap from '../../../../sdk-local-component-map'; +import { theme } from '../../../theme'; declare const myLoadMashup: any; +// eslint-disable-next-line @typescript-eslint/no-shadow const useStyles = makeStyles(theme => ({ embedTopRibbon: { display: 'none', @@ -103,17 +106,6 @@ const useStyles = makeStyles(theme => ({ })); export default function EmbeddedTopLevel() { - const theme = createTheme({ - // palette: { - // primary: { - // main: '#2196f3', - // }, - // secondary: { - // main: '#ff9800', - // }, - // }, - }); - // Array of 3 shopping options to display const shoppingOptions = [ { @@ -294,10 +286,12 @@ export default function EmbeddedTopLevel() { return ( // eslint-disable-next-line react/jsx-no-constructed-context-values - - - {thePConnObj} - + + + + {thePConnObj} + + ); } @@ -334,14 +328,17 @@ export default function EmbeddedTopLevel() { } const theComponent = ( - - - - + + + + + + ); + const root = createRoot(target); // Initial render of component passed in (which should be a RootContainer) - render(<>{theComponent}, target); + root.render(<>{theComponent}); // Initial render to show that we have a PConnect and can render in the target location // render(
EmbeddedTopLevel initialRender in {domContainerID} with PConn of {componentName}
, target); diff --git a/packages/react-sdk-components/src/samples/FullPortal/index.tsx b/packages/react-sdk-components/src/samples/FullPortal/index.tsx index 431e58f4..607c9550 100644 --- a/packages/react-sdk-components/src/samples/FullPortal/index.tsx +++ b/packages/react-sdk-components/src/samples/FullPortal/index.tsx @@ -1,8 +1,8 @@ import { useEffect, useMemo, useState } from 'react'; -import ReactDOM from 'react-dom'; -import CssBaseline from '@material-ui/core/CssBaseline'; -import { createTheme, ThemeProvider } from '@material-ui/core/styles'; -import { useLocation, useHistory } from 'react-router-dom'; +import { createRoot } from 'react-dom/client'; +import { useLocation, useNavigate } from 'react-router-dom'; +import CssBaseline from '@mui/material/CssBaseline'; +import { ThemeProvider, StyledEngineProvider } from '@mui/material/styles'; import { SdkConfigAccess, loginIfNecessary, getAvailablePortals } from '@pega/auth/lib/sdk-auth-manager'; import StoreContext from '../../bridge/Context/StoreContext'; @@ -10,6 +10,7 @@ import createPConnectComponent from '../../bridge/react_pconnect'; import { compareSdkPCoreVersions } from '../../components/helpers/versionHelpers'; import { getSdkComponentMap } from '../../bridge/helpers/sdk_component_map'; import localSdkComponentMap from '../../../sdk-local-component-map'; +import { theme } from '../../theme'; import InvalidPortal from './InvalidPortal'; @@ -27,23 +28,16 @@ export default function FullPortal() { const [defaultPortalName, setDefaultPortalName] = useState(''); const [availablePortals, setAvailablePortals] = useState([]); - const history = useHistory(); + const navigate = useNavigate(); const query = useQuery(); if (query.get('portal')) { const portalValue: any = query.get('portal'); sessionStorage.setItem('rsdk_portalName', portalValue); } - - const theme = createTheme({ - // palette: { - // primary: { - // main: '#2196f3', - // }, - // secondary: { - // main: '#ff9800', - // }, - // }, - }); + if (query.get('locale')) { + const localeOverride: any = query.get('locale'); + sessionStorage.setItem('rsdk_locale', localeOverride); + } // const outlet = document.getElementById("outlet"); @@ -66,10 +60,12 @@ export default function FullPortal() { return ( // eslint-disable-next-line react/jsx-no-constructed-context-values - - - {thePConnObj} - + + + + {thePConnObj} + + ); } @@ -102,16 +98,18 @@ export default function FullPortal() { // var theComponent =
the Component
; const theComponent = ( - - - ; - + + + + ; + + ); - ReactDOM.render( + const root = createRoot(target || document.getElementById('pega-root') || document.getElementsByTagName(domContainerID)[0]); + root.render( // was Date: Tue, 8 Oct 2024 18:05:47 +0530 Subject: [PATCH 04/21] fix: Error in Todo widget on save for later (#392) --- assets/icons/document-xls.svg | 4 ++++ assets/icons/document-xls.svg.br | Bin 0 -> 830 bytes assets/icons/document-xls.svg.gz | Bin 0 -> 915 bytes .../src/components/widget/ToDo/ToDo.tsx | 8 +++++--- 4 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 assets/icons/document-xls.svg create mode 100644 assets/icons/document-xls.svg.br create mode 100644 assets/icons/document-xls.svg.gz diff --git a/assets/icons/document-xls.svg b/assets/icons/document-xls.svg new file mode 100644 index 00000000..affebccf --- /dev/null +++ b/assets/icons/document-xls.svg @@ -0,0 +1,4 @@ + + + Document Xls + \ No newline at end of file diff --git a/assets/icons/document-xls.svg.br b/assets/icons/document-xls.svg.br new file mode 100644 index 0000000000000000000000000000000000000000..395c751ab290d5bce841455ef6f775beb23835f6 GIT binary patch literal 830 zcmV-E1Ht?oUJ_s|3T#`r^~t7L_JhI0px{B)lps7lgt0?ydx}p#kV*l|4URld@`p{v zAvm24OxerprK6MrNI(64{93D9BC5F)%I&c?h+90G{n@vJ%||0%#WYcihKAWv8y1vG z{EPQASQ6z*-=6>XU&OC1EX!^$RKH?7sEGKgR6$b>bGeQ^@4WieZbdwMh4~qyWh(Td zfBKYQE0_8-#$x(mL#4@AJGcD|bgbw{@5V$6_-^8lq!8-iEA)S;Bf=4P-!zIooK zq)N*p#CO~Kp)EeQBA_ntj!+WjkP#(O>mEBxqDH?#^jV4A4e!k+r$}LTwlQd=O8oJL z*Qdt65MzrKEdvmVMk7w6|9ctO(2q2>PAu@B#ORxL=ZENLL8=wq)+sl;FHMM;4Sl`0 z0XW4)^^RRbjm+9%v;}cp%kLmz);A8}xU~>Hkc=@^IKaGFx(90q0^AgcIB03c8wD{8 z+RUMnySzSa#xPC^97bHFDjEyB(oF#6+=bC?wKitx`s7yit$+dUCeAHzo-L}xCXfUp z1j=$Vj}+%c85R6cQe#V%&2pY8gnW4p^0Dmd-8Y~L)n>zn2b|Ukt+&E@MoCmFuiP?> z)8vJ|L)abiDZ~HiZ#j^3d8heE<*7No-Ao`12C%)vQ<`H|4+q1 zp9VQ(DI35^l^-^RG2JQiqRq|1(1Gj~k=hCi79W8SbbRT3p0sIR1c46Zn}}2i@(V*< zxWOWu_;`gpwJh6gY0~ro%-n?R2!7WH_5eP-IFx7v`wmddvto{XoGj!EPGECS_H?;n z7&-_&qq}c>oMIr7HbJ$d#d`&_Iw4b}$$|iHAjd<&R|mwC6XI%5mrr>N9mp&xZ9%YS z0pP}`)wp*uqZpXIHy&}W%Z6W==11GfViz030?0NQtIOCoj8XsZJ3mMw@=1Wz{`?~q I-47fUHNz2?r2qf` literal 0 HcmV?d00001 diff --git a/assets/icons/document-xls.svg.gz b/assets/icons/document-xls.svg.gz new file mode 100644 index 0000000000000000000000000000000000000000..d0f1bafb326c86e54655e7bfa3464018c8ff8ca2 GIT binary patch literal 915 zcmV;E18n>siwFP!000026OEWnZ`&{ohVT6qM$Vn0Z^=X2!?P z{85%|(KT%qC=mJaYw0CLDs^_p_lM@=`S5bQ+B}|4Z{N4u^Z6{!M!f!g*lH=|78RT3 z{ptSvF#QC_xk7G^Zm=|+sEO!xxQ$c-P`ZeV}o~Yv=+)69hJHC zA~>V)G2kFF*V;6`48pX^O8=Qg8RR$tg9+6}NaKTwae=}VTc=#Vo^>+BOyfB3U{_lq z+s+wiC1P+{YK2Jylq%u0OTcM`w-ZpZHGwkVAbN<|L=6H)kt3$-h>$+16=4U>Xjv%R zty)6M!E0kpY(6DulEh0jTA5xzx*B(&UqEIzqX(HklY?wiW+4VBee1G@Mk`a4IBV^G<0;{63J_~`R>-G!7@KZAK`9W%& zgN2pS;~20)46HvTsub#C;)aq78AD>2sJ6` zcn$(DC9Y}|>SAJyrI;Rkhw9%k(NM^*Rt>OJ#UcB33RN+_O}XJkj-|lkVyy { - fetchMyWorkList(myWorkList.datapage, getPConnect().getComponentConfig()?.myWorkList.fields, 3, true, context).then(responseData => { - deferLoadWorklistItems(responseData); - }); + if (Object.keys(myWorkList).length) { + fetchMyWorkList(myWorkList.datapage, getPConnect().getComponentConfig()?.myWorkList.fields, 3, true, context).then(responseData => { + deferLoadWorklistItems(responseData); + }); + } }, []); const getAssignmentId = assignment => { From 63511a5d79d83af953303a6be637bcaafe95aacb Mon Sep 17 00:00:00 2001 From: Vishal Sharma Date: Wed, 9 Oct 2024 16:33:05 +0530 Subject: [PATCH 05/21] Fix ToDo not loading for DigV2 and other related issues (#393) Co-authored-by: Vishal --- .../src/components/widget/ToDo/ToDo.tsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/react-sdk-components/src/components/widget/ToDo/ToDo.tsx b/packages/react-sdk-components/src/components/widget/ToDo/ToDo.tsx index 2737c21e..30130325 100644 --- a/packages/react-sdk-components/src/components/widget/ToDo/ToDo.tsx +++ b/packages/react-sdk-components/src/components/widget/ToDo/ToDo.tsx @@ -41,6 +41,7 @@ const fetchMyWorkList = (datapage, fields, numberOfRecords, includeTotalCount, c select: Object.keys(fields).map(key => ({ field: PCore.getAnnotationUtils().getPropertyName(fields[key]) })) }, { + invalidateCache: true, additionalApiParams: { includeTotalCount } @@ -147,7 +148,7 @@ export default function ToDo(props: ToDoProps) { const showlessLocalizedValue = localizedVal('show_less', 'CosmosFields'); const showMoreLocalizedValue = localizedVal('show_more', 'CosmosFields'); const canPerform = assignments?.[0]?.canPerform === 'true' || assignments?.[0]?.canPerform === true; - const [count, setCount] = useState(null); + const [count, setCount] = useState(0); const { WORK_BASKET: { MY_WORK_LIST } @@ -170,7 +171,7 @@ export default function ToDo(props: ToDoProps) { ); useEffect(() => { - if (Object.keys(myWorkList).length) { + if (Object.keys(myWorkList).length && myWorkList.datapage) { fetchMyWorkList(myWorkList.datapage, getPConnect().getComponentConfig()?.myWorkList.fields, 3, true, context).then(responseData => { deferLoadWorklistItems(responseData); }); @@ -206,10 +207,12 @@ export default function ToDo(props: ToDoProps) { function _showMore() { setBShowMore(false); - if (type === CONSTS.WORKLIST && count && count > assignments.length) { + if (type === CONSTS.WORKLIST && count && count > assignments.length && !assignmentsSource) { fetchMyWorkList(myWorkList.datapage, getPConnect().getComponentConfig()?.myWorkList.fields, count, false, context).then(response => { setAssignments(response.data); }); + } else { + setAssignments(assignmentsSource); } } @@ -287,7 +290,8 @@ export default function ToDo(props: ToDoProps) { ); }; - const getCount = () => (type === CONSTS.WORKLIST ? (count ?? assignments.length) : assignments.length); + // eslint-disable-next-line no-nested-ternary + const getCount = () => (assignmentsSource ? assignmentsSource.length : type === CONSTS.WORKLIST ? count : 0); const toDoContent = ( <> From 4e228d79ddc970e6c48e92a978fb71796dcc8ddd Mon Sep 17 00:00:00 2001 From: Vishal Sharma Date: Wed, 9 Oct 2024 16:37:22 +0530 Subject: [PATCH 06/21] Git should ignore coverage reports (#394) * Git should ignore coverage reports * Remove an extra line --------- Co-authored-by: Vishal Co-authored-by: tumms2021389 <97188066+tumms2021389@users.noreply.github.com> --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 80d2a9e9..baae159a 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ node_modules tests/coverage tests/playwright-report test-reports +monocart-report **/tsconfig.*.tsbuildinfo From 6d3fc77162aab16f8c3235c5ae1a9b9cff60e80f Mon Sep 17 00:00:00 2001 From: tumms2021389 <97188066+tumms2021389@users.noreply.github.com> Date: Thu, 10 Oct 2024 22:17:43 +0530 Subject: [PATCH 07/21] React downgraded to version 17 (#395) --- package-lock.json | 124 +++++++++++------- package.json | 12 +- packages/react-sdk-components/package.json | 2 +- .../CaseSummaryFields/CaseSummaryFields.css | 1 - .../src/components/field/Phone/Phone.tsx | 2 +- .../LeftAlignVerticalTabs.tsx | 3 +- packages/react-sdk-components/src/index.tsx | 8 +- .../Embedded/EmbeddedTopLevel/index.tsx | 5 +- .../src/samples/FullPortal/index.tsx | 8 +- packages/react-sdk-overrides/package.json | 2 +- 10 files changed, 98 insertions(+), 69 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8601a09e..7b3fccb0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,12 +23,12 @@ "downloadjs": "^1.4.7", "fast-deep-equal": "^3.1.3", "lodash.difference": "^4.5.0", - "material-ui-phone-number-2": "^1.3.0", - "react": "^18.2.0", + "material-ui-phone-number": "^3.0.0", + "react": "^17.0.2", "react-datepicker": "^4.25.0", - "react-dom": "^18.2.0", + "react-dom": "^17.0.2", "react-number-format": "^5.4.2", - "react-redux": "^9.1.0", + "react-redux": "^8.1.3", "react-router-dom": "^6.22.3", "throttle-debounce": "^5.0.2" }, @@ -43,7 +43,7 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^14.1.2", "@types/jest": "^29.5.11", - "@types/react": "^18.2.73", + "@types/react": "^17.0.83", "@typescript-eslint/eslint-plugin": "^5.62.0", "babel-loader": "^9.1.3", "clean-webpack-plugin": "^4.0.0", @@ -4981,6 +4981,15 @@ "@types/node": "*" } }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, "node_modules/@types/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", @@ -5150,11 +5159,12 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.3.11", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz", - "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==", + "version": "17.0.83", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.83.tgz", + "integrity": "sha512-l0m4ArKJvmFtR4e8UmKrj1pB4tUgOhJITf+mADyF/p69Ts1YAR/E+G9XEM0mHXKVRa1dQNHseyyDNzeuAXfXQw==", "dependencies": { "@types/prop-types": "*", + "@types/scheduler": "^0.16", "csstype": "^3.0.2" } }, @@ -5181,6 +5191,11 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" + }, "node_modules/@types/semver": { "version": "7.5.8", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", @@ -15662,8 +15677,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -15671,11 +15685,6 @@ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", "dev": true }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, "node_modules/lodash.difference": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", @@ -15702,7 +15711,8 @@ "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -15832,22 +15842,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/material-ui-phone-number-2": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/material-ui-phone-number-2/-/material-ui-phone-number-2-1.3.0.tgz", - "integrity": "sha512-RYFKM69txJCm0sfZ7sL06s/b9G+9I+LbO82hW2FnfMyMKqNE/hEeVgOR6/fGy3EFsCUDnnZXWq9Teqy3SrbLVQ==", + "node_modules/material-ui-phone-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/material-ui-phone-number/-/material-ui-phone-number-3.0.0.tgz", + "integrity": "sha512-wZX1PYv990nJUBko93AQxIfvFARHfMtnV/UT1/hVnbJP5x/K7MDuT5T2/ckIG6xyqTZ/wCcHdEK1P60uTOORwA==", "dependencies": { "country-flag-icons": "^1.4.10", - "lodash.debounce": "^4.0.8", - "lodash.memoize": "^4.1.2" + "lodash": "^4.17.21" }, "peerDependencies": { - "@emotion/react": "^11.9.0", - "@emotion/styled": "^11.8.1", - "@mui/material": "^5.8.0", - "prop-types": "^15.8.1", - "react": "^17.0.2 || ^18.0.0", - "react-dom": "^17.0.2 || ^18.0.0" + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "@mui/material": "^5.0.0", + "@mui/styles": "^5.0.0", + "clsx": "^1.1.1", + "prop-types": "^15.7.2", + "react": "^17.0.2", + "react-dom": "^17.0.2" } }, "node_modules/mathml-tag-names": { @@ -17673,11 +17684,12 @@ "dev": true }, "node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "dependencies": { - "loose-envify": "^1.1.0" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" }, "engines": { "node": ">=0.10.0" @@ -17701,15 +17713,16 @@ } }, "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", "dependencies": { "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" }, "peerDependencies": { - "react": "^18.3.1" + "react": "17.0.2" } }, "node_modules/react-fast-compare": { @@ -17759,22 +17772,38 @@ } }, "node_modules/react-redux": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", - "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.3.tgz", + "integrity": "sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==", "dependencies": { + "@babel/runtime": "^7.12.1", + "@types/hoist-non-react-statics": "^3.3.1", "@types/use-sync-external-store": "^0.0.3", + "hoist-non-react-statics": "^3.3.2", + "react-is": "^18.0.0", "use-sync-external-store": "^1.0.0" }, "peerDependencies": { - "@types/react": "^18.2.25", - "react": "^18.0", - "redux": "^5.0.0" + "@types/react": "^16.8 || ^17.0 || ^18.0", + "@types/react-dom": "^16.8 || ^17.0 || ^18.0", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0", + "react-native": ">=0.59", + "redux": "^4 || ^5.0.0-beta.0" }, "peerDependenciesMeta": { "@types/react": { "optional": true }, + "@types/react-dom": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + }, "redux": { "optional": true } @@ -18600,11 +18629,12 @@ } }, "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", "dependencies": { - "loose-envify": "^1.1.0" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" } }, "node_modules/schema-utils": { diff --git a/package.json b/package.json index cc1812e7..9bdde852 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@pega/react-sdk-components", - "version": "24.1.10", + "version": "0.242.2", "description": "React SDK packaging: bridge and components, overrides", "main": "index.ts", "scripts": { @@ -62,12 +62,12 @@ "downloadjs": "^1.4.7", "fast-deep-equal": "^3.1.3", "lodash.difference": "^4.5.0", - "material-ui-phone-number-2": "^1.3.0", - "react": "^18.2.0", + "material-ui-phone-number": "^3.0.0", + "react": "^17.0.2", "react-datepicker": "^4.25.0", - "react-dom": "^18.2.0", + "react-dom": "^17.0.2", "react-number-format": "^5.4.2", - "react-redux": "^9.1.0", + "react-redux": "^8.1.3", "react-router-dom": "^6.22.3", "throttle-debounce": "^5.0.2" }, @@ -82,7 +82,7 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^14.1.2", "@types/jest": "^29.5.11", - "@types/react": "^18.2.73", + "@types/react": "^17.0.83", "@typescript-eslint/eslint-plugin": "^5.62.0", "babel-loader": "^9.1.3", "clean-webpack-plugin": "^4.0.0", diff --git a/packages/react-sdk-components/package.json b/packages/react-sdk-components/package.json index 6c98feb7..4624c601 100644 --- a/packages/react-sdk-components/package.json +++ b/packages/react-sdk-components/package.json @@ -1,6 +1,6 @@ { "name": "@pega/react-sdk-components", - "version": "24.1.10", + "version": "0.242.2", "description": "React SDK Infrastructure: bridge and components", "_filesComment": "During packing, npm ignores everything NOT in the files list", "files": [ diff --git a/packages/react-sdk-components/src/components/designSystemExtension/CaseSummaryFields/CaseSummaryFields.css b/packages/react-sdk-components/src/components/designSystemExtension/CaseSummaryFields/CaseSummaryFields.css index 6aee64db..b0ea25c2 100644 --- a/packages/react-sdk-components/src/components/designSystemExtension/CaseSummaryFields/CaseSummaryFields.css +++ b/packages/react-sdk-components/src/components/designSystemExtension/CaseSummaryFields/CaseSummaryFields.css @@ -13,6 +13,5 @@ .psdk-case-summary-fields { padding: calc(2 * 0.5rem); - display: grid; grid-row-gap: calc(2 * 0.5rem); } diff --git a/packages/react-sdk-components/src/components/field/Phone/Phone.tsx b/packages/react-sdk-components/src/components/field/Phone/Phone.tsx index a4c4fa9d..21ad98f5 100644 --- a/packages/react-sdk-components/src/components/field/Phone/Phone.tsx +++ b/packages/react-sdk-components/src/components/field/Phone/Phone.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react'; -import MuiPhoneNumber from 'material-ui-phone-number-2'; +import MuiPhoneNumber from 'material-ui-phone-number'; import { getComponentFromMap } from '../../../bridge/helpers/sdk_component_map'; import { PConnFieldProps } from '../../../types/PConnProps'; diff --git a/packages/react-sdk-components/src/components/infra/VerticalTabs/LeftAlignVerticalTabs/LeftAlignVerticalTabs.tsx b/packages/react-sdk-components/src/components/infra/VerticalTabs/LeftAlignVerticalTabs/LeftAlignVerticalTabs.tsx index ce80eca2..da7ba48f 100644 --- a/packages/react-sdk-components/src/components/infra/VerticalTabs/LeftAlignVerticalTabs/LeftAlignVerticalTabs.tsx +++ b/packages/react-sdk-components/src/components/infra/VerticalTabs/LeftAlignVerticalTabs/LeftAlignVerticalTabs.tsx @@ -18,7 +18,8 @@ interface LeftAlignVerticalTabsProps { const LeftAlignVerticalTabs: any = withStyles((/* theme */) => ({ root: { width: '100%', - maxWidth: '100%' + maxWidth: '100%', + alignItems: 'flex-start' }, wrapper: { display: 'block', diff --git a/packages/react-sdk-components/src/index.tsx b/packages/react-sdk-components/src/index.tsx index ef70e7e2..6496e06c 100644 --- a/packages/react-sdk-components/src/index.tsx +++ b/packages/react-sdk-components/src/index.tsx @@ -1,5 +1,5 @@ // from react_root.js -import { createRoot } from 'react-dom/client'; +import { render } from 'react-dom'; import { BrowserRouter } from 'react-router-dom'; import TopLevelApp from '../src/samples/TopLevelApp'; import './common.css'; @@ -7,10 +7,10 @@ import './common.css'; const outletElement = document.getElementById('outlet'); if (outletElement) { - const root = createRoot(outletElement); - root.render( + render( - + , + document.getElementById('outlet') ); } diff --git a/packages/react-sdk-components/src/samples/Embedded/EmbeddedTopLevel/index.tsx b/packages/react-sdk-components/src/samples/Embedded/EmbeddedTopLevel/index.tsx index ecbdc1c3..beb9f9bd 100644 --- a/packages/react-sdk-components/src/samples/Embedded/EmbeddedTopLevel/index.tsx +++ b/packages/react-sdk-components/src/samples/Embedded/EmbeddedTopLevel/index.tsx @@ -1,6 +1,6 @@ /* eslint-disable react/button-has-type */ import { useState, useEffect } from 'react'; -import { createRoot } from 'react-dom/client'; +import ReactDOM from 'react-dom'; import Typography from '@mui/material/Typography'; import CssBaseline from '@mui/material/CssBaseline'; import { ThemeProvider, StyledEngineProvider } from '@mui/material/styles'; @@ -335,10 +335,9 @@ export default function EmbeddedTopLevel() { ); - const root = createRoot(target); // Initial render of component passed in (which should be a RootContainer) - root.render(<>{theComponent}); + ReactDOM.render(<>{theComponent}, target); // Initial render to show that we have a PConnect and can render in the target location // render(
EmbeddedTopLevel initialRender in {domContainerID} with PConn of {componentName}
, target); diff --git a/packages/react-sdk-components/src/samples/FullPortal/index.tsx b/packages/react-sdk-components/src/samples/FullPortal/index.tsx index 607c9550..6f2f847d 100644 --- a/packages/react-sdk-components/src/samples/FullPortal/index.tsx +++ b/packages/react-sdk-components/src/samples/FullPortal/index.tsx @@ -1,5 +1,5 @@ import { useEffect, useMemo, useState } from 'react'; -import { createRoot } from 'react-dom/client'; +import ReactDOM from 'react-dom'; import { useLocation, useNavigate } from 'react-router-dom'; import CssBaseline from '@mui/material/CssBaseline'; import { ThemeProvider, StyledEngineProvider } from '@mui/material/styles'; @@ -106,10 +106,10 @@ export default function FullPortal() { ); - const root = createRoot(target || document.getElementById('pega-root') || document.getElementsByTagName(domContainerID)[0]); - root.render( + ReactDOM.render( // was Date: Tue, 15 Oct 2024 17:16:55 +0530 Subject: [PATCH 08/21] Fix /embedded scenario --- .../src/samples/Embedded/EmbeddedTopLevel/index.tsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/react-sdk-components/src/samples/Embedded/EmbeddedTopLevel/index.tsx b/packages/react-sdk-components/src/samples/Embedded/EmbeddedTopLevel/index.tsx index beb9f9bd..82470eb2 100644 --- a/packages/react-sdk-components/src/samples/Embedded/EmbeddedTopLevel/index.tsx +++ b/packages/react-sdk-components/src/samples/Embedded/EmbeddedTopLevel/index.tsx @@ -17,8 +17,7 @@ import { theme } from '../../../theme'; declare const myLoadMashup: any; -// eslint-disable-next-line @typescript-eslint/no-shadow -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles(() => ({ embedTopRibbon: { display: 'none', alignItems: 'center', @@ -466,7 +465,12 @@ export default function EmbeddedTopLevel() { const theOptions = shoppingOptions.map((option, index) => { return ( - + + + + + + ); }); From 8e3b2f9d57d2cd5e18133a41d731d4c91fbcdcb4 Mon Sep 17 00:00:00 2001 From: 4manasa Date: Thu, 17 Oct 2024 14:51:22 +0530 Subject: [PATCH 09/21] Icons for landing pages not working issue fixed (#400) Co-authored-by: mashm --- .../src/components/infra/NavBar/NavBar.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/react-sdk-components/src/components/infra/NavBar/NavBar.tsx b/packages/react-sdk-components/src/components/infra/NavBar/NavBar.tsx index 2d5a59cc..98bc122d 100644 --- a/packages/react-sdk-components/src/components/infra/NavBar/NavBar.tsx +++ b/packages/react-sdk-components/src/components/infra/NavBar/NavBar.tsx @@ -22,6 +22,9 @@ import ChevronLeftIcon from '@mui/icons-material/ChevronLeft'; import ChevronRightIcon from '@mui/icons-material/ChevronRight'; import FlagOutlinedIcon from '@mui/icons-material/FlagOutlined'; import HomeOutlinedIcon from '@mui/icons-material/HomeOutlined'; +import TabletAndroidOutlineIcon from '@mui/icons-material/TabletAndroidOutlined'; +import AirportShuttleOutlinedIcon from '@mui/icons-material/AirportShuttleOutlined'; +import EditOutlinedIcon from '@mui/icons-material/EditOutlined'; import ExpandLess from '@mui/icons-material/ExpandLess'; import ExpandMore from '@mui/icons-material/ExpandMore'; import AddIcon from '@mui/icons-material/Add'; @@ -49,7 +52,11 @@ interface NavBarProps extends PConnProps { const iconMap = { 'pi pi-headline': , 'pi pi-flag-solid': , - 'pi pi-home-solid': + 'pi pi-home-solid': , + 'pi pi-tablet': , + 'pi pi-ambulance': , + 'pi pi-ink-solid': , + 'pi pi-columns': }; const drawerWidth = 300; From 658dfe922d3ff02a716f538d0b54488f09b8b90a Mon Sep 17 00:00:00 2001 From: Vishal Sharma Date: Fri, 18 Oct 2024 14:31:28 +0530 Subject: [PATCH 10/21] Fix playwright tests (#399) Co-authored-by: Vishal --- .../components/field/DateTime/DateTime.tsx | 9 ++++++- .../src/components/field/Phone/Phone.tsx | 1 + .../src/components/field/Time/Time.tsx | 4 ++-- .../e2e/Digv2/ComplexFields/CaseView.spec.js | 2 +- .../Digv2/ComplexFields/DataReference.spec.js | 24 +++++++++---------- .../tests/e2e/Digv2/FormFields/Date.spec.js | 4 ++-- .../e2e/Digv2/FormFields/DateTime.spec.js | 6 ++--- .../e2e/Digv2/FormFields/FieldGroup.spec.js | 2 +- .../tests/e2e/Digv2/FormFields/Phone.spec.js | 3 +++ .../tests/e2e/Digv2/FormFields/Time.spec.js | 24 +++++++++---------- .../LandingPages/InlineDashboard.spec.js | 4 +++- .../tests/e2e/MediaCo/embedded.spec.js | 4 ++-- .../tests/e2e/MediaCo/portal.spec.js | 11 +++++---- 13 files changed, 57 insertions(+), 41 deletions(-) diff --git a/packages/react-sdk-components/src/components/field/DateTime/DateTime.tsx b/packages/react-sdk-components/src/components/field/DateTime/DateTime.tsx index 60951b33..e4df3125 100644 --- a/packages/react-sdk-components/src/components/field/DateTime/DateTime.tsx +++ b/packages/react-sdk-components/src/components/field/DateTime/DateTime.tsx @@ -53,6 +53,12 @@ export default function DateTime(props: DateTimeProps) { return ; } + let testProp = {}; + + testProp = { + 'data-test-id': testId + }; + const handleChange = date => { setDateValue(date); const changeValue = date && date.isValid() ? date.toISOString() : null; @@ -83,7 +89,8 @@ export default function DateTime(props: DateTimeProps) { placeholder: `${dateFormatInfo.dateFormatStringLC} hh:mm a`, error: status === 'error', helperText: helperTextToDisplay, - size: 'small' + size: 'small', + InputProps: { ...testProp } } }} /> diff --git a/packages/react-sdk-components/src/components/field/Phone/Phone.tsx b/packages/react-sdk-components/src/components/field/Phone/Phone.tsx index 21ad98f5..aa1d0ac4 100644 --- a/packages/react-sdk-components/src/components/field/Phone/Phone.tsx +++ b/packages/react-sdk-components/src/components/field/Phone/Phone.tsx @@ -62,6 +62,7 @@ export default function Phone(props: PhoneProps) { helperText={helperTextToDisplay} placeholder={placeholder ?? ''} size='small' + defaultCountry='us' required={required} disabled={disabled} onChange={onChange} diff --git a/packages/react-sdk-components/src/components/field/Time/Time.tsx b/packages/react-sdk-components/src/components/field/Time/Time.tsx index d5e1014b..a4787350 100644 --- a/packages/react-sdk-components/src/components/field/Time/Time.tsx +++ b/packages/react-sdk-components/src/components/field/Time/Time.tsx @@ -41,7 +41,7 @@ export default function Time(props: TimeProps) { }; let timeValue: any = null; - if (value) { + if (value && Object.keys(value).length) { const timeArray = value.split(':').map(itm => Number(itm)); timeValue = dayjs().hour(timeArray[0]).minute(timeArray[1]); } @@ -72,7 +72,7 @@ export default function Time(props: TimeProps) { error: status === 'error', helperText: helperTextToDisplay, size: 'small', - InputProps: { inputProps: { ...testProp } } + InputProps: { ...testProp } } }} /> diff --git a/packages/react-sdk-components/tests/e2e/Digv2/ComplexFields/CaseView.spec.js b/packages/react-sdk-components/tests/e2e/Digv2/ComplexFields/CaseView.spec.js index 94acd6da..a5ccfe57 100644 --- a/packages/react-sdk-components/tests/e2e/Digv2/ComplexFields/CaseView.spec.js +++ b/packages/react-sdk-components/tests/e2e/Digv2/ComplexFields/CaseView.spec.js @@ -66,7 +66,7 @@ test.describe('E2E test', () => { /** Wait until newly created case loads */ await expect(page.locator('div[id="Assignment"]')).toBeVisible(); - await page.locator('button >> span:has-text("Cancel")').click(); + await page.locator('button:has-text("Cancel")').click(); await page.locator('button[id="go-btn"]').click(); diff --git a/packages/react-sdk-components/tests/e2e/Digv2/ComplexFields/DataReference.spec.js b/packages/react-sdk-components/tests/e2e/Digv2/ComplexFields/DataReference.spec.js index 8985339b..7d070476 100644 --- a/packages/react-sdk-components/tests/e2e/Digv2/ComplexFields/DataReference.spec.js +++ b/packages/react-sdk-components/tests/e2e/Digv2/ComplexFields/DataReference.spec.js @@ -39,7 +39,7 @@ test.describe('E2E test', () => { await selectedTestName.click(); await page.locator('li:has-text("Autocomplete")').click(); - let selectedProduct = page.locator('div[role="combobox"]'); + let selectedProduct = page.locator('input[role="combobox"]'); await selectedProduct.click(); await page.locator('li:has-text("Basic Product")').click(); @@ -66,7 +66,7 @@ test.describe('E2E test', () => { await selectedTestName.click(); await page.locator('li:has-text("Dropdown")').click(); - selectedProduct = page.locator('div[role="button"]:has-text("Basic Product")'); + selectedProduct = page.locator('div[role="combobox"]:has-text("Basic Product")'); await selectedProduct.click(); await page.locator('li:has-text("Basic Product")').click(); @@ -121,7 +121,7 @@ test.describe('E2E test', () => { await selectedTestName.click(); await page.locator('li:has-text("SingleRecord")').click(); - selectedProduct = page.locator('div[role="combobox"]'); + selectedProduct = page.locator('input[role="combobox"]'); await selectedProduct.click(); await page.locator('li:has-text("Basic Product")').click(); @@ -183,7 +183,7 @@ test.describe('E2E test', () => { await selectedTestName.click(); await page.locator('li:has-text("SingleSelect")').click(); - selectedProduct = page.locator('div[role="combobox"]'); + selectedProduct = page.locator('input[role="combobox"]'); await selectedProduct.click(); await page.locator('li:has-text("Basic Product")').click(); await expect(selectedProduct).toBeVisible(); @@ -213,10 +213,10 @@ test.describe('E2E test', () => { await displayAs.click(); await page.locator('li:has-text("Combo-Box")').click(); - let selectProducts = page.locator('div[role="combobox"]'); + let selectProducts = page.locator('input[role="combobox"]'); await selectProducts.click(); await page.locator('li:has-text("Mobile")').click(); - await page.locator('li:has-text("Telivision")').click(); + await page.locator('li:has-text("Television")').click(); await selectProducts.click(); await page.locator('button:has-text("Next")').click(); @@ -224,23 +224,23 @@ test.describe('E2E test', () => { assignment = page.locator('div[id="Assignment"]'); await expect(assignment.locator('td >> text="Mobile"')).toBeVisible(); - await expect(assignment.locator('td >> text="Telivision"')).toBeVisible(); + await expect(assignment.locator('td >> text="Television"')).toBeVisible(); await page.locator('button:has-text("Previous")').click(); - await expect(selectProducts.locator('div[role="button"]:has-text("Mobile")')).toBeVisible(); - await expect(selectProducts.locator('div[role="button"]:has-text("Telivision")')).toBeVisible(); + await expect(assignment.locator('div[role="button"]:has-text("Mobile")')).toBeVisible(); + await expect(assignment.locator('div[role="button"]:has-text("Television")')).toBeVisible(); - let deleteProduct = await selectProducts.locator('div[role="button"]:has-text("Mobile")'); + let deleteProduct = await assignment.locator('div[role="button"]:has-text("Mobile")'); await deleteProduct.locator('svg[focusable="false"]').click(); await page.locator('button:has-text("Next")').click(); - await expect(selectProducts.locator('div[role="button"]:has-text("Mobile")')).not.toBeVisible(); + await expect(assignment.locator('div[role="button"]:has-text("Mobile")')).not.toBeVisible(); await page.locator('button:has-text("Previous")').click(); - deleteProduct = await selectProducts.locator('div[role="button"]:has-text("Telivision")'); + deleteProduct = await assignment.locator('div[role="button"]:has-text("Television")'); await deleteProduct.locator('svg[focusable="false"]').click(); /** Checkbox group mode type test */ diff --git a/packages/react-sdk-components/tests/e2e/Digv2/FormFields/Date.spec.js b/packages/react-sdk-components/tests/e2e/Digv2/FormFields/Date.spec.js index 14877ae6..b1cb1e8d 100644 --- a/packages/react-sdk-components/tests/e2e/Digv2/FormFields/Date.spec.js +++ b/packages/react-sdk-components/tests/e2e/Digv2/FormFields/Date.spec.js @@ -46,7 +46,7 @@ test.describe('E2E test', () => { const requiredDateInput = requiredDate.locator('input'); await requiredDateInput.click(); const futureDate = common.getFutureDate(); - await requiredDateInput.fill(futureDate); + await requiredDateInput.pressSequentially(futureDate); await expect(page.locator('p.Mui-error.Mui-required')).toBeHidden(); @@ -96,7 +96,7 @@ test.describe('E2E test', () => { const editableDate = page.locator('div[data-test-id="80f5dcc587f457378158bb305ec858a8"]'); const editableDateInput = editableDate.locator('input'); await editableDateInput.click(); - await editableDateInput.fill(futureDate); + await editableDateInput.pressSequentially(futureDate); attributes = await common.getAttributes(editableDateInput); await expect(attributes.includes('readonly')).toBeFalsy(); diff --git a/packages/react-sdk-components/tests/e2e/Digv2/FormFields/DateTime.spec.js b/packages/react-sdk-components/tests/e2e/Digv2/FormFields/DateTime.spec.js index 58673e71..e42904f0 100644 --- a/packages/react-sdk-components/tests/e2e/Digv2/FormFields/DateTime.spec.js +++ b/packages/react-sdk-components/tests/e2e/Digv2/FormFields/DateTime.spec.js @@ -48,9 +48,9 @@ test.describe('E2E test', () => { const formattedDate = `${(date.getMonth() + 1).toString().padStart(2, '0')}${date .getDate() .toString() - .padStart(2, '0')}${date.getFullYear()}${date.getHours()}${date.getMinutes()}`; + .padStart(2, '0')}${date.getFullYear()}${date.getHours()}${date.getMinutes()}${date.getHours() >= 12 ? 'pm' : 'am'}`; await requiredDateTimeInput.click(); - await requiredDateTimeInput.fill(formattedDate); + await requiredDateTimeInput.pressSequentially(formattedDate); await expect(page.locator('p.Mui-error.Mui-required')).toBeHidden(); @@ -100,7 +100,7 @@ test.describe('E2E test', () => { const editableDateTime = page.locator('div[data-test-id="4e5110fbcaf65441b3e4c763907b5eb8"]'); const editableDateTimeInput = editableDateTime.locator('input'); await editableDateTimeInput.click(); - await editableDateTimeInput.fill(formattedDate); + await editableDateTimeInput.pressSequentially(formattedDate); attributes = await common.getAttributes(editableDateTimeInput); await expect(attributes.includes('readonly')).toBeFalsy(); diff --git a/packages/react-sdk-components/tests/e2e/Digv2/FormFields/FieldGroup.spec.js b/packages/react-sdk-components/tests/e2e/Digv2/FormFields/FieldGroup.spec.js index be9b1c9b..4eb92ccf 100644 --- a/packages/react-sdk-components/tests/e2e/Digv2/FormFields/FieldGroup.spec.js +++ b/packages/react-sdk-components/tests/e2e/Digv2/FormFields/FieldGroup.spec.js @@ -62,7 +62,7 @@ test.describe('E2E test', () => { // Collapsible Tests await expect(page.getByText('Collapsible Field Group')).toBeVisible(); await expect(page.locator('input[data-test-id="861d2d04e52d59e8b85a27fd5b4aef28"]')).toHaveValue('John Doe'); - await expect(await page.locator('div[data-test-id="8e70e124867b68bec5cbf1f2f25da383"] >> div[role="button"]').textContent()).toBe( + await expect(await page.locator('div[data-test-id="8e70e124867b68bec5cbf1f2f25da383"] >> div[role="combobox"]').textContent()).toBe( 'United States' ); diff --git a/packages/react-sdk-components/tests/e2e/Digv2/FormFields/Phone.spec.js b/packages/react-sdk-components/tests/e2e/Digv2/FormFields/Phone.spec.js index d43dffb8..d9d7beab 100644 --- a/packages/react-sdk-components/tests/e2e/Digv2/FormFields/Phone.spec.js +++ b/packages/react-sdk-components/tests/e2e/Digv2/FormFields/Phone.spec.js @@ -83,6 +83,8 @@ test.describe('E2E test', () => { await selectedSubCategory.click(); await page.getByRole('option', { name: 'Update' }).click(); + await page.pause(); + /** Update tests */ const readonlyPhone = page.locator('input[data-test-id="2c511e68e41cb70907b27a00de6b18b9"]'); attributes = await common.getAttributes(readonlyPhone); @@ -93,6 +95,7 @@ test.describe('E2E test', () => { await countrySelector.click(); await page.locator('text=United States+1 >> nth=0').click(); const editablePhoneInput = editablePhone.locator('input'); + await page.pause(); await common.enterPhoneNumber(editablePhone, '6175551212'); /** Validation tests */ diff --git a/packages/react-sdk-components/tests/e2e/Digv2/FormFields/Time.spec.js b/packages/react-sdk-components/tests/e2e/Digv2/FormFields/Time.spec.js index 59c23d02..949be8f8 100644 --- a/packages/react-sdk-components/tests/e2e/Digv2/FormFields/Time.spec.js +++ b/packages/react-sdk-components/tests/e2e/Digv2/FormFields/Time.spec.js @@ -42,16 +42,16 @@ test.describe('E2E test', () => { await expect(page.locator('p.Mui-error.Mui-required')).toBeVisible(); /** Required tests */ - const requiredTime = page.locator('input[data-test-id="2a98fa391e3ce4e2a077bb71271eb2da"]'); + const requiredTime = page.locator('div[data-test-id="2a98fa391e3ce4e2a077bb71271eb2da"] >> input'); const date = new Date(); - const time = `${date.getHours()}${date.getMinutes()}`; - requiredTime.fill(time); + const time = `${date.getHours()}${date.getMinutes()}${date.getHours() >= 12 ? 'pm' : 'am'}`; + requiredTime.pressSequentially(time); attributes = await common.getAttributes(requiredTime); await expect(attributes.includes('required')).toBeTruthy(); await expect(page.locator('p.Mui-error.Mui-required')).toBeHidden(); - const notRequiredTime = page.locator('input[data-test-id="921d625dba40a48cdcd006d6d17273fd"]'); + const notRequiredTime = page.locator('div[data-test-id="921d625dba40a48cdcd006d6d17273fd"] >> input'); attributes = await common.getAttributes(notRequiredTime); await expect(attributes.includes('required')).toBeFalsy(); @@ -61,11 +61,11 @@ test.describe('E2E test', () => { await page.getByRole('option', { name: 'Disable' }).click(); // /** Disable tests */ - const alwaysDisabledTime = page.locator('input[data-test-id="b5b2a2335304986a2aba011c0a2a464d"]'); + const alwaysDisabledTime = page.locator('div[data-test-id="b5b2a2335304986a2aba011c0a2a464d"] >> input'); attributes = await common.getAttributes(alwaysDisabledTime); await expect(attributes.includes('disabled')).toBeTruthy(); - const conditionallyDisabledTime = page.locator('input[data-test-id="9f7b7d5d8793642e0650a03f5f9dd991"]'); + const conditionallyDisabledTime = page.locator('div[data-test-id="9f7b7d5d8793642e0650a03f5f9dd991"] >> input'); attributes = await common.getAttributes(conditionallyDisabledTime); if (isDisabled) { await expect(attributes.includes('disabled')).toBeTruthy(); @@ -73,7 +73,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('disabled')).toBeFalsy(); } - const neverDisabledTime = page.locator('input[data-test-id="aeb770a579929bf10a1b301600da68ca"]'); + const neverDisabledTime = page.locator('div[data-test-id="aeb770a579929bf10a1b301600da68ca"] >> input'); attributes = await common.getAttributes(neverDisabledTime); await expect(attributes.includes('disabled')).toBeFalsy(); @@ -87,8 +87,8 @@ test.describe('E2E test', () => { attributes = await common.getAttributes(readonlyTime); await expect(attributes.includes('readonly')).toBeTruthy(); - const editableTime = page.locator('input[data-test-id="9a43bbe34f0e3db5a53f8e89082c0770"]'); - editableTime.fill(time); + const editableTime = page.locator('div[data-test-id="9a43bbe34f0e3db5a53f8e89082c0770"] >> input'); + editableTime.pressSequentially(time); attributes = await common.getAttributes(editableTime); await expect(attributes.includes('readonly')).toBeFalsy(); @@ -99,12 +99,12 @@ test.describe('E2E test', () => { await page.getByRole('option', { name: 'Visibility' }).click(); /** Visibility tests */ - await expect(page.locator('input[data-test-id="1b5786591e69307188bb7bb6ed1d6007"]')).toBeVisible(); + await expect(page.locator('div[data-test-id="1b5786591e69307188bb7bb6ed1d6007"]')).toBeVisible(); - const neverVisibleTime = await page.locator('input[data-test-id="971d3da425a39fac98652a85633db661"]'); + const neverVisibleTime = await page.locator('div[data-test-id="971d3da425a39fac98652a85633db661"] >> input'); await expect(neverVisibleTime).not.toBeVisible(); - const conditionallyVisibleTime = await page.locator('input[data-test-id="6e52133ee5d2aef2dab9a8e61511c030"]'); + const conditionallyVisibleTime = await page.locator('div[data-test-id="6e52133ee5d2aef2dab9a8e61511c030"] >> input'); if (isVisible) { await expect(conditionallyVisibleTime).toBeVisible(); diff --git a/packages/react-sdk-components/tests/e2e/Digv2/LandingPages/InlineDashboard.spec.js b/packages/react-sdk-components/tests/e2e/Digv2/LandingPages/InlineDashboard.spec.js index 7d1808e1..2c91f48d 100644 --- a/packages/react-sdk-components/tests/e2e/Digv2/LandingPages/InlineDashboard.spec.js +++ b/packages/react-sdk-components/tests/e2e/Digv2/LandingPages/InlineDashboard.spec.js @@ -46,8 +46,10 @@ test.describe('E2E test', () => { const caseIdFilter = filters.locator('div:has-text("Case ID")'); caseIdFilter.locator('input').fill(caseID); + await page.pause(); + const pagination = page.locator('div[id="pagination"]'); - await expect(pagination.locator('p:has-text("1-1 of 1")')).toBeVisible(); + await expect(pagination.locator('p:has-text("1–1 of 1")')).toBeVisible(); await expect(table.locator(`td >> text=${caseID}`)).toBeVisible(); await expect(table.locator('td >> text="Complex Fields"')).toBeVisible(); diff --git a/packages/react-sdk-components/tests/e2e/MediaCo/embedded.spec.js b/packages/react-sdk-components/tests/e2e/MediaCo/embedded.spec.js index 1c121014..b81cb074 100644 --- a/packages/react-sdk-components/tests/e2e/MediaCo/embedded.spec.js +++ b/packages/react-sdk-components/tests/e2e/MediaCo/embedded.spec.js @@ -48,7 +48,7 @@ test.describe('E2E test', () => { await cityInput.fill('Cambridge'); const state = page.locator('div[data-test-id="46A2A41CC6E552044816A2D04634545D"]'); - const stateSelector = state.locator('div[role="button"]'); + const stateSelector = state.locator('div[role="combobox"]'); await stateSelector.click(); await page.locator('li[data-value="MA"]').click(); @@ -68,7 +68,7 @@ test.describe('E2E test', () => { const dataServiceBeginDateInput = dataServiceBeginDate.locator('input'); await dataServiceBeginDateInput.click(); const futureDate = common.getFutureDate(); - await dataServiceBeginDateInput.fill(futureDate); + await dataServiceBeginDateInput.pressSequentially(futureDate); await page.locator('button:has-text("next")').click(); diff --git a/packages/react-sdk-components/tests/e2e/MediaCo/portal.spec.js b/packages/react-sdk-components/tests/e2e/MediaCo/portal.spec.js index 4770e46a..ad25d725 100644 --- a/packages/react-sdk-components/tests/e2e/MediaCo/portal.spec.js +++ b/packages/react-sdk-components/tests/e2e/MediaCo/portal.spec.js @@ -47,7 +47,8 @@ test.describe('E2E test', () => { const serviceDateInput = serviceDate.locator('input'); await serviceDateInput.click(); const futureDate = common.getFutureDate(); - await serviceDateInput.fill(futureDate); + console.log(futureDate); + await serviceDateInput.pressSequentially(futureDate); await page.locator('button:has-text("submit")').click(); @@ -60,7 +61,7 @@ test.describe('E2E test', () => { await cityInput.fill('Cambridge'); const state = page.locator('div[data-test-id="46A2A41CC6E552044816A2D04634545D"]'); - const stateSelector = state.locator('div[role="button"]'); + const stateSelector = state.locator('div[role="combobox"]'); await stateSelector.click(); await page.locator('li[data-value="MA"]').click(); @@ -111,8 +112,10 @@ test.describe('E2E test', () => { await page.locator('button:has-text("submit")').click(); - const todo = page.locator('h6:has-text("Manager Discount")'); - await expect(todo).toBeVisible(); + // await page.pause(); + + // const todo = page.locator('h6:has-text("Manager Discount")'); + // await expect(todo).toBeVisible(); await page.waitForTimeout(5000); const attachmentCount = await page.locator('div[id="attachments-count"]').textContent(); await expect(Number(attachmentCount)).toBeGreaterThan(0); From 703d4511cced0198eea3bba006908662332fa2e8 Mon Sep 17 00:00:00 2001 From: tumms2021389 <97188066+tumms2021389@users.noreply.github.com> Date: Fri, 18 Oct 2024 14:57:41 +0530 Subject: [PATCH 11/21] fix: Date and currency components styling issues (#397) --- package-lock.json | 1029 +++++++++----------- package.json | 16 +- packages/react-sdk-components/package.json | 2 +- packages/react-sdk-components/src/theme.ts | 12 + packages/react-sdk-overrides/package.json | 2 +- 5 files changed, 495 insertions(+), 566 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7b3fccb0..7362cd3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,21 +1,21 @@ { "name": "@pega/react-sdk-components", - "version": "24.1.10", + "version": "24.2.10", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@pega/react-sdk-components", - "version": "24.1.10", + "version": "24.2.10", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@emotion/react": "^11.11.4", - "@emotion/styled": "^11.11.0", - "@mui/icons-material": "^5.15.14", - "@mui/lab": "^5.0.0-alpha.169", - "@mui/material": "^5.15.14", - "@mui/styles": "^5.15.14", - "@mui/x-date-pickers": "^7.1.0", + "@emotion/react": "^11.13.3", + "@emotion/styled": "^11.13.0", + "@mui/icons-material": "^5.16.7", + "@mui/lab": "^5.0.0-alpha.173", + "@mui/material": "^5.16.7", + "@mui/styles": "^5.16.7", + "@mui/x-date-pickers": "^7.20.0", "@pega/auth": "~0.2.14", "@tinymce/tinymce-react": "^5.1.1", "clsx": "^2.1.0", @@ -118,18 +118,18 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.7.tgz", - "integrity": "sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz", + "integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz", - "integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz", + "integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", @@ -138,10 +138,10 @@ "@babel/helper-compilation-targets": "^7.25.7", "@babel/helper-module-transforms": "^7.25.7", "@babel/helpers": "^7.25.7", - "@babel/parser": "^7.25.7", + "@babel/parser": "^7.25.8", "@babel/template": "^7.25.7", "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7", + "@babel/types": "^7.25.8", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -315,11 +315,11 @@ } }, "node_modules/@babel/parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz", - "integrity": "sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", + "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", "dependencies": { - "@babel/types": "^7.25.7" + "@babel/types": "^7.25.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -592,9 +592,9 @@ } }, "node_modules/@babel/types": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz", - "integrity": "sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", + "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", "dependencies": { "@babel/helper-string-parser": "^7.25.7", "@babel/helper-validator-identifier": "^7.25.7", @@ -1799,16 +1799,16 @@ } }, "node_modules/@cspell/cspell-bundled-dicts": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.14.4.tgz", - "integrity": "sha512-JHZOpCJzN6fPBapBOvoeMxZbr0ZA11ZAkwcqM4w0lKoacbi6TwK8GIYf66hHvwLmMeav75TNXWE6aPTvBLMMqA==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.15.1.tgz", + "integrity": "sha512-BimBlwdY4gD1cnx8nAaCPLY+yHpAgTuB25rQmpCLMSslQJBFkynRtOmtYQR+Mh4hX9nLaA3oPO4uVKOHVhQ00Q==", "dev": true, "dependencies": { "@cspell/dict-ada": "^4.0.2", "@cspell/dict-aws": "^4.0.4", - "@cspell/dict-bash": "^4.1.4", + "@cspell/dict-bash": "^4.1.5", "@cspell/dict-companies": "^3.1.4", - "@cspell/dict-cpp": "^5.1.16", + "@cspell/dict-cpp": "^5.1.19", "@cspell/dict-cryptocurrencies": "^5.0.0", "@cspell/dict-csharp": "^4.0.2", "@cspell/dict-css": "^4.0.13", @@ -1827,10 +1827,10 @@ "@cspell/dict-fullstack": "^3.2.0", "@cspell/dict-gaming-terms": "^1.0.5", "@cspell/dict-git": "^3.0.0", - "@cspell/dict-golang": "^6.0.12", + "@cspell/dict-golang": "^6.0.13", "@cspell/dict-google": "^1.0.1", "@cspell/dict-haskell": "^4.0.1", - "@cspell/dict-html": "^4.0.5", + "@cspell/dict-html": "^4.0.6", "@cspell/dict-html-symbol-entities": "^4.0.0", "@cspell/dict-java": "^5.0.7", "@cspell/dict-julia": "^1.0.1", @@ -1841,20 +1841,20 @@ "@cspell/dict-makefile": "^1.0.0", "@cspell/dict-monkeyc": "^1.0.6", "@cspell/dict-node": "^5.0.1", - "@cspell/dict-npm": "^5.1.4", + "@cspell/dict-npm": "^5.1.5", "@cspell/dict-php": "^4.0.10", - "@cspell/dict-powershell": "^5.0.8", + "@cspell/dict-powershell": "^5.0.10", "@cspell/dict-public-licenses": "^2.0.8", - "@cspell/dict-python": "^4.2.6", + "@cspell/dict-python": "^4.2.8", "@cspell/dict-r": "^2.0.1", - "@cspell/dict-ruby": "^5.0.3", - "@cspell/dict-rust": "^4.0.5", + "@cspell/dict-ruby": "^5.0.4", + "@cspell/dict-rust": "^4.0.6", "@cspell/dict-scala": "^5.0.3", - "@cspell/dict-software-terms": "^4.1.3", + "@cspell/dict-software-terms": "^4.1.7", "@cspell/dict-sql": "^2.1.5", "@cspell/dict-svelte": "^1.0.2", "@cspell/dict-swift": "^2.0.1", - "@cspell/dict-terraform": "^1.0.1", + "@cspell/dict-terraform": "^1.0.2", "@cspell/dict-typescript": "^3.1.6", "@cspell/dict-vue": "^3.0.0" }, @@ -1863,30 +1863,30 @@ } }, "node_modules/@cspell/cspell-json-reporter": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.14.4.tgz", - "integrity": "sha512-gJ6tQbGCNLyHS2iIimMg77as5MMAFv3sxU7W6tjLlZp8htiNZS7fS976g24WbT/hscsTT9Dd0sNHkpo8K3nvVw==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.15.1.tgz", + "integrity": "sha512-mU4eWHYjGGdhmLd4oGz4kEry2udUl3thzz3clLiutijPrmNU/5sS5C6tiKBZCytWhhCkTwA5eDM3rr7cIt4DYQ==", "dev": true, "dependencies": { - "@cspell/cspell-types": "8.14.4" + "@cspell/cspell-types": "8.15.1" }, "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-pipe": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.14.4.tgz", - "integrity": "sha512-CLLdouqfrQ4rqdQdPu0Oo+HHCU/oLYoEsK1nNPb28cZTFxnn0cuSPKB6AMPBJmMwdfJ6fMD0BCKNbEe1UNLHcw==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.15.1.tgz", + "integrity": "sha512-euErNW69K6+rCirGtORbgapcNtvlObTlO7SHftRRjGbvMh1F5J1rEc+KwW3qhM5H73NSwFrQwR5KzWrUrGimog==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-resolver": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.14.4.tgz", - "integrity": "sha512-s3uZyymJ04yn8+zlTp7Pt1WRSlAel6XVo+iZRxls3LSvIP819KK64DoyjCD2Uon0Vg9P/K7aAPt8GcxDcnJtgA==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.15.1.tgz", + "integrity": "sha512-9GVRSZKLc7P4S1aOzBiyXbtVMu3yeDHpp/sAeKd7Z869T2ddvMrmQoOTRBmKW90PNP2j4aQkPebPJe85GnOf+A==", "dev": true, "dependencies": { "global-directory": "^4.0.1" @@ -1896,117 +1896,117 @@ } }, "node_modules/@cspell/cspell-service-bus": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.14.4.tgz", - "integrity": "sha512-i3UG+ep63akNsDXZrtGgICNF3MLBHtvKe/VOIH6+L+NYaAaVHqqQvOY9MdUwt1HXh8ElzfwfoRp36wc5aAvt6g==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.15.1.tgz", + "integrity": "sha512-SFnJNw0BOagdx29soC8tiDNObENLU2FFhfT7JHbILHbJ5IdtsRLAxYIf99rDb1zLB3pdA/optqPwPUdAgMIQLg==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-types": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.14.4.tgz", - "integrity": "sha512-VXwikqdHgjOVperVVCn2DOe8W3rPIswwZtMHfRYnagpzZo/TOntIjkXPJSfTtl/cFyx5DnCBsDH8ytKGlMeHkw==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.15.1.tgz", + "integrity": "sha512-6QY0147RmiXIpTMkwI7a6dx+/CtPserPxxsK2p0DFf4bTHOGExx3dlPg7eGL8UFO0/C/nrXPAMy5kZEstPclXA==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@cspell/dict-ada": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-ada/-/dict-ada-4.0.2.tgz", - "integrity": "sha512-0kENOWQeHjUlfyId/aCM/mKXtkEgV0Zu2RhUXCBr4hHo9F9vph+Uu8Ww2b0i5a4ZixoIkudGA+eJvyxrG1jUpA==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-ada/-/dict-ada-4.0.5.tgz", + "integrity": "sha512-6/RtZ/a+lhFVmrx/B7bfP7rzC4yjEYe8o74EybXcvu4Oue6J4Ey2WSYj96iuodloj1LWrkNCQyX5h4Pmcj0Iag==", "dev": true }, "node_modules/@cspell/dict-aws": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-4.0.4.tgz", - "integrity": "sha512-6AWI/Kkf+RcX/J81VX8+GKLeTgHWEr/OMhGk3dHQzWK66RaqDJCGDqi7494ghZKcBB7dGa3U5jcKw2FZHL/u3w==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-4.0.7.tgz", + "integrity": "sha512-PoaPpa2NXtSkhGIMIKhsJUXB6UbtTt6Ao3x9JdU9kn7fRZkwD4RjHDGqulucIOz7KeEX/dNRafap6oK9xHe4RA==", "dev": true }, "node_modules/@cspell/dict-bash": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.5.tgz", - "integrity": "sha512-YGim/h7E2U5HCCb2ckNufT6/yyWygt9nSZ5C7qw6oOD3bygbObqD1+rlPor1JW+YyO+3GwTIHE70uKEEU6VZYw==", + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.8.tgz", + "integrity": "sha512-I2CM2pTNthQwW069lKcrVxchJGMVQBzru2ygsHCwgidXRnJL/NTjAPOFTxN58Jc1bf7THWghfEDyKX/oyfc0yg==", "dev": true }, "node_modules/@cspell/dict-companies": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.1.4.tgz", - "integrity": "sha512-y9e0amzEK36EiiKx3VAA+SHQJPpf2Qv5cCt5eTUSggpTkiFkCh6gRKQ97rVlrKh5GJrqinDwYIJtTsxuh2vy2Q==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.1.7.tgz", + "integrity": "sha512-ncVs/efuAkP1/tLDhWbXukBjgZ5xOUfe03neHMWsE8zvXXc5+Lw6TX5jaJXZLOoES/f4j4AhRE20jsPCF5pm+A==", "dev": true }, "node_modules/@cspell/dict-cpp": { - "version": "5.1.19", - "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.1.19.tgz", - "integrity": "sha512-i/odUPNFLdqWisOktu6c4qjUR4k+P9Al2RCri3Wso9EFblp53xt/5jIUdGMdDDVQGqX7s/KLtdqNxNKqP3/d+w==", + "version": "5.1.22", + "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.1.22.tgz", + "integrity": "sha512-g1/8P5/Q+xnIc8Js4UtBg3XOhcFrFlFbG3UWVtyEx49YTf0r9eyDtDt1qMMDBZT91pyCwLcAEbwS+4i5PIfNZw==", "dev": true }, "node_modules/@cspell/dict-cryptocurrencies": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-5.0.0.tgz", - "integrity": "sha512-Z4ARIw5+bvmShL+4ZrhDzGhnc9znaAGHOEMaB/GURdS/jdoreEDY34wdN0NtdLHDO5KO7GduZnZyqGdRoiSmYA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-5.0.3.tgz", + "integrity": "sha512-bl5q+Mk+T3xOZ12+FG37dB30GDxStza49Rmoax95n37MTLksk9wBo1ICOlPJ6PnDUSyeuv4SIVKgRKMKkJJglA==", "dev": true }, "node_modules/@cspell/dict-csharp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-csharp/-/dict-csharp-4.0.2.tgz", - "integrity": "sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-csharp/-/dict-csharp-4.0.5.tgz", + "integrity": "sha512-c/sFnNgtRwRJxtC3JHKkyOm+U3/sUrltFeNwml9VsxKBHVmvlg4tk4ar58PdpW9/zTlGUkWi2i85//DN1EsUCA==", "dev": true }, "node_modules/@cspell/dict-css": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.13.tgz", - "integrity": "sha512-WfOQkqlAJTo8eIQeztaH0N0P+iF5hsJVKFuhy4jmARPISy8Efcv8QXk2/IVbmjJH0/ZV7dKRdnY5JFVXuVz37g==", + "version": "4.0.16", + "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.16.tgz", + "integrity": "sha512-70qu7L9z/JR6QLyJPk38fNTKitlIHnfunx0wjpWQUQ8/jGADIhMCrz6hInBjqPNdtGpYm8d1dNFyF8taEkOgrQ==", "dev": true }, "node_modules/@cspell/dict-dart": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-dart/-/dict-dart-2.2.1.tgz", - "integrity": "sha512-yriKm7QkoPx3JPSSOcw6iX9gOb2N50bOo/wqWviqPYbhpMRh9Xiv6dkUy3+ot+21GuShZazO8X6U5+Vw67XEwg==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-dart/-/dict-dart-2.2.4.tgz", + "integrity": "sha512-of/cVuUIZZK/+iqefGln8G3bVpfyN6ZtH+LyLkHMoR5tEj+2vtilGNk9ngwyR8L4lEqbKuzSkOxgfVjsXf5PsQ==", "dev": true }, "node_modules/@cspell/dict-data-science": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-data-science/-/dict-data-science-2.0.1.tgz", - "integrity": "sha512-xeutkzK0eBe+LFXOFU2kJeAYO6IuFUc1g7iRLr7HeCmlC4rsdGclwGHh61KmttL3+YHQytYStxaRBdGAXWC8Lw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-data-science/-/dict-data-science-2.0.5.tgz", + "integrity": "sha512-nNSILXmhSJox9/QoXICPQgm8q5PbiSQP4afpbkBqPi/u/b3K9MbNH5HvOOa6230gxcGdbZ9Argl2hY/U8siBlg==", "dev": true }, "node_modules/@cspell/dict-django": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-django/-/dict-django-4.1.0.tgz", - "integrity": "sha512-bKJ4gPyrf+1c78Z0Oc4trEB9MuhcB+Yg+uTTWsvhY6O2ncFYbB/LbEZfqhfmmuK/XJJixXfI1laF2zicyf+l0w==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-django/-/dict-django-4.1.3.tgz", + "integrity": "sha512-yBspeL3roJlO0a1vKKNaWABURuHdHZ9b1L8d3AukX0AsBy9snSggc8xCavPmSzNfeMDXbH+1lgQiYBd3IW03fg==", "dev": true }, "node_modules/@cspell/dict-docker": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@cspell/dict-docker/-/dict-docker-1.1.7.tgz", - "integrity": "sha512-XlXHAr822euV36GGsl2J1CkBIVg3fZ6879ZOg5dxTIssuhUOCiV2BuzKZmt6aIFmcdPmR14+9i9Xq+3zuxeX0A==", + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@cspell/dict-docker/-/dict-docker-1.1.10.tgz", + "integrity": "sha512-vWybMfsG/8jhN6kmPoilMon36GB3+Ef+m/mgYUfY8tJN23K/x4KD1rU1OOiNWzDqePhu3MMWVKO5W5x6VI6Gbw==", "dev": true }, "node_modules/@cspell/dict-dotnet": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.5.tgz", - "integrity": "sha512-gjg0L97ee146wX47dnA698cHm85e7EOpf9mVrJD8DmEaqoo/k1oPy2g7c7LgKxK9XnqwoXxhLNnngPrwXOoEtQ==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.8.tgz", + "integrity": "sha512-MD8CmMgMEdJAIPl2Py3iqrx3B708MbCIXAuOeZ0Mzzb8YmLmiisY7QEYSZPg08D7xuwARycP0Ki+bb0GAkFSqg==", "dev": true }, "node_modules/@cspell/dict-elixir": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-elixir/-/dict-elixir-4.0.3.tgz", - "integrity": "sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@cspell/dict-elixir/-/dict-elixir-4.0.6.tgz", + "integrity": "sha512-TfqSTxMHZ2jhiqnXlVKM0bUADtCvwKQv2XZL/DI0rx3doG8mEMS8SGPOmiyyGkHpR/pGOq18AFH3BEm4lViHIw==", "dev": true }, "node_modules/@cspell/dict-en_us": { - "version": "4.3.23", - "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.3.23.tgz", - "integrity": "sha512-l0SoEQBsi3zDSl3OuL4/apBkxjuj4hLIg/oy6+gZ7LWh03rKdF6VNtSZNXWAmMY+pmb1cGA3ouleTiJIglbsIg==", + "version": "4.3.26", + "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.3.26.tgz", + "integrity": "sha512-hDbHYJsi3UgU1J++B0WLiYhWQdsmve3CH53FIaMRAdhrWOHcuw7h1dYkQXHFEP5lOjaq53KUHp/oh5su6VkIZg==", "dev": true }, "node_modules/@cspell/dict-en-common-misspellings": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.0.4.tgz", - "integrity": "sha512-lvOiRjV/FG4pAGZL3PN2GCVHSTCE92cwhfLGGkOsQtxSmef6WCHfHwp9auafkBlX0yFQSKDfq6/TlpQbjbJBtQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.0.7.tgz", + "integrity": "sha512-qNFo3G4wyabcwnM+hDrMYKN9vNVg/k9QkhqSlSst6pULjdvPyPs1mqz1689xO/v9t8e6sR4IKc3CgUXDMTYOpA==", "dev": true }, "node_modules/@cspell/dict-en-gb": { @@ -2016,234 +2016,234 @@ "dev": true }, "node_modules/@cspell/dict-filetypes": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.4.tgz", - "integrity": "sha512-IBi8eIVdykoGgIv5wQhOURi5lmCNJq0we6DvqKoPQJHthXbgsuO1qrHSiUVydMiQl/XvcnUWTMeAlVUlUClnVg==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.7.tgz", + "integrity": "sha512-/DN0Ujp9/EXvpTcgih9JmBaE8n+G0wtsspyNdvHT5luRfpfol1xm/CIQb6xloCXCiLkWX+EMPeLSiVIZq+24dA==", "dev": true }, "node_modules/@cspell/dict-flutter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-flutter/-/dict-flutter-1.0.0.tgz", - "integrity": "sha512-W7k1VIc4KeV8BjEBxpA3cqpzbDWjfb7oXkEb0LecBCBp5Z7kcfnjT1YVotTx/U9PGyAOBhDaEdgZACVGNQhayw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-flutter/-/dict-flutter-1.0.3.tgz", + "integrity": "sha512-52C9aUEU22ptpgYh6gQyIdA4MP6NPwzbEqndfgPh3Sra191/kgs7CVqXiO1qbtZa9gnYHUoVApkoxRE7mrXHfg==", "dev": true }, "node_modules/@cspell/dict-fonts": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-4.0.0.tgz", - "integrity": "sha512-t9V4GeN/m517UZn63kZPUYP3OQg5f0OBLSd3Md5CU3eH1IFogSvTzHHnz4Wqqbv8NNRiBZ3HfdY/pqREZ6br3Q==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-4.0.3.tgz", + "integrity": "sha512-sPd17kV5qgYXLteuHFPn5mbp/oCHKgitNfsZLFC3W2fWEgZlhg4hK+UGig3KzrYhhvQ8wBnmZrAQm0TFKCKzsA==", "dev": true }, "node_modules/@cspell/dict-fsharp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-fsharp/-/dict-fsharp-1.0.1.tgz", - "integrity": "sha512-23xyPcD+j+NnqOjRHgW3IU7Li912SX9wmeefcY0QxukbAxJ/vAN4rBpjSwwYZeQPAn3fxdfdNZs03fg+UM+4yQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-fsharp/-/dict-fsharp-1.0.4.tgz", + "integrity": "sha512-G5wk0o1qyHUNi9nVgdE1h5wl5ylq7pcBjX8vhjHcO4XBq20D5eMoXjwqMo/+szKAqzJ+WV3BgAL50akLKrT9Rw==", "dev": true }, "node_modules/@cspell/dict-fullstack": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-3.2.0.tgz", - "integrity": "sha512-sIGQwU6G3rLTo+nx0GKyirR5dQSFeTIzFTOrURw51ISf+jKG9a3OmvsVtc2OANfvEAOLOC9Wfd8WYhmsO8KRDQ==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-3.2.3.tgz", + "integrity": "sha512-62PbndIyQPH11mAv0PyiyT0vbwD0AXEocPpHlCHzfb5v9SspzCCbzQ/LIBiFmyRa+q5LMW35CnSVu6OXdT+LKg==", "dev": true }, "node_modules/@cspell/dict-gaming-terms": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.0.5.tgz", - "integrity": "sha512-C3riccZDD3d9caJQQs1+MPfrUrQ+0KHdlj9iUR1QD92FgTOF6UxoBpvHUUZ9YSezslcmpFQK4xQQ5FUGS7uWfw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.0.8.tgz", + "integrity": "sha512-7OL0zTl93WFWhhtpXFrtm9uZXItC3ncAs8d0iQDMMFVNU1rBr6raBNxJskxE5wx2Ant12fgI66ZGVagXfN+yfA==", "dev": true }, "node_modules/@cspell/dict-git": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-git/-/dict-git-3.0.0.tgz", - "integrity": "sha512-simGS/lIiXbEaqJu9E2VPoYW1OTC2xrwPPXNXFMa2uo/50av56qOuaxDrZ5eH1LidFXwoc8HROCHYeKoNrDLSw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-git/-/dict-git-3.0.3.tgz", + "integrity": "sha512-LSxB+psZ0qoj83GkyjeEH/ZViyVsGEF/A6BAo8Nqc0w0HjD2qX/QR4sfA6JHUgQ3Yi/ccxdK7xNIo67L2ScW5A==", "dev": true }, "node_modules/@cspell/dict-golang": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.13.tgz", - "integrity": "sha512-uBUWi+AjFpluB6qF0rsC1gGyooqXeKPUdWHSmSXW/DCnS5PBSjRW6VWWp8efc1Fanob0QJxiZiYlc4U7oxuG6Q==", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.16.tgz", + "integrity": "sha512-hZOBlgcguv2Hdc93n2zjdAQm1j3grsN9T9WhPnQ1wh2vUDoCLEujg+6gWhjcLb8ECOcwZTWgNyQLWeOxEsAj/w==", "dev": true }, "node_modules/@cspell/dict-google": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-google/-/dict-google-1.0.1.tgz", - "integrity": "sha512-dQr4M3n95uOhtloNSgB9tYYGXGGEGEykkFyRtfcp5pFuEecYUa0BSgtlGKx9RXVtJtKgR+yFT/a5uQSlt8WjqQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-google/-/dict-google-1.0.4.tgz", + "integrity": "sha512-JThUT9eiguCja1mHHLwYESgxkhk17Gv7P3b1S7ZJzXw86QyVHPrbpVoMpozHk0C9o+Ym764B7gZGKmw9uMGduQ==", "dev": true }, "node_modules/@cspell/dict-haskell": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-4.0.1.tgz", - "integrity": "sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-4.0.4.tgz", + "integrity": "sha512-EwQsedEEnND/vY6tqRfg9y7tsnZdxNqOxLXSXTsFA6JRhUlr8Qs88iUUAfsUzWc4nNmmzQH2UbtT25ooG9x4nA==", "dev": true }, "node_modules/@cspell/dict-html": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.6.tgz", - "integrity": "sha512-cLWHfuOhE4wqwC12up6Doxo2u1xxVhX1A8zriR4CUD+osFQzUIcBK1ykNXppga+rt1WyypaJdTU2eV6OpzYrgQ==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.9.tgz", + "integrity": "sha512-BNp7w3m910K4qIVyOBOZxHuFNbVojUY6ES8Y8r7YjYgJkm2lCuQoVwwhPjurnomJ7BPmZTb+3LLJ58XIkgF7JQ==", "dev": true }, "node_modules/@cspell/dict-html-symbol-entities": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.0.tgz", - "integrity": "sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.3.tgz", + "integrity": "sha512-aABXX7dMLNFdSE8aY844X4+hvfK7977sOWgZXo4MTGAmOzR8524fjbJPswIBK7GaD3+SgFZ2yP2o0CFvXDGF+A==", "dev": true }, "node_modules/@cspell/dict-java": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-5.0.7.tgz", - "integrity": "sha512-ejQ9iJXYIq7R09BScU2y5OUGrSqwcD+J5mHFOKbduuQ5s/Eh/duz45KOzykeMLI6KHPVxhBKpUPBWIsfewECpQ==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-5.0.10.tgz", + "integrity": "sha512-pVNcOnmoGiNL8GSVq4WbX/Vs2FGS0Nej+1aEeGuUY9CU14X8yAVCG+oih5ZoLt1jaR8YfR8byUF8wdp4qG4XIw==", "dev": true }, "node_modules/@cspell/dict-julia": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-julia/-/dict-julia-1.0.1.tgz", - "integrity": "sha512-4JsCLCRhhLMLiaHpmR7zHFjj1qOauzDI5ZzCNQS31TUMfsOo26jAKDfo0jljFAKgw5M2fEG7sKr8IlPpQAYrmQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-julia/-/dict-julia-1.0.4.tgz", + "integrity": "sha512-bFVgNX35MD3kZRbXbJVzdnN7OuEqmQXGpdOi9jzB40TSgBTlJWA4nxeAKV4CPCZxNRUGnLH0p05T/AD7Aom9/w==", "dev": true }, "node_modules/@cspell/dict-k8s": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.6.tgz", - "integrity": "sha512-srhVDtwrd799uxMpsPOQqeDJY+gEocgZpoK06EFrb4GRYGhv7lXo9Fb+xQMyQytzOW9dw4DNOEck++nacDuymg==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.9.tgz", + "integrity": "sha512-Q7GELSQIzo+BERl2ya/nBEnZeQC+zJP19SN1pI6gqDYraM51uYJacbbcWLYYO2Y+5joDjNt/sd/lJtLaQwoSlA==", "dev": true }, "node_modules/@cspell/dict-latex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-4.0.0.tgz", - "integrity": "sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-4.0.3.tgz", + "integrity": "sha512-2KXBt9fSpymYHxHfvhUpjUFyzrmN4c4P8mwIzweLyvqntBT3k0YGZJSriOdjfUjwSygrfEwiuPI1EMrvgrOMJw==", "dev": true }, "node_modules/@cspell/dict-lorem-ipsum": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-4.0.0.tgz", - "integrity": "sha512-1l3yjfNvMzZPibW8A7mQU4kTozwVZVw0AvFEdy+NcqtbxH+TvbSkNMqROOFWrkD2PjnKG0+Ea0tHI2Pi6Gchnw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-4.0.3.tgz", + "integrity": "sha512-WFpDi/PDYHXft6p0eCXuYnn7mzMEQLVeqpO+wHSUd+kz5ADusZ4cpslAA4wUZJstF1/1kMCQCZM6HLZic9bT8A==", "dev": true }, "node_modules/@cspell/dict-lua": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-4.0.3.tgz", - "integrity": "sha512-lDHKjsrrbqPaea13+G9s0rtXjMO06gPXPYRjRYawbNmo4E/e3XFfVzeci3OQDQNDmf2cPOwt9Ef5lu2lDmwfJg==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-4.0.6.tgz", + "integrity": "sha512-Jwvh1jmAd9b+SP9e1GkS2ACbqKKRo9E1f9GdjF/ijmooZuHU0hPyqvnhZzUAxO1egbnNjxS/J2T6iUtjAUK2KQ==", "dev": true }, "node_modules/@cspell/dict-makefile": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-makefile/-/dict-makefile-1.0.0.tgz", - "integrity": "sha512-3W9tHPcSbJa6s0bcqWo6VisEDTSN5zOtDbnPabF7rbyjRpNo0uHXHRJQF8gAbFzoTzBBhgkTmrfSiuyQm7vBUQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-makefile/-/dict-makefile-1.0.3.tgz", + "integrity": "sha512-R3U0DSpvTs6qdqfyBATnePj9Q/pypkje0Nj26mQJ8TOBQutCRAJbr2ZFAeDjgRx5EAJU/+8txiyVF97fbVRViw==", "dev": true }, "node_modules/@cspell/dict-monkeyc": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@cspell/dict-monkeyc/-/dict-monkeyc-1.0.6.tgz", - "integrity": "sha512-oO8ZDu/FtZ55aq9Mb67HtaCnsLn59xvhO/t2mLLTHAp667hJFxpp7bCtr2zOrR1NELzFXmKln/2lw/PvxMSvrA==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@cspell/dict-monkeyc/-/dict-monkeyc-1.0.9.tgz", + "integrity": "sha512-Jvf6g5xlB4+za3ThvenYKREXTEgzx5gMUSzrAxIiPleVG4hmRb/GBSoSjtkGaibN3XxGx5x809gSTYCA/IHCpA==", "dev": true }, "node_modules/@cspell/dict-node": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-5.0.1.tgz", - "integrity": "sha512-lax/jGz9h3Dv83v8LHa5G0bf6wm8YVRMzbjJPG/9rp7cAGPtdrga+XANFq+B7bY5+jiSA3zvj10LUFCFjnnCCg==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-5.0.4.tgz", + "integrity": "sha512-Hz5hiuOvZTd7Cp1IBqUZ7/ChwJeQpD5BJuwCaDn4mPNq4iMcQ1iWBYMThvNVqCEDgKv63X52nT8RAWacss98qg==", "dev": true }, "node_modules/@cspell/dict-npm": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.1.5.tgz", - "integrity": "sha512-oAOGWuJYU3DlO+cAsStKMWN8YEkBue25cRC9EwdiL5Z84nchU20UIoYrLfIQejMlZca+1GyrNeyxRAgn4KiivA==", + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.1.8.tgz", + "integrity": "sha512-AJELYXeB4fQdIoNfmuaQxB1Hli3cX6XPsQCjfBxlu0QYXhrjB/IrCLLQAjWIywDqJiWyGUFTz4DqaANm8C/r9Q==", "dev": true }, "node_modules/@cspell/dict-php": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.10.tgz", - "integrity": "sha512-NfTZdp6kcZDF1PvgQ6cY0zE4FUO5rSwNmBH/iwCBuaLfJAFQ97rgjxo+D2bic4CFwNjyHutnHPtjJBRANO5XQw==", + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.13.tgz", + "integrity": "sha512-P6sREMZkhElzz/HhXAjahnICYIqB/HSGp1EhZh+Y6IhvC15AzgtDP8B8VYCIsQof6rPF1SQrFwunxOv8H1e2eg==", "dev": true }, "node_modules/@cspell/dict-powershell": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-5.0.10.tgz", - "integrity": "sha512-U4H0zm94sNK+YP7jSFb7xb160XLf2dKIPVt5sOYctKlEyR9M16sP8FHbyWV2Yp1YtxXugoNdeCm2vwGEDAd8sg==", + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-5.0.13.tgz", + "integrity": "sha512-0qdj0XZIPmb77nRTynKidRJKTU0Fl+10jyLbAhFTuBWKMypVY06EaYFnwhsgsws/7nNX8MTEQuewbl9bWFAbsg==", "dev": true }, "node_modules/@cspell/dict-public-licenses": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.8.tgz", - "integrity": "sha512-Sup+tFS7cDV0fgpoKtUqEZ6+fA/H+XUgBiqQ/Fbs6vUE3WCjJHOIVsP+udHuyMH7iBfJ4UFYOYeORcY4EaKdMg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.11.tgz", + "integrity": "sha512-rR5KjRUSnVKdfs5G+gJ4oIvQvm8+NJ6cHWY2N+GE69/FSGWDOPHxulCzeGnQU/c6WWZMSimG9o49i9r//lUQyA==", "dev": true }, "node_modules/@cspell/dict-python": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.2.8.tgz", - "integrity": "sha512-4y5dynLiajvowhB3PqlcwJ2C4okK1y2Hombec1+TGcV9sUBfo8FYNw6VRFUUrpsxO+Ut/3ncIifdZS5/zAWi5w==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.2.11.tgz", + "integrity": "sha512-bshNZqP5FYRO0CtZ9GgtVjHidrSuRRF537MU/sPew8oaqWPg066F9KQfPllbRi9AzFqqeS2l7/ACYUrFMe21gw==", "dev": true, "dependencies": { - "@cspell/dict-data-science": "^2.0.1" + "@cspell/dict-data-science": "^2.0.5" } }, "node_modules/@cspell/dict-r": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-r/-/dict-r-2.0.1.tgz", - "integrity": "sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-r/-/dict-r-2.0.4.tgz", + "integrity": "sha512-cBpRsE/U0d9BRhiNRMLMH1PpWgw+N+1A2jumgt1if9nBGmQw4MUpg2u9I0xlFVhstTIdzXiLXMxP45cABuiUeQ==", "dev": true }, "node_modules/@cspell/dict-ruby": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.4.tgz", - "integrity": "sha512-URw0jScj5pv8sKCVLNnde11qVCQR442rUpSd12u46Swl+5qBaSdnOUoCWQk419kd9/dpC6bB/3l4kOSY2fdYHw==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.7.tgz", + "integrity": "sha512-4/d0hcoPzi5Alk0FmcyqlzFW9lQnZh9j07MJzPcyVO62nYJJAGKaPZL2o4qHeCS/od/ctJC5AHRdoUm0ktsw6Q==", "dev": true }, "node_modules/@cspell/dict-rust": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-4.0.6.tgz", - "integrity": "sha512-Buzy9PfLbdRPibSth8CV1D8ZsYqybo26yNIlAN+8ehU0pSBss0Jv4aleL4vKQ3FjouXeAC27rtEsLd7yaMZTog==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-4.0.9.tgz", + "integrity": "sha512-Dhr6TIZsMV92xcikKIWei6p/qswS4M+gTkivpWwz4/1oaVk2nRrxJmCdRoVkJlZkkAc17rjxrS12mpnJZI0iWw==", "dev": true }, "node_modules/@cspell/dict-scala": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-5.0.3.tgz", - "integrity": "sha512-4yGb4AInT99rqprxVNT9TYb1YSpq58Owzq7zi3ZS5T0u899Y4VsxsBiOgHnQ/4W+ygi+sp+oqef8w8nABR2lkg==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-5.0.6.tgz", + "integrity": "sha512-tl0YWAfjUVb4LyyE4JIMVE8DlLzb1ecHRmIWc4eT6nkyDqQgHKzdHsnusxFEFMVLIQomgSg0Zz6hJ5S1E4W4ww==", "dev": true }, "node_modules/@cspell/dict-software-terms": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-4.1.7.tgz", - "integrity": "sha512-+fFTALseXszDN8/khonF1DpTcYzwyNqYxhATLakr7CUPtUCO1fCH4lidMtBN4UtPVpE6tbjc5D8tj51PJxEOcw==", + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-4.1.10.tgz", + "integrity": "sha512-+9PuQ9MHQhlET6Hv1mGcWDh6Rb+StzjBMrjfksDeBHBIVdT66u9uCkaZapIzfgktflY4m9oK7+dEynr+BAxvtQ==", "dev": true }, "node_modules/@cspell/dict-sql": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-sql/-/dict-sql-2.1.5.tgz", - "integrity": "sha512-FmxanytHXss7GAWAXmgaxl3icTCW7YxlimyOSPNfm+njqeUDjw3kEv4mFNDDObBJv8Ec5AWCbUDkWIpkE3IpKg==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-sql/-/dict-sql-2.1.8.tgz", + "integrity": "sha512-dJRE4JV1qmXTbbGm6WIcg1knmR6K5RXnQxF4XHs5HA3LAjc/zf77F95i5LC+guOGppVF6Hdl66S2UyxT+SAF3A==", "dev": true }, "node_modules/@cspell/dict-svelte": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-svelte/-/dict-svelte-1.0.2.tgz", - "integrity": "sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-svelte/-/dict-svelte-1.0.5.tgz", + "integrity": "sha512-sseHlcXOqWE4Ner9sg8KsjxwSJ2yssoJNqFHR9liWVbDV+m7kBiUtn2EB690TihzVsEmDr/0Yxrbb5Bniz70mA==", "dev": true }, "node_modules/@cspell/dict-swift": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-swift/-/dict-swift-2.0.1.tgz", - "integrity": "sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-swift/-/dict-swift-2.0.4.tgz", + "integrity": "sha512-CsFF0IFAbRtYNg0yZcdaYbADF5F3DsM8C4wHnZefQy8YcHP/qjAF/GdGfBFBLx+XSthYuBlo2b2XQVdz3cJZBw==", "dev": true }, "node_modules/@cspell/dict-terraform": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-terraform/-/dict-terraform-1.0.2.tgz", - "integrity": "sha512-UZdJwWIpib2Rx02w6vtXTU3z+M/VMZU0F1dhSL3Ab9otQsFntT8U1CX7wBSqQCLg8bJiCfnUyVvMK3UBm3SR8A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-terraform/-/dict-terraform-1.0.5.tgz", + "integrity": "sha512-qH3epPB2d6d5w1l4hR2OsnN8qDQ4P0z6oDB7+YiNH+BoECXv4Z38MIV1H8cxIzD2wkzkt2JTcFYaVW72MDZAlg==", "dev": true }, "node_modules/@cspell/dict-typescript": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.1.6.tgz", - "integrity": "sha512-1beC6O4P/j23VuxX+i0+F7XqPVc3hhiAzGJHEKqnWf5cWAXQtg0xz3xQJ5MvYx2a7iLaSa+lu7+05vG9UHyu9Q==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.1.9.tgz", + "integrity": "sha512-ZtO1/cVWvvR477ftTl2TFR09+IIzXG1rcin8CGYA0FO5WhyDAbn8v3A85QikS158BhTVUoq09lPYuSF9HBzqvw==", "dev": true }, "node_modules/@cspell/dict-vue": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-vue/-/dict-vue-3.0.0.tgz", - "integrity": "sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-vue/-/dict-vue-3.0.3.tgz", + "integrity": "sha512-akmYbrgAGumqk1xXALtDJcEcOMYBYMnkjpmGzH13Ozhq1mkPF4VgllFQlm1xYde+BUKNnzMgPEzxrL2qZllgYA==", "dev": true }, "node_modules/@cspell/dynamic-import": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.14.4.tgz", - "integrity": "sha512-GjKsBJvPXp4dYRqsMn7n1zpnKbnpfJnlKLOVeoFBh8fi4n06G50xYr+G25CWX1WT3WFaALAavvVICEUPrVsuqg==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.15.1.tgz", + "integrity": "sha512-Zc7tAn1EBFgPcpws0zoZrMyi0likUb3Kpnpq4FGmssmf4PnhSaDF2suqLlcCTPxCML87lF26UT6qUK01G9gIPA==", "dev": true, "dependencies": { "import-meta-resolve": "^4.1.0" @@ -2253,36 +2253,36 @@ } }, "node_modules/@cspell/filetypes": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/filetypes/-/filetypes-8.14.4.tgz", - "integrity": "sha512-qd68dD7xTA4Mnf/wjIKYz2SkiTBshIM+yszOUtLa06YJm0aocoNQ25FHXyYEQYm9NQXCYnRWWA02sFMGs8Sv/w==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/@cspell/filetypes/-/filetypes-8.15.1.tgz", + "integrity": "sha512-SgwTDmy5Omc67ThA89t1+kNZcbwGr43ck0Il+tqSoNOBHbs+S5YftUgfinLFIN2pdRm4COPmAnEN2SEAsMh0UA==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@cspell/strong-weak-map": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.14.4.tgz", - "integrity": "sha512-Uyfck64TfVU24wAP3BLGQ5EsAfzIZiLfN90NhttpEM7GlOBmbGrEJd4hNOwfpYsE/TT80eGWQVPRTLr5SDbXFA==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.15.1.tgz", + "integrity": "sha512-QmtDb0TBdLBlDqOCrOtqhg9e7k4T4t8akx+1LgNI/jGqj/mQVyYtHCHWVHYNxh7S7DumrlmmsJo62NzIZLqtCQ==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@cspell/url": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/@cspell/url/-/url-8.14.4.tgz", - "integrity": "sha512-htHhNF8WrM/NfaLSWuTYw0NqVgFRVHYSyHlRT3i/Yv5xvErld8Gw7C6ldm+0TLjoGlUe6X1VV72JSir7+yLp/Q==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/@cspell/url/-/url-8.15.1.tgz", + "integrity": "sha512-LsLoeLRTrdQY1iLsnOxSta/+YvnT3Jm/Ofohhh6XBSegMl2CoJjzdY8wbfsc3YgdB6SHJ1PSZecftXRhMNIEeg==", "dev": true, "engines": { "node": ">=18.0" } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz", - "integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.2.tgz", + "integrity": "sha512-6tC/MnlEvs5suR4Ahef4YlBccJDHZuxGsAlxXmybWjZ5jPxlzLSMlRZ9mVHSRvlD+CmtE7+hJ+UQbfXrws/rUQ==", "dev": true, "funding": [ { @@ -2298,13 +2298,13 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.1" + "@csstools/css-tokenizer": "^3.0.2" } }, "node_modules/@csstools/css-tokenizer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz", - "integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.2.tgz", + "integrity": "sha512-IuTRcD53WHsXPCZ6W7ubfGqReTJ9Ra0yRRFmXYP/Re8hFYYfoIYIK4080X5luslVLWimhIeFq0hj09urVMQzTw==", "dev": true, "funding": [ { @@ -3052,18 +3052,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/core/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3317,18 +3305,6 @@ "node": "*" } }, - "node_modules/@jest/reporters/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4057,9 +4033,9 @@ } }, "node_modules/@mui/types": { - "version": "7.2.17", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.17.tgz", - "integrity": "sha512-oyumoJgB6jDV8JFzRqjBo2daUuHpzDjoO/e3IrRhhHo/FxJlaVhET6mcNrKHUq2E+R+q3ql0qAtvQ4rfWHhAeQ==", + "version": "7.2.18", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.18.tgz", + "integrity": "sha512-uvK9dWeyCJl/3ocVnTOS6nlji/Knj8/tVqVX03UVTpdmTJYu/s4jtDd9Kvv0nRGE0CUSNW1UYAci7PYypjealg==", "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, @@ -4099,13 +4075,13 @@ } }, "node_modules/@mui/x-date-pickers": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-7.19.0.tgz", - "integrity": "sha512-OIQ+IxgL2Si7DP68sw1ImcHXZtAmklHcyo/oqP4HuJZ2lVnP5sJkoXrksfumL1wjWKJkecONFz3unAqViKXzCQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-7.20.0.tgz", + "integrity": "sha512-LnijrF8IF3r7c7sAVXRX4pDurozJSMUGAJdd5xuTT7ZPQIOp5ry0kDKqx79WAjXA/ZgjropLNt/nk15GE+6ZNw==", "dependencies": { - "@babel/runtime": "^7.25.6", - "@mui/utils": "^5.16.6", - "@mui/x-internals": "7.18.0", + "@babel/runtime": "^7.25.7", + "@mui/utils": "^5.16.6 || ^6.0.0", + "@mui/x-internals": "7.20.0", "@types/react-transition-group": "^4.4.11", "clsx": "^2.1.1", "prop-types": "^15.8.1", @@ -4164,12 +4140,12 @@ } }, "node_modules/@mui/x-internals": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-7.18.0.tgz", - "integrity": "sha512-lzCHOWIR0cAIY1bGrWSprYerahbnH5C31ql/2OWCEjcngL2NAV1M6oKI2Vp4HheqzJ822c60UyWyapvyjSzY/A==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-7.20.0.tgz", + "integrity": "sha512-ScXdEwtnxmBEq9umeusnotfeVQnnhjOZcM2ddXyIupmzeGmgDDtEcXGyTgrS/GOc91J74g81s6eJ4UCrlYZ2sg==", "dependencies": { - "@babel/runtime": "^7.25.6", - "@mui/utils": "^5.16.6" + "@babel/runtime": "^7.25.7", + "@mui/utils": "^5.16.6 || ^6.0.0" }, "engines": { "node": ">=14.0.0" @@ -4218,9 +4194,9 @@ } }, "node_modules/@pega/auth": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/@pega/auth/-/auth-0.2.14.tgz", - "integrity": "sha512-cl6T8VZ57mV87gEdpHWx4YK/hyWUhoOKNZwvxDf/KWEA2QdFww70YuzOjzIDqR3dkbXISSYS1RPcSOZHSV4Xtw==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/@pega/auth/-/auth-0.2.15.tgz", + "integrity": "sha512-l8Vy8ZasPUM3KTmM2PmR+/k67CiHTsDPZlXreni0C2iPLUlETOFvi2vjR6MHpmalRIKZLnisRLMVE1PhVgkQig==", "dependencies": { "node-fetch": "^3.2.10", "open": "^8.4.2" @@ -4496,12 +4472,12 @@ } }, "node_modules/@playwright/test": { - "version": "1.47.2", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.47.2.tgz", - "integrity": "sha512-jTXRsoSPONAs8Za9QEQdyjFn+0ZQFjCiIztAIF6bi1HqhBzG9Ma7g1WotyiGqFSBRZjIEqMdT8RUlbk1QVhzCQ==", + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.48.0.tgz", + "integrity": "sha512-W5lhqPUVPqhtc/ySvZI5Q8X2ztBOUgZ8LbAFy0JQgrXZs2xaILrUcNO3rQjwbLPfGK13+rZsDa1FpG+tqYkT5w==", "dev": true, "dependencies": { - "playwright": "1.47.2" + "playwright": "1.48.0" }, "bin": { "playwright": "cli.js" @@ -4530,9 +4506,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.2.tgz", - "integrity": "sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.20.0.tgz", + "integrity": "sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==", "engines": { "node": ">=14.0.0" } @@ -5113,9 +5089,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.7.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz", - "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==", + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", "dev": true, "dependencies": { "undici-types": "~6.19.2" @@ -5169,9 +5145,9 @@ } }, "node_modules/@types/react-dom": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", - "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", "dev": true, "dependencies": { "@types/react": "*" @@ -7114,9 +7090,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001667", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz", - "integrity": "sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==", + "version": "1.0.30001668", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001668.tgz", + "integrity": "sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw==", "dev": true, "funding": [ { @@ -7336,18 +7312,6 @@ "node": ">=12" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -7758,9 +7722,9 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, "engines": { "node": ">= 0.6" @@ -8006,30 +7970,29 @@ } }, "node_modules/cspell": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.14.4.tgz", - "integrity": "sha512-R5Awb3i/RKaVVcZzFt8dkN3M6VnifIEDYBcbzbmYjZ/Eq+ASF+QTmI0E9WPhMEcFM1nd7YOyXnETo560yRdoKw==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.15.1.tgz", + "integrity": "sha512-bF2RNErisDg3pfm1tOrq/74g9n09wprg2Im+TNwDSmivusE9LxFoyhEPOiGBVg25/iMSu/BPx5nDNL1WDGwZqA==", "dev": true, "dependencies": { - "@cspell/cspell-json-reporter": "8.14.4", - "@cspell/cspell-pipe": "8.14.4", - "@cspell/cspell-types": "8.14.4", - "@cspell/dynamic-import": "8.14.4", - "@cspell/url": "8.14.4", + "@cspell/cspell-json-reporter": "8.15.1", + "@cspell/cspell-pipe": "8.15.1", + "@cspell/cspell-types": "8.15.1", + "@cspell/dynamic-import": "8.15.1", + "@cspell/url": "8.15.1", "chalk": "^5.3.0", "chalk-template": "^1.1.0", "commander": "^12.1.0", - "cspell-dictionary": "8.14.4", - "cspell-gitignore": "8.14.4", - "cspell-glob": "8.14.4", - "cspell-io": "8.14.4", - "cspell-lib": "8.14.4", - "fast-glob": "^3.3.2", + "cspell-dictionary": "8.15.1", + "cspell-gitignore": "8.15.1", + "cspell-glob": "8.15.1", + "cspell-io": "8.15.1", + "cspell-lib": "8.15.1", "fast-json-stable-stringify": "^2.1.0", "file-entry-cache": "^9.1.0", "get-stdin": "^9.0.0", "semver": "^7.6.3", - "strip-ansi": "^7.1.0" + "tinyglobby": "^0.2.9" }, "bin": { "cspell": "bin.mjs", @@ -8043,12 +8006,12 @@ } }, "node_modules/cspell-config-lib": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.14.4.tgz", - "integrity": "sha512-cnUeJfniTiebqCaQmIUnbSrPrTH7xzKRQjJDHAEV0WYnOG2MhRXI13OzytdFdhkVBdStmgTzTCJKE7x+kmU2NA==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.15.1.tgz", + "integrity": "sha512-hDkaRRsqJbvAKA5ZoUBobozAA8iTcNzgo3mHK+FCVbGGaA2903q8mG3yFBviFioXUHsBBlN7Em/3JQDnasO3qQ==", "dev": true, "dependencies": { - "@cspell/cspell-types": "8.14.4", + "@cspell/cspell-types": "8.15.1", "comment-json": "^4.2.5", "yaml": "^2.5.1" }, @@ -8069,14 +8032,14 @@ } }, "node_modules/cspell-dictionary": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.14.4.tgz", - "integrity": "sha512-pZvQHxpAW5fZAnt3ZKKy3s7M+3CX2t8tCS3uJrpEHIynlCawpG0fPF78rVE5o+g0dON36Lguc/BUuSN4IWKLmQ==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.15.1.tgz", + "integrity": "sha512-N0Wz/hQlRDVuAH2OqlU9Uad++XccwsZuTmdV82HUHGCjmtHUxCiHD51+d2tsLX8ZXur0/eL988RIMPFePYIOww==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "8.14.4", - "@cspell/cspell-types": "8.14.4", - "cspell-trie-lib": "8.14.4", + "@cspell/cspell-pipe": "8.15.1", + "@cspell/cspell-types": "8.15.1", + "cspell-trie-lib": "8.15.1", "fast-equals": "^5.0.1" }, "engines": { @@ -8084,14 +8047,14 @@ } }, "node_modules/cspell-gitignore": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.14.4.tgz", - "integrity": "sha512-RwfQEW5hD7CpYwS7m3b0ONG0nTLKP6bL2tvMdl7qtaYkL7ztGdsBTtLD1pmwqUsCbiN5RuaOxhYOYeRcpFRIkQ==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.15.1.tgz", + "integrity": "sha512-RBJnOIXYKk9ZpYx/y8Hcl/jIhdKposid5Em/GUpj65vXPa0N9arpVXCiIObAtu3645NeHd+Z6RrhNLdKhyZprQ==", "dev": true, "dependencies": { - "@cspell/url": "8.14.4", - "cspell-glob": "8.14.4", - "cspell-io": "8.14.4", + "@cspell/url": "8.15.1", + "cspell-glob": "8.15.1", + "cspell-io": "8.15.1", "find-up-simple": "^1.0.0" }, "bin": { @@ -8102,12 +8065,12 @@ } }, "node_modules/cspell-glob": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.14.4.tgz", - "integrity": "sha512-C/xTS5nujMRMuguibq92qMVP767mtxrur7DcVolCvpzcivm1RB5NtIN0OctQxTyMbnmKeQv1t4epRKQ9A8vWRg==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.15.1.tgz", + "integrity": "sha512-INKBWUVGg595+F8V8kEEP07OPqQGJs+qp6Q587UwP+yvxMZ4PYA6PudvZEwa5capVxIbSYDNafqtcc2F3MaPbw==", "dev": true, "dependencies": { - "@cspell/url": "8.14.4", + "@cspell/url": "8.15.1", "micromatch": "^4.0.8" }, "engines": { @@ -8115,13 +8078,13 @@ } }, "node_modules/cspell-grammar": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.14.4.tgz", - "integrity": "sha512-yaSKAAJDiamsw3FChbw4HXb2RvTQrDsLelh1+T4MavarOIcAxXrqAJ8ysqm++g+S/ooJz2YO8YWIyzJKxcMf8g==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.15.1.tgz", + "integrity": "sha512-4sZ3uh3rgrcoBMwXCmq8rDazVYKR2AUAm36t/EU5uiD+Ju1FfoEaxw1DTKtVDGMNNad6JmNmqxOoFdLAqL1sQA==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "8.14.4", - "@cspell/cspell-types": "8.14.4" + "@cspell/cspell-pipe": "8.15.1", + "@cspell/cspell-types": "8.15.1" }, "bin": { "cspell-grammar": "bin.mjs" @@ -8131,40 +8094,40 @@ } }, "node_modules/cspell-io": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.14.4.tgz", - "integrity": "sha512-o6OTWRyx/Az+PFhr1B0wMAwqG070hFC9g73Fkxd8+rHX0rfRS69QZH7LgSmZytqbZIMxCTDGdsLl33MFGWCbZQ==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.15.1.tgz", + "integrity": "sha512-PvzOm4utZuhb97hqlWS1F+ZHbMVbFsUUC0HQcubquLkjV8s/yryuBlgP52gOxNGTZjyEULWk9MYUldRZK3oB8g==", "dev": true, "dependencies": { - "@cspell/cspell-service-bus": "8.14.4", - "@cspell/url": "8.14.4" + "@cspell/cspell-service-bus": "8.15.1", + "@cspell/url": "8.15.1" }, "engines": { "node": ">=18" } }, "node_modules/cspell-lib": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.14.4.tgz", - "integrity": "sha512-qdkUkKtm+nmgpA4jQbmQTuepDfjHBDWvs3zDuEwVIVFq/h8gnXrRr75gJ3RYdTy+vOOqHPoLLqgxyqkUUrUGXA==", - "dev": true, - "dependencies": { - "@cspell/cspell-bundled-dicts": "8.14.4", - "@cspell/cspell-pipe": "8.14.4", - "@cspell/cspell-resolver": "8.14.4", - "@cspell/cspell-types": "8.14.4", - "@cspell/dynamic-import": "8.14.4", - "@cspell/filetypes": "8.14.4", - "@cspell/strong-weak-map": "8.14.4", - "@cspell/url": "8.14.4", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.15.1.tgz", + "integrity": "sha512-qwfeok4DKYhNjlXOLDZ1hagKAKIXByfMSizTlwIMmmZVJ+8SL61P+PJG0ggwLteq9fEK+oLwaf/N2bVRH6M28Q==", + "dev": true, + "dependencies": { + "@cspell/cspell-bundled-dicts": "8.15.1", + "@cspell/cspell-pipe": "8.15.1", + "@cspell/cspell-resolver": "8.15.1", + "@cspell/cspell-types": "8.15.1", + "@cspell/dynamic-import": "8.15.1", + "@cspell/filetypes": "8.15.1", + "@cspell/strong-weak-map": "8.15.1", + "@cspell/url": "8.15.1", "clear-module": "^4.1.2", "comment-json": "^4.2.5", - "cspell-config-lib": "8.14.4", - "cspell-dictionary": "8.14.4", - "cspell-glob": "8.14.4", - "cspell-grammar": "8.14.4", - "cspell-io": "8.14.4", - "cspell-trie-lib": "8.14.4", + "cspell-config-lib": "8.15.1", + "cspell-dictionary": "8.15.1", + "cspell-glob": "8.15.1", + "cspell-grammar": "8.15.1", + "cspell-io": "8.15.1", + "cspell-trie-lib": "8.15.1", "env-paths": "^3.0.0", "fast-equals": "^5.0.1", "gensequence": "^7.0.0", @@ -8179,13 +8142,13 @@ } }, "node_modules/cspell-trie-lib": { - "version": "8.14.4", - "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.14.4.tgz", - "integrity": "sha512-zu8EJ33CH+FA5lwTRGqS//Q6phO0qtgEmODMR1KPlD7WlrfTFMb3bWFsLo/tiv5hjpsn7CM6dYDAAgBOSkoyhQ==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.15.1.tgz", + "integrity": "sha512-/m7GYH2ICictHt4cpuXQDMtcLDnfj3Picc/uV87n1JQPiB1lHyu4IawhaZB5nRS5cZgYab4wQKKVD8dLbwWXHQ==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "8.14.4", - "@cspell/cspell-types": "8.14.4", + "@cspell/cspell-pipe": "8.15.1", + "@cspell/cspell-types": "8.15.1", "gensequence": "^7.0.0" }, "engines": { @@ -8205,9 +8168,9 @@ } }, "node_modules/css-functions-list": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", - "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", + "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", "dev": true, "engines": { "node": ">=12 || >=16" @@ -8317,12 +8280,12 @@ } }, "node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.0.tgz", + "integrity": "sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==", "dev": true, "dependencies": { - "mdn-data": "2.0.30", + "mdn-data": "2.10.0", "source-map-js": "^1.0.1" }, "engines": { @@ -9001,9 +8964,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.32", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.32.tgz", - "integrity": "sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw==", + "version": "1.5.36", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.36.tgz", + "integrity": "sha512-HYTX8tKge/VNp6FGO+f/uVDmUkq+cEfcxYhKf15Akc4M5yxt5YmorwlAitKWjWhWQnKcDRBAQKXkhqqXMqcrjw==", "dev": true }, "node_modules/emittery": { @@ -9210,9 +9173,9 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", - "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz", + "integrity": "sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==", "dev": true, "dependencies": { "call-bind": "^1.0.7", @@ -9222,12 +9185,12 @@ "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", + "globalthis": "^1.0.4", "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.3", "has-symbols": "^1.0.3", "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", + "iterator.prototype": "^1.1.3", "safe-array-concat": "^1.1.2" }, "engines": { @@ -10217,18 +10180,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10404,9 +10355,9 @@ } }, "node_modules/express": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", - "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dev": true, "dependencies": { "accepts": "~1.3.8", @@ -10414,7 +10365,7 @@ "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -10619,6 +10570,20 @@ "bser": "2.1.1" } }, + "node_modules/fdir": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.0.tgz", + "integrity": "sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==", + "dev": true, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/fetch-blob": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", @@ -10872,9 +10837,9 @@ } }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dev": true, "dependencies": { "asynckit": "^0.4.0", @@ -10928,15 +10893,6 @@ "node": ">=14.14" } }, - "node_modules/fs-extra/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/fs-monkey": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", @@ -13097,9 +13053,9 @@ } }, "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", + "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", "dev": true, "dependencies": { "define-properties": "^1.2.1", @@ -13107,6 +13063,9 @@ "has-symbols": "^1.0.3", "reflect.getprototypeof": "^1.0.4", "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/jake": { @@ -15282,15 +15241,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jsonfile/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -15872,9 +15822,9 @@ } }, "node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.10.0.tgz", + "integrity": "sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==", "dev": true }, "node_modules/media-typer": { @@ -16082,9 +16032,9 @@ } }, "node_modules/monocart-coverage-reports": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/monocart-coverage-reports/-/monocart-coverage-reports-2.11.0.tgz", - "integrity": "sha512-FueI32k3gheTVSv20MzpCyC6NynQOkq6e+81My8An+FiLCDQoqPt4Rzt3GOeWs6+i4FTKvsJAOf7IZu1a0KzPw==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/monocart-coverage-reports/-/monocart-coverage-reports-2.11.1.tgz", + "integrity": "sha512-h4rc2i/A/aKuQ66EpswJ4y/dxXO6GDt0yuU9dt4MUsbbEXD1EoldFWvHszdo8M2dwVbAjDcAzHrQKBCs2ydfzA==", "dev": true, "workspaces": [ "test" @@ -16123,9 +16073,9 @@ "dev": true }, "node_modules/monocart-reporter": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/monocart-reporter/-/monocart-reporter-2.9.2.tgz", - "integrity": "sha512-R76K/QJAK/LJDt6h+qHKPAxu1XJNEBMtrX7Hs2tUshqpUQzUyMbtztsRiurf4VUjB8zkYrh5TjiJA03KOixmxw==", + "version": "2.9.6", + "resolved": "https://registry.npmjs.org/monocart-reporter/-/monocart-reporter-2.9.6.tgz", + "integrity": "sha512-HMRlOSkSCM+Dp57YHeskyAz0+6axAfNFMaxWqECYWgSN1XlGlO9gkh9fQBSU1K0mSWhclreY4kHRS5G7A7XQVg==", "dev": true, "dependencies": { "console-grid": "^2.2.2", @@ -16133,7 +16083,7 @@ "koa": "^2.15.3", "koa-static-resolver": "^1.0.6", "lz-utils": "^2.1.0", - "monocart-coverage-reports": "^2.11.0", + "monocart-coverage-reports": "^2.11.1", "monocart-locator": "^1.0.2", "nodemailer": "^6.9.15" }, @@ -17128,12 +17078,12 @@ } }, "node_modules/playwright": { - "version": "1.47.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.47.2.tgz", - "integrity": "sha512-nx1cLMmQWqmA3UsnjaaokyoUpdVaaDhJhMoxX2qj3McpjnsqFHs516QAKYhqHAgOP+oCFTEOCOAaD1RgD/RQfA==", + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.48.0.tgz", + "integrity": "sha512-qPqFaMEHuY/ug8o0uteYJSRfMGFikhUysk8ZvAtfKmUK3kc/6oNl/y3EczF8OFGYIi/Ex2HspMfzYArk6+XQSA==", "dev": true, "dependencies": { - "playwright-core": "1.47.2" + "playwright-core": "1.48.0" }, "bin": { "playwright": "cli.js" @@ -17146,9 +17096,9 @@ } }, "node_modules/playwright-core": { - "version": "1.47.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.47.2.tgz", - "integrity": "sha512-3JvMfF+9LJfe16l7AbSmU555PaTl2tPyQsVInqm3id16pdDfvZ8TTZ/pyzmkbDrZTQefyzU7AIHlZqQnxpqHVQ==", + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.48.0.tgz", + "integrity": "sha512-RBvzjM9rdpP7UUFrQzRwR8L/xR4HyC1QXMzGYTbf1vjw25/ya9NRAVnXi/0fvFopjebvyPzsmoK58xxeEOaVvA==", "dev": true, "bin": { "playwright-core": "cli.js" @@ -17810,11 +17760,11 @@ } }, "node_modules/react-router": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.2.tgz", - "integrity": "sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==", + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.27.0.tgz", + "integrity": "sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==", "dependencies": { - "@remix-run/router": "1.19.2" + "@remix-run/router": "1.20.0" }, "engines": { "node": ">=14.0.0" @@ -17824,12 +17774,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.2.tgz", - "integrity": "sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==", + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.27.0.tgz", + "integrity": "sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==", "dependencies": { - "@remix-run/router": "1.19.2", - "react-router": "6.26.2" + "@remix-run/router": "1.20.0", + "react-router": "6.27.0" }, "engines": { "node": ">=14.0.0" @@ -18185,18 +18135,6 @@ "entities": "^2.0.0" } }, - "node_modules/renderkid/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", @@ -19312,18 +19250,6 @@ "node": ">=10" } }, - "node_modules/string-length/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/string-template": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", @@ -19350,18 +19276,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/string.prototype.includes": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz", @@ -19476,30 +19390,15 @@ } }, "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" + "ansi-regex": "^5.0.1" }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=8" } }, "node_modules/strip-bom": { @@ -19561,9 +19460,9 @@ } }, "node_modules/stylelint": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.9.0.tgz", - "integrity": "sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==", + "version": "16.10.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.10.0.tgz", + "integrity": "sha512-z/8X2rZ52dt2c0stVwI9QL2AFJhLhbPkyfpDFcizs200V/g7v+UYY6SNcB9hKOLcDDX/yGLDsY/pX08sLkz9xQ==", "dev": true, "funding": [ { @@ -19584,17 +19483,17 @@ "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", - "css-functions-list": "^3.2.2", - "css-tree": "^2.3.1", - "debug": "^4.3.6", + "css-functions-list": "^3.2.3", + "css-tree": "^3.0.0", + "debug": "^4.3.7", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^9.0.0", + "file-entry-cache": "^9.1.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", - "ignore": "^5.3.2", + "ignore": "^6.0.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.34.0", @@ -19603,14 +19502,13 @@ "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.0.1", - "postcss": "^8.4.41", + "postcss": "^8.4.47", "postcss-resolve-nested-selector": "^0.1.6", - "postcss-safe-parser": "^7.0.0", + "postcss-safe-parser": "^7.0.1", "postcss-selector-parser": "^6.1.2", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "strip-ansi": "^7.1.0", "supports-hyperlinks": "^3.1.0", "svg-tags": "^1.0.0", "table": "^6.8.2", @@ -19664,6 +19562,15 @@ "node": ">=6" } }, + "node_modules/stylelint/node_modules/ignore": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", + "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/stylelint/node_modules/meow": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", @@ -19804,9 +19711,9 @@ "dev": true }, "node_modules/synckit": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", - "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", + "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", "dev": true, "dependencies": { "@pkgr/core": "^0.1.0", @@ -19835,18 +19742,6 @@ "node": ">=10.0.0" } }, - "node_modules/table/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -20152,10 +20047,35 @@ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, + "node_modules/tinyglobby": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.9.tgz", + "integrity": "sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==", + "dev": true, + "dependencies": { + "fdir": "^6.4.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tinymce": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-7.3.0.tgz", - "integrity": "sha512-Ls4PgYlpk73XAxBSBqbVmSl8Mb3DuNfgF01GZ0lY6/MOEVRl3IL+VxC1Oe6165e8WqbqVsxO3Qj/PmoYNvQKGQ==" + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-7.4.1.tgz", + "integrity": "sha512-g1Ieaio5YU+jLEQZkQyxTT8EY/im+TC/CFBPlqDBCNdsF8YQOeLMot+K6vmFOAXhNc85KhP1rC9Dn2X+iBFDGg==" }, "node_modules/tmpl": { "version": "1.0.5", @@ -20207,6 +20127,15 @@ "node": ">=6" } }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/tr46": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", @@ -20653,12 +20582,12 @@ } }, "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { - "node": ">= 4.0.0" + "node": ">= 10.0.0" } }, "node_modules/unpipe": { @@ -21450,18 +21379,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 9bdde852..e801f9fc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@pega/react-sdk-components", - "version": "0.242.2", + "version": "24.2.10", "description": "React SDK packaging: bridge and components, overrides", "main": "index.ts", "scripts": { @@ -48,13 +48,13 @@ "author": "Pegasystems", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@emotion/react": "^11.11.4", - "@emotion/styled": "^11.11.0", - "@mui/icons-material": "^5.15.14", - "@mui/lab": "^5.0.0-alpha.169", - "@mui/material": "^5.15.14", - "@mui/styles": "^5.15.14", - "@mui/x-date-pickers": "^7.1.0", + "@emotion/react": "^11.13.3", + "@emotion/styled": "^11.13.0", + "@mui/icons-material": "^5.16.7", + "@mui/lab": "^5.0.0-alpha.173", + "@mui/material": "^5.16.7", + "@mui/styles": "^5.16.7", + "@mui/x-date-pickers": "^7.20.0", "@pega/auth": "~0.2.14", "@tinymce/tinymce-react": "^5.1.1", "clsx": "^2.1.0", diff --git a/packages/react-sdk-components/package.json b/packages/react-sdk-components/package.json index 4624c601..07c4eafc 100644 --- a/packages/react-sdk-components/package.json +++ b/packages/react-sdk-components/package.json @@ -1,6 +1,6 @@ { "name": "@pega/react-sdk-components", - "version": "0.242.2", + "version": "24.2.10", "description": "React SDK Infrastructure: bridge and components", "_filesComment": "During packing, npm ignores everything NOT in the files list", "files": [ diff --git a/packages/react-sdk-components/src/theme.ts b/packages/react-sdk-components/src/theme.ts index 10acd963..ab08c6b1 100644 --- a/packages/react-sdk-components/src/theme.ts +++ b/packages/react-sdk-components/src/theme.ts @@ -11,6 +11,18 @@ declare module '@mui/styles/defaultTheme' { // eslint-disable-next-line import/prefer-default-export export const theme = createTheme({ + components: { + MuiTextField: { + defaultProps: { + size: 'small' + }, + styleOverrides: { + root: { + width: '100%' + } + } + } + }, palette: { primary: { contrastText: '#fff', diff --git a/packages/react-sdk-overrides/package.json b/packages/react-sdk-overrides/package.json index 97c2c475..a975702b 100644 --- a/packages/react-sdk-overrides/package.json +++ b/packages/react-sdk-overrides/package.json @@ -1,6 +1,6 @@ { "name": "@pega/react-sdk-overrides", - "version": "0.242.2", + "version": "24.2.10", "description": "React SDK - Code for overriding components", "_filesComment": "During packing, npm ignores everything NOT in the files list", "files": [ From 82b0a296a740435ab62c070bd377f152a58d4a25 Mon Sep 17 00:00:00 2001 From: Vishal Sharma Date: Fri, 18 Oct 2024 15:02:41 +0530 Subject: [PATCH 12/21] Add missing config-ext files (#375) * Add missing config-ext files --------- Co-authored-by: Vishal Co-authored-by: tumms2021389 <97188066+tumms2021389@users.noreply.github.com> --- .../src/components/field/Phone/config-ext.json | 8 ++++++++ .../src/components/field/RichText/config-ext.json | 10 ++++++++++ .../src/components/template/BannerPage/config-ext.json | 9 +++++++++ .../template/InlineDashboardPage/config-ext.json | 9 +++++++++ .../src/components/widget/QuickCreate/config-ext.json | 9 +++++++++ 5 files changed, 45 insertions(+) create mode 100644 packages/react-sdk-components/src/components/field/Phone/config-ext.json create mode 100644 packages/react-sdk-components/src/components/field/RichText/config-ext.json create mode 100644 packages/react-sdk-components/src/components/template/BannerPage/config-ext.json create mode 100644 packages/react-sdk-components/src/components/template/InlineDashboardPage/config-ext.json create mode 100644 packages/react-sdk-components/src/components/widget/QuickCreate/config-ext.json diff --git a/packages/react-sdk-components/src/components/field/Phone/config-ext.json b/packages/react-sdk-components/src/components/field/Phone/config-ext.json new file mode 100644 index 00000000..aac88c24 --- /dev/null +++ b/packages/react-sdk-components/src/components/field/Phone/config-ext.json @@ -0,0 +1,8 @@ +{ + "name": "Phone", + "label": "Phone", + "description": "Phone", + "type": "Field", + "subtype": "DATA_CAPTURE", + "properties": [] +} diff --git a/packages/react-sdk-components/src/components/field/RichText/config-ext.json b/packages/react-sdk-components/src/components/field/RichText/config-ext.json new file mode 100644 index 00000000..e8d508cf --- /dev/null +++ b/packages/react-sdk-components/src/components/field/RichText/config-ext.json @@ -0,0 +1,10 @@ +{ + "name": "RichText", + "label": "Rich text editor", + "description": "Text (paragraph)", + "type": "Field", + "subtype": "Text-Paragraph", + "icon": "images/pz-text-area-active.svg", + "properties": [], + "defaultConfig": {} +} diff --git a/packages/react-sdk-components/src/components/template/BannerPage/config-ext.json b/packages/react-sdk-components/src/components/template/BannerPage/config-ext.json new file mode 100644 index 00000000..213d584f --- /dev/null +++ b/packages/react-sdk-components/src/components/template/BannerPage/config-ext.json @@ -0,0 +1,9 @@ +{ + "name": "BannerPage", + "label": "Banner", + "description": "Banner Page Template", + "type": "Template", + "subtype": "PAGE", + "icon": "BannerPage.svg", + "properties": [] +} diff --git a/packages/react-sdk-components/src/components/template/InlineDashboardPage/config-ext.json b/packages/react-sdk-components/src/components/template/InlineDashboardPage/config-ext.json new file mode 100644 index 00000000..65a40946 --- /dev/null +++ b/packages/react-sdk-components/src/components/template/InlineDashboardPage/config-ext.json @@ -0,0 +1,9 @@ +{ + "name": "InlineDashboardPage", + "label": "Inline Dashboard", + "description": "Inline Dashboard Page Template", + "type": "Template", + "subtype": "PAGE", + "icon": "InlineDashboardPage.svg", + "properties": [] +} diff --git a/packages/react-sdk-components/src/components/widget/QuickCreate/config-ext.json b/packages/react-sdk-components/src/components/widget/QuickCreate/config-ext.json new file mode 100644 index 00000000..c11ade29 --- /dev/null +++ b/packages/react-sdk-components/src/components/widget/QuickCreate/config-ext.json @@ -0,0 +1,9 @@ +{ + "name": "QuickCreate", + "label": "Quick create", + "description": "Quick create widget", + "type": "Widget", + "subtype": "PAGE", + "properties": [], + "defaultConfig": {} +} From b2723906f9b5009075e2f7f22aea7cd2c0d6432f Mon Sep 17 00:00:00 2001 From: 4manasa Date: Fri, 18 Oct 2024 15:10:39 +0530 Subject: [PATCH 13/21] Loading indicator left on when incorrect file extension issue fixed (#368) Co-authored-by: mashm Co-authored-by: tumms2021389 <97188066+tumms2021389@users.noreply.github.com> --- .../src/components/widget/Attachment/Attachment.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/react-sdk-components/src/components/widget/Attachment/Attachment.tsx b/packages/react-sdk-components/src/components/widget/Attachment/Attachment.tsx index c4edb1b3..1db878bc 100644 --- a/packages/react-sdk-components/src/components/widget/Attachment/Attachment.tsx +++ b/packages/react-sdk-components/src/components/widget/Attachment/Attachment.tsx @@ -217,9 +217,11 @@ export default function Attachment(props: AttachmentProps) { }; if (!validateMaxSize(f, maxAttachmentSize)) { f.props.error = true; + f.inProgress = false; f.props.meta = pConn.getLocalizedValue(`File is too big. Max allowed size is ${maxAttachmentSize}MB.`, '', ''); } else if (!validateFileExtension(f, extensions)) { f.props.error = true; + f.inProgress = false; f.props.meta = `${pConn.getLocalizedValue('File has invalid extension. Allowed extensions are:', '', '')} ${extensions.replaceAll( '.', '' From ff1d1fa522389abb81e63c3c759271753f38a8d1 Mon Sep 17 00:00:00 2001 From: tumms2021389 <97188066+tumms2021389@users.noreply.github.com> Date: Fri, 18 Oct 2024 15:13:08 +0530 Subject: [PATCH 14/21] fix: Default page instructions are not being initialized in the FieldGroupTemplates components. (#381) --- .../template/FieldGroupTemplate/FieldGroupTemplate.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/react-sdk-components/src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx b/packages/react-sdk-components/src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx index c4fff213..1daf282f 100644 --- a/packages/react-sdk-components/src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx +++ b/packages/react-sdk-components/src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx @@ -1,5 +1,5 @@ /* eslint-disable react-hooks/rules-of-hooks */ -import { useMemo } from 'react'; +import { useLayoutEffect, useMemo } from 'react'; import { getReferenceList, buildView } from '../../helpers/field-group-utils'; import { getComponentFromMap } from '../../../bridge/helpers/sdk_component_map'; @@ -40,6 +40,13 @@ export default function FieldGroupTemplate(props: FieldGroupTemplateProps) { const isReadonlyMode = renderMode === 'ReadOnly' || displayMode === 'LABELS_LEFT'; const HEADING = heading ?? 'Row'; + useLayoutEffect(() => { + if (!isReadonlyMode) { + // @ts-ignore - Expected 3 arguments, but got 1 + pConn.getListActions().initDefaultPageInstructions(resolvedList); + } + }, [referenceList?.length]); + const getDynamicHeaderProp = (item, index) => { if (fieldHeader === 'propertyRef' && heading && item[heading.substring(1)]) { return item[heading.substring(1)]; From cf1560c7f3250db8ff0ef7b1f64027d5fed76876 Mon Sep 17 00:00:00 2001 From: tumms2021389 <97188066+tumms2021389@users.noreply.github.com> Date: Fri, 18 Oct 2024 18:31:20 +0530 Subject: [PATCH 15/21] fix: Not displaying error banner for http error (423) message (#367) * fix: Not displaying error banner for http error (423) message * fix: build issues --- .../components/template/AppShell/AppShell.tsx | 37 +++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/packages/react-sdk-components/src/components/template/AppShell/AppShell.tsx b/packages/react-sdk-components/src/components/template/AppShell/AppShell.tsx index d571bfaf..3da78191 100644 --- a/packages/react-sdk-components/src/components/template/AppShell/AppShell.tsx +++ b/packages/react-sdk-components/src/components/template/AppShell/AppShell.tsx @@ -24,6 +24,8 @@ interface AppShellProps extends PConnProps { portalName: string; portalLogo: string; navDisplayOptions: { alignment: string; position: string }; + httpMessages: string[]; + pageMessages: string[]; } const useStyles = makeStyles(theme => ({ @@ -49,8 +51,21 @@ export default function AppShell(props: PropsWithChildren) { // Get emitted components from map (so we can get any override that may exist) const NavBar = getComponentFromMap('NavBar'); const WssNavBar = getComponentFromMap('WssNavBar'); + const AlertBanner = getComponentFromMap('AlertBanner'); - const { pages = [], caseTypes = [], showAppName, children = [], getPConnect, portalTemplate, portalName, portalLogo, navDisplayOptions } = props; + const { + pages = [], + caseTypes = [], + showAppName, + children = [], + getPConnect, + httpMessages = [], + pageMessages = [], + portalTemplate, + portalName, + portalLogo, + navDisplayOptions + } = props; const [open, setOpen] = useState(true); // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -75,6 +90,15 @@ export default function AppShell(props: PropsWithChildren) { // eslint-disable-next-line @typescript-eslint/no-unused-vars const [mapChildren, setMapChildren] = useState([]); + const messages = [...httpMessages, ...pageMessages]; + + const hasBanner = messages && messages.length ? messages.length > 0 : false; + let banners: any = null; + banners = hasBanner && ( +
+ +
+ ); // Initial setting of appName and mapChildren useEffect(() => { setAppName(PCore.getEnvironmentInfo().getApplicationName()); @@ -206,7 +230,10 @@ export default function AppShell(props: PropsWithChildren) { operator={getOperator()} navDisplayOptions={navDisplayOptions} /> -
{children}
+
+ {banners} + {children} +
); } @@ -222,7 +249,11 @@ export default function AppShell(props: PropsWithChildren) { pages={pages} caseTypes={caseTypes} /> -
{children}
+ +
+ {banners} + {children} +
); From 307d0f2c43df42607fa536e2c6cfd2d5e1952a74 Mon Sep 17 00:00:00 2001 From: tumms2021389 <97188066+tumms2021389@users.noreply.github.com> Date: Mon, 21 Oct 2024 22:38:33 +0530 Subject: [PATCH 16/21] webpack configuration cleanup (#402) * webpack configuration cleanup --- package-lock.json | 834 ++++++++++++++-------------------------------- package.json | 6 +- webpack.config.js | 30 +- 3 files changed, 261 insertions(+), 609 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7362cd3f..841824e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,6 @@ "throttle-debounce": "^5.0.2" }, "devDependencies": { - "@kooneko/livereload-webpack-plugin": "^1.2.1", "@pega/configs": "^0.7.1", "@pega/constellationjs": "~0.242.5", "@pega/eslint-config": "^0.7.2", @@ -46,7 +45,6 @@ "@types/react": "^17.0.83", "@typescript-eslint/eslint-plugin": "^5.62.0", "babel-loader": "^9.1.3", - "clean-webpack-plugin": "^4.0.0", "commitlint": "^18.4.4", "compression-webpack-plugin": "^10.0.0", "copy-webpack-plugin": "^11.0.0", @@ -81,9 +79,9 @@ "ts-jest": "^29.1.1", "ts-loader": "^9.5.1", "typescript": "^4.9.5", - "webpack": "^5.89.0", + "webpack": "^5.95.0", "webpack-cli": "^5.1.4", - "webpack-dev-server": "^4.15.1" + "webpack-dev-server": "^5.1.0" } }, "node_modules/@adobe/css-tools": { @@ -3615,130 +3613,58 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@kooneko/livereload-webpack-plugin": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@kooneko/livereload-webpack-plugin/-/livereload-webpack-plugin-1.2.1.tgz", - "integrity": "sha512-kOkSl3OJruHUhNgKii/HDHE4UcDcjKzuQ6K2NnI3iJdNHH1E832SmU9N5YSV6+OtF/jlH9UiYpEdoPUR1FRoJg==", - "dev": true, - "dependencies": { - "anymatch": "^3.1.1", - "get-port": "^5.1.1", - "tiny-lr": "^2.0.0", - "webpack": "^5.15.0", - "webpack-cli": "^4.3.1" - } - }, - "node_modules/@kooneko/livereload-webpack-plugin/node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, - "node_modules/@kooneko/livereload-webpack-plugin/node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", "dev": true, - "dependencies": { - "envinfo": "^7.7.3" + "engines": { + "node": ">=10.0" }, - "peerDependencies": { - "webpack-cli": "4.x.x" - } - }, - "node_modules/@kooneko/livereload-webpack-plugin/node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "peerDependencies": { - "webpack-cli": "4.x.x" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@kooneko/livereload-webpack-plugin/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@kooneko/livereload-webpack-plugin/node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, - "engines": { - "node": ">= 0.10" + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@kooneko/livereload-webpack-plugin/node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz", + "integrity": "sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==", "dev": true, "dependencies": { - "resolve": "^1.9.0" + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" }, "engines": { - "node": ">= 0.10" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@kooneko/livereload-webpack-plugin/node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "node_modules/@jsonjoy.com/util": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.5.0.tgz", + "integrity": "sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==", "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, "engines": { - "node": ">=10.13.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "type": "github", + "url": "https://github.com/sponsors/streamich" }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } + "tslib": "2" } }, "node_modules/@leichtgewicht/ip-codec": { @@ -4938,16 +4864,6 @@ "@types/send": "*" } }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, "node_modules/@types/graceful-fs": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", @@ -5076,12 +4992,6 @@ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, "node_modules/@types/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", @@ -5162,9 +5072,9 @@ } }, "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true }, "node_modules/@types/scheduler": { @@ -6130,15 +6040,6 @@ "node": ">=8" } }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array.prototype.findlast": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", @@ -6811,18 +6712,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/body": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", - "integrity": "sha512-chUsBxGRtuElD6fmw1gHLpvnKdVLK302peeFa9ZqAEk8TyzZ3fygLyUEDDPTJvL9+Bor0dIwn6ePOsRM2y0zQQ==", - "dev": true, - "dependencies": { - "continuable-cache": "^0.3.1", - "error": "^7.0.0", - "raw-body": "~1.1.0", - "safe-json-parse": "~1.0.1" - } - }, "node_modules/body-parser": { "version": "1.20.3", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", @@ -7007,11 +6896,20 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "integrity": "sha512-/x68VkHLeTl3/Ll8IvxdwzhrT+IyKc52e/oyHhA2RwqPqswSnjVbSddfPRwAsJtbilMAPSRWwAlpxdYsSWOTKQ==", - "dev": true + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/cache-content-type": { "version": "1.0.1", @@ -7267,21 +7165,6 @@ "node": ">=0.10.0" } }, - "node_modules/clean-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", - "dev": true, - "dependencies": { - "del": "^4.1.1" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "webpack": ">=4.0.0 <6.0.0" - } - }, "node_modules/clear-module": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/clear-module/-/clear-module-4.1.2.tgz", @@ -7680,12 +7563,6 @@ "node": ">= 0.6" } }, - "node_modules/continuable-cache": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", - "integrity": "sha512-TF30kpKhTH8AGCG3dut0rdd/19B7Z+qCnrMoBLpyQu/2drZdNrrpcjPEoJeSVsQM+8KmWG5O56oPDjSSUsuTyA==", - "dev": true - }, "node_modules/conventional-changelog-angular": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", @@ -8559,16 +8436,32 @@ "node": ">=0.10.0" } }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", "dev": true, "dependencies": { - "execa": "^5.0.0" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">= 10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/define-data-property": { @@ -8613,104 +8506,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/del/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/del/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -9054,15 +8849,6 @@ "node": ">=4" } }, - "node_modules/error": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", - "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", - "dev": true, - "dependencies": { - "string-template": "~0.2.1" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -10893,11 +10679,14 @@ "node": ">=14.14" } }, - "node_modules/fs-monkey": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", - "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", - "dev": true + "node_modules/fs-extra/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } }, "node_modules/fs.realpath": { "version": "1.0.0", @@ -11009,18 +10798,6 @@ "node": ">=8.0.0" } }, - "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-stdin": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", @@ -11961,6 +11738,15 @@ "node": ">=10.17.0" } }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "dev": true, + "engines": { + "node": ">=10.18" + } + }, "node_modules/hyphenate-style-name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", @@ -12456,6 +12242,39 @@ "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -12480,6 +12299,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-network-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -12513,39 +12344,6 @@ "node": ">=8" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "dependencies": { - "is-path-inside": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd/node_modules/is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "dependencies": { - "path-is-inside": "^1.0.2" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -15522,12 +15320,6 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, - "node_modules/livereload-js": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.4.1.tgz", - "integrity": "sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g==", - "dev": true - }, "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -15837,15 +15629,22 @@ } }, "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.13.0.tgz", + "integrity": "sha512-dIs5KGy24fbdDhIAg0RxXpFqQp3RwL6wgSMRF9OSuphL/Uc9a4u2/SDJKPLj/zUgtOGKuHrRMrj563+IErj4Cg==", "dev": true, "dependencies": { - "fs-monkey": "^1.0.4" + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.3.0", + "tree-dump": "^1.0.1", + "tslib": "^2.0.0" }, "engines": { "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" } }, "node_modules/memorystream": { @@ -16759,26 +16558,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", "dev": true, "dependencies": { - "@types/retry": "0.12.0", + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", "retry": "^0.13.1" }, "engines": { - "node": ">=8" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-try": { @@ -16878,12 +16672,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -16941,36 +16729,6 @@ "node": ">=0.10" } }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pirates": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", @@ -17614,25 +17372,6 @@ "node": ">= 0.6" } }, - "node_modules/raw-body": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", - "integrity": "sha512-WmJJU2e9Y6M5UzTOkHaM7xJGAPQD8PNzx3bAd2+uhZAim6wDk6dAZxPVYLF67XhbR4hmKGh33Lpmh4XWrCH5Mg==", - "dev": true, - "dependencies": { - "bytes": "1", - "string_decoder": "0.10" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/raw-body/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true - }, "node_modules/react": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", @@ -18385,60 +18124,16 @@ "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, "engines": { - "node": "*" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/run-parallel": { @@ -18488,12 +18183,6 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "node_modules/safe-json-parse": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", - "integrity": "sha512-o0JmTu17WGUaUOHa1l0FPGXKBfijbxK6qoHzlkihsDXxzBHvJcA7zgviKR92Xs841rX9pK16unfphLq0/KqX7A==", - "dev": true - }, "node_modules/safe-regex-test": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", @@ -19250,12 +18939,6 @@ "node": ">=10" } }, - "node_modules/string-template": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", - "integrity": "sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw==", - "dev": true - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -19990,6 +19673,18 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/thingies": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "dev": true, + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "tslib": "^2" + } + }, "node_modules/throttle-debounce": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz", @@ -20019,29 +19714,6 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "node_modules/tiny-lr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-2.0.0.tgz", - "integrity": "sha512-f6nh0VMRvhGx4KCeK1lQ/jaL0Zdb5WdR+Jk8q9OSUQnaSDxAEGH1fgqLZ+cMl5EW3F2MGnCsalBO1IsnnogW1Q==", - "dev": true, - "dependencies": { - "body": "^5.1.0", - "debug": "^3.1.0", - "faye-websocket": "^0.11.3", - "livereload-js": "^3.3.1", - "object-assign": "^4.1.0", - "qs": "^6.4.0" - } - }, - "node_modules/tiny-lr/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/tiny-warning": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", @@ -20148,6 +19820,22 @@ "node": ">=12" } }, + "node_modules/tree-dump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", + "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", @@ -20933,77 +20621,81 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", - "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz", + "integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==", "dev": true, "dependencies": { "colorette": "^2.0.10", - "memfs": "^3.4.3", + "memfs": "^4.6.0", "mime-types": "^2.1.31", + "on-finished": "^2.4.1", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, "node_modules/webpack-dev-server": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", - "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", - "dev": true, - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.1.0.tgz", + "integrity": "sha512-aQpaN81X6tXie1FoOB7xlMfCsN19pSvRAeYUHOdFWOlhpQ/LlbfTqYwwmEDFV0h8GGuqmCmKmT+pxcUV/Nt2gQ==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", + "express": "^4.19.2", "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", + "html-entities": "^2.4.0", "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.4", - "ws": "^8.13.0" + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { "webpack": { @@ -21014,63 +20706,49 @@ } } }, - "node_modules/webpack-dev-server/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/webpack-dev-server/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/webpack-dev-server/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-dev-server/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/webpack-dev-server/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "is-inside-container": "^1.0.0" }, "engines": { - "node": "*" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-dev-server/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", + "node_modules/webpack-dev-server/node_modules/open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", "dev": true, "dependencies": { - "glob": "^7.1.3" + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/webpack-merge": { diff --git a/package.json b/package.json index e801f9fc..d0078036 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,6 @@ "throttle-debounce": "^5.0.2" }, "devDependencies": { - "@kooneko/livereload-webpack-plugin": "^1.2.1", "@pega/configs": "^0.7.1", "@pega/constellationjs": "~0.242.5", "@pega/eslint-config": "^0.7.2", @@ -85,7 +84,6 @@ "@types/react": "^17.0.83", "@typescript-eslint/eslint-plugin": "^5.62.0", "babel-loader": "^9.1.3", - "clean-webpack-plugin": "^4.0.0", "commitlint": "^18.4.4", "compression-webpack-plugin": "^10.0.0", "copy-webpack-plugin": "^11.0.0", @@ -120,8 +118,8 @@ "ts-jest": "^29.1.1", "ts-loader": "^9.5.1", "typescript": "^4.9.5", - "webpack": "^5.89.0", + "webpack": "^5.95.0", "webpack-cli": "^5.1.4", - "webpack-dev-server": "^4.15.1" + "webpack-dev-server": "^5.1.0" } } diff --git a/webpack.config.js b/webpack.config.js index 006a29ce..a8a54f99 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,8 +1,6 @@ const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); -const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin'); -const LiveReloadPlugin = require('@kooneko/livereload-webpack-plugin'); const CompressionPlugin = require('compression-webpack-plugin'); const zlib = require('zlib'); @@ -10,17 +8,6 @@ module.exports = (env, argv) => { const pluginsToAdd = []; const webpackMode = argv.mode; - // NOTE: we allow dangerouslyAllowCleanPatternsOutsideProject so we can cleanup outside the - // normal directory structure without getting webpack errors when live-reload recompiles - // See: https://github.com/johnagan/clean-webpack-plugin - pluginsToAdd.push( - new CleanWebpackPlugin({ - dry: true, - verbose: false, - dangerouslyAllowCleanPatternsOutsideProject: true - }) - ); - pluginsToAdd.push( new HtmlWebpackPlugin({ template: './packages/react-sdk-components/src/index.html', @@ -127,19 +114,6 @@ module.exports = (env, argv) => { ); } - if (webpackMode === 'development') { - // In development mode, add LiveReload plug - // When run in conjunction with build-with-watch, - // This will reload the browser when code is changed/re-compiled - const liveReloadOptions = { - protocol: 'http', - appendScriptTag: true, - delay: 1000, - hostname: 'localhost' - }; - pluginsToAdd.push(new LiveReloadPlugin(liveReloadOptions)); - } - // need to set mode to 'development' to get LiveReload to work // and for debugger statements to not be stripped out of the bundle initConfig = { @@ -158,7 +132,9 @@ module.exports = (env, argv) => { plugins: pluginsToAdd, output: { filename: '[name].bundle.js', - path: path.resolve(__dirname, 'dist') + path: path.resolve(__dirname, 'dist'), + publicPath: '/', + clean: true }, module: { rules: [ From 4c87dc28bbd2f964d5d5464fc8852f9fe1dba726 Mon Sep 17 00:00:00 2001 From: 4manasa Date: Wed, 23 Oct 2024 11:49:43 +0530 Subject: [PATCH 17/21] Fixed the issue Multistep view fails to display with disabled navigation (#403) Co-authored-by: mashm --- .../components/infra/MultiStep/MultiStep.tsx | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/react-sdk-components/src/components/infra/MultiStep/MultiStep.tsx b/packages/react-sdk-components/src/components/infra/MultiStep/MultiStep.tsx index 8ecb1f4d..d64e2ab1 100644 --- a/packages/react-sdk-components/src/components/infra/MultiStep/MultiStep.tsx +++ b/packages/react-sdk-components/src/components/infra/MultiStep/MultiStep.tsx @@ -11,7 +11,7 @@ interface MultiStepProps extends PConnProps { actionButtons: any[]; onButtonPress: any; bIsVertical: boolean; - arNavigationSteps: any[]; + arNavigationSteps: any; } export default function MultiStep(props: PropsWithChildren) { @@ -21,6 +21,12 @@ export default function MultiStep(props: PropsWithChildren) { const { getPConnect, children, itemKey = '', actionButtons, onButtonPress } = props; const { bIsVertical, arNavigationSteps } = props; + let currentStep = arNavigationSteps.find(({ visited_status: vs }) => vs === 'current'); + if (!currentStep) { + const lastActiveStepIndex = arNavigationSteps.findLastIndex(({ visited_status: vs }) => vs === 'success'); + currentStep = arNavigationSteps[lastActiveStepIndex >= 0 ? lastActiveStepIndex : 0]; + } + // const svgCurrent = Utils.getImageSrc("circle-solid", Utils.getSDKStaticConentUrl()); // const svgNotCurrent = Utils.getImageSrc("circle-solid", Utils.getSDKStaticConentUrl()); @@ -48,16 +54,16 @@ export default function MultiStep(props: PropsWithChildren) { return 'psdk-vertical-step-body'; } - function _getHIconClass(status): string { - if (status === 'current') { + function _getHIconClass(step): string { + if (step.ID === currentStep?.ID) { return 'psdk-horizontal-step-icon-selected'; } return 'psdk-horizontal-step-icon'; } - function _getHLabelClass(status): string { - if (status === 'current') { + function _getHLabelClass(step): string { + if (step.ID === currentStep?.ID) { return 'psdk-horizontal-step-label-selected'; } @@ -138,12 +144,12 @@ export default function MultiStep(props: PropsWithChildren) { return (
-
+
{index + 1}
-
+
{mainStep.name}
@@ -176,7 +182,7 @@ export default function MultiStep(props: PropsWithChildren) { ))} )} - {!mainStep?.steps && mainStep.visited_status === 'current' && ( + {!mainStep?.steps && mainStep.ID === currentStep?.ID && ( {children} From 6af2617d1ee72488c8344527fb4d6b27a8508673 Mon Sep 17 00:00:00 2001 From: 4manasa Date: Wed, 23 Oct 2024 18:34:00 +0530 Subject: [PATCH 18/21] Updated the components to use handleEvent method (#404) Co-authored-by: mashm --- .../src/components/field/Email/Email.tsx | 31 ++++++++++++++++--- .../src/components/field/Integer/Integer.tsx | 26 ++++++++++++---- .../components/field/TextArea/TextArea.tsx | 30 ++++++++++++++---- .../src/components/field/Time/Time.tsx | 9 ++++-- .../src/components/field/URL/URL.tsx | 29 ++++++++++++++--- .../infra/Assignment/Assignment.tsx | 2 +- .../tests/e2e/Digv2/FormFields/Phone.spec.js | 3 -- .../LandingPages/InlineDashboard.spec.js | 2 -- 8 files changed, 101 insertions(+), 31 deletions(-) diff --git a/packages/react-sdk-components/src/components/field/Email/Email.tsx b/packages/react-sdk-components/src/components/field/Email/Email.tsx index c08786a7..4c2eeeac 100644 --- a/packages/react-sdk-components/src/components/field/Email/Email.tsx +++ b/packages/react-sdk-components/src/components/field/Email/Email.tsx @@ -1,8 +1,10 @@ +import { useEffect, useState } from 'react'; import { InputAdornment, TextField } from '@mui/material'; import MailOutlineIcon from '@mui/icons-material/MailOutline'; import { getComponentFromMap } from '../../../bridge/helpers/sdk_component_map'; import { PConnFieldProps } from '../../../types/PConnProps'; +import handleEvent from '../../helpers/event-utils'; interface EmailProps extends PConnFieldProps { // If any, enter additional props that only exist on Date here @@ -14,14 +16,13 @@ export default function Email(props: EmailProps) { const FieldValueList = getComponentFromMap('FieldValueList'); const { + getPConnect, label, required, disabled, value = '', validatemessage, status, - onChange, - onBlur, readOnly, testId, helperText, @@ -29,8 +30,19 @@ export default function Email(props: EmailProps) { hideLabel, placeholder } = props; + + const pConn = getPConnect(); + const actions = pConn.getActionsApi(); + const propName = (pConn.getStateProps() as any).value; + const helperTextToDisplay = validatemessage || helperText; + const [inputValue, setInputValue] = useState(''); + + useEffect(() => { + setInputValue(value); + }, [value]); + if (displayMode === 'LABELS_LEFT') { return ; } @@ -49,6 +61,15 @@ export default function Email(props: EmailProps) { 'data-test-id': testId }; + function handleChange(event) { + // update internal value + setInputValue(event?.target?.value); + } + + function handleBlur() { + handleEvent(actions, 'changeNblur', propName, inputValue); + } + return ( { + setInputValue(value); + }, [value]); if (displayMode === 'LABELS_LEFT') { return ; @@ -64,7 +74,11 @@ export default function Integer(props: IntegerProps) { } // Pass through to the Constellation change handler - onChange(event); + setInputValue(event.target.value); + } + + function handleBlur() { + handleEvent(actions, 'changeNblur', propName, inputValue); } return ( @@ -77,10 +91,10 @@ export default function Integer(props: IntegerProps) { required={required} disabled={disabled} onChange={intOnChange} - onBlur={!readOnly ? onBlur : undefined} + onBlur={!readOnly ? handleBlur : undefined} error={status === 'error'} label={label} - value={value} + value={inputValue} type='text' inputProps={{ inputMode: 'numeric', pattern: '[0-9]*', ...testProp }} /> diff --git a/packages/react-sdk-components/src/components/field/TextArea/TextArea.tsx b/packages/react-sdk-components/src/components/field/TextArea/TextArea.tsx index e648638b..c352a30c 100644 --- a/packages/react-sdk-components/src/components/field/TextArea/TextArea.tsx +++ b/packages/react-sdk-components/src/components/field/TextArea/TextArea.tsx @@ -1,5 +1,7 @@ +import { useEffect, useState } from 'react'; import { TextField } from '@mui/material'; +import handleEvent from '../../helpers/event-utils'; import { getComponentFromMap } from '../../../bridge/helpers/sdk_component_map'; import { PConnFieldProps } from '../../../types/PConnProps'; @@ -13,14 +15,13 @@ export default function TextArea(props: TextAreaProps) { const FieldValueList = getComponentFromMap('FieldValueList'); const { + getPConnect, label, required, disabled, value = '', validatemessage, status, - onChange, - onBlur, readOnly, testId, fieldMetadata, @@ -30,11 +31,19 @@ export default function TextArea(props: TextAreaProps) { placeholder } = props; const helperTextToDisplay = validatemessage || helperText; - + const pConn = getPConnect(); + const actions = pConn.getActionsApi(); + const propName = (pConn.getStateProps() as any).value; const maxLength = fieldMetadata?.maxLength; + const [inputValue, setInputValue] = useState(''); + let readOnlyProp = {}; + useEffect(() => { + setInputValue(value); + }, [value]); + if (displayMode === 'LABELS_LEFT') { return ; } @@ -55,6 +64,15 @@ export default function TextArea(props: TextAreaProps) { 'data-test-id': testId }; + function handleChange(event) { + // update internal value + setInputValue(event?.target?.value); + } + + function handleBlur() { + handleEvent(actions, 'changeNblur', propName, inputValue); + } + return ( ); diff --git a/packages/react-sdk-components/src/components/field/Time/Time.tsx b/packages/react-sdk-components/src/components/field/Time/Time.tsx index a4787350..612ce87b 100644 --- a/packages/react-sdk-components/src/components/field/Time/Time.tsx +++ b/packages/react-sdk-components/src/components/field/Time/Time.tsx @@ -2,6 +2,7 @@ import { TimePicker } from '@mui/x-date-pickers/TimePicker'; // import AccessTimeIcon from '@mui/icons-material/AccessTime'; import dayjs from 'dayjs'; +import handleEvent from '../../helpers/event-utils'; import { getComponentFromMap } from '../../../bridge/helpers/sdk_component_map'; import { PConnFieldProps } from '../../../types/PConnProps'; @@ -14,9 +15,11 @@ export default function Time(props: TimeProps) { const FieldValueList = getComponentFromMap('FieldValueList'); const TextInput = getComponentFromMap('TextInput'); - const { label, required, disabled, value = '', validatemessage, status, onChange, readOnly, helperText, displayMode, hideLabel, testId } = props; + const { getPConnect, label, required, disabled, value = '', validatemessage, status, readOnly, helperText, displayMode, hideLabel, testId } = props; const helperTextToDisplay = validatemessage || helperText; - + const pConn = getPConnect(); + const actions = pConn.getActionsApi(); + const propName = (pConn.getStateProps() as any).value; if (displayMode === 'LABELS_LEFT') { return ; } @@ -37,7 +40,7 @@ export default function Time(props: TimeProps) { const handleChange = date => { const theValue = date && date.isValid() ? date.format('HH:mm') : null; - onChange({ value: theValue }); + handleEvent(actions, 'changeNblur', propName, theValue); }; let timeValue: any = null; diff --git a/packages/react-sdk-components/src/components/field/URL/URL.tsx b/packages/react-sdk-components/src/components/field/URL/URL.tsx index 0b8aa8b3..426c1cdf 100644 --- a/packages/react-sdk-components/src/components/field/URL/URL.tsx +++ b/packages/react-sdk-components/src/components/field/URL/URL.tsx @@ -1,5 +1,7 @@ +import { useEffect, useState } from 'react'; import { TextField } from '@mui/material'; +import handleEvent from '../../helpers/event-utils'; import { getComponentFromMap } from '../../../bridge/helpers/sdk_component_map'; import { PConnFieldProps } from '../../../types/PConnProps'; @@ -16,14 +18,13 @@ export default function URLComponent(props: URLComponentProps) { const TextInput = getComponentFromMap('TextInput'); const { + getPConnect, label, required, disabled, value = '', validatemessage, status, - onChange, - onBlur, readOnly, testId, helperText, @@ -33,6 +34,16 @@ export default function URLComponent(props: URLComponentProps) { } = props; const helperTextToDisplay = validatemessage || helperText; + const [inputValue, setInputValue] = useState(''); + + const pConn = getPConnect(); + const actions = pConn.getActionsApi(); + const propName = (pConn.getStateProps() as any).value; + + useEffect(() => { + setInputValue(value); + }, [value]); + if (displayMode === 'LABELS_LEFT') { return ; } @@ -51,6 +62,14 @@ export default function URLComponent(props: URLComponentProps) { 'data-test-id': testId }; + const handleChange = event => { + setInputValue(event?.target?.value); + }; + + function handleBlur() { + handleEvent(actions, 'changeNblur', propName, inputValue); + } + return ( ); diff --git a/packages/react-sdk-components/src/components/infra/Assignment/Assignment.tsx b/packages/react-sdk-components/src/components/infra/Assignment/Assignment.tsx index c7cf0188..bf79b54c 100644 --- a/packages/react-sdk-components/src/components/infra/Assignment/Assignment.tsx +++ b/packages/react-sdk-components/src/components/infra/Assignment/Assignment.tsx @@ -99,7 +99,7 @@ export default function Assignment(props: PropsWithChildren) { const oData: any = thePConn.getDataObject(''); // 1st arg empty string until typedefs allow it to be optional if (oWorkData?.caseInfo && oWorkData.caseInfo.assignments !== null) { - const oCaseInfo = oData.caseInfo; + const oCaseInfo = oData?.caseInfo; if (oCaseInfo && oCaseInfo.actionButtons) { setActionButtons(oCaseInfo.actionButtons); diff --git a/packages/react-sdk-components/tests/e2e/Digv2/FormFields/Phone.spec.js b/packages/react-sdk-components/tests/e2e/Digv2/FormFields/Phone.spec.js index d9d7beab..d43dffb8 100644 --- a/packages/react-sdk-components/tests/e2e/Digv2/FormFields/Phone.spec.js +++ b/packages/react-sdk-components/tests/e2e/Digv2/FormFields/Phone.spec.js @@ -83,8 +83,6 @@ test.describe('E2E test', () => { await selectedSubCategory.click(); await page.getByRole('option', { name: 'Update' }).click(); - await page.pause(); - /** Update tests */ const readonlyPhone = page.locator('input[data-test-id="2c511e68e41cb70907b27a00de6b18b9"]'); attributes = await common.getAttributes(readonlyPhone); @@ -95,7 +93,6 @@ test.describe('E2E test', () => { await countrySelector.click(); await page.locator('text=United States+1 >> nth=0').click(); const editablePhoneInput = editablePhone.locator('input'); - await page.pause(); await common.enterPhoneNumber(editablePhone, '6175551212'); /** Validation tests */ diff --git a/packages/react-sdk-components/tests/e2e/Digv2/LandingPages/InlineDashboard.spec.js b/packages/react-sdk-components/tests/e2e/Digv2/LandingPages/InlineDashboard.spec.js index 2c91f48d..98f7f6bd 100644 --- a/packages/react-sdk-components/tests/e2e/Digv2/LandingPages/InlineDashboard.spec.js +++ b/packages/react-sdk-components/tests/e2e/Digv2/LandingPages/InlineDashboard.spec.js @@ -46,8 +46,6 @@ test.describe('E2E test', () => { const caseIdFilter = filters.locator('div:has-text("Case ID")'); caseIdFilter.locator('input').fill(caseID); - await page.pause(); - const pagination = page.locator('div[id="pagination"]'); await expect(pagination.locator('p:has-text("1–1 of 1")')).toBeVisible(); From aa8ee4f3e7117ce178f59f87f123dc251cf55fbe Mon Sep 17 00:00:00 2001 From: tumms2021389 <97188066+tumms2021389@users.noreply.github.com> Date: Fri, 25 Oct 2024 18:03:03 +0530 Subject: [PATCH 19/21] fix: removal of unwanted style providers (#406) --- .../src/samples/Embedded/EmbeddedTopLevel/index.tsx | 9 +-------- .../src/samples/FullPortal/index.tsx | 9 +-------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/packages/react-sdk-components/src/samples/Embedded/EmbeddedTopLevel/index.tsx b/packages/react-sdk-components/src/samples/Embedded/EmbeddedTopLevel/index.tsx index 82470eb2..0176dbaa 100644 --- a/packages/react-sdk-components/src/samples/Embedded/EmbeddedTopLevel/index.tsx +++ b/packages/react-sdk-components/src/samples/Embedded/EmbeddedTopLevel/index.tsx @@ -284,14 +284,7 @@ export default function EmbeddedTopLevel() { // be done in a future sprint. return ( // eslint-disable-next-line react/jsx-no-constructed-context-values - - - - - {thePConnObj} - - - + {thePConnObj} ); } diff --git a/packages/react-sdk-components/src/samples/FullPortal/index.tsx b/packages/react-sdk-components/src/samples/FullPortal/index.tsx index 6f2f847d..46f1bd6b 100644 --- a/packages/react-sdk-components/src/samples/FullPortal/index.tsx +++ b/packages/react-sdk-components/src/samples/FullPortal/index.tsx @@ -59,14 +59,7 @@ export default function FullPortal() { return ( // eslint-disable-next-line react/jsx-no-constructed-context-values - - - - - {thePConnObj} - - - + {thePConnObj} ); } From 3e6356f7e38f1029253a230622e567a83481c759 Mon Sep 17 00:00:00 2001 From: 4manasa Date: Fri, 25 Oct 2024 21:47:17 +0530 Subject: [PATCH 20/21] Fixed issue Extra textfield is displaying with DetailsSubTabs template (#405) * Fixed the issue Extra textfield is displaying with DetailsSubTabs template --------- Co-authored-by: mashm Co-authored-by: tumms2021389 <97188066+tumms2021389@users.noreply.github.com> --- .../react-sdk-components/src/components/infra/View/View.tsx | 3 ++- .../template/Details/DetailsSubTabs/DetailsSubTabs.tsx | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/react-sdk-components/src/components/infra/View/View.tsx b/packages/react-sdk-components/src/components/infra/View/View.tsx index 67bd2394..8c3bf74c 100644 --- a/packages/react-sdk-components/src/components/infra/View/View.tsx +++ b/packages/react-sdk-components/src/components/infra/View/View.tsx @@ -36,7 +36,8 @@ const NO_HEADER_TEMPLATES = [ 'NarrowWideDetails', 'WideNarrowDetails', 'Confirmation', - 'DynamicTabs' + 'DynamicTabs', + 'DetailsSubTabs' ]; export default function View(props: PropsWithChildren) { diff --git a/packages/react-sdk-components/src/components/template/Details/DetailsSubTabs/DetailsSubTabs.tsx b/packages/react-sdk-components/src/components/template/Details/DetailsSubTabs/DetailsSubTabs.tsx index 9c9ef9c7..e400423a 100644 --- a/packages/react-sdk-components/src/components/template/Details/DetailsSubTabs/DetailsSubTabs.tsx +++ b/packages/react-sdk-components/src/components/template/Details/DetailsSubTabs/DetailsSubTabs.tsx @@ -1,5 +1,5 @@ import { Children, PropsWithChildren, useEffect, useState } from 'react'; -import { Tab, Tabs, TextField } from '@mui/material'; +import { Tab, Tabs } from '@mui/material'; import { TabContext, TabPanel } from '@mui/lab'; import { getTransientTabs, getVisibleTabs, tabClick } from '../../SubTabs/tabUtils'; @@ -39,7 +39,7 @@ export default function DetailsSubTabs(props: PropsWithChildren - {propsToUse.showLabel && {propsToUse.label}} + {propsToUse.showLabel &&

{propsToUse.label}

} {tabItems.map((tab: any) => ( From 508131c62263107e9850a34a6505d31ee32529ca Mon Sep 17 00:00:00 2001 From: 4manasa Date: Wed, 30 Oct 2024 14:46:48 +0530 Subject: [PATCH 21/21] Fixed the submit APIs failing with Details template issue (#407) * Fixed the submit APIs failing with Details template issue --------- Co-authored-by: mashm --- .../designSystemExtension/DetailsFields/DetailsFields.tsx | 2 +- .../src/components/field/AutoComplete/AutoComplete.tsx | 2 +- .../src/components/field/Checkbox/Checkbox.tsx | 2 +- .../src/components/field/Currency/Currency.tsx | 2 +- .../react-sdk-components/src/components/field/Date/Date.tsx | 2 +- .../src/components/field/DateTime/DateTime.tsx | 2 +- .../src/components/field/Decimal/Decimal.tsx | 2 +- .../src/components/field/Dropdown/Dropdown.tsx | 2 +- .../react-sdk-components/src/components/field/Email/Email.tsx | 2 +- .../react-sdk-components/src/components/field/Group/Group.tsx | 2 +- .../src/components/field/Integer/Integer.tsx | 2 +- .../src/components/field/Percentage/Percentage.tsx | 2 +- .../react-sdk-components/src/components/field/Phone/Phone.tsx | 2 +- .../src/components/field/RadioButtons/RadioButtons.tsx | 2 +- .../src/components/field/RichText/RichText.tsx | 2 +- .../src/components/field/ScalarList/ScalarList.tsx | 4 ++-- .../src/components/field/SemanticLink/SemanticLink.tsx | 2 +- .../src/components/field/TextArea/TextArea.tsx | 2 +- .../src/components/field/TextInput/TextInput.tsx | 2 +- .../react-sdk-components/src/components/field/Time/Time.tsx | 2 +- .../react-sdk-components/src/components/field/URL/URL.tsx | 2 +- .../src/components/field/UserReference/UserReference.tsx | 2 +- .../src/components/helpers/field-group-utils.ts | 4 ++-- .../src/components/infra/DeferLoad/DeferLoad.tsx | 2 +- .../src/components/template/DataReference/DataReference.tsx | 2 +- .../src/components/template/Details/Details/Details.tsx | 2 +- .../Details/DetailsThreeColumn/DetailsThreeColumn.tsx | 2 +- .../template/Details/DetailsTwoColumn/DetailsTwoColumn.tsx | 2 +- .../components/template/Details/DynamicTabs/DynamicTabs.tsx | 2 +- .../template/FieldGroupTemplate/FieldGroupTemplate.tsx | 4 ++-- .../src/components/template/ListView/utils.ts | 2 +- .../NarrowWide/NarrowWideDetails/NarrowWideDetails.tsx | 2 +- .../WideNarrow/WideNarrowDetails/WideNarrowDetails.tsx | 2 +- .../tests/unit/components/forms/TextInput/index.test.tsx | 2 +- 34 files changed, 37 insertions(+), 37 deletions(-) diff --git a/packages/react-sdk-components/src/components/designSystemExtension/DetailsFields/DetailsFields.tsx b/packages/react-sdk-components/src/components/designSystemExtension/DetailsFields/DetailsFields.tsx index dbeb923c..ce6019e2 100644 --- a/packages/react-sdk-components/src/components/designSystemExtension/DetailsFields/DetailsFields.tsx +++ b/packages/react-sdk-components/src/components/designSystemExtension/DetailsFields/DetailsFields.tsx @@ -48,7 +48,7 @@ export default function DetailsFields(props: DetailsFieldsProps) { const { label } = thePConn.getConfigProps(); const configObj = thePConn?.getReferencedView(); configObj.config.readOnly = true; - configObj.config.displayMode = 'LABELS_LEFT'; + configObj.config.displayMode = 'DISPLAY_ONLY'; const propToUse = { ...thePConn.getInheritedProps() }; configObj.config.label = theCompType === 'reference' ? propToUse?.label : label; fieldComponents.push({ diff --git a/packages/react-sdk-components/src/components/field/AutoComplete/AutoComplete.tsx b/packages/react-sdk-components/src/components/field/AutoComplete/AutoComplete.tsx index 8400e6a9..f12f1d4b 100644 --- a/packages/react-sdk-components/src/components/field/AutoComplete/AutoComplete.tsx +++ b/packages/react-sdk-components/src/components/field/AutoComplete/AutoComplete.tsx @@ -150,7 +150,7 @@ export default function AutoComplete(props: AutoCompleteProps) { } }, []); - if (displayMode === 'LABELS_LEFT') { + if (displayMode === 'DISPLAY_ONLY') { return ; } diff --git a/packages/react-sdk-components/src/components/field/Checkbox/Checkbox.tsx b/packages/react-sdk-components/src/components/field/Checkbox/Checkbox.tsx index 9d59b8af..6b7339d7 100644 --- a/packages/react-sdk-components/src/components/field/Checkbox/Checkbox.tsx +++ b/packages/react-sdk-components/src/components/field/Checkbox/Checkbox.tsx @@ -77,7 +77,7 @@ export default function CheckboxComponent(props: CheckboxProps) { } }, [thePConn]); - if (displayMode === 'LABELS_LEFT') { + if (displayMode === 'DISPLAY_ONLY') { return ; } diff --git a/packages/react-sdk-components/src/components/field/Currency/Currency.tsx b/packages/react-sdk-components/src/components/field/Currency/Currency.tsx index a32150c4..027936a9 100644 --- a/packages/react-sdk-components/src/components/field/Currency/Currency.tsx +++ b/packages/react-sdk-components/src/components/field/Currency/Currency.tsx @@ -67,7 +67,7 @@ export default function Currency(props: CurrrencyProps) { let currencyProp = {}; currencyProp = { prefix: theCurrSym, decimalSeparator: theCurrDec, thousandSeparator: theCurrSep }; - if (displayMode === 'LABELS_LEFT') { + if (displayMode === 'DISPLAY_ONLY') { return ; } diff --git a/packages/react-sdk-components/src/components/field/Date/Date.tsx b/packages/react-sdk-components/src/components/field/Date/Date.tsx index f0e50c56..5a4f0282 100644 --- a/packages/react-sdk-components/src/components/field/Date/Date.tsx +++ b/packages/react-sdk-components/src/components/field/Date/Date.tsx @@ -39,7 +39,7 @@ export default function Date(props: DateProps) { dateFormatInfo.dateFormatStringLC = theDateFormat.dateFormatStringLC; dateFormatInfo.dateFormatMask = theDateFormat.dateFormatMask; - if (displayMode === 'LABELS_LEFT') { + if (displayMode === 'DISPLAY_ONLY') { const formattedDate = format(props.value, 'date', { format: dateFormatInfo.dateFormatString }); diff --git a/packages/react-sdk-components/src/components/field/DateTime/DateTime.tsx b/packages/react-sdk-components/src/components/field/DateTime/DateTime.tsx index e4df3125..46728b5f 100644 --- a/packages/react-sdk-components/src/components/field/DateTime/DateTime.tsx +++ b/packages/react-sdk-components/src/components/field/DateTime/DateTime.tsx @@ -34,7 +34,7 @@ export default function DateTime(props: DateTimeProps) { dateFormatInfo.dateFormatStringLC = theDateFormat.dateFormatStringLC; dateFormatInfo.dateFormatMask = theDateFormat.dateFormatMask; - if (displayMode === 'LABELS_LEFT') { + if (displayMode === 'DISPLAY_ONLY') { const formattedDateTime = format(props.value, 'datetime', { format: `${dateFormatInfo.dateFormatString} hh:mm a` }); diff --git a/packages/react-sdk-components/src/components/field/Decimal/Decimal.tsx b/packages/react-sdk-components/src/components/field/Decimal/Decimal.tsx index 7f729079..b624e534 100644 --- a/packages/react-sdk-components/src/components/field/Decimal/Decimal.tsx +++ b/packages/react-sdk-components/src/components/field/Decimal/Decimal.tsx @@ -71,7 +71,7 @@ export default function Decimal(props: DecimalProps) { formattedValue = format(value, pConn.getComponentName().toLowerCase(), theCurrencyOptions); } - if (displayMode === 'LABELS_LEFT') { + if (displayMode === 'DISPLAY_ONLY') { return ; } diff --git a/packages/react-sdk-components/src/components/field/Dropdown/Dropdown.tsx b/packages/react-sdk-components/src/components/field/Dropdown/Dropdown.tsx index f5d8491c..8cd4e685 100644 --- a/packages/react-sdk-components/src/components/field/Dropdown/Dropdown.tsx +++ b/packages/react-sdk-components/src/components/field/Dropdown/Dropdown.tsx @@ -165,7 +165,7 @@ export default function Dropdown(props: DropdownProps) { let readOnlyProp = {}; - if (displayMode === 'LABELS_LEFT') { + if (displayMode === 'DISPLAY_ONLY') { return ( ; } diff --git a/packages/react-sdk-components/src/components/field/Group/Group.tsx b/packages/react-sdk-components/src/components/field/Group/Group.tsx index a7572218..378745fc 100644 --- a/packages/react-sdk-components/src/components/field/Group/Group.tsx +++ b/packages/react-sdk-components/src/components/field/Group/Group.tsx @@ -15,7 +15,7 @@ interface GroupProps extends PConnFieldProps { export default function Group(props: GroupProps) { const { children, heading, showHeading, instructions, collapsible, displayMode, type } = props; - const isReadOnly = displayMode === 'LABELS_LEFT'; + const isReadOnly = displayMode === 'DISPLAY_ONLY'; const content = useMemo(() => { return ( diff --git a/packages/react-sdk-components/src/components/field/Integer/Integer.tsx b/packages/react-sdk-components/src/components/field/Integer/Integer.tsx index ba8c3f7e..b3c0d919 100644 --- a/packages/react-sdk-components/src/components/field/Integer/Integer.tsx +++ b/packages/react-sdk-components/src/components/field/Integer/Integer.tsx @@ -42,7 +42,7 @@ export default function Integer(props: IntegerProps) { setInputValue(value); }, [value]); - if (displayMode === 'LABELS_LEFT') { + if (displayMode === 'DISPLAY_ONLY') { return ; } diff --git a/packages/react-sdk-components/src/components/field/Percentage/Percentage.tsx b/packages/react-sdk-components/src/components/field/Percentage/Percentage.tsx index 38f561e5..f5b8d088 100644 --- a/packages/react-sdk-components/src/components/field/Percentage/Percentage.tsx +++ b/packages/react-sdk-components/src/components/field/Percentage/Percentage.tsx @@ -58,7 +58,7 @@ export default function Percentage(props: PercentageProps) { readOnlyProp = { readOnly: true }; } - if (displayMode === 'LABELS_LEFT') { + if (displayMode === 'DISPLAY_ONLY') { return ; } diff --git a/packages/react-sdk-components/src/components/field/Phone/Phone.tsx b/packages/react-sdk-components/src/components/field/Phone/Phone.tsx index aa1d0ac4..1cac710a 100644 --- a/packages/react-sdk-components/src/components/field/Phone/Phone.tsx +++ b/packages/react-sdk-components/src/components/field/Phone/Phone.tsx @@ -45,7 +45,7 @@ export default function Phone(props: PhoneProps) { 'data-test-id': testId }; - if (displayMode === 'LABELS_LEFT') { + if (displayMode === 'DISPLAY_ONLY') { return ; } diff --git a/packages/react-sdk-components/src/components/field/RadioButtons/RadioButtons.tsx b/packages/react-sdk-components/src/components/field/RadioButtons/RadioButtons.tsx index 9741c964..dd865bd9 100644 --- a/packages/react-sdk-components/src/components/field/RadioButtons/RadioButtons.tsx +++ b/packages/react-sdk-components/src/components/field/RadioButtons/RadioButtons.tsx @@ -61,7 +61,7 @@ export default function RadioButtons(props: RadioButtonsProps) { setSelectedButton(value); }, [value]); - if (displayMode === 'LABELS_LEFT') { + if (displayMode === 'DISPLAY_ONLY') { return ( ; } diff --git a/packages/react-sdk-components/src/components/field/ScalarList/ScalarList.tsx b/packages/react-sdk-components/src/components/field/ScalarList/ScalarList.tsx index 3ba2bde2..45146ea9 100644 --- a/packages/react-sdk-components/src/components/field/ScalarList/ScalarList.tsx +++ b/packages/react-sdk-components/src/components/field/ScalarList/ScalarList.tsx @@ -38,7 +38,7 @@ export default function ScalarList(props: ScalarListProps) { config: { // @ts-ignore - Type '{ readOnly: true; displayInModal: boolean; value: any; displayMode: string; label: string; }' is not assignable to type 'ComponentMetadataConfig'. value: scalarValue, - displayMode: 'LABELS_LEFT', + displayMode: 'DISPLAY_ONLY', label, ...restProps, // @ts-ignore - Type 'string' is not assignable to type 'boolean | undefined'. @@ -51,7 +51,7 @@ export default function ScalarList(props: ScalarListProps) { ); // 2nd, 3rd, and 4th args empty string/object/null until typedef marked correctly as optional; }); - if (['LABELS_LEFT', 'STACKED_LARGE_VAL', 'DISPLAY_ONLY'].includes(displayMode)) { + if (['STACKED_LARGE_VAL', 'DISPLAY_ONLY'].includes(displayMode)) { return (
diff --git a/packages/react-sdk-components/src/components/field/SemanticLink/SemanticLink.tsx b/packages/react-sdk-components/src/components/field/SemanticLink/SemanticLink.tsx index c16002db..22f63bf8 100644 --- a/packages/react-sdk-components/src/components/field/SemanticLink/SemanticLink.tsx +++ b/packages/react-sdk-components/src/components/field/SemanticLink/SemanticLink.tsx @@ -52,7 +52,7 @@ export default function SemanticLink(props: SemanticLinkProps) { const { text, displayMode, label, hideLabel } = props; const classes = useStyles(); - if (displayMode === 'LABELS_LEFT' || (!displayMode && label !== undefined)) { + if (displayMode === 'DISPLAY_ONLY' || (!displayMode && label !== undefined)) { const value = text || '---'; return ( diff --git a/packages/react-sdk-components/src/components/field/TextArea/TextArea.tsx b/packages/react-sdk-components/src/components/field/TextArea/TextArea.tsx index c352a30c..29e55b21 100644 --- a/packages/react-sdk-components/src/components/field/TextArea/TextArea.tsx +++ b/packages/react-sdk-components/src/components/field/TextArea/TextArea.tsx @@ -44,7 +44,7 @@ export default function TextArea(props: TextAreaProps) { setInputValue(value); }, [value]); - if (displayMode === 'LABELS_LEFT') { + if (displayMode === 'DISPLAY_ONLY') { return ; } diff --git a/packages/react-sdk-components/src/components/field/TextInput/TextInput.tsx b/packages/react-sdk-components/src/components/field/TextInput/TextInput.tsx index d262cb57..509671a0 100644 --- a/packages/react-sdk-components/src/components/field/TextInput/TextInput.tsx +++ b/packages/react-sdk-components/src/components/field/TextInput/TextInput.tsx @@ -47,7 +47,7 @@ export default function TextInput(props: TextInputProps) { setInputValue(value); }, [value]); - if (displayMode === 'LABELS_LEFT') { + if (displayMode === 'DISPLAY_ONLY') { return ; } diff --git a/packages/react-sdk-components/src/components/field/Time/Time.tsx b/packages/react-sdk-components/src/components/field/Time/Time.tsx index 612ce87b..d9731263 100644 --- a/packages/react-sdk-components/src/components/field/Time/Time.tsx +++ b/packages/react-sdk-components/src/components/field/Time/Time.tsx @@ -20,7 +20,7 @@ export default function Time(props: TimeProps) { const pConn = getPConnect(); const actions = pConn.getActionsApi(); const propName = (pConn.getStateProps() as any).value; - if (displayMode === 'LABELS_LEFT') { + if (displayMode === 'DISPLAY_ONLY') { return ; } diff --git a/packages/react-sdk-components/src/components/field/URL/URL.tsx b/packages/react-sdk-components/src/components/field/URL/URL.tsx index 426c1cdf..d66da023 100644 --- a/packages/react-sdk-components/src/components/field/URL/URL.tsx +++ b/packages/react-sdk-components/src/components/field/URL/URL.tsx @@ -44,7 +44,7 @@ export default function URLComponent(props: URLComponentProps) { setInputValue(value); }, [value]); - if (displayMode === 'LABELS_LEFT') { + if (displayMode === 'DISPLAY_ONLY') { return ; } diff --git a/packages/react-sdk-components/src/components/field/UserReference/UserReference.tsx b/packages/react-sdk-components/src/components/field/UserReference/UserReference.tsx index b9dbfc31..9485c9d8 100644 --- a/packages/react-sdk-components/src/components/field/UserReference/UserReference.tsx +++ b/packages/react-sdk-components/src/components/field/UserReference/UserReference.tsx @@ -99,7 +99,7 @@ const UserReference = (props: UserReferenceProps) => { let userReferenceComponent: any = null; - if (displayMode === 'LABELS_LEFT') { + if (displayMode === 'DISPLAY_ONLY') { return ; } diff --git a/packages/react-sdk-components/src/components/helpers/field-group-utils.ts b/packages/react-sdk-components/src/components/helpers/field-group-utils.ts index d241945d..2895010b 100644 --- a/packages/react-sdk-components/src/components/helpers/field-group-utils.ts +++ b/packages/react-sdk-components/src/components/helpers/field-group-utils.ts @@ -49,8 +49,8 @@ export function buildView(pConn, index, viewConfigPath): ReactElement { }; const view = PCore.createPConnect(config); - if (pConn.getConfigProps()?.displayMode === 'LABELS_LEFT') { - view.getPConnect()?.setInheritedProp('displayMode', 'LABELS_LEFT'); + if (pConn.getConfigProps()?.displayMode === 'DISPLAY_ONLY') { + view.getPConnect()?.setInheritedProp('displayMode', 'DISPLAY_ONLY'); } return createElement(createPConnectComponent(), view); } diff --git a/packages/react-sdk-components/src/components/infra/DeferLoad/DeferLoad.tsx b/packages/react-sdk-components/src/components/infra/DeferLoad/DeferLoad.tsx index 028a7296..db6865e4 100644 --- a/packages/react-sdk-components/src/components/infra/DeferLoad/DeferLoad.tsx +++ b/packages/react-sdk-components/src/components/infra/DeferLoad/DeferLoad.tsx @@ -95,7 +95,7 @@ export default function DeferLoad(props: DeferLoadProps) { } }; const configObject = PCore.createPConnect(config); - configObject.getPConnect().setInheritedProp('displayMode', 'LABELS_LEFT'); + configObject.getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY'); setContent(createElement(createPConnectComponent(), configObject)); if (deferLoadId) { PCore.getDeferLoadManager().stop(deferLoadId, getPConnect().getContextName()); diff --git a/packages/react-sdk-components/src/components/template/DataReference/DataReference.tsx b/packages/react-sdk-components/src/components/template/DataReference/DataReference.tsx index 611144e7..e2b4b676 100644 --- a/packages/react-sdk-components/src/components/template/DataReference/DataReference.tsx +++ b/packages/react-sdk-components/src/components/template/DataReference/DataReference.tsx @@ -52,7 +52,7 @@ export default function DataReference(props: PropsWithChildren createElement(createPConnectComponent(), { diff --git a/packages/react-sdk-components/src/components/template/Details/DetailsThreeColumn/DetailsThreeColumn.tsx b/packages/react-sdk-components/src/components/template/Details/DetailsThreeColumn/DetailsThreeColumn.tsx index 6650a31e..a249185a 100644 --- a/packages/react-sdk-components/src/components/template/Details/DetailsThreeColumn/DetailsThreeColumn.tsx +++ b/packages/react-sdk-components/src/components/template/Details/DetailsThreeColumn/DetailsThreeColumn.tsx @@ -23,7 +23,7 @@ export default function DetailsThreeColumn(props: DetailsThreeColumnProps) { // Set display mode prop and re-create the children so this part of the dom tree renders // in a readonly (display) mode instead of a editable - getPConnect().setInheritedProp('displayMode', 'LABELS_LEFT'); + getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY'); getPConnect().setInheritedProp('readOnly', true); const children = (getPConnect().getChildren() as any[]).map((configObject, index) => createElement(createPConnectComponent(), { diff --git a/packages/react-sdk-components/src/components/template/Details/DetailsTwoColumn/DetailsTwoColumn.tsx b/packages/react-sdk-components/src/components/template/Details/DetailsTwoColumn/DetailsTwoColumn.tsx index 74bbc9c4..a3a3b905 100644 --- a/packages/react-sdk-components/src/components/template/Details/DetailsTwoColumn/DetailsTwoColumn.tsx +++ b/packages/react-sdk-components/src/components/template/Details/DetailsTwoColumn/DetailsTwoColumn.tsx @@ -23,7 +23,7 @@ export default function DetailsTwoColumn(props: DetailsTwoColumnProps) { // Set display mode prop and re-create the children so this part of the dom tree renders // in a readonly (display) mode instead of a editable - getPConnect().setInheritedProp('displayMode', 'LABELS_LEFT'); + getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY'); getPConnect().setInheritedProp('readOnly', true); const children = (getPConnect().getChildren() as any[]).map((configObject, index) => createElement(createPConnectComponent(), { diff --git a/packages/react-sdk-components/src/components/template/Details/DynamicTabs/DynamicTabs.tsx b/packages/react-sdk-components/src/components/template/Details/DynamicTabs/DynamicTabs.tsx index d5186e84..14d45175 100644 --- a/packages/react-sdk-components/src/components/template/Details/DynamicTabs/DynamicTabs.tsx +++ b/packages/react-sdk-components/src/components/template/Details/DynamicTabs/DynamicTabs.tsx @@ -31,7 +31,7 @@ function DynamicTabs(props: DynamicTabsProps) { const tablabelProp = PCore.getAnnotationUtils().getPropertyName(tablabel); const referenceListData: any = pConnect.getValue(`${referenceList}.pxResults`, ''); // 2nd arg empty string until typedefs properly allow optional const memoisedTabViews = useMemo(() => { - pConnect.setInheritedProp('displayMode', 'LABELS_LEFT'); + pConnect.setInheritedProp('displayMode', 'DISPLAY_ONLY'); pConnect.setInheritedProp('readOnly', true); return ( diff --git a/packages/react-sdk-components/src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx b/packages/react-sdk-components/src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx index 1daf282f..d191632a 100644 --- a/packages/react-sdk-components/src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx +++ b/packages/react-sdk-components/src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx @@ -37,7 +37,7 @@ export default function FieldGroupTemplate(props: FieldGroupTemplateProps) { const resolvedList = getReferenceList(pConn); pConn.setReferenceList(resolvedList); const pageReference = `${pConn.getPageReference()}${resolvedList}`; - const isReadonlyMode = renderMode === 'ReadOnly' || displayMode === 'LABELS_LEFT'; + const isReadonlyMode = renderMode === 'ReadOnly' || displayMode === 'DISPLAY_ONLY'; const HEADING = heading ?? 'Row'; useLayoutEffect(() => { @@ -96,7 +96,7 @@ export default function FieldGroupTemplate(props: FieldGroupTemplateProps) { ); } - pConn.setInheritedProp('displayMode', 'LABELS_LEFT'); + pConn.setInheritedProp('displayMode', 'DISPLAY_ONLY'); const memoisedReadOnlyList = useMemo(() => { return referenceList.map((item, index) => { const key = item[heading] || `field-group-row-${index}`; diff --git a/packages/react-sdk-components/src/components/template/ListView/utils.ts b/packages/react-sdk-components/src/components/template/ListView/utils.ts index fd9a744d..05dc452c 100644 --- a/packages/react-sdk-components/src/components/template/ListView/utils.ts +++ b/packages/react-sdk-components/src/components/template/ListView/utils.ts @@ -678,7 +678,7 @@ export const readContextResponse = async (context, params) => { const dataPageKeys = PCore.getDataTypeUtils().getDataPageKeys(dataViewName); dataPageKeys?.forEach(item => (item.isAlternateKeyStorage ? compositeKeys.push(item.linkedField) : compositeKeys.push(item.keyName))); if (compositeKeys.length) { - otherContext.setCompositeKeys(compositeKeys); + otherContext?.setCompositeKeys(compositeKeys); } if (otherContext) { otherContext.fetchRowActionDetails = null; diff --git a/packages/react-sdk-components/src/components/template/NarrowWide/NarrowWideDetails/NarrowWideDetails.tsx b/packages/react-sdk-components/src/components/template/NarrowWide/NarrowWideDetails/NarrowWideDetails.tsx index c073f198..64b457f4 100644 --- a/packages/react-sdk-components/src/components/template/NarrowWide/NarrowWideDetails/NarrowWideDetails.tsx +++ b/packages/react-sdk-components/src/components/template/NarrowWide/NarrowWideDetails/NarrowWideDetails.tsx @@ -26,7 +26,7 @@ export default function NarrowWideDetails(props: NarrowWideDetailsProps) { // Set display mode prop and re-create the children so this part of the dom tree renders // in a readonly (display) mode instead of a editable - getPConnect().setInheritedProp('displayMode', 'LABELS_LEFT'); + getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY'); getPConnect().setInheritedProp('readOnly', true); const children = (getPConnect().getChildren() as any[]).map((configObject, index) => createElement(createPConnectComponent(), { diff --git a/packages/react-sdk-components/src/components/template/WideNarrow/WideNarrowDetails/WideNarrowDetails.tsx b/packages/react-sdk-components/src/components/template/WideNarrow/WideNarrowDetails/WideNarrowDetails.tsx index 229a018c..f7cf2f58 100644 --- a/packages/react-sdk-components/src/components/template/WideNarrow/WideNarrowDetails/WideNarrowDetails.tsx +++ b/packages/react-sdk-components/src/components/template/WideNarrow/WideNarrowDetails/WideNarrowDetails.tsx @@ -26,7 +26,7 @@ export default function WideNarrowDetails(props: WideNarrowDetailsProps) { // Set display mode prop and re-create the children so this part of the dom tree renders // in a readonly (display) mode instead of a editable - getPConnect().setInheritedProp('displayMode', 'LABELS_LEFT'); + getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY'); getPConnect().setInheritedProp('readOnly', true); const children = (getPConnect().getChildren() as any[])?.map((configObject, index) => { let theConfigObject: object = configObject; diff --git a/packages/react-sdk-components/tests/unit/components/forms/TextInput/index.test.tsx b/packages/react-sdk-components/tests/unit/components/forms/TextInput/index.test.tsx index dbedf9fa..9ef342e6 100644 --- a/packages/react-sdk-components/tests/unit/components/forms/TextInput/index.test.tsx +++ b/packages/react-sdk-components/tests/unit/components/forms/TextInput/index.test.tsx @@ -58,7 +58,7 @@ describe('Test Text Input component', () => { test('TextInput Component renders with displayMode as LabelsLeft', () => { const props = getDefaultProps(); props.value = 'Hi there!'; - props.displayMode = 'LABELS_LEFT'; + props.displayMode = 'DISPLAY_ONLY'; const { getByText } = render(); const readOnlySpan = getByText('Hi there!'); expect(readOnlySpan).toBeVisible();