@sanity/ui 2.3.6 → 2.3.7-canary.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/dist/index.compiled.mjs +7488 -0
- package/dist/index.compiled.mjs.map +1 -0
- package/dist/index.d.mts +13 -1
- package/dist/index.d.ts +13 -1
- package/dist/index.esm.js +1047 -1072
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1054 -1079
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1047 -1072
- package/dist/index.mjs.map +1 -1
- package/package.json +31 -35
- package/src/core/components/autocomplete/autocomplete.tsx +31 -34
- package/src/core/components/breadcrumbs/breadcrumbs.tsx +3 -2
- package/src/core/components/dialog/dialog.tsx +23 -12
- package/src/core/components/hotkeys/hotkeys.tsx +3 -3
- package/src/core/components/menu/menu.tsx +5 -1
- package/src/core/components/menu/menuButton.tsx +17 -32
- package/src/core/components/menu/menuGroup.tsx +7 -5
- package/src/core/components/menu/menuItem.tsx +10 -6
- package/src/core/components/skeleton/skeleton.tsx +5 -11
- package/src/core/components/skeleton/textSkeleton.tsx +6 -7
- 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/hooks/useArrayProp.ts +11 -10
- package/src/core/primitives/avatar/avatar.tsx +11 -15
- package/src/core/primitives/avatar/avatarCounter.tsx +11 -17
- package/src/core/primitives/avatar/avatarStack.tsx +3 -7
- package/src/core/primitives/badge/badge.tsx +7 -4
- package/src/core/primitives/box/box.tsx +53 -27
- package/src/core/primitives/button/button.tsx +11 -12
- package/src/core/primitives/card/card.tsx +17 -9
- package/src/core/primitives/code/code.tsx +4 -3
- package/src/core/primitives/container/container.tsx +4 -11
- package/src/core/primitives/flex/flex.tsx +13 -7
- package/src/core/primitives/grid/grid.tsx +19 -10
- package/src/core/primitives/heading/heading.tsx +7 -4
- package/src/core/primitives/inline/inline.tsx +3 -2
- package/src/core/primitives/kbd/kbd.tsx +4 -3
- package/src/core/primitives/label/label.tsx +7 -4
- package/src/core/primitives/popover/popover.tsx +49 -49
- package/src/core/primitives/select/select.tsx +12 -6
- package/src/core/primitives/stack/stack.tsx +4 -3
- package/src/core/primitives/text/text.tsx +7 -4
- package/src/core/primitives/textArea/textArea.tsx +12 -6
- package/src/core/primitives/textInput/textInput.tsx +6 -5
- package/src/core/primitives/tooltip/tooltip.tsx +14 -7
- package/src/core/theme/themeProvider.tsx +4 -6
- 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 +35 -43
- package/src/core/utils/layer/types.ts +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {useCallback, useContext, useEffect, useMemo, useState} from 'react'
|
|
2
|
-
import {useMediaIndex
|
|
1
|
+
import {createContext, useCallback, useContext, useEffect, useMemo, useState} from 'react'
|
|
2
|
+
import {useMediaIndex} from '../../hooks'
|
|
3
|
+
import {_getArrayProp} from '../../styles'
|
|
3
4
|
import {getLayerContext} from './getLayerContext'
|
|
4
5
|
import {LayerContext} from './layerContext'
|
|
5
|
-
import {LayerContextValue} from './types'
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* @public
|
|
@@ -20,15 +20,15 @@ export function LayerProvider(props: LayerProviderProps): React.ReactElement {
|
|
|
20
20
|
|
|
21
21
|
// Get parent context values
|
|
22
22
|
const parentContextValue = useContext(LayerContext)
|
|
23
|
+
const parentRegisterChild = useContext(LayerContextRegisterChild)
|
|
23
24
|
const parent = parentContextValue && getLayerContext(parentContextValue)
|
|
24
|
-
const parentRegisterChild = parent?.registerChild
|
|
25
25
|
const parentLevel = parent?.level ?? 0
|
|
26
26
|
|
|
27
27
|
// Get level
|
|
28
28
|
const level = parentLevel + 1
|
|
29
29
|
|
|
30
30
|
// Get z-index offset
|
|
31
|
-
const zOffset =
|
|
31
|
+
const zOffset = useMemo(() => _getArrayProp(zOffsetProp), [zOffsetProp])
|
|
32
32
|
|
|
33
33
|
// Get responsive z-index value
|
|
34
34
|
const maxMediaIndex = zOffset.length - 1
|
|
@@ -36,51 +36,36 @@ export function LayerProvider(props: LayerProviderProps): React.ReactElement {
|
|
|
36
36
|
const zIndex = parent ? parent.zIndex + zOffset[mediaIndex] : zOffset[mediaIndex]
|
|
37
37
|
|
|
38
38
|
// A state value that is used to keep track of the number of child layers on each level
|
|
39
|
-
const [, setChildLayers] = useState<Record<number, number>>({})
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
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])
|
|
43
42
|
|
|
44
43
|
const isTopLayer = size === 0
|
|
45
44
|
|
|
46
45
|
const registerChild = useCallback(
|
|
47
|
-
(childLevel
|
|
46
|
+
(childLevel: number) => {
|
|
48
47
|
// Register child layers to the parent layer
|
|
49
48
|
const parentDispose = parentRegisterChild?.(childLevel)
|
|
50
49
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const nextState = {...state, [childLevel]: prevLen + 1}
|
|
55
|
-
|
|
56
|
-
setSize(Object.keys(nextState).length)
|
|
50
|
+
setChildLayers((state) => {
|
|
51
|
+
const prevLen = state[childLevel] ?? 0
|
|
52
|
+
const nextState = {...state, [childLevel]: prevLen + 1}
|
|
57
53
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
} else {
|
|
61
|
-
// Legacy behavior: if no child level is provided, increment the size by 1
|
|
62
|
-
setSize((v) => v + 1)
|
|
63
|
-
}
|
|
54
|
+
return nextState
|
|
55
|
+
})
|
|
64
56
|
|
|
65
57
|
return () => {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const nextState = {...state}
|
|
69
|
-
|
|
70
|
-
if (nextState[childLevel] === 1) {
|
|
71
|
-
delete nextState[childLevel]
|
|
58
|
+
setChildLayers((state) => {
|
|
59
|
+
const nextState = {...state}
|
|
72
60
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
61
|
+
if (nextState[childLevel] === 1) {
|
|
62
|
+
delete nextState[childLevel]
|
|
63
|
+
} else {
|
|
64
|
+
nextState[childLevel] -= 1
|
|
65
|
+
}
|
|
77
66
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
} else {
|
|
81
|
-
// Legacy behavior: if no child level is provided, decrement the size by 1
|
|
82
|
-
setSize((v) => v - 1)
|
|
83
|
-
}
|
|
67
|
+
return nextState
|
|
68
|
+
})
|
|
84
69
|
|
|
85
70
|
parentDispose?.()
|
|
86
71
|
}
|
|
@@ -91,17 +76,24 @@ export function LayerProvider(props: LayerProviderProps): React.ReactElement {
|
|
|
91
76
|
// Register this layer on mount
|
|
92
77
|
useEffect(() => parentRegisterChild?.(level), [level, parentRegisterChild])
|
|
93
78
|
|
|
94
|
-
const value
|
|
79
|
+
const value = useMemo(
|
|
95
80
|
() => ({
|
|
96
|
-
version: 0.0,
|
|
81
|
+
version: 0.0 as const,
|
|
97
82
|
isTopLayer,
|
|
98
83
|
level,
|
|
99
|
-
registerChild,
|
|
100
84
|
size,
|
|
101
85
|
zIndex,
|
|
102
86
|
}),
|
|
103
|
-
[isTopLayer, level,
|
|
87
|
+
[isTopLayer, level, size, zIndex],
|
|
104
88
|
)
|
|
105
89
|
|
|
106
|
-
return
|
|
90
|
+
return (
|
|
91
|
+
<LayerContext.Provider value={value}>
|
|
92
|
+
<LayerContextRegisterChild.Provider value={registerChild}>
|
|
93
|
+
{children}
|
|
94
|
+
</LayerContextRegisterChild.Provider>
|
|
95
|
+
</LayerContext.Provider>
|
|
96
|
+
)
|
|
107
97
|
}
|
|
98
|
+
|
|
99
|
+
const LayerContextRegisterChild = createContext<((childLevel: number) => () => void) | null>(null)
|