@toptal/picasso-tabs 5.0.15-alpha-ff-7-tabs-17eb872bb.13 → 5.0.15-alpha-bill-root-ref-context-42c3d2541.6
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 +8 -5
- package/dist-package/src/Tab/Tab.d.ts.map +1 -1
- package/dist-package/src/Tab/Tab.js +16 -61
- package/dist-package/src/Tab/Tab.js.map +1 -1
- package/dist-package/src/Tab/styles.d.ts +4 -0
- package/dist-package/src/Tab/styles.d.ts.map +1 -0
- package/dist-package/src/Tab/styles.js +95 -0
- package/dist-package/src/Tab/styles.js.map +1 -0
- package/dist-package/src/TabScrollButton/TabScrollButton.d.ts +12 -0
- package/dist-package/src/TabScrollButton/TabScrollButton.d.ts.map +1 -0
- package/dist-package/src/TabScrollButton/TabScrollButton.js +30 -0
- package/dist-package/src/TabScrollButton/TabScrollButton.js.map +1 -0
- package/dist-package/src/TabScrollButton/index.d.ts +5 -0
- package/dist-package/src/TabScrollButton/index.d.ts.map +1 -0
- package/dist-package/src/TabScrollButton/index.js +2 -0
- package/dist-package/src/TabScrollButton/index.js.map +1 -0
- package/dist-package/src/Tabs/Tabs.d.ts +9 -12
- package/dist-package/src/Tabs/Tabs.d.ts.map +1 -1
- package/dist-package/src/Tabs/Tabs.js +16 -68
- package/dist-package/src/Tabs/Tabs.js.map +1 -1
- package/dist-package/src/Tabs/index.d.ts +2 -3
- package/dist-package/src/Tabs/index.d.ts.map +1 -1
- package/dist-package/src/Tabs/index.js.map +1 -1
- package/dist-package/src/Tabs/styles.d.ts +4 -0
- package/dist-package/src/Tabs/styles.d.ts.map +1 -0
- package/dist-package/src/Tabs/styles.js +41 -0
- package/dist-package/src/Tabs/styles.js.map +1 -0
- package/dist-package/src/Tabs/use-tab-action.d.ts +5 -0
- package/dist-package/src/Tabs/use-tab-action.d.ts.map +1 -0
- package/dist-package/src/Tabs/use-tab-action.js +21 -0
- package/dist-package/src/Tabs/use-tab-action.js.map +1 -0
- package/dist-package/src/TabsCompound/index.d.ts +4 -2
- package/dist-package/src/TabsCompound/index.d.ts.map +1 -1
- package/dist-package/src/index.d.ts +1 -0
- package/dist-package/src/index.d.ts.map +1 -1
- package/dist-package/src/index.js +1 -0
- package/dist-package/src/index.js.map +1 -1
- package/package.json +13 -13
- package/src/Tab/Tab.tsx +51 -121
- package/src/Tab/__snapshots__/test.tsx.snap +45 -29
- package/src/Tab/story/IconOrBadge.example.tsx +3 -8
- package/src/Tab/styles.ts +107 -0
- package/src/TabScrollButton/TabScrollButton.tsx +59 -0
- package/src/TabScrollButton/index.ts +6 -0
- package/src/Tabs/Tabs.tsx +42 -125
- package/src/Tabs/__snapshots__/test.tsx.snap +76 -45
- package/src/Tabs/index.ts +2 -3
- package/src/Tabs/story/Default.example.tsx +2 -4
- package/src/Tabs/styles.ts +45 -0
- package/src/Tabs/test.tsx +4 -4
- package/src/Tabs/use-tab-action.ts +27 -0
- package/src/index.ts +1 -0
- package/dist-package/src/Tabs/TabsContext.d.ts +0 -11
- package/dist-package/src/Tabs/TabsContext.d.ts.map +0 -1
- package/dist-package/src/Tabs/TabsContext.js +0 -15
- package/dist-package/src/Tabs/TabsContext.js.map +0 -1
- package/src/Tabs/TabsContext.tsx +0 -27
@@ -0,0 +1,45 @@
|
|
1
|
+
import type { Theme } from '@material-ui/core/styles'
|
2
|
+
import { createStyles } from '@material-ui/core/styles'
|
3
|
+
import { PicassoProvider } from '@toptal/picasso-provider'
|
4
|
+
|
5
|
+
PicassoProvider.override(({ palette }: Theme) => ({
|
6
|
+
MuiTabs: {
|
7
|
+
root: {
|
8
|
+
position: 'relative',
|
9
|
+
minHeight: 0,
|
10
|
+
},
|
11
|
+
vertical: {
|
12
|
+
width: 200,
|
13
|
+
margin: 0,
|
14
|
+
'& $scroller': {
|
15
|
+
// We need a bit of padding to allow active tab's shadow to be visible
|
16
|
+
paddingLeft: '0.5em',
|
17
|
+
},
|
18
|
+
|
19
|
+
'& $indicator': {
|
20
|
+
display: 'none',
|
21
|
+
},
|
22
|
+
},
|
23
|
+
indicator: {
|
24
|
+
backgroundColor: palette.blue.main,
|
25
|
+
zIndex: 1,
|
26
|
+
},
|
27
|
+
},
|
28
|
+
}))
|
29
|
+
|
30
|
+
export default ({ palette }: Theme) =>
|
31
|
+
createStyles({
|
32
|
+
horizontal: {
|
33
|
+
'&::after': {
|
34
|
+
position: 'absolute',
|
35
|
+
content: '""',
|
36
|
+
bottom: 0,
|
37
|
+
left: 0,
|
38
|
+
right: 0,
|
39
|
+
height: 1,
|
40
|
+
backgroundColor: palette.grey.main,
|
41
|
+
zIndex: 0,
|
42
|
+
},
|
43
|
+
},
|
44
|
+
vertical: {},
|
45
|
+
})
|
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: false,
|
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: false },
|
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: 1,
|
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: false,
|
163
163
|
variant: 'fullWidth',
|
164
164
|
})
|
165
165
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import type { Ref } from 'react'
|
2
|
+
import { useEffect, useRef } from 'react'
|
3
|
+
import type { TabsActions } from '@material-ui/core'
|
4
|
+
|
5
|
+
/*
|
6
|
+
* MuiTabs break when the size of a tab changes without rendering with React.
|
7
|
+
* This issue happens when the font is loaded after the initial render of the component.
|
8
|
+
* To solve this issue, we imperatively update the indicator and scroll buttons when it happens.
|
9
|
+
*/
|
10
|
+
const useTabAction = (): Ref<TabsActions> => {
|
11
|
+
const ref = useRef<TabsActions>(null)
|
12
|
+
|
13
|
+
useEffect(() => {
|
14
|
+
const listener = () => {
|
15
|
+
ref.current?.updateIndicator()
|
16
|
+
ref.current?.updateScrollButtons()
|
17
|
+
}
|
18
|
+
|
19
|
+
window.addEventListener('load', listener)
|
20
|
+
|
21
|
+
return () => window.removeEventListener('load', listener)
|
22
|
+
}, [])
|
23
|
+
|
24
|
+
return ref
|
25
|
+
}
|
26
|
+
|
27
|
+
export default useTabAction
|
package/src/index.ts
CHANGED
@@ -1,11 +0,0 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
export declare type TabsValueType = string | number | null;
|
3
|
-
export interface TabsContextValue {
|
4
|
-
value: TabsValueType;
|
5
|
-
onChange: (event: React.ChangeEvent<{}>, value: TabsValueType) => void;
|
6
|
-
orientation: 'horizontal' | 'vertical';
|
7
|
-
variant: 'scrollable' | 'fullWidth';
|
8
|
-
}
|
9
|
-
export declare const TabsContext: React.Context<TabsContextValue>;
|
10
|
-
export declare const useTabsContext: () => TabsContextValue;
|
11
|
-
//# sourceMappingURL=TabsContext.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"TabsContext.d.ts","sourceRoot":"","sources":["../../../src/Tabs/TabsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,oBAAY,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAElD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,aAAa,CAAA;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IACtE,WAAW,EAAE,YAAY,GAAG,UAAU,CAAA;IACtC,OAAO,EAAE,YAAY,GAAG,WAAW,CAAA;CACpC;AAED,eAAO,MAAM,WAAW,iCAKtB,CAAA;AAEF,eAAO,MAAM,cAAc,wBAQ1B,CAAA"}
|
@@ -1,15 +0,0 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
export const TabsContext = React.createContext({
|
3
|
-
value: null,
|
4
|
-
onChange: () => { },
|
5
|
-
orientation: 'horizontal',
|
6
|
-
variant: 'scrollable',
|
7
|
-
});
|
8
|
-
export const useTabsContext = () => {
|
9
|
-
const context = React.useContext(TabsContext);
|
10
|
-
if (!context) {
|
11
|
-
throw new Error('useTabsContext must be used within a TabsProvider');
|
12
|
-
}
|
13
|
-
return context;
|
14
|
-
};
|
15
|
-
//# sourceMappingURL=TabsContext.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"TabsContext.js","sourceRoot":"","sources":["../../../src/Tabs/TabsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAmB;IAC/D,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;IAClB,WAAW,EAAE,YAAY;IACzB,OAAO,EAAE,YAAY;CACtB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;IAE7C,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;KACrE;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
package/src/Tabs/TabsContext.tsx
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
import React from 'react'
|
2
|
-
|
3
|
-
export type TabsValueType = string | number | null
|
4
|
-
|
5
|
-
export interface TabsContextValue {
|
6
|
-
value: TabsValueType
|
7
|
-
onChange: (event: React.ChangeEvent<{}>, value: TabsValueType) => void
|
8
|
-
orientation: 'horizontal' | 'vertical'
|
9
|
-
variant: 'scrollable' | 'fullWidth'
|
10
|
-
}
|
11
|
-
|
12
|
-
export const TabsContext = React.createContext<TabsContextValue>({
|
13
|
-
value: null,
|
14
|
-
onChange: () => {},
|
15
|
-
orientation: 'horizontal',
|
16
|
-
variant: 'scrollable',
|
17
|
-
})
|
18
|
-
|
19
|
-
export const useTabsContext = () => {
|
20
|
-
const context = React.useContext(TabsContext)
|
21
|
-
|
22
|
-
if (!context) {
|
23
|
-
throw new Error('useTabsContext must be used within a TabsProvider')
|
24
|
-
}
|
25
|
-
|
26
|
-
return context
|
27
|
-
}
|