@toptal/picasso-tabs 5.0.15-alpha-MP-955-fix-section-closing-animation-d279e2398.0 → 5.0.15-alpha-ff-7-tabs-19babbfd6.8
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-package/src/Tab/Tab.d.ts +3 -3
- package/dist-package/src/Tab/Tab.d.ts.map +1 -1
- package/dist-package/src/Tab/Tab.js +62 -14
- package/dist-package/src/Tab/Tab.js.map +1 -1
- package/dist-package/src/Tabs/Tabs.d.ts +11 -8
- package/dist-package/src/Tabs/Tabs.d.ts.map +1 -1
- package/dist-package/src/Tabs/Tabs.js +53 -16
- package/dist-package/src/Tabs/Tabs.js.map +1 -1
- package/dist-package/src/TabsCompound/index.d.ts +2 -4
- package/dist-package/src/TabsCompound/index.d.ts.map +1 -1
- package/dist-package/src/index.d.ts +0 -1
- package/dist-package/src/index.d.ts.map +1 -1
- package/dist-package/src/index.js +0 -1
- package/dist-package/src/index.js.map +1 -1
- package/package.json +14 -13
- package/src/Tab/Tab.tsx +99 -21
- package/src/Tabs/Tabs.tsx +88 -37
- package/src/Tabs/__snapshots__/test.tsx.snap +56 -71
- package/src/Tabs/test.tsx +4 -4
- package/src/index.ts +0 -1
- package/dist-package/src/Tab/styles.d.ts +0 -4
- package/dist-package/src/Tab/styles.d.ts.map +0 -1
- package/dist-package/src/Tab/styles.js +0 -95
- package/dist-package/src/Tab/styles.js.map +0 -1
- package/dist-package/src/TabScrollButton/TabScrollButton.d.ts +0 -12
- package/dist-package/src/TabScrollButton/TabScrollButton.d.ts.map +0 -1
- package/dist-package/src/TabScrollButton/TabScrollButton.js +0 -30
- package/dist-package/src/TabScrollButton/TabScrollButton.js.map +0 -1
- package/dist-package/src/TabScrollButton/index.d.ts +0 -5
- package/dist-package/src/TabScrollButton/index.d.ts.map +0 -1
- package/dist-package/src/TabScrollButton/index.js +0 -2
- package/dist-package/src/TabScrollButton/index.js.map +0 -1
- package/dist-package/src/Tabs/styles.d.ts +0 -4
- package/dist-package/src/Tabs/styles.d.ts.map +0 -1
- package/dist-package/src/Tabs/styles.js +0 -41
- package/dist-package/src/Tabs/styles.js.map +0 -1
- package/dist-package/src/Tabs/use-tab-action.d.ts +0 -5
- package/dist-package/src/Tabs/use-tab-action.d.ts.map +0 -1
- package/dist-package/src/Tabs/use-tab-action.js +0 -21
- package/dist-package/src/Tabs/use-tab-action.js.map +0 -1
- package/src/Tab/styles.ts +0 -107
- package/src/TabScrollButton/TabScrollButton.tsx +0 -59
- package/src/TabScrollButton/index.ts +0 -6
- package/src/Tabs/styles.ts +0 -45
- package/src/Tabs/use-tab-action.ts +0 -27
package/src/Tabs/Tabs.tsx
CHANGED
@@ -1,15 +1,11 @@
|
|
1
|
-
import type {
|
2
|
-
import React, { forwardRef } from 'react'
|
3
|
-
import
|
4
|
-
import {
|
5
|
-
import { Tabs as MUITabs } from '@material-ui/core'
|
1
|
+
import type { ReactNode } from 'react'
|
2
|
+
import React, { forwardRef, useMemo } from 'react'
|
3
|
+
import { Tabs as MUITabs } from '@mui/base/Tabs'
|
4
|
+
import { TabsList } from '@mui/base/TabsList'
|
6
5
|
import type { BaseProps } from '@toptal/picasso-shared'
|
6
|
+
import { twJoin, twMerge } from '@toptal/picasso-tailwind-merge'
|
7
7
|
|
8
|
-
|
9
|
-
import styles from './styles'
|
10
|
-
import useTabAction from './use-tab-action'
|
11
|
-
|
12
|
-
export type TabsValueType = string | number | false
|
8
|
+
export type TabsValueType = string | number | null
|
13
9
|
|
14
10
|
export interface Props<V extends TabsValueType> extends BaseProps {
|
15
11
|
/** Tabs content containing Tab components */
|
@@ -18,7 +14,10 @@ export interface Props<V extends TabsValueType> extends BaseProps {
|
|
18
14
|
/** Callback fired when the value changes. */
|
19
15
|
onChange?: (event: React.ChangeEvent<{}> | null, value: V) => void
|
20
16
|
|
21
|
-
/**
|
17
|
+
/**
|
18
|
+
* The value of the currently selected Tab.
|
19
|
+
* If you don't want any selected Tab, you can set this property to null.
|
20
|
+
*/
|
22
21
|
value: V
|
23
22
|
|
24
23
|
/** The tabs orientation (layout flow direction). */
|
@@ -28,52 +27,104 @@ export interface Props<V extends TabsValueType> extends BaseProps {
|
|
28
27
|
variant?: 'scrollable' | 'fullWidth'
|
29
28
|
}
|
30
29
|
|
31
|
-
const
|
32
|
-
|
33
|
-
|
30
|
+
export const TabsContext = React.createContext<{
|
31
|
+
orientation: 'horizontal' | 'vertical'
|
32
|
+
variant: 'scrollable' | 'fullWidth'
|
33
|
+
}>({ orientation: 'horizontal', variant: 'scrollable' })
|
34
|
+
|
35
|
+
const indicatorClasses = [
|
36
|
+
'after:absolute',
|
37
|
+
'after:content-[""]',
|
38
|
+
'after:bottom-0',
|
39
|
+
'after:left-0',
|
40
|
+
'after:right-0',
|
41
|
+
'after:h-[1px]',
|
42
|
+
'after:bg-gray-500',
|
43
|
+
'after:z-0',
|
44
|
+
]
|
45
|
+
|
46
|
+
const classesByOrientation = {
|
47
|
+
vertical: {
|
48
|
+
root: 'w-[200px] m-0 flex-col',
|
49
|
+
scroller: 'pl-2',
|
50
|
+
},
|
51
|
+
horizontal: {
|
52
|
+
root: '',
|
53
|
+
scroller: indicatorClasses,
|
54
|
+
},
|
55
|
+
}
|
34
56
|
|
35
|
-
|
36
|
-
|
37
|
-
|
57
|
+
const classesByVariant = {
|
58
|
+
scrollable: {
|
59
|
+
root: 'overflow-x-auto',
|
60
|
+
scroller: '',
|
61
|
+
},
|
62
|
+
fullWidth: {
|
63
|
+
root: '',
|
64
|
+
scroller: 'w-full overflow-hidden',
|
65
|
+
},
|
66
|
+
}
|
38
67
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
ref: ForwardedRef<HTMLButtonElement>
|
43
|
-
) => {
|
68
|
+
// eslint-disable-next-line react/display-name
|
69
|
+
export const Tabs = forwardRef<HTMLDivElement, Props<TabsValueType>>(
|
70
|
+
function Tabs(props, ref) {
|
44
71
|
const {
|
45
72
|
children,
|
46
73
|
orientation = 'horizontal',
|
47
74
|
onChange,
|
48
75
|
value,
|
49
76
|
variant = 'scrollable',
|
77
|
+
className,
|
50
78
|
...rest
|
51
79
|
} = props
|
52
|
-
|
53
|
-
const
|
80
|
+
|
81
|
+
const contextValue = useMemo(
|
82
|
+
() => ({
|
83
|
+
orientation,
|
84
|
+
variant,
|
85
|
+
}),
|
86
|
+
[orientation, variant]
|
87
|
+
)
|
88
|
+
|
89
|
+
const isVertical = orientation === 'vertical'
|
54
90
|
|
55
91
|
return (
|
56
|
-
<
|
92
|
+
<TabsContext.Provider value={contextValue}>
|
57
93
|
<MUITabs
|
58
94
|
{...rest}
|
59
|
-
|
60
|
-
|
95
|
+
data-component-type='tabs'
|
96
|
+
slotProps={{
|
97
|
+
root: {
|
98
|
+
ref,
|
99
|
+
className: twMerge(
|
100
|
+
'relative min-h-0 flex overflow-hidden',
|
101
|
+
classesByOrientation[orientation].root,
|
102
|
+
classesByVariant[variant].root,
|
103
|
+
className
|
104
|
+
),
|
105
|
+
},
|
106
|
+
}}
|
61
107
|
onChange={onChange}
|
62
108
|
value={value}
|
63
|
-
action={action}
|
64
|
-
scrollButtons='auto'
|
65
|
-
ScrollButtonComponent={TabScrollButton}
|
66
109
|
orientation={orientation}
|
67
|
-
variant={variant}
|
68
|
-
data-component-type='tabs'
|
69
110
|
>
|
70
|
-
|
111
|
+
<div
|
112
|
+
className={twJoin(
|
113
|
+
classesByVariant[variant].scroller,
|
114
|
+
classesByOrientation[orientation].scroller,
|
115
|
+
'flex-auto inline-block relative whitespace-nowrap'
|
116
|
+
)}
|
117
|
+
>
|
118
|
+
<TabsList className={twJoin('flex', isVertical && 'flex-col')}>
|
119
|
+
{children}
|
120
|
+
</TabsList>
|
121
|
+
</div>
|
71
122
|
</MUITabs>
|
72
|
-
</
|
123
|
+
</TabsContext.Provider>
|
73
124
|
)
|
74
125
|
}
|
75
|
-
)
|
76
|
-
|
77
|
-
|
126
|
+
)
|
127
|
+
|
128
|
+
Tabs.displayName = 'Tabs'
|
78
129
|
|
79
130
|
export default Tabs
|
@@ -10,27 +10,25 @@ exports[`Tabs renders 1`] = `
|
|
10
10
|
data-component-type="tabs"
|
11
11
|
>
|
12
12
|
<div
|
13
|
-
class="
|
14
|
-
style="width: 99px; height: 99px; position: absolute; top: -9999px; overflow: scroll;"
|
15
|
-
/>
|
16
|
-
<div
|
17
|
-
class="MuiTabs-scroller MuiTabs-scrollable"
|
18
|
-
style="margin-bottom: 0px;"
|
13
|
+
class="after:absolute after:content-[""] after:bottom-0 after:left-0 after:right-0 after:h-[1px] after:bg-gray after:z-0 flex-auto inline-block relative whitespace-nowrap"
|
19
14
|
>
|
20
15
|
<div
|
21
|
-
class="
|
16
|
+
class="base-TabsList base-TabsList flex"
|
22
17
|
role="tablist"
|
18
|
+
tabindex="-1"
|
23
19
|
>
|
24
20
|
<button
|
21
|
+
aria-disabled="false"
|
25
22
|
aria-selected="false"
|
26
|
-
class="
|
23
|
+
class="base-Tab opacity-70 m-0 [&:not(:last-child)]:mr-8 pt-[0.5625rem] pb-[0.4375rem] px-0 text-center bg-transparent transition-shadow z-10 rounded-none text-black shrink-0 max-w min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
|
27
24
|
data-testid="tab-1"
|
25
|
+
id=":r0:"
|
28
26
|
role="tab"
|
29
27
|
tabindex="0"
|
30
28
|
type="button"
|
31
29
|
>
|
32
30
|
<span
|
33
|
-
class="
|
31
|
+
class="w-full inline-flex items-center flex-col justify-center"
|
34
32
|
>
|
35
33
|
<div
|
36
34
|
class="m-0 text-sm text-inherit font-semibold leading-[1.1rem]"
|
@@ -40,15 +38,17 @@ exports[`Tabs renders 1`] = `
|
|
40
38
|
</span>
|
41
39
|
</button>
|
42
40
|
<button
|
41
|
+
aria-disabled="false"
|
43
42
|
aria-selected="false"
|
44
|
-
class="
|
43
|
+
class="base-Tab opacity-70 m-0 [&:not(:last-child)]:mr-8 pt-[0.5625rem] pb-[0.4375rem] px-0 text-center bg-transparent transition-shadow z-10 rounded-none text-black shrink-0 max-w min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
|
45
44
|
data-testid="tab-2"
|
45
|
+
id=":r1:"
|
46
46
|
role="tab"
|
47
47
|
tabindex="0"
|
48
48
|
type="button"
|
49
49
|
>
|
50
50
|
<span
|
51
|
-
class="
|
51
|
+
class="w-full inline-flex items-center flex-col justify-center"
|
52
52
|
>
|
53
53
|
<div
|
54
54
|
class="m-0 text-sm text-inherit font-semibold leading-[1.1rem]"
|
@@ -58,10 +58,6 @@ exports[`Tabs renders 1`] = `
|
|
58
58
|
</span>
|
59
59
|
</button>
|
60
60
|
</div>
|
61
|
-
<span
|
62
|
-
class="PrivateTabIndicator-root PrivateTabIndicator-colorSecondary MuiTabs-indicator"
|
63
|
-
style="left: 0px; width: 0px;"
|
64
|
-
/>
|
65
61
|
</div>
|
66
62
|
</div>
|
67
63
|
</div>
|
@@ -78,23 +74,25 @@ exports[`Tabs renders in full width 1`] = `
|
|
78
74
|
data-component-type="tabs"
|
79
75
|
>
|
80
76
|
<div
|
81
|
-
class="
|
82
|
-
style="overflow: hidden;"
|
77
|
+
class="w-full overflow-hidden after:absolute after:content-[""] after:bottom-0 after:left-0 after:right-0 after:h-[1px] after:bg-gray after:z-0 flex-auto inline-block relative whitespace-nowrap"
|
83
78
|
>
|
84
79
|
<div
|
85
|
-
class="
|
80
|
+
class="base-TabsList base-TabsList flex"
|
86
81
|
role="tablist"
|
82
|
+
tabindex="-1"
|
87
83
|
>
|
88
84
|
<button
|
85
|
+
aria-disabled="false"
|
89
86
|
aria-selected="false"
|
90
|
-
class="
|
87
|
+
class="base-Tab opacity-70 m-0 [&:not(:last-child)]:mr-8 pt-[0.5625rem] pb-[0.4375rem] px-0 text-center bg-transparent transition-shadow z-10 rounded-none text-black shrink flex-grow basis-0 min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
|
91
88
|
data-testid="tab-1"
|
89
|
+
id=":re:"
|
92
90
|
role="tab"
|
93
91
|
tabindex="0"
|
94
92
|
type="button"
|
95
93
|
>
|
96
94
|
<span
|
97
|
-
class="
|
95
|
+
class="w-full inline-flex items-center flex-col justify-center"
|
98
96
|
>
|
99
97
|
<div
|
100
98
|
class="m-0 text-sm text-inherit font-semibold leading-[1.1rem]"
|
@@ -104,15 +102,17 @@ exports[`Tabs renders in full width 1`] = `
|
|
104
102
|
</span>
|
105
103
|
</button>
|
106
104
|
<button
|
105
|
+
aria-disabled="false"
|
107
106
|
aria-selected="false"
|
108
|
-
class="
|
107
|
+
class="base-Tab opacity-70 m-0 [&:not(:last-child)]:mr-8 pt-[0.5625rem] pb-[0.4375rem] px-0 text-center bg-transparent transition-shadow z-10 rounded-none text-black shrink flex-grow basis-0 min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
|
109
108
|
data-testid="tab-2"
|
109
|
+
id=":rf:"
|
110
110
|
role="tab"
|
111
111
|
tabindex="0"
|
112
112
|
type="button"
|
113
113
|
>
|
114
114
|
<span
|
115
|
-
class="
|
115
|
+
class="w-full inline-flex items-center flex-col justify-center"
|
116
116
|
>
|
117
117
|
<div
|
118
118
|
class="m-0 text-sm text-inherit font-semibold leading-[1.1rem]"
|
@@ -122,10 +122,6 @@ exports[`Tabs renders in full width 1`] = `
|
|
122
122
|
</span>
|
123
123
|
</button>
|
124
124
|
</div>
|
125
|
-
<span
|
126
|
-
class="PrivateTabIndicator-root PrivateTabIndicator-colorSecondary MuiTabs-indicator"
|
127
|
-
style="left: 0px; width: 0px;"
|
128
|
-
/>
|
129
125
|
</div>
|
130
126
|
</div>
|
131
127
|
</div>
|
@@ -142,27 +138,26 @@ exports[`Tabs renders in vertical orientation 1`] = `
|
|
142
138
|
data-component-type="tabs"
|
143
139
|
>
|
144
140
|
<div
|
145
|
-
class="
|
146
|
-
style="width: 99px; height: 99px; position: absolute; top: -9999px; overflow: scroll;"
|
147
|
-
/>
|
148
|
-
<div
|
149
|
-
class="MuiTabs-scroller MuiTabs-scrollable"
|
150
|
-
style="margin-bottom: 0px;"
|
141
|
+
class="pl-2 flex-auto inline-block relative whitespace-nowrap"
|
151
142
|
>
|
152
143
|
<div
|
153
|
-
|
144
|
+
aria-orientation="vertical"
|
145
|
+
class="base-TabsList base-TabsList flex flex-col"
|
154
146
|
role="tablist"
|
147
|
+
tabindex="-1"
|
155
148
|
>
|
156
149
|
<button
|
150
|
+
aria-disabled="false"
|
157
151
|
aria-selected="false"
|
158
|
-
class="
|
152
|
+
class="base-Tab opacity-100 first:mt-4 last:mb-4 my-1 mx-0 py-2 px-4 text-left rounded-l rounded-r transition-all w-full overflow-hidden bg-gray hover:bg-gray text-graphite hover:text-black shrink-0 max-w min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
|
159
153
|
data-testid="tab-1"
|
154
|
+
id=":r2:"
|
160
155
|
role="tab"
|
161
156
|
tabindex="0"
|
162
157
|
type="button"
|
163
158
|
>
|
164
159
|
<span
|
165
|
-
class="
|
160
|
+
class="w-full block"
|
166
161
|
>
|
167
162
|
<div
|
168
163
|
class="m-0 text-md text-inherit font-semibold whitespace-nowrap overflow-ellipsis [-webkit-box overflow-hidden text-ellipsis pr-[0.9px] block"
|
@@ -172,15 +167,17 @@ exports[`Tabs renders in vertical orientation 1`] = `
|
|
172
167
|
</span>
|
173
168
|
</button>
|
174
169
|
<button
|
170
|
+
aria-disabled="false"
|
175
171
|
aria-selected="false"
|
176
|
-
class="
|
172
|
+
class="base-Tab opacity-100 first:mt-4 last:mb-4 my-1 mx-0 py-2 px-4 text-left rounded-l rounded-r transition-all w-full overflow-hidden bg-gray hover:bg-gray text-graphite hover:text-black shrink-0 max-w min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
|
177
173
|
data-testid="tab-2"
|
174
|
+
id=":r3:"
|
178
175
|
role="tab"
|
179
176
|
tabindex="0"
|
180
177
|
type="button"
|
181
178
|
>
|
182
179
|
<span
|
183
|
-
class="
|
180
|
+
class="w-full block"
|
184
181
|
>
|
185
182
|
<div
|
186
183
|
class="m-0 text-md text-inherit font-semibold whitespace-nowrap overflow-ellipsis [-webkit-box overflow-hidden text-ellipsis pr-[0.9px] block"
|
@@ -190,10 +187,6 @@ exports[`Tabs renders in vertical orientation 1`] = `
|
|
190
187
|
</span>
|
191
188
|
</button>
|
192
189
|
</div>
|
193
|
-
<span
|
194
|
-
class="PrivateTabIndicator-root PrivateTabIndicator-colorSecondary MuiTabs-indicator PrivateTabIndicator-vertical"
|
195
|
-
style="top: 0px; height: 0px;"
|
196
|
-
/>
|
197
190
|
</div>
|
198
191
|
</div>
|
199
192
|
</div>
|
@@ -210,27 +203,25 @@ exports[`Tabs renders with a pre-selected option 1`] = `
|
|
210
203
|
data-component-type="tabs"
|
211
204
|
>
|
212
205
|
<div
|
213
|
-
class="
|
214
|
-
style="width: 99px; height: 99px; position: absolute; top: -9999px; overflow: scroll;"
|
215
|
-
/>
|
216
|
-
<div
|
217
|
-
class="MuiTabs-scroller MuiTabs-scrollable"
|
218
|
-
style="margin-bottom: 0px;"
|
206
|
+
class="after:absolute after:content-[""] after:bottom-0 after:left-0 after:right-0 after:h-[1px] after:bg-gray after:z-0 flex-auto inline-block relative whitespace-nowrap"
|
219
207
|
>
|
220
208
|
<div
|
221
|
-
class="
|
209
|
+
class="base-TabsList base-TabsList flex"
|
222
210
|
role="tablist"
|
211
|
+
tabindex="-1"
|
223
212
|
>
|
224
213
|
<button
|
214
|
+
aria-disabled="false"
|
225
215
|
aria-selected="false"
|
226
|
-
class="
|
216
|
+
class="base-Tab opacity-70 m-0 [&:not(:last-child)]:mr-8 pt-[0.5625rem] pb-[0.4375rem] px-0 text-center bg-transparent transition-shadow z-10 rounded-none text-black shrink-0 max-w min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
|
227
217
|
data-testid="tab-1"
|
218
|
+
id=":r4:"
|
228
219
|
role="tab"
|
229
220
|
tabindex="0"
|
230
221
|
type="button"
|
231
222
|
>
|
232
223
|
<span
|
233
|
-
class="
|
224
|
+
class="w-full inline-flex items-center flex-col justify-center"
|
234
225
|
>
|
235
226
|
<div
|
236
227
|
class="m-0 text-sm text-inherit font-semibold leading-[1.1rem]"
|
@@ -240,15 +231,17 @@ exports[`Tabs renders with a pre-selected option 1`] = `
|
|
240
231
|
</span>
|
241
232
|
</button>
|
242
233
|
<button
|
234
|
+
aria-disabled="false"
|
243
235
|
aria-selected="true"
|
244
|
-
class="
|
236
|
+
class="base-Tab base- opacity-100 m-0 [&:not(:last-child)]:mr-8 pt-[0.5625rem] pb-[0.4375rem] px-0 text-center bg-transparent transition-shadow z-10 rounded-none text-black shadow-blue shadow-[inset_0_-2px_0] shrink-0 max-w min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
|
245
237
|
data-testid="tab-2"
|
238
|
+
id=":r5:"
|
246
239
|
role="tab"
|
247
240
|
tabindex="0"
|
248
241
|
type="button"
|
249
242
|
>
|
250
243
|
<span
|
251
|
-
class="
|
244
|
+
class="w-full inline-flex items-center flex-col justify-center"
|
252
245
|
>
|
253
246
|
<div
|
254
247
|
class="m-0 text-sm text-inherit font-semibold leading-[1.1rem]"
|
@@ -258,10 +251,6 @@ exports[`Tabs renders with a pre-selected option 1`] = `
|
|
258
251
|
</span>
|
259
252
|
</button>
|
260
253
|
</div>
|
261
|
-
<span
|
262
|
-
class="PrivateTabIndicator-root PrivateTabIndicator-colorSecondary MuiTabs-indicator"
|
263
|
-
style="left: 0px; width: 0px;"
|
264
|
-
/>
|
265
254
|
</div>
|
266
255
|
</div>
|
267
256
|
<div
|
@@ -285,27 +274,25 @@ exports[`Tabs renders with a pre-selected option using custom value 1`] = `
|
|
285
274
|
data-component-type="tabs"
|
286
275
|
>
|
287
276
|
<div
|
288
|
-
class="
|
289
|
-
style="width: 99px; height: 99px; position: absolute; top: -9999px; overflow: scroll;"
|
290
|
-
/>
|
291
|
-
<div
|
292
|
-
class="MuiTabs-scroller MuiTabs-scrollable"
|
293
|
-
style="margin-bottom: 0px;"
|
277
|
+
class="after:absolute after:content-[""] after:bottom-0 after:left-0 after:right-0 after:h-[1px] after:bg-gray after:z-0 flex-auto inline-block relative whitespace-nowrap"
|
294
278
|
>
|
295
279
|
<div
|
296
|
-
class="
|
280
|
+
class="base-TabsList base-TabsList flex"
|
297
281
|
role="tablist"
|
282
|
+
tabindex="-1"
|
298
283
|
>
|
299
284
|
<button
|
285
|
+
aria-disabled="false"
|
300
286
|
aria-selected="true"
|
301
|
-
class="
|
287
|
+
class="base-Tab base- opacity-100 m-0 [&:not(:last-child)]:mr-8 pt-[0.5625rem] pb-[0.4375rem] px-0 text-center bg-transparent transition-shadow z-10 rounded-none text-black shadow-blue shadow-[inset_0_-2px_0] shrink-0 max-w min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
|
302
288
|
data-testid="tab-1"
|
289
|
+
id=":r6:"
|
303
290
|
role="tab"
|
304
291
|
tabindex="0"
|
305
292
|
type="button"
|
306
293
|
>
|
307
294
|
<span
|
308
|
-
class="
|
295
|
+
class="w-full inline-flex items-center flex-col justify-center"
|
309
296
|
>
|
310
297
|
<div
|
311
298
|
class="m-0 text-sm text-inherit font-semibold leading-[1.1rem]"
|
@@ -315,15 +302,17 @@ exports[`Tabs renders with a pre-selected option using custom value 1`] = `
|
|
315
302
|
</span>
|
316
303
|
</button>
|
317
304
|
<button
|
305
|
+
aria-disabled="false"
|
318
306
|
aria-selected="false"
|
319
|
-
class="
|
307
|
+
class="base-Tab opacity-70 m-0 [&:not(:last-child)]:mr-8 pt-[0.5625rem] pb-[0.4375rem] px-0 text-center bg-transparent transition-shadow z-10 rounded-none text-black shrink-0 max-w min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
|
320
308
|
data-testid="tab-2"
|
309
|
+
id=":r7:"
|
321
310
|
role="tab"
|
322
311
|
tabindex="0"
|
323
312
|
type="button"
|
324
313
|
>
|
325
314
|
<span
|
326
|
-
class="
|
315
|
+
class="w-full inline-flex items-center flex-col justify-center"
|
327
316
|
>
|
328
317
|
<div
|
329
318
|
class="m-0 text-sm text-inherit font-semibold leading-[1.1rem]"
|
@@ -333,10 +322,6 @@ exports[`Tabs renders with a pre-selected option using custom value 1`] = `
|
|
333
322
|
</span>
|
334
323
|
</button>
|
335
324
|
</div>
|
336
|
-
<span
|
337
|
-
class="PrivateTabIndicator-root PrivateTabIndicator-colorSecondary MuiTabs-indicator"
|
338
|
-
style="left: 0px; width: 0px;"
|
339
|
-
/>
|
340
325
|
</div>
|
341
326
|
</div>
|
342
327
|
<div
|
package/src/Tabs/test.tsx
CHANGED
@@ -60,7 +60,7 @@ describe('Tabs', () => {
|
|
60
60
|
const { container, queryByTestId } = renderTabs(
|
61
61
|
[{ label: 'Tab 1' }, { label: 'Tab 2' }],
|
62
62
|
{
|
63
|
-
value:
|
63
|
+
value: null,
|
64
64
|
}
|
65
65
|
)
|
66
66
|
|
@@ -73,7 +73,7 @@ describe('Tabs', () => {
|
|
73
73
|
it('renders in vertical orientation', () => {
|
74
74
|
const { container } = renderTabs(
|
75
75
|
[{ label: 'Tab 1' }, { label: 'Tab 2' }],
|
76
|
-
{ value:
|
76
|
+
{ value: null },
|
77
77
|
'vertical'
|
78
78
|
)
|
79
79
|
|
@@ -116,7 +116,7 @@ describe('Tabs', () => {
|
|
116
116
|
const { getByTestId } = renderTabs(
|
117
117
|
[{ label: 'Tab 1' }, { label: 'Tab 2' }],
|
118
118
|
{
|
119
|
-
value:
|
119
|
+
value: 0,
|
120
120
|
onChange,
|
121
121
|
}
|
122
122
|
)
|
@@ -159,7 +159,7 @@ describe('Tabs', () => {
|
|
159
159
|
|
160
160
|
it('renders in full width', () => {
|
161
161
|
const { container } = renderTabs([{ label: 'Tab 1' }, { label: 'Tab 2' }], {
|
162
|
-
value:
|
162
|
+
value: null,
|
163
163
|
variant: 'fullWidth',
|
164
164
|
})
|
165
165
|
|
package/src/index.ts
CHANGED
@@ -1,4 +0,0 @@
|
|
1
|
-
import type { Theme } from '@material-ui/core/styles';
|
2
|
-
declare const _default: ({ sizes, palette, shadows, transitions }: Theme) => import("@material-ui/styles").StyleRules<{}, "selected" | "horizontal" | "vertical" | "wrapper">;
|
3
|
-
export default _default;
|
4
|
-
//# sourceMappingURL=styles.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/Tab/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;mEAgDK,KAAK;AAA/D,wBA0DI"}
|
@@ -1,95 +0,0 @@
|
|
1
|
-
import { createStyles } from '@material-ui/core/styles';
|
2
|
-
import { rem } from '@toptal/picasso-shared';
|
3
|
-
import { PicassoProvider } from '@toptal/picasso-provider';
|
4
|
-
PicassoProvider.override(({ breakpoints, palette }) => ({
|
5
|
-
MuiTab: {
|
6
|
-
root: {
|
7
|
-
minHeight: 0,
|
8
|
-
minWidth: 0,
|
9
|
-
lineHeight: 1,
|
10
|
-
textTransform: 'none',
|
11
|
-
padding: `${rem('9px')} 0 ${rem('7px')}`,
|
12
|
-
overflow: 'initial',
|
13
|
-
[breakpoints.up('md')]: {
|
14
|
-
padding: undefined,
|
15
|
-
},
|
16
|
-
color: palette.grey.dark,
|
17
|
-
[breakpoints.up('md')]: {
|
18
|
-
minWidth: 'auto',
|
19
|
-
fontSize: '1rem',
|
20
|
-
},
|
21
|
-
},
|
22
|
-
labelIcon: {
|
23
|
-
minHeight: 0,
|
24
|
-
paddingRight: '1.5rem',
|
25
|
-
paddingTop: rem('9px'),
|
26
|
-
'& $wrapper > *:first-child': {
|
27
|
-
position: 'absolute',
|
28
|
-
right: 0,
|
29
|
-
marginBottom: 0,
|
30
|
-
},
|
31
|
-
},
|
32
|
-
selected: {
|
33
|
-
color: palette.common.black,
|
34
|
-
},
|
35
|
-
textColorInherit: {
|
36
|
-
'&$disabled': {
|
37
|
-
color: palette.grey.main,
|
38
|
-
},
|
39
|
-
},
|
40
|
-
disabled: {},
|
41
|
-
},
|
42
|
-
}));
|
43
|
-
export default ({ sizes, palette, shadows, transitions }) => createStyles({
|
44
|
-
horizontal: {
|
45
|
-
paddingTop: 0,
|
46
|
-
'&:not(:last-child)': {
|
47
|
-
marginRight: '2em',
|
48
|
-
},
|
49
|
-
},
|
50
|
-
vertical: {
|
51
|
-
width: '100%',
|
52
|
-
borderRadius: `${sizes.borderRadius.small} 0 0 ${sizes.borderRadius.small}`,
|
53
|
-
margin: '0.25rem 0',
|
54
|
-
overflow: 'hidden',
|
55
|
-
padding: '0.5rem 1rem',
|
56
|
-
transition: `all ${transitions.duration.short}ms ${transitions.easing.easeInOut}`,
|
57
|
-
textAlign: 'left',
|
58
|
-
backgroundColor: palette.grey.lighter,
|
59
|
-
opacity: 1,
|
60
|
-
color: palette.grey.dark,
|
61
|
-
'&:first-child': {
|
62
|
-
marginTop: '1rem',
|
63
|
-
},
|
64
|
-
'&:last-child': {
|
65
|
-
marginBottom: '1rem',
|
66
|
-
},
|
67
|
-
'&:hover': {
|
68
|
-
color: palette.common.black,
|
69
|
-
},
|
70
|
-
'&:hover:not($selected)': {
|
71
|
-
backgroundColor: palette.grey.lighter2,
|
72
|
-
},
|
73
|
-
'& $wrapper': {
|
74
|
-
display: 'block',
|
75
|
-
},
|
76
|
-
},
|
77
|
-
selected: {
|
78
|
-
'&$vertical': {
|
79
|
-
color: palette.common.black,
|
80
|
-
boxShadow: shadows[1],
|
81
|
-
backgroundColor: palette.grey.lightest,
|
82
|
-
'&::before': {
|
83
|
-
content: '""',
|
84
|
-
background: palette.blue.main,
|
85
|
-
position: 'absolute',
|
86
|
-
left: 0,
|
87
|
-
top: 0,
|
88
|
-
bottom: 0,
|
89
|
-
width: '3px',
|
90
|
-
},
|
91
|
-
},
|
92
|
-
},
|
93
|
-
wrapper: {},
|
94
|
-
});
|
95
|
-
//# sourceMappingURL=styles.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/Tab/styles.ts"],"names":[],"mappings":"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"}
|
@@ -1,12 +0,0 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
import type { BaseProps } from '@toptal/picasso-shared';
|
3
|
-
declare type DirectionType = 'left' | 'right';
|
4
|
-
export interface Props extends BaseProps {
|
5
|
-
/** The direction the button should indicate. */
|
6
|
-
direction: DirectionType;
|
7
|
-
/** If `true`, the component is disabled. */
|
8
|
-
disabled?: boolean;
|
9
|
-
}
|
10
|
-
export declare const TabScrollButton: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
|
11
|
-
export default TabScrollButton;
|
12
|
-
//# sourceMappingURL=TabScrollButton.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"TabScrollButton.d.ts","sourceRoot":"","sources":["../../../src/TabScrollButton/TabScrollButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAA;AAEzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAKvD,aAAK,aAAa,GAAG,MAAM,GAAG,OAAO,CAAA;AAErC,MAAM,WAAW,KAAM,SAAQ,SAAS;IACtC,gDAAgD;IAChD,SAAS,EAAE,aAAa,CAAA;IACxB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,eAAO,MAAM,eAAe,8EAsC3B,CAAA;AAID,eAAe,eAAe,CAAA"}
|