@atlaskit/app-provider 3.3.3 → 4.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 +33 -0
- package/dist/cjs/app-provider.js +4 -2
- package/dist/cjs/context.js +11 -1
- package/dist/cjs/theme-provider/index.js +2 -1
- package/dist/es2019/app-provider.js +5 -3
- package/dist/es2019/context.js +10 -0
- package/dist/es2019/theme-provider/index.js +3 -2
- package/dist/esm/app-provider.js +5 -3
- package/dist/esm/context.js +10 -0
- package/dist/esm/theme-provider/index.js +3 -2
- package/dist/types/context.d.ts +7 -0
- package/dist/types-ts4.5/context.d.ts +7 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
# @atlaskit/app-provider
|
|
2
2
|
|
|
3
|
+
## 4.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`233c7dede572a`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/233c7dede572a) -
|
|
8
|
+
Fixes a bug with `AppProvider` where under certain conditions, can cause an infinite loop
|
|
9
|
+
switching between light/dark modes.
|
|
10
|
+
|
|
11
|
+
This was happening because of this check:
|
|
12
|
+
`const isRootThemeProvider = isInsideAppProvider && !isInsideThemeProvider;`
|
|
13
|
+
|
|
14
|
+
When an `AppProvider` has `UNSAFE_isThemingDisabled`, it avoids mounting it's root
|
|
15
|
+
`ThemeProvider`. However, any subsequently nested `ThemeProvider`s would become the root theme
|
|
16
|
+
provider of `AppProvider`, which uninintentionally enables global theming functionality.
|
|
17
|
+
|
|
18
|
+
The fix is to allow `ThemeProvider` to detect when a wrapping `AppProvider` has theming disabled,
|
|
19
|
+
which allows it to accurately determine if it is the root theme provider before enabling global
|
|
20
|
+
theming.
|
|
21
|
+
|
|
22
|
+
## 4.0.0
|
|
23
|
+
|
|
24
|
+
### Major Changes
|
|
25
|
+
|
|
26
|
+
- [`2abd451d54eb2`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/2abd451d54eb2) -
|
|
27
|
+
Removes atlassian-legacy-light/dark color themes from the tokens package. These themes are unused
|
|
28
|
+
and non-functional in terms of color contrast. As a result some primitive components may recieve
|
|
29
|
+
modern fallback color values in some scenarios, however these are inline with the latest token
|
|
30
|
+
themes.
|
|
31
|
+
|
|
32
|
+
### Patch Changes
|
|
33
|
+
|
|
34
|
+
- Updated dependencies
|
|
35
|
+
|
|
3
36
|
## 3.3.3
|
|
4
37
|
|
|
5
38
|
### Patch Changes
|
package/dist/cjs/app-provider.js
CHANGED
|
@@ -32,9 +32,11 @@ function AppProvider(_ref) {
|
|
|
32
32
|
}, children);
|
|
33
33
|
return /*#__PURE__*/_react.default.createElement(_context.InsideAppProviderContext.Provider, {
|
|
34
34
|
value: true
|
|
35
|
-
}, UNSAFE_isThemingDisabled ? routerLinkProvider : /*#__PURE__*/_react.default.createElement(
|
|
35
|
+
}, UNSAFE_isThemingDisabled ? routerLinkProvider : /*#__PURE__*/_react.default.createElement(_context.AppProviderThemingEnabledContext.Provider, {
|
|
36
|
+
value: true
|
|
37
|
+
}, /*#__PURE__*/_react.default.createElement(_themeProvider.default, {
|
|
36
38
|
defaultColorMode: defaultColorMode,
|
|
37
39
|
defaultTheme: defaultTheme
|
|
38
|
-
}, routerLinkProvider));
|
|
40
|
+
}, routerLinkProvider)));
|
|
39
41
|
}
|
|
40
42
|
var _default = exports.default = AppProvider;
|
package/dist/cjs/context.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.useIsInsideAppProvider = exports.InsideAppProviderContext = void 0;
|
|
6
|
+
exports.useIsInsideAppProvider = exports.useIsAppProviderThemingEnabled = exports.InsideAppProviderContext = exports.AppProviderThemingEnabledContext = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
/**
|
|
9
9
|
* __Inside app provider context__
|
|
@@ -13,4 +13,14 @@ var _react = require("react");
|
|
|
13
13
|
var InsideAppProviderContext = exports.InsideAppProviderContext = /*#__PURE__*/(0, _react.createContext)(false);
|
|
14
14
|
var useIsInsideAppProvider = exports.useIsInsideAppProvider = function useIsInsideAppProvider() {
|
|
15
15
|
return (0, _react.useContext)(InsideAppProviderContext);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* __App provider theming enabled context__
|
|
20
|
+
*
|
|
21
|
+
* A context that indicates if the AppProvider is enabled for theming.
|
|
22
|
+
*/
|
|
23
|
+
var AppProviderThemingEnabledContext = exports.AppProviderThemingEnabledContext = /*#__PURE__*/(0, _react.createContext)(false);
|
|
24
|
+
var useIsAppProviderThemingEnabled = exports.useIsAppProviderThemingEnabled = function useIsAppProviderThemingEnabled() {
|
|
25
|
+
return (0, _react.useContext)(AppProviderThemingEnabledContext);
|
|
16
26
|
};
|
|
@@ -82,8 +82,9 @@ function ThemeProvider(_ref) {
|
|
|
82
82
|
}, []);
|
|
83
83
|
var lastSetGlobalThemePromiseRef = (0, _react.useRef)(null);
|
|
84
84
|
var isInsideAppProvider = (0, _context3.useIsInsideAppProvider)();
|
|
85
|
+
var isAppProviderThemingEnabled = (0, _context3.useIsAppProviderThemingEnabled)();
|
|
85
86
|
var isInsideThemeProvider = (0, _useIsInsideThemeProvider.useIsInsideThemeProvider)();
|
|
86
|
-
var isRootThemeProvider = isInsideAppProvider && !isInsideThemeProvider;
|
|
87
|
+
var isRootThemeProvider = isInsideAppProvider && !isInsideThemeProvider && isAppProviderThemingEnabled;
|
|
87
88
|
var shouldUseGlobalTheming =
|
|
88
89
|
/**
|
|
89
90
|
* When not behind feature flag, partially revert to legacy behavior.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { InsideAppProviderContext, useIsInsideAppProvider } from './context';
|
|
2
|
+
import { AppProviderThemingEnabledContext, InsideAppProviderContext, useIsInsideAppProvider } from './context';
|
|
3
3
|
import RouterLinkProvider from './router-link-provider';
|
|
4
4
|
import ThemeProvider from './theme-provider';
|
|
5
5
|
/**
|
|
@@ -25,9 +25,11 @@ function AppProvider({
|
|
|
25
25
|
}, children);
|
|
26
26
|
return /*#__PURE__*/React.createElement(InsideAppProviderContext.Provider, {
|
|
27
27
|
value: true
|
|
28
|
-
}, UNSAFE_isThemingDisabled ? routerLinkProvider : /*#__PURE__*/React.createElement(
|
|
28
|
+
}, UNSAFE_isThemingDisabled ? routerLinkProvider : /*#__PURE__*/React.createElement(AppProviderThemingEnabledContext.Provider, {
|
|
29
|
+
value: true
|
|
30
|
+
}, /*#__PURE__*/React.createElement(ThemeProvider, {
|
|
29
31
|
defaultColorMode: defaultColorMode,
|
|
30
32
|
defaultTheme: defaultTheme
|
|
31
|
-
}, routerLinkProvider));
|
|
33
|
+
}, routerLinkProvider)));
|
|
32
34
|
}
|
|
33
35
|
export default AppProvider;
|
package/dist/es2019/context.js
CHANGED
|
@@ -8,4 +8,14 @@ import { createContext, useContext } from 'react';
|
|
|
8
8
|
export const InsideAppProviderContext = /*#__PURE__*/createContext(false);
|
|
9
9
|
export const useIsInsideAppProvider = () => {
|
|
10
10
|
return useContext(InsideAppProviderContext);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* __App provider theming enabled context__
|
|
15
|
+
*
|
|
16
|
+
* A context that indicates if the AppProvider is enabled for theming.
|
|
17
|
+
*/
|
|
18
|
+
export const AppProviderThemingEnabledContext = /*#__PURE__*/createContext(false);
|
|
19
|
+
export const useIsAppProviderThemingEnabled = () => {
|
|
20
|
+
return useContext(AppProviderThemingEnabledContext);
|
|
11
21
|
};
|
|
@@ -6,7 +6,7 @@ import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
|
6
6
|
import { bind } from 'bind-event-listener';
|
|
7
7
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
8
8
|
import { getThemeHtmlAttrs, setGlobalTheme, SUBTREE_THEME_ATTRIBUTE } from '@atlaskit/tokens';
|
|
9
|
-
import { useIsInsideAppProvider } from '../context';
|
|
9
|
+
import { useIsAppProviderThemingEnabled, useIsInsideAppProvider } from '../context';
|
|
10
10
|
import { ColorModeContext, SetColorModeContext } from './context/color-mode';
|
|
11
11
|
import { InsideThemeProviderContext } from './context/inside-theme-provider';
|
|
12
12
|
import { SetThemeContext, ThemeContext } from './context/theme';
|
|
@@ -60,8 +60,9 @@ function ThemeProvider({
|
|
|
60
60
|
}, []);
|
|
61
61
|
const lastSetGlobalThemePromiseRef = useRef(null);
|
|
62
62
|
const isInsideAppProvider = useIsInsideAppProvider();
|
|
63
|
+
const isAppProviderThemingEnabled = useIsAppProviderThemingEnabled();
|
|
63
64
|
const isInsideThemeProvider = useIsInsideThemeProvider();
|
|
64
|
-
const isRootThemeProvider = isInsideAppProvider && !isInsideThemeProvider;
|
|
65
|
+
const isRootThemeProvider = isInsideAppProvider && !isInsideThemeProvider && isAppProviderThemingEnabled;
|
|
65
66
|
const shouldUseGlobalTheming =
|
|
66
67
|
/**
|
|
67
68
|
* When not behind feature flag, partially revert to legacy behavior.
|
package/dist/esm/app-provider.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { InsideAppProviderContext, useIsInsideAppProvider } from './context';
|
|
2
|
+
import { AppProviderThemingEnabledContext, InsideAppProviderContext, useIsInsideAppProvider } from './context';
|
|
3
3
|
import RouterLinkProvider from './router-link-provider';
|
|
4
4
|
import ThemeProvider from './theme-provider';
|
|
5
5
|
/**
|
|
@@ -25,9 +25,11 @@ function AppProvider(_ref) {
|
|
|
25
25
|
}, children);
|
|
26
26
|
return /*#__PURE__*/React.createElement(InsideAppProviderContext.Provider, {
|
|
27
27
|
value: true
|
|
28
|
-
}, UNSAFE_isThemingDisabled ? routerLinkProvider : /*#__PURE__*/React.createElement(
|
|
28
|
+
}, UNSAFE_isThemingDisabled ? routerLinkProvider : /*#__PURE__*/React.createElement(AppProviderThemingEnabledContext.Provider, {
|
|
29
|
+
value: true
|
|
30
|
+
}, /*#__PURE__*/React.createElement(ThemeProvider, {
|
|
29
31
|
defaultColorMode: defaultColorMode,
|
|
30
32
|
defaultTheme: defaultTheme
|
|
31
|
-
}, routerLinkProvider));
|
|
33
|
+
}, routerLinkProvider)));
|
|
32
34
|
}
|
|
33
35
|
export default AppProvider;
|
package/dist/esm/context.js
CHANGED
|
@@ -8,4 +8,14 @@ import { createContext, useContext } from 'react';
|
|
|
8
8
|
export var InsideAppProviderContext = /*#__PURE__*/createContext(false);
|
|
9
9
|
export var useIsInsideAppProvider = function useIsInsideAppProvider() {
|
|
10
10
|
return useContext(InsideAppProviderContext);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* __App provider theming enabled context__
|
|
15
|
+
*
|
|
16
|
+
* A context that indicates if the AppProvider is enabled for theming.
|
|
17
|
+
*/
|
|
18
|
+
export var AppProviderThemingEnabledContext = /*#__PURE__*/createContext(false);
|
|
19
|
+
export var useIsAppProviderThemingEnabled = function useIsAppProviderThemingEnabled() {
|
|
20
|
+
return useContext(AppProviderThemingEnabledContext);
|
|
11
21
|
};
|
|
@@ -12,7 +12,7 @@ import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
|
12
12
|
import { bind } from 'bind-event-listener';
|
|
13
13
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
14
14
|
import { getThemeHtmlAttrs, setGlobalTheme, SUBTREE_THEME_ATTRIBUTE } from '@atlaskit/tokens';
|
|
15
|
-
import { useIsInsideAppProvider } from '../context';
|
|
15
|
+
import { useIsAppProviderThemingEnabled, useIsInsideAppProvider } from '../context';
|
|
16
16
|
import { ColorModeContext, SetColorModeContext } from './context/color-mode';
|
|
17
17
|
import { InsideThemeProviderContext } from './context/inside-theme-provider';
|
|
18
18
|
import { SetThemeContext, ThemeContext } from './context/theme';
|
|
@@ -73,8 +73,9 @@ function ThemeProvider(_ref) {
|
|
|
73
73
|
}, []);
|
|
74
74
|
var lastSetGlobalThemePromiseRef = useRef(null);
|
|
75
75
|
var isInsideAppProvider = useIsInsideAppProvider();
|
|
76
|
+
var isAppProviderThemingEnabled = useIsAppProviderThemingEnabled();
|
|
76
77
|
var isInsideThemeProvider = useIsInsideThemeProvider();
|
|
77
|
-
var isRootThemeProvider = isInsideAppProvider && !isInsideThemeProvider;
|
|
78
|
+
var isRootThemeProvider = isInsideAppProvider && !isInsideThemeProvider && isAppProviderThemingEnabled;
|
|
78
79
|
var shouldUseGlobalTheming =
|
|
79
80
|
/**
|
|
80
81
|
* When not behind feature flag, partially revert to legacy behavior.
|
package/dist/types/context.d.ts
CHANGED
|
@@ -5,3 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export declare const InsideAppProviderContext: import("react").Context<boolean>;
|
|
7
7
|
export declare const useIsInsideAppProvider: () => boolean;
|
|
8
|
+
/**
|
|
9
|
+
* __App provider theming enabled context__
|
|
10
|
+
*
|
|
11
|
+
* A context that indicates if the AppProvider is enabled for theming.
|
|
12
|
+
*/
|
|
13
|
+
export declare const AppProviderThemingEnabledContext: import("react").Context<boolean>;
|
|
14
|
+
export declare const useIsAppProviderThemingEnabled: () => boolean;
|
|
@@ -5,3 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export declare const InsideAppProviderContext: import("react").Context<boolean>;
|
|
7
7
|
export declare const useIsInsideAppProvider: () => boolean;
|
|
8
|
+
/**
|
|
9
|
+
* __App provider theming enabled context__
|
|
10
|
+
*
|
|
11
|
+
* A context that indicates if the AppProvider is enabled for theming.
|
|
12
|
+
*/
|
|
13
|
+
export declare const AppProviderThemingEnabledContext: import("react").Context<boolean>;
|
|
14
|
+
export declare const useIsAppProviderThemingEnabled: () => boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/app-provider",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.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",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"@atlaskit/browser-apis": "^0.0.1",
|
|
39
39
|
"@atlaskit/css": "^0.19.0",
|
|
40
40
|
"@atlaskit/platform-feature-flags": "^1.1.0",
|
|
41
|
-
"@atlaskit/tokens": "^
|
|
41
|
+
"@atlaskit/tokens": "^11.0.0",
|
|
42
42
|
"@babel/runtime": "^7.0.0",
|
|
43
43
|
"bind-event-listener": "^3.0.0"
|
|
44
44
|
},
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@af/visual-regression": "workspace:^",
|
|
50
50
|
"@atlaskit/dropdown-menu": "^16.4.0",
|
|
51
|
-
"@atlaskit/primitives": "^
|
|
51
|
+
"@atlaskit/primitives": "^18.0.0",
|
|
52
52
|
"@atlassian/feature-flags-test-utils": "^1.0.0",
|
|
53
53
|
"@atlassian/ssr-tests": "workspace:^",
|
|
54
54
|
"@atlassian/testing-library": "^0.4.0",
|