@extrachill/components 0.4.15 → 0.4.17
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/CHANGELOG.md +5 -0
- package/dist/ResponsiveTabs.d.ts.map +1 -1
- package/dist/ResponsiveTabs.js +9 -2
- package/package.json +1 -1
- package/src/ResponsiveTabs.tsx +10 -2
- package/styles/components.scss +4 -5
package/CHANGELOG.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponsiveTabs.d.ts","sourceRoot":"","sources":["../src/ResponsiveTabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAE,EAAE,EAAE,MAAM,KAAM,IAAI,CAAC;IACjC,WAAW,EAAE,CAAE,EAAE,EAAE,MAAM,KAAM,SAAS,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAAE,EAC/B,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,WAAW,EACX,SAAc,EACd,WAAkC,EAClC,aAAkB,EAClB,eAA2B,EAC3B,gBAAsB,EACtB,kBAAuB,EACvB,eAAsB,GACtB,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"ResponsiveTabs.d.ts","sourceRoot":"","sources":["../src/ResponsiveTabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAE,EAAE,EAAE,MAAM,KAAM,IAAI,CAAC;IACjC,WAAW,EAAE,CAAE,EAAE,EAAE,MAAM,KAAM,SAAS,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAAE,EAC/B,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,WAAW,EACX,SAAc,EACd,WAAkC,EAClC,aAAkB,EAClB,eAA2B,EAC3B,gBAAsB,EACtB,kBAAuB,EACvB,eAAsB,GACtB,EAAE,mBAAmB,kDA0FrB"}
|
package/dist/ResponsiveTabs.js
CHANGED
|
@@ -8,6 +8,7 @@ export function ResponsiveTabs({ tabs, active, onChange, renderPanel, className
|
|
|
8
8
|
}
|
|
9
9
|
return window.innerWidth < mobileBreakpoint;
|
|
10
10
|
});
|
|
11
|
+
const [mobileActive, setMobileActive] = useState(active);
|
|
11
12
|
useEffect(() => {
|
|
12
13
|
if (typeof window === 'undefined') {
|
|
13
14
|
return undefined;
|
|
@@ -19,6 +20,9 @@ export function ResponsiveTabs({ tabs, active, onChange, renderPanel, className
|
|
|
19
20
|
window.addEventListener('resize', handleResize);
|
|
20
21
|
return () => window.removeEventListener('resize', handleResize);
|
|
21
22
|
}, [mobileBreakpoint]);
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
setMobileActive(active);
|
|
25
|
+
}, [active]);
|
|
22
26
|
const rootClass = useMemo(() => [
|
|
23
27
|
classPrefix,
|
|
24
28
|
isMobile ? `${classPrefix}--mobile` : `${classPrefix}--desktop`,
|
|
@@ -33,7 +37,10 @@ export function ResponsiveTabs({ tabs, active, onChange, renderPanel, className
|
|
|
33
37
|
return (_jsxs("div", { className: rootClass, children: [showDesktopTabs && (_jsx(Tabs, { tabs: tabs, active: active, onChange: onChange, className: tabsClassName, classPrefix: tabsClassPrefix })), _jsx("div", { className: `${classPrefix}__desktop-panel`, children: renderPanel(active) })] }));
|
|
34
38
|
}
|
|
35
39
|
return (_jsx("div", { className: rootClass, children: _jsx("div", { className: [`${classPrefix}__accordion`, accordionClassName].filter(Boolean).join(' '), children: tabs.map((tab) => {
|
|
36
|
-
const isActive = tab.id ===
|
|
37
|
-
return (_jsxs("div", { className: `${classPrefix}__item${isActive ? ' is-active' : ''}`, children: [_jsxs("button", { type: "button", className: `${classPrefix}__trigger${isActive ? ' is-active' : ''}`, "aria-expanded": isActive, onClick: () =>
|
|
40
|
+
const isActive = tab.id === mobileActive;
|
|
41
|
+
return (_jsxs("div", { className: `${classPrefix}__item${isActive ? ' is-active' : ''}`, children: [_jsxs("button", { type: "button", className: `${classPrefix}__trigger${isActive ? ' is-active' : ''}`, "aria-expanded": isActive, onClick: () => {
|
|
42
|
+
setMobileActive(tab.id);
|
|
43
|
+
onChange(tab.id);
|
|
44
|
+
}, children: [_jsx("span", { children: tab.label }), _jsx("span", { className: `${classPrefix}__arrow`, "aria-hidden": "true", children: isActive ? '▲' : '▼' })] }), isActive && _jsx("div", { className: `${classPrefix}__panel`, children: renderPanel(tab.id) })] }, tab.id));
|
|
38
45
|
}) }) }));
|
|
39
46
|
}
|
package/package.json
CHANGED
package/src/ResponsiveTabs.tsx
CHANGED
|
@@ -36,6 +36,7 @@ export function ResponsiveTabs( {
|
|
|
36
36
|
|
|
37
37
|
return window.innerWidth < mobileBreakpoint;
|
|
38
38
|
} );
|
|
39
|
+
const [ mobileActive, setMobileActive ] = useState( active );
|
|
39
40
|
|
|
40
41
|
useEffect( () => {
|
|
41
42
|
if ( typeof window === 'undefined' ) {
|
|
@@ -52,6 +53,10 @@ export function ResponsiveTabs( {
|
|
|
52
53
|
return () => window.removeEventListener( 'resize', handleResize );
|
|
53
54
|
}, [ mobileBreakpoint ] );
|
|
54
55
|
|
|
56
|
+
useEffect( () => {
|
|
57
|
+
setMobileActive( active );
|
|
58
|
+
}, [ active ] );
|
|
59
|
+
|
|
55
60
|
const rootClass = useMemo(
|
|
56
61
|
() => [
|
|
57
62
|
classPrefix,
|
|
@@ -88,7 +93,7 @@ export function ResponsiveTabs( {
|
|
|
88
93
|
<div className={ rootClass }>
|
|
89
94
|
<div className={ [ `${ classPrefix }__accordion`, accordionClassName ].filter( Boolean ).join( ' ' ) }>
|
|
90
95
|
{ tabs.map( ( tab ) => {
|
|
91
|
-
const isActive = tab.id ===
|
|
96
|
+
const isActive = tab.id === mobileActive;
|
|
92
97
|
|
|
93
98
|
return (
|
|
94
99
|
<div key={ tab.id } className={ `${ classPrefix }__item${ isActive ? ' is-active' : '' }` }>
|
|
@@ -96,7 +101,10 @@ export function ResponsiveTabs( {
|
|
|
96
101
|
type="button"
|
|
97
102
|
className={ `${ classPrefix }__trigger${ isActive ? ' is-active' : '' }` }
|
|
98
103
|
aria-expanded={ isActive }
|
|
99
|
-
onClick={ () =>
|
|
104
|
+
onClick={ () => {
|
|
105
|
+
setMobileActive( tab.id );
|
|
106
|
+
onChange( tab.id );
|
|
107
|
+
} }
|
|
100
108
|
>
|
|
101
109
|
<span>{ tab.label }</span>
|
|
102
110
|
<span className={ `${ classPrefix }__arrow` } aria-hidden="true">
|
package/styles/components.scss
CHANGED
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
align-items: center;
|
|
89
89
|
gap: var(--spacing-xs, 0.25rem);
|
|
90
90
|
border: 1px solid var(--border-color, #ddd);
|
|
91
|
-
background: var(--background
|
|
91
|
+
background: var(--card-background, #f1f5f9);
|
|
92
92
|
padding: var(--spacing-sm, 0.5rem) var(--spacing-md, 1rem);
|
|
93
93
|
border-radius: var(--border-radius-sm, 4px);
|
|
94
94
|
cursor: pointer;
|
|
@@ -147,12 +147,12 @@
|
|
|
147
147
|
.ec-responsive-tabs {
|
|
148
148
|
display: grid;
|
|
149
149
|
gap: var(--spacing-md, 1rem);
|
|
150
|
+
background: var(--card-background, #f1f5f9);
|
|
150
151
|
}
|
|
151
152
|
|
|
152
153
|
.ec-responsive-tabs__desktop-panel {
|
|
153
154
|
display: grid;
|
|
154
155
|
background: var(--background-color, #fff);
|
|
155
|
-
border: 1px solid var(--border-color, #ddd);
|
|
156
156
|
border-radius: 0 0 var(--border-radius-md, 8px) var(--border-radius-md, 8px);
|
|
157
157
|
padding: 0;
|
|
158
158
|
margin-bottom: 0;
|
|
@@ -210,7 +210,7 @@
|
|
|
210
210
|
|
|
211
211
|
.ec-responsive-tabs__trigger:hover {
|
|
212
212
|
background: var(--background-color, #fff);
|
|
213
|
-
color: var(--link-color, #0b5394);
|
|
213
|
+
color: var(--link-color-hover, var(--link-color, #0b5394));
|
|
214
214
|
}
|
|
215
215
|
|
|
216
216
|
.ec-responsive-tabs__trigger:focus-visible {
|
|
@@ -324,7 +324,6 @@
|
|
|
324
324
|
gap: var(--spacing-md, 1rem);
|
|
325
325
|
flex-wrap: wrap;
|
|
326
326
|
padding-bottom: var(--spacing-md, 1rem);
|
|
327
|
-
background: var(--card-background, #f1f5f9);
|
|
328
327
|
}
|
|
329
328
|
|
|
330
329
|
.ec-block-shell-header--with-divider {
|
|
@@ -375,7 +374,7 @@
|
|
|
375
374
|
|
|
376
375
|
.ec-panel--depth-1,
|
|
377
376
|
.ec-panel--depth-3 {
|
|
378
|
-
background: var(--background
|
|
377
|
+
background: var(--card-background, #f8f8f8);
|
|
379
378
|
}
|
|
380
379
|
|
|
381
380
|
.ec-section {
|