diff --git a/collections/forms/package.json b/collections/forms/package.json index e87b73d9f1..8ea538a593 100644 --- a/collections/forms/package.json +++ b/collections/forms/package.json @@ -30,8 +30,8 @@ "build": "d2-app-scripts build" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18" + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19" }, "dependencies": { "@dhis2/prop-types": "^3.1.2", diff --git a/collections/ui/package.json b/collections/ui/package.json index d4fe05c3d9..1616f99109 100644 --- a/collections/ui/package.json +++ b/collections/ui/package.json @@ -74,8 +74,8 @@ "peerDependencies": { "@dhis2/app-runtime": "^3", "@dhis2/d2-i18n": "^1", - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "devDependencies": { diff --git a/components/alert/package.json b/components/alert/package.json index 4afa162ee2..384b16354f 100644 --- a/components/alert/package.json +++ b/components/alert/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/box/package.json b/components/box/package.json index 87f501b92b..47748b0cf1 100644 --- a/components/box/package.json +++ b/components/box/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/button/package.json b/components/button/package.json index 95533f6088..8dd8e7f82b 100644 --- a/components/button/package.json +++ b/components/button/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/calendar/package.json b/components/calendar/package.json index 8b88e1429b..b5b8e9dc37 100644 --- a/components/calendar/package.json +++ b/components/calendar/package.json @@ -28,8 +28,8 @@ }, "peerDependencies": { "@dhis2/d2-i18n": "^1", - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/card/package.json b/components/card/package.json index a3f3f8b9c7..d3a4de5741 100644 --- a/components/card/package.json +++ b/components/card/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/center/package.json b/components/center/package.json index 9c9f5d3fc2..d141fbb50c 100644 --- a/components/center/package.json +++ b/components/center/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/checkbox/package.json b/components/checkbox/package.json index aacf4c5bc0..d212295bed 100644 --- a/components/checkbox/package.json +++ b/components/checkbox/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/chip/package.json b/components/chip/package.json index 2da7bc2089..9b66edd01f 100644 --- a/components/chip/package.json +++ b/components/chip/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/cover/package.json b/components/cover/package.json index d589fa8b04..361cfa2390 100644 --- a/components/cover/package.json +++ b/components/cover/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/css/package.json b/components/css/package.json index 4f6c2efc9a..77a7b30caa 100644 --- a/components/css/package.json +++ b/components/css/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/divider/package.json b/components/divider/package.json index 276c673340..d9b131fa9d 100644 --- a/components/divider/package.json +++ b/components/divider/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/field/package.json b/components/field/package.json index 10e5666737..9aa4568cd9 100644 --- a/components/field/package.json +++ b/components/field/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/file-input/package.json b/components/file-input/package.json index bd461bd651..63e600a94c 100644 --- a/components/file-input/package.json +++ b/components/file-input/package.json @@ -28,8 +28,8 @@ }, "peerDependencies": { "@dhis2/d2-i18n": "^1.1.0", - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/header-bar/package.json b/components/header-bar/package.json index f8c53d7409..e781edee5b 100644 --- a/components/header-bar/package.json +++ b/components/header-bar/package.json @@ -29,8 +29,8 @@ "peerDependencies": { "@dhis2/app-runtime": "^3", "@dhis2/d2-i18n": "^1", - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/help/package.json b/components/help/package.json index 469bf490dd..21daafe2a4 100644 --- a/components/help/package.json +++ b/components/help/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/input/package.json b/components/input/package.json index acfd52ee66..784542666b 100644 --- a/components/input/package.json +++ b/components/input/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/intersection-detector/package.json b/components/intersection-detector/package.json index d581039ab2..3ff5b5b39e 100644 --- a/components/intersection-detector/package.json +++ b/components/intersection-detector/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/intersection-detector/types/index.d.ts b/components/intersection-detector/types/index.d.ts index fcbf46e989..9d85fbbe90 100644 --- a/components/intersection-detector/types/index.d.ts +++ b/components/intersection-detector/types/index.d.ts @@ -4,7 +4,7 @@ export interface IntersectionDetectorProps { /** * React ref on other component to detect intersections with */ - rootRef: React.MutableRefObject + rootRef: React.RefObject /** * Called with signature `({ isIntersecting: bool })` */ diff --git a/components/label/package.json b/components/label/package.json index b04625f842..f2cafd564c 100644 --- a/components/label/package.json +++ b/components/label/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/layer/package.json b/components/layer/package.json index 664b767218..bd10656198 100644 --- a/components/layer/package.json +++ b/components/layer/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/legend/package.json b/components/legend/package.json index b6905fd71b..b64a19c425 100644 --- a/components/legend/package.json +++ b/components/legend/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/loader/package.json b/components/loader/package.json index 34a65804c9..41bff7d7c5 100644 --- a/components/loader/package.json +++ b/components/loader/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/logo/package.json b/components/logo/package.json index 8e6da61c15..ad3ab52f04 100644 --- a/components/logo/package.json +++ b/components/logo/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/menu/package.json b/components/menu/package.json index 363c41cb78..08dfed3e05 100644 --- a/components/menu/package.json +++ b/components/menu/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/modal/package.json b/components/modal/package.json index c87193316b..b4e38a70f5 100644 --- a/components/modal/package.json +++ b/components/modal/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/node/package.json b/components/node/package.json index ef2fc6fb83..a54032de2e 100644 --- a/components/node/package.json +++ b/components/node/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/notice-box/package.json b/components/notice-box/package.json index 1530041886..7765dddb68 100644 --- a/components/notice-box/package.json +++ b/components/notice-box/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/organisation-unit-tree/package.json b/components/organisation-unit-tree/package.json index 9093bb5211..8e27faa79a 100644 --- a/components/organisation-unit-tree/package.json +++ b/components/organisation-unit-tree/package.json @@ -29,8 +29,8 @@ "peerDependencies": { "@dhis2/app-runtime": "^3", "@dhis2/d2-i18n": "^1", - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/pagination/package.json b/components/pagination/package.json index 42c9caf4d4..cf21624492 100644 --- a/components/pagination/package.json +++ b/components/pagination/package.json @@ -28,8 +28,8 @@ }, "peerDependencies": { "@dhis2/d2-i18n": "^1", - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/popover/package.json b/components/popover/package.json index 17ae354de4..a7d95f646a 100644 --- a/components/popover/package.json +++ b/components/popover/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/popover/types/index.d.ts b/components/popover/types/index.d.ts index b8b8ec470f..716b1a6e90 100644 --- a/components/popover/types/index.d.ts +++ b/components/popover/types/index.d.ts @@ -2,7 +2,9 @@ import * as React from 'react' import { VirtualElement, Options as PopperOptions } from '@popperjs/core' type PopperReference = VirtualElement | Element -type ReferenceElement = PopperReference | React.RefObject +type ReferenceElement = + | PopperReference + | React.RefObject export interface PopoverProps { children: React.ReactNode diff --git a/components/popper/package.json b/components/popper/package.json index 32d0fb6b47..10b398c3e9 100644 --- a/components/popper/package.json +++ b/components/popper/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { @@ -37,7 +37,6 @@ "@popperjs/core": "^2.11.8", "classnames": "^2.3.1", "prop-types": "^15.7.2", - "react-popper": "^2.3.0", "resize-observer-polyfill": "^1.5.1" }, "files": [ diff --git a/components/popper/src/index.js b/components/popper/src/index.js index a717a4054d..412c085c19 100644 --- a/components/popper/src/index.js +++ b/components/popper/src/index.js @@ -1,4 +1,4 @@ export { Popper } from './popper.js' export { getReferenceElement } from './get-reference-element.js' export { getBaseModifiers } from './modifiers.js' -export { usePopper } from 'react-popper' +export { usePopper } from './use-popper.js' diff --git a/components/popper/src/popper.js b/components/popper/src/popper.js index bc7fe7205d..f25dcd4765 100644 --- a/components/popper/src/popper.js +++ b/components/popper/src/popper.js @@ -1,9 +1,9 @@ import { sharedPropTypes } from '@dhis2/ui-constants' import PropTypes from 'prop-types' import React, { useState, useMemo, useEffect } from 'react' -import { usePopper } from 'react-popper' import { getReferenceElement } from './get-reference-element.js' import { deduplicateModifiers } from './modifiers.js' +import { usePopper } from './use-popper.js' const flipPlacement = (placement) => { if (placement.startsWith('right')) { diff --git a/components/popper/src/use-popper.js b/components/popper/src/use-popper.js new file mode 100644 index 0000000000..acad93e3c1 --- /dev/null +++ b/components/popper/src/use-popper.js @@ -0,0 +1,93 @@ +/* global globalThis */ +import { createPopper as defaultCreatePopper } from '@popperjs/core' +import { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react' +import { flushSync } from 'react-dom' + +const EMPTY_MODIFIERS = [] + +const useIsomorphicLayoutEffect = + globalThis.window === undefined ? useEffect : useLayoutEffect + +const applyStylesOff = { name: 'applyStyles', enabled: false } + +export const usePopper = (referenceElement, popperElement, options = {}) => { + const { + onFirstUpdate, + placement = 'bottom', + strategy = 'absolute', + modifiers = EMPTY_MODIFIERS, + createPopper = defaultCreatePopper, + } = options + + const [state, setState] = useState({ + styles: { + popper: { position: strategy, left: '0', top: '0' }, + arrow: { position: 'absolute' }, + }, + attributes: {}, + }) + + const updateStateModifier = useMemo( + () => ({ + name: 'updateState', + enabled: true, + phase: 'write', + fn: ({ state: popperState }) => { + const elementKeys = Object.keys(popperState.elements) + const styles = Object.fromEntries( + elementKeys.map((k) => [k, popperState.styles[k] || {}]) + ) + const attributes = Object.fromEntries( + elementKeys.map((k) => [k, popperState.attributes[k]]) + ) + flushSync(() => { + setState({ styles, attributes }) + }) + }, + requires: ['computeStyles'], + }), + [] + ) + + const popperOptions = useMemo( + () => ({ + onFirstUpdate, + placement, + strategy, + modifiers: [...modifiers, updateStateModifier, applyStylesOff], + }), + [onFirstUpdate, placement, strategy, modifiers, updateStateModifier] + ) + + const popperInstanceRef = useRef(null) + + useIsomorphicLayoutEffect(() => { + if (popperInstanceRef.current) { + popperInstanceRef.current.setOptions(popperOptions) + } + }, [popperOptions]) + + useIsomorphicLayoutEffect(() => { + if (referenceElement == null || popperElement == null) { + return + } + const instance = createPopper( + referenceElement, + popperElement, + popperOptions + ) + popperInstanceRef.current = instance + return () => { + instance.destroy() + popperInstanceRef.current = null + } + }, [referenceElement, popperElement, createPopper]) + + return { + state: popperInstanceRef.current?.state ?? null, + styles: state.styles, + attributes: state.attributes, + update: popperInstanceRef.current?.update ?? null, + forceUpdate: popperInstanceRef.current?.forceUpdate ?? null, + } +} diff --git a/components/popper/types/index.d.ts b/components/popper/types/index.d.ts index 3800f31096..c46cc5e483 100644 --- a/components/popper/types/index.d.ts +++ b/components/popper/types/index.d.ts @@ -1,9 +1,14 @@ import * as React from 'react' -import { StrictModifier } from 'react-popper' -import { VirtualElement, Options as PopperOptions } from '@popperjs/core' +import { + VirtualElement, + Options as PopperOptions, + StrictModifiers, +} from '@popperjs/core' type PopperReference = VirtualElement | Element -type ReferenceElement = PopperReference | React.RefObject +type ReferenceElement = + | PopperReference + | React.RefObject export interface PopperProps { /** @@ -15,7 +20,7 @@ export interface PopperProps { /** * A property of the `createPopper` options. See [popper docs](https://popper.js.org/docs/v2/constructors/) */ - modifiers?: StrictModifier[] + modifiers?: StrictModifiers[] /** * Makes the Popper update position when the **Popper content** changes size */ diff --git a/components/portal/package.json b/components/portal/package.json index fcdca8a984..96fc61394f 100644 --- a/components/portal/package.json +++ b/components/portal/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/radio/package.json b/components/radio/package.json index aacba8f28a..c19094a0b2 100644 --- a/components/radio/package.json +++ b/components/radio/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/required/package.json b/components/required/package.json index c8af1c77fa..23ee5307bc 100644 --- a/components/required/package.json +++ b/components/required/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/segmented-control/package.json b/components/segmented-control/package.json index 77d5a81a3f..1220ef4232 100644 --- a/components/segmented-control/package.json +++ b/components/segmented-control/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/select/package.json b/components/select/package.json index 06ad420137..6141b59f63 100644 --- a/components/select/package.json +++ b/components/select/package.json @@ -28,8 +28,8 @@ }, "peerDependencies": { "@dhis2/d2-i18n": "^1", - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/selector-bar/package.json b/components/selector-bar/package.json index a047db248c..015cee8edb 100644 --- a/components/selector-bar/package.json +++ b/components/selector-bar/package.json @@ -28,8 +28,8 @@ }, "peerDependencies": { "@dhis2/d2-i18n": "^1", - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/sharing-dialog/package.json b/components/sharing-dialog/package.json index 9b9320f7a9..9f4d257db6 100644 --- a/components/sharing-dialog/package.json +++ b/components/sharing-dialog/package.json @@ -29,8 +29,8 @@ "peerDependencies": { "@dhis2/app-runtime": "^3", "@dhis2/d2-i18n": "^1", - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/status-icon/package.json b/components/status-icon/package.json index 4728bcd49e..8f5b922eac 100644 --- a/components/status-icon/package.json +++ b/components/status-icon/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/switch/package.json b/components/switch/package.json index fe8458fa46..2706e978f9 100644 --- a/components/switch/package.json +++ b/components/switch/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/tab/package.json b/components/tab/package.json index d8d27a1dc2..1f4d18431d 100644 --- a/components/tab/package.json +++ b/components/tab/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/table/package.json b/components/table/package.json index 78c0a0655e..bdb7f67fb6 100644 --- a/components/table/package.json +++ b/components/table/package.json @@ -28,8 +28,8 @@ }, "peerDependencies": { "@dhis2/d2-i18n": "^1", - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/tag/package.json b/components/tag/package.json index d3423b4ece..b0f073435d 100644 --- a/components/tag/package.json +++ b/components/tag/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/text-area/package.json b/components/text-area/package.json index 1d7e4c09fb..c8924b8a45 100644 --- a/components/text-area/package.json +++ b/components/text-area/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/tooltip/package.json b/components/tooltip/package.json index 1bc46e0412..ab6b94888e 100644 --- a/components/tooltip/package.json +++ b/components/tooltip/package.json @@ -27,8 +27,8 @@ "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js" }, "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/tooltip/types/index.d.ts b/components/tooltip/types/index.d.ts index 7d4792101e..d0c6b2215d 100644 --- a/components/tooltip/types/index.d.ts +++ b/components/tooltip/types/index.d.ts @@ -8,7 +8,7 @@ type TooltipRenderProps = { onFocus: onFocusEvent onMouseOver: OnMouseEvent onMouseOut: OnMouseEvent - ref: React.MutableRefObject + ref: React.RefObject } export type TooltipRenderFunc = ({ onBlur, diff --git a/components/transfer/package.json b/components/transfer/package.json index db0025ef93..47f7c31ad0 100644 --- a/components/transfer/package.json +++ b/components/transfer/package.json @@ -28,8 +28,8 @@ }, "peerDependencies": { "@dhis2/d2-i18n": "^1", - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/components/user-avatar/package.json b/components/user-avatar/package.json index d85cc46ddd..c550e64ecc 100644 --- a/components/user-avatar/package.json +++ b/components/user-avatar/package.json @@ -28,8 +28,8 @@ }, "peerDependencies": { "@dhis2/app-runtime": "^3", - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18", + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19", "styled-jsx": "^4" }, "dependencies": { diff --git a/icons/package.json b/icons/package.json index 105f779ba4..473d3763f6 100644 --- a/icons/package.json +++ b/icons/package.json @@ -35,8 +35,8 @@ "src" ], "peerDependencies": { - "react": "^16.13 || ^18", - "react-dom": "^16.13 || ^18" + "react": "^16.13 || ^18 || ^19", + "react-dom": "^16.13 || ^18 || ^19" }, "dependencies": {}, "devDependencies": { diff --git a/package.json b/package.json index cdb4d4ccb6..e76a1b950e 100644 --- a/package.json +++ b/package.json @@ -66,10 +66,10 @@ "@svgr/cli": "^5.5.0", "@testing-library/cypress": "^10", "@testing-library/dom": "^10.4.0", - "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.0.1", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.2", "@testing-library/react-hooks": "^7.0.1", - "@testing-library/user-event": "^14.5.2", + "@testing-library/user-event": "^14.6.1", "@types/react": "^18", "ast-types": "^0.14.2", "concurrently": "^6.2.1", diff --git a/yarn.lock b/yarn.lock index 695bba2a5f..cbb1bb5009 100644 --- a/yarn.lock +++ b/yarn.lock @@ -196,7 +196,7 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.8.3": version "7.26.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== @@ -262,7 +262,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.18.7", "@babel/generator@^7.25.0", "@babel/generator@^7.25.9", "@babel/generator@^7.26.0", "@babel/generator@^7.7.2": +"@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.18.7", "@babel/generator@^7.25.9", "@babel/generator@^7.26.0", "@babel/generator@^7.7.2": version "7.26.2" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.2.tgz#87b75813bec87916210e5e01939a4c823d6bb74f" integrity sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw== @@ -348,7 +348,7 @@ "@babel/traverse" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.25.0", "@babel/helper-module-transforms@^7.25.2", "@babel/helper-module-transforms@^7.26.0": +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.25.0", "@babel/helper-module-transforms@^7.26.0": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== @@ -408,7 +408,7 @@ "@babel/traverse" "^7.24.7" "@babel/types" "^7.24.7" -"@babel/helper-string-parser@^7.24.8", "@babel/helper-string-parser@^7.25.9": +"@babel/helper-string-parser@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== @@ -432,7 +432,7 @@ "@babel/traverse" "^7.25.0" "@babel/types" "^7.25.0" -"@babel/helpers@^7.12.5", "@babel/helpers@^7.25.0", "@babel/helpers@^7.26.0": +"@babel/helpers@^7.12.5", "@babel/helpers@^7.26.0": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== @@ -450,7 +450,7 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.17.0", "@babel/parser@^7.18.8", "@babel/parser@^7.20.7", "@babel/parser@^7.25.0", "@babel/parser@^7.25.3", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.2", "@babel/parser@^7.7.0", "@babel/parser@^7.9.4": +"@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.17.0", "@babel/parser@^7.18.8", "@babel/parser@^7.20.7", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.2", "@babel/parser@^7.7.0", "@babel/parser@^7.9.4": version "7.26.2" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11" integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ== @@ -1394,7 +1394,7 @@ "@babel/parser" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.9", "@babel/traverse@^7.18.8", "@babel/traverse@^7.18.9", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.25.9", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.9", "@babel/traverse@^7.18.8", "@babel/traverse@^7.18.9", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.3", "@babel/traverse@^7.25.9", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw== @@ -5040,17 +5040,16 @@ picocolors "1.1.1" pretty-format "^27.0.2" -"@testing-library/jest-dom@^6.6.3": - version "6.6.3" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz#26ba906cf928c0f8172e182c6fe214eb4f9f2bd2" - integrity sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA== +"@testing-library/jest-dom@^6.9.1": + version "6.9.1" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz#7613a04e146dd2976d24ddf019730d57a89d56c2" + integrity sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA== dependencies: "@adobe/css-tools" "^4.4.0" aria-query "^5.0.0" - chalk "^3.0.0" css.escape "^1.5.1" dom-accessibility-api "^0.6.3" - lodash "^4.17.21" + picocolors "^1.1.1" redent "^3.0.0" "@testing-library/react-hooks@^7.0.1": @@ -5064,17 +5063,17 @@ "@types/react-test-renderer" ">=16.9.0" react-error-boundary "^3.1.0" -"@testing-library/react@^16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.0.1.tgz#29c0ee878d672703f5e7579f239005e4e0faa875" - integrity sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg== +"@testing-library/react@^16.3.2": + version "16.3.2" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.3.2.tgz#672883b7acb8e775fc0492d9e9d25e06e89786d0" + integrity sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g== dependencies: "@babel/runtime" "^7.12.5" -"@testing-library/user-event@^14.5.2": - version "14.5.2" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.5.2.tgz#db7257d727c891905947bd1c1a99da20e03c2ebd" - integrity sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ== +"@testing-library/user-event@^14.6.1": + version "14.6.1" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.6.1.tgz#13e09a32d7a8b7060fe38304788ebf4197cd2149" + integrity sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw== "@tootallnate/once@1": version "1.1.2" @@ -15121,7 +15120,7 @@ perfy@^1.1.5: resolved "https://registry.npmjs.org/perfy/-/perfy-1.1.5.tgz" integrity sha512-/ieVBpMaPTJf83YTUl2TImsSwMEJ23qGP2w27pE6aX+NrB/ZRGqOnQZpl7J719yFwd+ebDiHguPNFeMSamyK7w== -picocolors@1.1.1, picocolors@^1.0.0, picocolors@^1.1.0: +picocolors@1.1.1, picocolors@^1.0.0, picocolors@^1.1.0, picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== @@ -16370,7 +16369,7 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1: "@types/react" "*" prop-types "^15.6.2" -react-popper@^2.2.5, react-popper@^2.3.0: +react-popper@^2.2.5: version "2.3.0" resolved "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz" integrity sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q== @@ -19131,11 +19130,6 @@ underscore@~1.13.2: resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz" integrity sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g== -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - undici-types@~6.19.8: version "6.19.8" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02"