@sanity/ui 3.1.14 → 3.2.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/_chunks-cjs/_visual-editing.js +269 -249
- package/dist/_chunks-cjs/_visual-editing.js.map +1 -1
- package/dist/_chunks-es/_visual-editing.mjs +269 -249
- package/dist/_chunks-es/_visual-editing.mjs.map +1 -1
- package/dist/_visual-editing.d.mts +66 -1
- package/dist/_visual-editing.d.ts +66 -1
- package/dist/index.d.mts +86 -1
- package/dist/index.d.ts +86 -1
- package/dist/index.js +97 -93
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +97 -93
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/core/components/breadcrumbs/breadcrumbs.test.tsx +51 -0
- package/src/core/components/breadcrumbs/breadcrumbs.tsx +7 -3
- package/src/core/components/hotkeys/hotkeys.test.tsx +42 -0
- package/src/core/components/hotkeys/hotkeys.tsx +7 -3
- package/src/core/components/menu/menu.spacing.test.tsx +63 -0
- package/src/core/components/menu/menu.tsx +8 -2
- package/src/core/components/menu/menuGroup.spacing.test.tsx +69 -0
- package/src/core/components/menu/menuGroup.tsx +8 -2
- package/src/core/components/menu/menuItem.spacing.test.tsx +59 -0
- package/src/core/components/menu/menuItem.tsx +8 -2
- package/src/core/components/tab/tabList.test.tsx +48 -0
- package/src/core/components/tree/tree.test.tsx +55 -0
- package/src/core/components/tree/tree.tsx +10 -4
- package/src/core/components/tree/treeGroup.tsx +2 -2
- package/src/core/components/tree/treeItem.test.tsx +65 -0
- package/src/core/components/tree/treeItem.tsx +8 -2
- package/src/core/components/tree/types.ts +4 -0
- package/src/core/primitives/box/box.test.tsx +134 -0
- package/src/core/primitives/box/box.tsx +18 -6
- package/src/core/primitives/button/button.test.tsx +38 -0
- package/src/core/primitives/button/button.tsx +8 -3
- package/src/core/primitives/grid/grid.test.tsx +78 -0
- package/src/core/primitives/grid/grid.tsx +17 -4
- package/src/core/primitives/inline/inline.test.tsx +51 -0
- package/src/core/primitives/inline/inline.tsx +9 -3
- package/src/core/primitives/select/select.test.tsx +52 -0
- package/src/core/primitives/select/select.tsx +8 -2
- package/src/core/primitives/stack/stack.test.tsx +57 -0
- package/src/core/primitives/stack/stack.tsx +7 -2
- package/src/core/primitives/textInput/textInput.test.tsx +48 -0
- package/src/core/primitives/textInput/textInput.tsx +7 -2
- package/src/core/primitives/types.ts +33 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/** @jest-environment jsdom */
|
|
2
|
+
|
|
3
|
+
import {render} from '../../../../test'
|
|
4
|
+
import {Stack} from './stack'
|
|
5
|
+
import {responsiveStackSpaceStyle} from './styles'
|
|
6
|
+
|
|
7
|
+
jest.mock('./styles', () => {
|
|
8
|
+
const actual = jest.requireActual('./styles')
|
|
9
|
+
|
|
10
|
+
return {
|
|
11
|
+
...actual,
|
|
12
|
+
responsiveStackSpaceStyle: jest.fn(actual.responsiveStackSpaceStyle),
|
|
13
|
+
}
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
describe('primitives/stack', () => {
|
|
17
|
+
const mockedResponsiveStackSpaceStyle = jest.mocked(responsiveStackSpaceStyle)
|
|
18
|
+
beforeEach(() => {
|
|
19
|
+
mockedResponsiveStackSpaceStyle.mockClear()
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
it('should support `space` and `gap` with the same behavior', () => {
|
|
23
|
+
render(
|
|
24
|
+
<Stack space={2}>
|
|
25
|
+
<span>One</span>
|
|
26
|
+
<span>Two</span>
|
|
27
|
+
</Stack>,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
expect(mockedResponsiveStackSpaceStyle).toHaveBeenCalledWith(
|
|
31
|
+
expect.objectContaining({$space: [2]}),
|
|
32
|
+
)
|
|
33
|
+
mockedResponsiveStackSpaceStyle.mockClear()
|
|
34
|
+
render(
|
|
35
|
+
<Stack gap={2}>
|
|
36
|
+
<span>One</span>
|
|
37
|
+
<span>Two</span>
|
|
38
|
+
</Stack>,
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
expect(mockedResponsiveStackSpaceStyle).toHaveBeenCalledWith(
|
|
42
|
+
expect.objectContaining({$space: [2]}),
|
|
43
|
+
)
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
it('should prefer `gap` over `space` when both are provided', () => {
|
|
47
|
+
render(
|
|
48
|
+
<Stack gap={3} space={1}>
|
|
49
|
+
<span>One</span>
|
|
50
|
+
<span>Two</span>
|
|
51
|
+
</Stack>,
|
|
52
|
+
)
|
|
53
|
+
expect(mockedResponsiveStackSpaceStyle).toHaveBeenCalledWith(
|
|
54
|
+
expect.objectContaining({$space: [3]}),
|
|
55
|
+
)
|
|
56
|
+
})
|
|
57
|
+
})
|
|
@@ -10,6 +10,10 @@ import {responsiveStackSpaceStyle, ResponsiveStackSpaceStyleProps, stackBaseStyl
|
|
|
10
10
|
*/
|
|
11
11
|
export interface StackProps extends BoxProps {
|
|
12
12
|
as?: React.ElementType | keyof React.JSX.IntrinsicElements
|
|
13
|
+
gap?: number | number[]
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated Use `gap` instead. `space` will be removed in v4.
|
|
16
|
+
*/
|
|
13
17
|
space?: number | number[]
|
|
14
18
|
}
|
|
15
19
|
|
|
@@ -27,14 +31,15 @@ export const Stack = forwardRef(function Stack(
|
|
|
27
31
|
props: StackProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'ref'>,
|
|
28
32
|
ref: React.ForwardedRef<HTMLDivElement>,
|
|
29
33
|
) {
|
|
30
|
-
const {as, space, ...restProps} = props
|
|
34
|
+
const {as, gap, space: deprecated_space, ...restProps} = props
|
|
35
|
+
const spacing = gap === undefined ? deprecated_space : gap
|
|
31
36
|
|
|
32
37
|
return (
|
|
33
38
|
<StyledStack
|
|
34
39
|
data-as={typeof as === 'string' ? as : undefined}
|
|
35
40
|
data-ui="Stack"
|
|
36
41
|
{...restProps}
|
|
37
|
-
$space={_getArrayProp(
|
|
42
|
+
$space={_getArrayProp(spacing)}
|
|
38
43
|
forwardedAs={as}
|
|
39
44
|
ref={ref}
|
|
40
45
|
/>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** @jest-environment jsdom */
|
|
2
|
+
|
|
3
|
+
import {render} from '../../../../test'
|
|
4
|
+
import {responsiveInputPaddingStyle} from '../../styles/internal'
|
|
5
|
+
import {TextInput} from './textInput'
|
|
6
|
+
|
|
7
|
+
jest.mock('../../styles/internal', () => {
|
|
8
|
+
const actual = jest.requireActual('../../styles/internal')
|
|
9
|
+
|
|
10
|
+
return {
|
|
11
|
+
...actual,
|
|
12
|
+
responsiveInputPaddingStyle: jest.fn(actual.responsiveInputPaddingStyle),
|
|
13
|
+
}
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
describe('primitives/textInput', () => {
|
|
17
|
+
const mockedResponsiveInputPaddingStyle = jest.mocked(responsiveInputPaddingStyle)
|
|
18
|
+
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
mockedResponsiveInputPaddingStyle.mockClear()
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
it('should support `space` and `gap` with the same behavior', () => {
|
|
24
|
+
render(<TextInput icon={() => null} space={2} />)
|
|
25
|
+
|
|
26
|
+
expect(mockedResponsiveInputPaddingStyle).toHaveBeenCalledWith(
|
|
27
|
+
expect.objectContaining({$space: [2]}),
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
mockedResponsiveInputPaddingStyle.mockClear()
|
|
31
|
+
render(<TextInput gap={2} icon={() => null} />)
|
|
32
|
+
|
|
33
|
+
expect(mockedResponsiveInputPaddingStyle).toHaveBeenCalledWith(
|
|
34
|
+
expect.objectContaining({$space: [2]}),
|
|
35
|
+
)
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
it('should prefer `gap` over `space` when both are provided', () => {
|
|
39
|
+
render(<TextInput gap={3} icon={() => null} space={1} />)
|
|
40
|
+
|
|
41
|
+
expect(mockedResponsiveInputPaddingStyle).toHaveBeenCalledWith(
|
|
42
|
+
expect.objectContaining({$space: [3]}),
|
|
43
|
+
)
|
|
44
|
+
expect(mockedResponsiveInputPaddingStyle).not.toHaveBeenCalledWith(
|
|
45
|
+
expect.objectContaining({$space: [1]}),
|
|
46
|
+
)
|
|
47
|
+
})
|
|
48
|
+
})
|
|
@@ -74,7 +74,11 @@ export interface TextInputProps {
|
|
|
74
74
|
padding?: number | number[]
|
|
75
75
|
prefix?: React.ReactNode
|
|
76
76
|
radius?: Radius | Radius[]
|
|
77
|
+
/**
|
|
78
|
+
* @deprecated Use `gap` instead. `space` will be removed in v4.
|
|
79
|
+
*/
|
|
77
80
|
space?: number | number[]
|
|
81
|
+
gap?: number | number[]
|
|
78
82
|
suffix?: React.ReactNode
|
|
79
83
|
type?: TextInputType
|
|
80
84
|
weight?: ThemeFontWeightKey
|
|
@@ -162,6 +166,7 @@ export const TextInput = forwardRef(function TextInput(
|
|
|
162
166
|
clearButton,
|
|
163
167
|
disabled = false,
|
|
164
168
|
fontSize: fontSizeProp = 2,
|
|
169
|
+
gap,
|
|
165
170
|
icon: IconComponent,
|
|
166
171
|
iconRight: IconRightComponent,
|
|
167
172
|
onClear,
|
|
@@ -169,7 +174,7 @@ export const TextInput = forwardRef(function TextInput(
|
|
|
169
174
|
prefix,
|
|
170
175
|
radius: radiusProp = 2,
|
|
171
176
|
readOnly,
|
|
172
|
-
space:
|
|
177
|
+
space: deprecated_space = 3,
|
|
173
178
|
suffix,
|
|
174
179
|
customValidity,
|
|
175
180
|
type = 'text',
|
|
@@ -183,7 +188,7 @@ export const TextInput = forwardRef(function TextInput(
|
|
|
183
188
|
const fontSize = _getArrayProp(fontSizeProp)
|
|
184
189
|
const padding = _getArrayProp(paddingProp)
|
|
185
190
|
const radius = _getArrayProp(radiusProp)
|
|
186
|
-
const space = _getArrayProp(
|
|
191
|
+
const space = _getArrayProp(gap === undefined ? deprecated_space : gap)
|
|
187
192
|
|
|
188
193
|
// Transient properties
|
|
189
194
|
const $hasClearButton = Boolean(clearButton)
|
|
@@ -66,22 +66,55 @@ export interface ResponsiveGridProps {
|
|
|
66
66
|
autoRows?: GridAutoRows | GridAutoRows[]
|
|
67
67
|
autoCols?: GridAutoCols | GridAutoCols[]
|
|
68
68
|
autoFlow?: GridAutoFlow | GridAutoFlow[]
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* @deprecated Use `gridTemplateColumns` instead. `columns` will be removed in v4.
|
|
72
|
+
*/
|
|
69
73
|
columns?: number | number[]
|
|
74
|
+
gridTemplateColumns?: number | number[]
|
|
70
75
|
gap?: number | number[]
|
|
71
76
|
gapX?: number | number[]
|
|
72
77
|
gapY?: number | number[]
|
|
78
|
+
/**
|
|
79
|
+
* @deprecated Use `gridTemplateRows` instead. `rows` will be removed in v4.
|
|
80
|
+
*/
|
|
73
81
|
rows?: number | number[]
|
|
82
|
+
gridTemplateRows?: number | number[]
|
|
74
83
|
}
|
|
75
84
|
|
|
76
85
|
/**
|
|
77
86
|
* @public
|
|
78
87
|
*/
|
|
79
88
|
export interface ResponsiveGridItemProps {
|
|
89
|
+
gridColumn?: GridItemColumn | GridItemColumn[]
|
|
90
|
+
/**
|
|
91
|
+
* @deprecated Use `gridColumn` instead. `column` will be removed in v4.
|
|
92
|
+
*/
|
|
80
93
|
column?: GridItemColumn | GridItemColumn[]
|
|
94
|
+
gridColumnStart?: GridItemColumnStart | GridItemColumnStart[]
|
|
95
|
+
/**
|
|
96
|
+
* @deprecated Use `gridColumnStart` instead. `columnStart` will be removed in v4.
|
|
97
|
+
*/
|
|
81
98
|
columnStart?: GridItemColumnStart | GridItemColumnStart[]
|
|
99
|
+
gridColumnEnd?: GridItemColumnEnd | GridItemColumnEnd[]
|
|
100
|
+
/**
|
|
101
|
+
* @deprecated Use `gridColumnEnd` instead. `columnEnd` will be removed in v4.
|
|
102
|
+
*/
|
|
82
103
|
columnEnd?: GridItemColumnEnd | GridItemColumnEnd[]
|
|
104
|
+
gridRow?: GridItemRow | GridItemRow[]
|
|
105
|
+
/**
|
|
106
|
+
* @deprecated Use `gridRow` instead. `row` will be removed in v4.
|
|
107
|
+
*/
|
|
83
108
|
row?: GridItemRow | GridItemRow[]
|
|
109
|
+
gridRowStart?: GridItemRowStart | GridItemRowStart[]
|
|
110
|
+
/**
|
|
111
|
+
* @deprecated Use `gridRowStart` instead. `rowStart` will be removed in v4.
|
|
112
|
+
*/
|
|
84
113
|
rowStart?: GridItemRowStart | GridItemRowStart[]
|
|
114
|
+
gridRowEnd?: GridItemRowEnd | GridItemRowEnd[]
|
|
115
|
+
/**
|
|
116
|
+
* @deprecated Use `gridRowEnd` instead. `rowEnd` will be removed in v4.
|
|
117
|
+
*/
|
|
85
118
|
rowEnd?: GridItemRowEnd | GridItemRowEnd[]
|
|
86
119
|
}
|
|
87
120
|
|