@sanity/ui 2.3.6-canary.2 → 2.3.6-canary.4
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/dist/index.compiled.mjs +726 -391
- package/dist/index.compiled.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.esm.js +162 -163
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +162 -163
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +162 -163
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/core/components/autocomplete/autocomplete.tsx +30 -33
- package/src/core/components/dialog/dialog.tsx +4 -2
- package/src/core/components/menu/menu.tsx +3 -1
- package/src/core/components/menu/menuGroup.tsx +2 -1
- package/src/core/components/menu/menuItem.tsx +4 -2
- package/src/core/components/toast/toastProvider.tsx +26 -24
- package/src/core/components/tree/treeItem.styles.ts +21 -0
- package/src/core/components/tree/treeItem.tsx +31 -44
- package/src/core/primitives/avatar/avatar.tsx +8 -12
- package/src/core/primitives/avatar/avatarCounter.tsx +10 -15
- package/src/core/primitives/avatar/avatarStack.tsx +1 -4
- package/src/core/primitives/popover/popover.tsx +41 -44
- package/src/core/primitives/tooltip/tooltip.tsx +8 -5
- package/src/core/theme/themeProvider.tsx +2 -2
- package/src/core/utils/elementQuery/elementQuery.tsx +4 -3
- package/src/core/utils/layer/getLayerContext.test.ts +0 -4
- package/src/core/utils/layer/layer.test.tsx +0 -2
- package/src/core/utils/layer/layerProvider.tsx +32 -41
- package/src/core/utils/layer/types.ts +0 -1
|
@@ -27,8 +27,8 @@ export function ThemeProvider(props: ThemeProviderProps): React.ReactElement {
|
|
|
27
27
|
const {children} = props
|
|
28
28
|
const parentTheme = useContext(ThemeContext)
|
|
29
29
|
const scheme = props.scheme ?? (parentTheme?.scheme || 'light')
|
|
30
|
-
const rootTheme = parentTheme?.theme || null
|
|
31
|
-
const tone = parentTheme?.tone || 'default'
|
|
30
|
+
const rootTheme = props.theme ?? (parentTheme?.theme || null)
|
|
31
|
+
const tone = props.tone ?? (parentTheme?.tone || 'default')
|
|
32
32
|
|
|
33
33
|
const themeContext: ThemeContextValue | null = useMemo(() => {
|
|
34
34
|
if (!rootTheme) return null
|
|
@@ -21,15 +21,16 @@ export const ElementQuery = forwardRef(function ElementQuery(
|
|
|
21
21
|
forwardedRef: React.ForwardedRef<HTMLDivElement>,
|
|
22
22
|
) {
|
|
23
23
|
const theme = useTheme_v2()
|
|
24
|
-
const {children, media
|
|
24
|
+
const {children, media: _media, ...restProps} = props
|
|
25
|
+
const media = _media ?? theme.media
|
|
25
26
|
|
|
26
27
|
const ref = useRef<HTMLDivElement | null>(null)
|
|
27
28
|
const [element, setElement] = useState<HTMLDivElement | null>(null)
|
|
28
29
|
const elementSize = useElementSize(element)
|
|
29
30
|
const width = useMemo(() => elementSize?.border.width ?? window.innerWidth, [elementSize])
|
|
30
31
|
|
|
31
|
-
const max =
|
|
32
|
-
const min =
|
|
32
|
+
const max = findMaxBreakpoints(media, width)
|
|
33
|
+
const min = findMinBreakpoints(media, width)
|
|
33
34
|
|
|
34
35
|
useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)
|
|
35
36
|
|
|
@@ -8,9 +8,6 @@ describe('getLayerContext', () => {
|
|
|
8
8
|
version: 0.0,
|
|
9
9
|
isTopLayer: true,
|
|
10
10
|
level: 0,
|
|
11
|
-
registerChild: () => () => {
|
|
12
|
-
//
|
|
13
|
-
},
|
|
14
11
|
size: 0,
|
|
15
12
|
zIndex: 0,
|
|
16
13
|
}
|
|
@@ -21,7 +18,6 @@ describe('getLayerContext', () => {
|
|
|
21
18
|
version: 0.0,
|
|
22
19
|
isTopLayer: true,
|
|
23
20
|
level: 0,
|
|
24
|
-
registerChild: expect.any(Function),
|
|
25
21
|
size: 0,
|
|
26
22
|
zIndex: 0,
|
|
27
23
|
})
|
|
@@ -24,7 +24,6 @@ describe('utils/layer', () => {
|
|
|
24
24
|
version: 0.0,
|
|
25
25
|
isTopLayer: true,
|
|
26
26
|
level: 0,
|
|
27
|
-
registerChild: () => () => undefined,
|
|
28
27
|
size: 0,
|
|
29
28
|
zIndex: 0,
|
|
30
29
|
}
|
|
@@ -40,7 +39,6 @@ describe('utils/layer', () => {
|
|
|
40
39
|
|
|
41
40
|
expect(log.mock.calls[0][0].version).toBe(0.0)
|
|
42
41
|
expect(log.mock.calls[0][0].isTopLayer).toBe(true)
|
|
43
|
-
expect(typeof log.mock.calls[0][0].registerChild).toBe('function')
|
|
44
42
|
expect(log.mock.calls[0][0].size).toBe(0)
|
|
45
43
|
expect(log.mock.calls[0][0].zIndex).toBe(0)
|
|
46
44
|
})
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {useCallback, useContext, useEffect, useMemo, useState} from 'react'
|
|
1
|
+
import {createContext, useCallback, useContext, useEffect, useMemo, useState} from 'react'
|
|
2
2
|
import {useMediaIndex} from '../../hooks'
|
|
3
3
|
import {_getArrayProp} from '../../styles'
|
|
4
4
|
import {getLayerContext} from './getLayerContext'
|
|
5
5
|
import {LayerContext} from './layerContext'
|
|
6
|
-
import {LayerContextValue} from './types'
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
8
|
* @public
|
|
@@ -21,8 +20,8 @@ export function LayerProvider(props: LayerProviderProps): React.ReactElement {
|
|
|
21
20
|
|
|
22
21
|
// Get parent context values
|
|
23
22
|
const parentContextValue = useContext(LayerContext)
|
|
23
|
+
const parentRegisterChild = useContext(LayerContextRegisterChild)
|
|
24
24
|
const parent = parentContextValue && getLayerContext(parentContextValue)
|
|
25
|
-
const parentRegisterChild = parent?.registerChild
|
|
26
25
|
const parentLevel = parent?.level ?? 0
|
|
27
26
|
|
|
28
27
|
// Get level
|
|
@@ -37,51 +36,36 @@ export function LayerProvider(props: LayerProviderProps): React.ReactElement {
|
|
|
37
36
|
const zIndex = parent ? parent.zIndex + zOffset[mediaIndex] : zOffset[mediaIndex]
|
|
38
37
|
|
|
39
38
|
// A state value that is used to keep track of the number of child layers on each level
|
|
40
|
-
const [, setChildLayers] = useState<Record<number, number>>({})
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const [size, setSize] = useState(0)
|
|
39
|
+
const [childLayers, setChildLayers] = useState<Record<number, number>>({})
|
|
40
|
+
// A memo value that is used to keep track of the number of child levels
|
|
41
|
+
const size = useMemo(() => Object.keys(childLayers).length, [childLayers])
|
|
44
42
|
|
|
45
43
|
const isTopLayer = size === 0
|
|
46
44
|
|
|
47
45
|
const registerChild = useCallback(
|
|
48
|
-
(childLevel
|
|
46
|
+
(childLevel: number) => {
|
|
49
47
|
// Register child layers to the parent layer
|
|
50
48
|
const parentDispose = parentRegisterChild?.(childLevel)
|
|
51
49
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const nextState = {...state, [childLevel]: prevLen + 1}
|
|
56
|
-
|
|
57
|
-
setSize(Object.keys(nextState).length)
|
|
50
|
+
setChildLayers((state) => {
|
|
51
|
+
const prevLen = state[childLevel] ?? 0
|
|
52
|
+
const nextState = {...state, [childLevel]: prevLen + 1}
|
|
58
53
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
} else {
|
|
62
|
-
// Legacy behavior: if no child level is provided, increment the size by 1
|
|
63
|
-
setSize((v) => v + 1)
|
|
64
|
-
}
|
|
54
|
+
return nextState
|
|
55
|
+
})
|
|
65
56
|
|
|
66
57
|
return () => {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const nextState = {...state}
|
|
70
|
-
|
|
71
|
-
if (nextState[childLevel] === 1) {
|
|
72
|
-
delete nextState[childLevel]
|
|
58
|
+
setChildLayers((state) => {
|
|
59
|
+
const nextState = {...state}
|
|
73
60
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
61
|
+
if (nextState[childLevel] === 1) {
|
|
62
|
+
delete nextState[childLevel]
|
|
63
|
+
} else {
|
|
64
|
+
nextState[childLevel] -= 1
|
|
65
|
+
}
|
|
78
66
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
} else {
|
|
82
|
-
// Legacy behavior: if no child level is provided, decrement the size by 1
|
|
83
|
-
setSize((v) => v - 1)
|
|
84
|
-
}
|
|
67
|
+
return nextState
|
|
68
|
+
})
|
|
85
69
|
|
|
86
70
|
parentDispose?.()
|
|
87
71
|
}
|
|
@@ -92,17 +76,24 @@ export function LayerProvider(props: LayerProviderProps): React.ReactElement {
|
|
|
92
76
|
// Register this layer on mount
|
|
93
77
|
useEffect(() => parentRegisterChild?.(level), [level, parentRegisterChild])
|
|
94
78
|
|
|
95
|
-
const value
|
|
79
|
+
const value = useMemo(
|
|
96
80
|
() => ({
|
|
97
|
-
version: 0.0,
|
|
81
|
+
version: 0.0 as const,
|
|
98
82
|
isTopLayer,
|
|
99
83
|
level,
|
|
100
|
-
registerChild,
|
|
101
84
|
size,
|
|
102
85
|
zIndex,
|
|
103
86
|
}),
|
|
104
|
-
[isTopLayer, level,
|
|
87
|
+
[isTopLayer, level, size, zIndex],
|
|
105
88
|
)
|
|
106
89
|
|
|
107
|
-
return
|
|
90
|
+
return (
|
|
91
|
+
<LayerContext.Provider value={value}>
|
|
92
|
+
<LayerContextRegisterChild.Provider value={registerChild}>
|
|
93
|
+
{children}
|
|
94
|
+
</LayerContextRegisterChild.Provider>
|
|
95
|
+
</LayerContext.Provider>
|
|
96
|
+
)
|
|
108
97
|
}
|
|
98
|
+
|
|
99
|
+
const LayerContextRegisterChild = createContext<((childLevel: number) => () => void) | null>(null)
|