@atlaskit/app-provider 1.8.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/dist/cjs/theme-provider.js +28 -16
- package/dist/es2019/theme-provider.js +13 -6
- package/dist/esm/theme-provider.js +29 -17
- package/dist/types/app-provider.d.ts +1 -1
- package/dist/types/router-link-provider/index.d.ts +1 -1
- package/dist/types/theme-provider.d.ts +2 -2
- package/dist/types-ts4.5/app-provider.d.ts +1 -1
- package/dist/types-ts4.5/router-link-provider/index.d.ts +1 -1
- package/dist/types-ts4.5/theme-provider.d.ts +2 -2
- package/package.json +10 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# @atlaskit/app-provider
|
|
2
2
|
|
|
3
|
+
## 2.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#130763](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/130763)
|
|
8
|
+
[`42fdfd64b606b`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/42fdfd64b606b) -
|
|
9
|
+
useTheme now falls back to reading theme state from the DOM for cases where the
|
|
10
|
+
AppProvider/ThemeProvider is not in use. This allows us to replace all usage of `useThemeObserver`
|
|
11
|
+
with `useTheme` in other Design System packages without issue.
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Updated dependencies
|
|
16
|
+
|
|
17
|
+
## 2.0.0
|
|
18
|
+
|
|
19
|
+
### Major Changes
|
|
20
|
+
|
|
21
|
+
- [#117363](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/117363)
|
|
22
|
+
[`10a0f7f6c2027`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/10a0f7f6c2027) -
|
|
23
|
+
This package's `peerDependencies` have been adjusted for `react` and/or `react-dom` to reflect the
|
|
24
|
+
status of only supporting React 18 going forward. No explicit breaking change to React support has
|
|
25
|
+
been made in this release, but this is to signify going forward, breaking changes for React 16 or
|
|
26
|
+
React 17 may come via non-major semver releases.
|
|
27
|
+
|
|
28
|
+
Please refer this community post for more details:
|
|
29
|
+
https://community.developer.atlassian.com/t/rfc-78-dropping-support-for-react-16-and-rendering-in-a-react-18-concurrent-root-in-jira-and-confluence/87026
|
|
30
|
+
|
|
31
|
+
### Patch Changes
|
|
32
|
+
|
|
33
|
+
- Updated dependencies
|
|
34
|
+
|
|
3
35
|
## 1.8.1
|
|
4
36
|
|
|
5
37
|
### Patch Changes
|
|
@@ -80,11 +80,23 @@ function useSetColorMode() {
|
|
|
80
80
|
* Returns the current theme settings when inside the app provider.
|
|
81
81
|
*/
|
|
82
82
|
function useTheme() {
|
|
83
|
-
var
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
83
|
+
var theme = (0, _react.useContext)(ThemeContext);
|
|
84
|
+
var _useState = (0, _react.useState)(theme || (0, _tokens.getGlobalTheme)()),
|
|
85
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
86
|
+
resolvedTheme = _useState2[0],
|
|
87
|
+
setResolvedTheme = _useState2[1];
|
|
88
|
+
(0, _react.useEffect)(function () {
|
|
89
|
+
// We are using theme from context so no need to reference the DOM
|
|
90
|
+
if (theme) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
var observer = new _tokens.ThemeMutationObserver(setResolvedTheme);
|
|
94
|
+
observer.observe();
|
|
95
|
+
return function () {
|
|
96
|
+
return observer.disconnect();
|
|
97
|
+
};
|
|
98
|
+
}, [theme]);
|
|
99
|
+
return resolvedTheme;
|
|
88
100
|
}
|
|
89
101
|
|
|
90
102
|
/**
|
|
@@ -121,20 +133,20 @@ function ThemeProvider(_ref) {
|
|
|
121
133
|
var children = _ref.children,
|
|
122
134
|
defaultColorMode = _ref.defaultColorMode,
|
|
123
135
|
defaultTheme = _ref.defaultTheme;
|
|
124
|
-
var
|
|
125
|
-
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
126
|
-
chosenColorMode = _useState2[0],
|
|
127
|
-
setChosenColorMode = _useState2[1];
|
|
128
|
-
var _useState3 = (0, _react.useState)(getReconciledColorMode(defaultColorMode)),
|
|
136
|
+
var _useState3 = (0, _react.useState)(defaultColorMode),
|
|
129
137
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
var _useState5 = (0, _react.useState)(
|
|
138
|
+
chosenColorMode = _useState4[0],
|
|
139
|
+
setChosenColorMode = _useState4[1];
|
|
140
|
+
var _useState5 = (0, _react.useState)(getReconciledColorMode(defaultColorMode)),
|
|
141
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
142
|
+
reconciledColorMode = _useState6[0],
|
|
143
|
+
setReconciledColorMode = _useState6[1];
|
|
144
|
+
var _useState7 = (0, _react.useState)(function () {
|
|
133
145
|
return _objectSpread(_objectSpread({}, defaultThemeSettings()), defaultTheme);
|
|
134
146
|
}),
|
|
135
|
-
|
|
136
|
-
theme =
|
|
137
|
-
setTheme =
|
|
147
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
148
|
+
theme = _useState8[0],
|
|
149
|
+
setTheme = _useState8[1];
|
|
138
150
|
var setColorMode = (0, _react.useCallback)(function (colorMode) {
|
|
139
151
|
setChosenColorMode(colorMode);
|
|
140
152
|
setReconciledColorMode(getReconciledColorMode(colorMode));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';
|
|
2
2
|
import { bind } from 'bind-event-listener';
|
|
3
3
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
4
|
-
import { setGlobalTheme } from '@atlaskit/tokens';
|
|
4
|
+
import { getGlobalTheme, setGlobalTheme, ThemeMutationObserver } from '@atlaskit/tokens';
|
|
5
5
|
const defaultThemeSettings = () => ({
|
|
6
6
|
dark: 'dark',
|
|
7
7
|
light: 'light',
|
|
@@ -57,11 +57,18 @@ export function useSetColorMode() {
|
|
|
57
57
|
* Returns the current theme settings when inside the app provider.
|
|
58
58
|
*/
|
|
59
59
|
export function useTheme() {
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
60
|
+
const theme = useContext(ThemeContext);
|
|
61
|
+
const [resolvedTheme, setResolvedTheme] = useState(theme || getGlobalTheme());
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
// We are using theme from context so no need to reference the DOM
|
|
64
|
+
if (theme) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const observer = new ThemeMutationObserver(setResolvedTheme);
|
|
68
|
+
observer.observe();
|
|
69
|
+
return () => observer.disconnect();
|
|
70
|
+
}, [theme]);
|
|
71
|
+
return resolvedTheme;
|
|
65
72
|
}
|
|
66
73
|
|
|
67
74
|
/**
|
|
@@ -7,7 +7,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
7
7
|
import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';
|
|
8
8
|
import { bind } from 'bind-event-listener';
|
|
9
9
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
10
|
-
import { setGlobalTheme } from '@atlaskit/tokens';
|
|
10
|
+
import { getGlobalTheme, setGlobalTheme, ThemeMutationObserver } from '@atlaskit/tokens';
|
|
11
11
|
var defaultThemeSettings = function defaultThemeSettings() {
|
|
12
12
|
return {
|
|
13
13
|
dark: 'dark',
|
|
@@ -65,11 +65,23 @@ export function useSetColorMode() {
|
|
|
65
65
|
* Returns the current theme settings when inside the app provider.
|
|
66
66
|
*/
|
|
67
67
|
export function useTheme() {
|
|
68
|
-
var
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
68
|
+
var theme = useContext(ThemeContext);
|
|
69
|
+
var _useState = useState(theme || getGlobalTheme()),
|
|
70
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
71
|
+
resolvedTheme = _useState2[0],
|
|
72
|
+
setResolvedTheme = _useState2[1];
|
|
73
|
+
useEffect(function () {
|
|
74
|
+
// We are using theme from context so no need to reference the DOM
|
|
75
|
+
if (theme) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
var observer = new ThemeMutationObserver(setResolvedTheme);
|
|
79
|
+
observer.observe();
|
|
80
|
+
return function () {
|
|
81
|
+
return observer.disconnect();
|
|
82
|
+
};
|
|
83
|
+
}, [theme]);
|
|
84
|
+
return resolvedTheme;
|
|
73
85
|
}
|
|
74
86
|
|
|
75
87
|
/**
|
|
@@ -106,20 +118,20 @@ function ThemeProvider(_ref) {
|
|
|
106
118
|
var children = _ref.children,
|
|
107
119
|
defaultColorMode = _ref.defaultColorMode,
|
|
108
120
|
defaultTheme = _ref.defaultTheme;
|
|
109
|
-
var
|
|
110
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
111
|
-
chosenColorMode = _useState2[0],
|
|
112
|
-
setChosenColorMode = _useState2[1];
|
|
113
|
-
var _useState3 = useState(getReconciledColorMode(defaultColorMode)),
|
|
121
|
+
var _useState3 = useState(defaultColorMode),
|
|
114
122
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
var _useState5 = useState(
|
|
123
|
+
chosenColorMode = _useState4[0],
|
|
124
|
+
setChosenColorMode = _useState4[1];
|
|
125
|
+
var _useState5 = useState(getReconciledColorMode(defaultColorMode)),
|
|
126
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
127
|
+
reconciledColorMode = _useState6[0],
|
|
128
|
+
setReconciledColorMode = _useState6[1];
|
|
129
|
+
var _useState7 = useState(function () {
|
|
118
130
|
return _objectSpread(_objectSpread({}, defaultThemeSettings()), defaultTheme);
|
|
119
131
|
}),
|
|
120
|
-
|
|
121
|
-
theme =
|
|
122
|
-
setTheme =
|
|
132
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
133
|
+
theme = _useState8[0],
|
|
134
|
+
setTheme = _useState8[1];
|
|
123
135
|
var setColorMode = useCallback(function (colorMode) {
|
|
124
136
|
setChosenColorMode(colorMode);
|
|
125
137
|
setReconciledColorMode(getReconciledColorMode(colorMode));
|
|
@@ -35,5 +35,5 @@ interface AppProviderProps {
|
|
|
35
35
|
*
|
|
36
36
|
* Place it at the root of your application.
|
|
37
37
|
*/
|
|
38
|
-
declare function AppProvider({ children, defaultColorMode, defaultTheme, routerLinkComponent, UNSAFE_isThemingDisabled, }: AppProviderProps): JSX.Element;
|
|
38
|
+
declare function AppProvider({ children, defaultColorMode, defaultTheme, routerLinkComponent, UNSAFE_isThemingDisabled, }: AppProviderProps): React.JSX.Element;
|
|
39
39
|
export default AppProvider;
|
|
@@ -28,7 +28,7 @@ export declare function useSetColorMode(): (value: ColorMode) => void;
|
|
|
28
28
|
*
|
|
29
29
|
* Returns the current theme settings when inside the app provider.
|
|
30
30
|
*/
|
|
31
|
-
export declare function useTheme(): Theme
|
|
31
|
+
export declare function useTheme(): Partial<Theme>;
|
|
32
32
|
/**
|
|
33
33
|
* __useSetTheme()__
|
|
34
34
|
*
|
|
@@ -47,5 +47,5 @@ interface ThemeProviderProps {
|
|
|
47
47
|
*
|
|
48
48
|
* @internal
|
|
49
49
|
*/
|
|
50
|
-
declare function ThemeProvider({ children, defaultColorMode, defaultTheme }: ThemeProviderProps): JSX.Element;
|
|
50
|
+
declare function ThemeProvider({ children, defaultColorMode, defaultTheme }: ThemeProviderProps): React.JSX.Element;
|
|
51
51
|
export default ThemeProvider;
|
|
@@ -35,5 +35,5 @@ interface AppProviderProps {
|
|
|
35
35
|
*
|
|
36
36
|
* Place it at the root of your application.
|
|
37
37
|
*/
|
|
38
|
-
declare function AppProvider({ children, defaultColorMode, defaultTheme, routerLinkComponent, UNSAFE_isThemingDisabled, }: AppProviderProps): JSX.Element;
|
|
38
|
+
declare function AppProvider({ children, defaultColorMode, defaultTheme, routerLinkComponent, UNSAFE_isThemingDisabled, }: AppProviderProps): React.JSX.Element;
|
|
39
39
|
export default AppProvider;
|
|
@@ -28,7 +28,7 @@ export declare function useSetColorMode(): (value: ColorMode) => void;
|
|
|
28
28
|
*
|
|
29
29
|
* Returns the current theme settings when inside the app provider.
|
|
30
30
|
*/
|
|
31
|
-
export declare function useTheme(): Theme
|
|
31
|
+
export declare function useTheme(): Partial<Theme>;
|
|
32
32
|
/**
|
|
33
33
|
* __useSetTheme()__
|
|
34
34
|
*
|
|
@@ -47,5 +47,5 @@ interface ThemeProviderProps {
|
|
|
47
47
|
*
|
|
48
48
|
* @internal
|
|
49
49
|
*/
|
|
50
|
-
declare function ThemeProvider({ children, defaultColorMode, defaultTheme }: ThemeProviderProps): JSX.Element;
|
|
50
|
+
declare function ThemeProvider({ children, defaultColorMode, defaultTheme }: ThemeProviderProps): React.JSX.Element;
|
|
51
51
|
export default ThemeProvider;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/app-provider",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "A top level provider for the Design System.",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -39,21 +39,21 @@
|
|
|
39
39
|
".": "./src/index.tsx"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@atlaskit/platform-feature-flags": "^1.
|
|
43
|
-
"@atlaskit/tokens": "^
|
|
42
|
+
"@atlaskit/platform-feature-flags": "^1.1.0",
|
|
43
|
+
"@atlaskit/tokens": "^4.5.0",
|
|
44
44
|
"@babel/runtime": "^7.0.0",
|
|
45
45
|
"bind-event-listener": "^3.0.0"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
|
-
"react": "^
|
|
48
|
+
"react": "^18.2.0"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@af/visual-regression": "
|
|
52
|
-
"@atlaskit/dropdown-menu": "^
|
|
53
|
-
"@atlaskit/ds-lib": "^
|
|
54
|
-
"@atlaskit/primitives": "^
|
|
55
|
-
"@atlaskit/
|
|
56
|
-
"@
|
|
51
|
+
"@af/visual-regression": "^1.3.0",
|
|
52
|
+
"@atlaskit/dropdown-menu": "^14.0.0",
|
|
53
|
+
"@atlaskit/ds-lib": "^4.0.0",
|
|
54
|
+
"@atlaskit/primitives": "^14.2.0",
|
|
55
|
+
"@atlaskit/visual-regression": "^0.10.0",
|
|
56
|
+
"@atlassian/ssr-tests": "^0.2.0",
|
|
57
57
|
"@testing-library/react": "^13.4.0",
|
|
58
58
|
"@testing-library/user-event": "^14.4.3",
|
|
59
59
|
"react-dom": "^18.2.0",
|