@cleartrip/ct-design-accordion 4.0.0 → 5.0.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/README.md +79 -0
- package/dist/Accordion.d.ts +3 -3
- package/dist/Accordion.d.ts.map +1 -1
- package/dist/Accordion.native.d.ts +6 -0
- package/dist/Accordion.native.d.ts.map +1 -0
- package/dist/ct-design-accordion.browser.cjs.js +1 -1
- package/dist/ct-design-accordion.browser.cjs.js.map +1 -1
- package/dist/ct-design-accordion.browser.esm.js +1 -1
- package/dist/ct-design-accordion.browser.esm.js.map +1 -1
- package/dist/ct-design-accordion.cjs.js +72 -76
- package/dist/ct-design-accordion.cjs.js.map +1 -1
- package/dist/ct-design-accordion.esm.js +71 -73
- package/dist/ct-design-accordion.esm.js.map +1 -1
- package/dist/ct-design-accordion.umd.js +1697 -146
- package/dist/ct-design-accordion.umd.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.native.d.ts +3 -0
- package/dist/index.native.d.ts.map +1 -0
- package/dist/style.d.ts +21 -4
- package/dist/style.d.ts.map +1 -1
- package/dist/type.d.ts +27 -20
- package/dist/type.d.ts.map +1 -1
- package/dist/webStyle.d.ts +6 -0
- package/dist/webStyle.d.ts.map +1 -0
- package/package.json +36 -12
- package/src/Accordion.native.tsx +107 -0
- package/src/Accordion.tsx +97 -0
- package/src/index.native.ts +2 -0
- package/src/index.ts +2 -0
- package/src/style.ts +33 -0
- package/src/type.ts +85 -0
- package/src/webStyle.ts +21 -0
- package/dist/StyledAccordion/StyledAccordion.d.ts +0 -15
- package/dist/StyledAccordion/StyledAccordion.d.ts.map +0 -1
- package/dist/StyledAccordion/index.d.ts +0 -2
- package/dist/StyledAccordion/index.d.ts.map +0 -1
- package/dist/StyledAccordion/style.d.ts +0 -14
- package/dist/StyledAccordion/style.d.ts.map +0 -1
- package/dist/StyledAccordion/type.d.ts +0 -7
- package/dist/StyledAccordion/type.d.ts.map +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Accordion
|
|
2
|
+
|
|
3
|
+
A collapsible content container that allows users to expand and collapse sections.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @cleartrip/ct-design-accordion
|
|
11
|
+
# or
|
|
12
|
+
pnpm add @cleartrip/ct-design-accordion
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Peer dependencies
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Required for all targets
|
|
19
|
+
npm install react
|
|
20
|
+
|
|
21
|
+
# Web only
|
|
22
|
+
npm install react-dom
|
|
23
|
+
|
|
24
|
+
# React Native only
|
|
25
|
+
npm install react-native
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
### Basic
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
import { Accordion } from '@cleartrip/ct-design-accordion';
|
|
36
|
+
|
|
37
|
+
function Example() {
|
|
38
|
+
return (
|
|
39
|
+
<Accordion>
|
|
40
|
+
{/* Basic usage */}
|
|
41
|
+
</Accordion>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Props
|
|
49
|
+
|
|
50
|
+
| Prop | Type | Default | Required | Description |
|
|
51
|
+
|------|------|---------|----------|-------------|
|
|
52
|
+
| `disabled` | `boolean` | `false` | No | Disables interaction with the accordion. |
|
|
53
|
+
| `expanded` | `boolean` | `false` | No | Whether the accordion is currently expanded. |
|
|
54
|
+
| `label` | `ReactNode` | — | ✅ Yes | The accordion header/label content (always visible). |
|
|
55
|
+
| `onClick` | `() => void` | — | No | Click handler fired when the label row is tapped. On web it receives the |
|
|
56
|
+
| `children` | `ReactNode` | — | ✅ Yes | Collapsible content that is revealed when `expanded` is true. |
|
|
57
|
+
| `expandIcon` | `ReactNode` | — | No | Optional indicative icon rendered next to the label; rotated 180° when |
|
|
58
|
+
| `styleConfig` | `IAccordionStyleConfig` | — | No | Style configuration overrides for each internal container. |
|
|
59
|
+
| `isWrappedInAccordionGroup` | `boolean` | `false` | No | Internal flag used by AccordionGroup — should not be set by consumers. |
|
|
60
|
+
| `onAccordionGroupClick` | `() => void` | — | No | Internal callback used by AccordionGroup when an item is toggled — should |
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Accessibility
|
|
65
|
+
|
|
66
|
+
- The component follows accessibility best practices
|
|
67
|
+
- Ensure proper ARIA attributes are provided where needed
|
|
68
|
+
- Test with screen readers to ensure usability
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Migration
|
|
73
|
+
|
|
74
|
+
If migrating from a previous version:
|
|
75
|
+
|
|
76
|
+
```diff
|
|
77
|
+
- import { Accordion } from 'yagami/core/components';
|
|
78
|
+
+ import { Accordion } from '@cleartrip/ct-design-accordion';
|
|
79
|
+
```
|
package/dist/Accordion.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
declare const Accordion:
|
|
1
|
+
import { ContainerRef } from '@cleartrip/ct-design-container';
|
|
2
|
+
import type { IAccordionProps } from './type';
|
|
3
|
+
declare const Accordion: import("react").ForwardRefExoticComponent<IAccordionProps & import("react").RefAttributes<ContainerRef>>;
|
|
4
4
|
export default Accordion;
|
|
5
5
|
//# sourceMappingURL=Accordion.d.ts.map
|
package/dist/Accordion.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../packages/components/Accordion/src/Accordion.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../packages/components/Accordion/src/Accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAa,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAIzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAI9C,QAAA,MAAM,SAAS,0GAmFd,CAAC;AAGF,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ContainerRef } from '@cleartrip/ct-design-container';
|
|
3
|
+
import type { IAccordionProps } from './type';
|
|
4
|
+
declare const AccordionV2: React.ForwardRefExoticComponent<IAccordionProps & React.RefAttributes<ContainerRef>>;
|
|
5
|
+
export default AccordionV2;
|
|
6
|
+
//# sourceMappingURL=Accordion.native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.native.d.ts","sourceRoot":"","sources":["../packages/components/Accordion/src/Accordion.native.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqE,MAAM,OAAO,CAAC;AAI1F,OAAO,EAAa,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAGzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAM9C,QAAA,MAAM,WAAW,sFA0FhB,CAAC;AAGF,eAAe,WAAW,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),n=require("react"),o=require("@cleartrip/ct-design-container"),t=require("@cleartrip/ct-design-use-isomorphic-effect"),r=require("@cleartrip/ct-design-style-manager"),i=require("@emotion/css");function c(e){return e&&e.__esModule?e:{default:e}}var a=c(t);const s=r.makeStyles(e=>({root:{},labelRow:{display:"flex",flexDirection:"row",alignItems:"center",justifyContent:"space-between"},iconContainer:{display:"flex",justifyContent:"center",alignItems:"center",marginLeft:e.spacing[4]},animatedAccordionRoot:{overflow:"hidden"},accordionContentRoot:{overflow:"hidden"}})),l={iconTransition:i.css({transition:"transform 0.3s"}),contentTransition:i.css({transition:"max-height 0.3s ease-in-out"})},d=n.forwardRef(({expanded:t=!1,label:i,onClick:c,children:d,expandIcon:u,disabled:f=!1,styleConfig:g,isWrappedInAccordionGroup:m=!1,onAccordionGroupClick:C},h)=>{const{childrenContainer:p=[],icon:x=[],label:y=[],root:b=[]}=g||{},[v,R]=n.useState(t),w=n.useRef(null);a.default(()=>{R(t)},[t]);const j=r.useStyles(()=>{var e,n;const o=null!==(n=null===(e=w.current)||void 0===e?void 0:e.scrollHeight)&&void 0!==n?n:0;return{labelRow:{},iconTransform:{transform:v?"rotate(180deg)":"rotate(0deg)"},contentMaxHeight:{maxHeight:v?o:0}}},[v,f]),T=r.useWebMergeStyles([s.iconContainer,l.iconTransition,j.iconTransform,...x],[s.iconContainer,j.iconTransform,x]),q=r.useWebMergeStyles([s.accordionContentRoot,l.contentTransition,j.contentMaxHeight,...p],[s.accordionContentRoot,j.contentMaxHeight,p]);return e.jsxs(o.Container,{styleConfig:{root:b},children:[e.jsxs(o.Container,{ref:h,onClick:()=>{f||(m?null==C||C():R(e=>!e),null==c||c())},styleConfig:{root:[s.labelRow,j.labelRow,...y]},children:[i,u&&e.jsx("div",{className:T,children:u})]}),e.jsx("div",{ref:w,className:q,children:d})]})});d.displayName="Accordion",exports.Accordion=d;
|
|
2
2
|
//# sourceMappingURL=ct-design-accordion.browser.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-accordion.browser.cjs.js","sources":["../packages/components/Accordion/src/
|
|
1
|
+
{"version":3,"file":"ct-design-accordion.browser.cjs.js","sources":["../packages/components/Accordion/src/style.ts","../packages/components/Accordion/src/webStyle.ts","../packages/components/Accordion/src/Accordion.tsx"],"sourcesContent":[null,null,null],"names":["accordionStaticStyles","makeStyles","theme","root","labelRow","display","flexDirection","alignItems","justifyContent","iconContainer","marginLeft","spacing","animatedAccordionRoot","overflow","accordionContentRoot","webStaticStyles","iconTransition","css","transition","contentTransition","Accordion","forwardRef","expanded","label","onClick","children","expandIcon","disabled","styleConfig","isWrappedInAccordionGroup","onAccordionGroupClick","forwardedRef","childrenContainer","icon","labelStyle","isExpanded","setIsExpanded","useState","accordionContentRef","useRef","useIsomorphicEffect","dynamicStyles","useStyles","contentScrollHeight","_b","_a","current","scrollHeight","iconTransform","transform","contentMaxHeight","maxHeight","mergedIconClassName","useWebMergeStyles","staticStyles","mergedContentClassName","_jsxs","Container","ref","previouslyExpanded","_jsx","className","displayName"],"mappings":"+SAQA,MAAMA,EAAwBC,EAAAA,WAAYC,IAAW,CACnDC,KAAM,CAEL,EACDC,SAAU,CACRC,QAAS,OACTC,cAAe,MACfC,WAAY,SACZC,eAAgB,iBAElBC,cAAe,CACbJ,QAAS,OACTG,eAAgB,SAChBD,WAAY,SACZG,WAAYR,EAAMS,QAAQ,IAE5BC,sBAAuB,CACrBC,SAAU,UAEZC,qBAAsB,CACpBD,SAAU,aCjBRE,EAAkB,CACtBC,eAAgBC,EAAAA,IAAI,CAClBC,WAAY,mBAEdC,kBAAmBF,EAAAA,IAAI,CACrBC,WAAY,iCCNVE,EAAYC,EAAUA,WAC1B,EAEIC,YAAW,EACXC,QACAC,UACAC,WACAC,aACAC,YAAW,EACXC,cACAC,6BAA4B,EAC5BC,yBAEFC,KAEA,MAAMC,kBAAEA,EAAoB,GAAEC,KAAEA,EAAO,GAAIV,MAAOW,EAAa,GAAE/B,KAAEA,EAAO,IAAOyB,GAAe,CAAA,GAEzFO,EAAYC,GAAiBC,EAAQA,SAAUf,GAChDgB,EAAsBC,SAAuB,MAEnDC,EAAAA,QAAoB,KAClBJ,EAAcd,IACb,CAACA,IAEJ,MAaMmB,EAAgBC,EAAAA,UAAU,aAC9B,MAAMC,EAAmE,QAA7CC,EAA6B,QAA7BC,EAAAP,EAAoBQ,eAAS,IAAAD,OAAA,EAAAA,EAAAE,oBAAgB,IAAAH,EAAAA,EAAA,EACzE,MAAO,CACLxC,SAAU,CAET,EACD4C,cAAe,CACbC,UAAWd,EAAa,iBAAmB,gBAE7Ce,iBAAkB,CAChBC,UAAWhB,EAAaQ,EAAsB,KAGjD,CAACR,EAAYR,IAEVyB,EAAsBC,EAAAA,kBAC1B,CAACC,EAAa7C,cAAeM,EAAgBC,eAAgByB,EAAcO,iBAAkBf,GAC7F,CAACqB,EAAa7C,cAAegC,EAAcO,cAAef,IAGtDsB,EAAyBF,EAAAA,kBAC7B,CACEC,EAAaxC,qBACbC,EAAgBI,kBAChBsB,EAAcS,oBACXlB,GAEL,CAACsB,EAAaxC,qBAAsB2B,EAAcS,iBAAkBlB,IAGtE,OACEwB,OAACC,EAAAA,UAAS,CAAC7B,YAAa,CAAEzB,QAAMsB,SAAA,CAC9B+B,EAAAA,KAACC,EAASA,WACRC,IAAK3B,EACLP,QA/CmB,KACnBG,IAEAE,EACFC,SAAAA,IAEAM,EAAeuB,IAAwBA,GAEzCnC,SAAAA,MAwCII,YAAa,CAAEzB,KAAM,CAACmD,EAAalD,SAAUqC,EAAcrC,YAAa8B,IAEvET,SAAA,CAAAF,EACAG,GAAckC,EAAAA,IAAA,MAAA,CAAKC,UAAWT,EAAsB3B,SAAAC,OAEvDkC,EAAAA,IAAA,MAAA,CAAKF,IAAKpB,EAAqBuB,UAAWN,EACvC9B,SAAAA,SAOXL,EAAU0C,YAAc"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsxs as o,jsx as n}from"react/jsx-runtime";import{forwardRef as t,useState as e,useRef as i}from"react";import{Container as r}from"@cleartrip/ct-design-container";import c from"@cleartrip/ct-design-use-isomorphic-effect";import{makeStyles as a,useStyles as l,useWebMergeStyles as s}from"@cleartrip/ct-design-style-manager";import{css as d}from"@emotion/css";const m=a(o=>({root:{},labelRow:{display:"flex",flexDirection:"row",alignItems:"center",justifyContent:"space-between"},iconContainer:{display:"flex",justifyContent:"center",alignItems:"center",marginLeft:o.spacing[4]},animatedAccordionRoot:{overflow:"hidden"},accordionContentRoot:{overflow:"hidden"}})),f={iconTransition:d({transition:"transform 0.3s"}),contentTransition:d({transition:"max-height 0.3s ease-in-out"})},p=t(({expanded:t=!1,label:a,onClick:d,children:p,expandIcon:g,disabled:h=!1,styleConfig:u,isWrappedInAccordionGroup:C=!1,onAccordionGroupClick:x},y)=>{const{childrenContainer:b=[],icon:v=[],label:w=[],root:R=[]}=u||{},[T,H]=e(t),A=i(null);c(()=>{H(t)},[t]);const I=l(()=>{var o,n;const t=null!==(n=null===(o=A.current)||void 0===o?void 0:o.scrollHeight)&&void 0!==n?n:0;return{labelRow:{},iconTransform:{transform:T?"rotate(180deg)":"rotate(0deg)"},contentMaxHeight:{maxHeight:T?t:0}}},[T,h]),j=s([m.iconContainer,f.iconTransition,I.iconTransform,...v],[m.iconContainer,I.iconTransform,v]),k=s([m.accordionContentRoot,f.contentTransition,I.contentMaxHeight,...b],[m.accordionContentRoot,I.contentMaxHeight,b]);return o(r,{styleConfig:{root:R},children:[o(r,{ref:y,onClick:()=>{h||(C?null==x||x():H(o=>!o),null==d||d())},styleConfig:{root:[m.labelRow,I.labelRow,...w]},children:[a,g&&n("div",{className:j,children:g})]}),n("div",{ref:A,className:k,children:p})]})});p.displayName="Accordion";export{p as Accordion};
|
|
2
2
|
//# sourceMappingURL=ct-design-accordion.browser.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-accordion.browser.esm.js","sources":["../packages/components/Accordion/src/style.ts","../packages/components/Accordion/src/
|
|
1
|
+
{"version":3,"file":"ct-design-accordion.browser.esm.js","sources":["../packages/components/Accordion/src/style.ts","../packages/components/Accordion/src/webStyle.ts","../packages/components/Accordion/src/Accordion.tsx"],"sourcesContent":[null,null,null],"names":["accordionStaticStyles","makeStyles","theme","root","labelRow","display","flexDirection","alignItems","justifyContent","iconContainer","marginLeft","spacing","animatedAccordionRoot","overflow","accordionContentRoot","webStaticStyles","iconTransition","css","transition","contentTransition","Accordion","forwardRef","expanded","label","onClick","children","expandIcon","disabled","styleConfig","isWrappedInAccordionGroup","onAccordionGroupClick","forwardedRef","childrenContainer","icon","labelStyle","isExpanded","setIsExpanded","useState","accordionContentRef","useRef","useIsomorphicEffect","dynamicStyles","useStyles","contentScrollHeight","_b","_a","current","scrollHeight","iconTransform","transform","contentMaxHeight","maxHeight","mergedIconClassName","useWebMergeStyles","staticStyles","mergedContentClassName","_jsxs","Container","ref","previouslyExpanded","_jsx","className","displayName"],"mappings":"6WAQA,MAAMA,EAAwBC,EAAYC,IAAW,CACnDC,KAAM,CAEL,EACDC,SAAU,CACRC,QAAS,OACTC,cAAe,MACfC,WAAY,SACZC,eAAgB,iBAElBC,cAAe,CACbJ,QAAS,OACTG,eAAgB,SAChBD,WAAY,SACZG,WAAYR,EAAMS,QAAQ,IAE5BC,sBAAuB,CACrBC,SAAU,UAEZC,qBAAsB,CACpBD,SAAU,aCjBRE,EAAkB,CACtBC,eAAgBC,EAAI,CAClBC,WAAY,mBAEdC,kBAAmBF,EAAI,CACrBC,WAAY,iCCNVE,EAAYC,EAChB,EAEIC,YAAW,EACXC,QACAC,UACAC,WACAC,aACAC,YAAW,EACXC,cACAC,6BAA4B,EAC5BC,yBAEFC,KAEA,MAAMC,kBAAEA,EAAoB,GAAEC,KAAEA,EAAO,GAAIV,MAAOW,EAAa,GAAE/B,KAAEA,EAAO,IAAOyB,GAAe,CAAA,GAEzFO,EAAYC,GAAiBC,EAAkBf,GAChDgB,EAAsBC,EAAuB,MAEnDC,EAAoB,KAClBJ,EAAcd,IACb,CAACA,IAEJ,MAaMmB,EAAgBC,EAAU,aAC9B,MAAMC,EAAmE,QAA7CC,EAA6B,QAA7BC,EAAAP,EAAoBQ,eAAS,IAAAD,OAAA,EAAAA,EAAAE,oBAAgB,IAAAH,EAAAA,EAAA,EACzE,MAAO,CACLxC,SAAU,CAET,EACD4C,cAAe,CACbC,UAAWd,EAAa,iBAAmB,gBAE7Ce,iBAAkB,CAChBC,UAAWhB,EAAaQ,EAAsB,KAGjD,CAACR,EAAYR,IAEVyB,EAAsBC,EAC1B,CAACC,EAAa7C,cAAeM,EAAgBC,eAAgByB,EAAcO,iBAAkBf,GAC7F,CAACqB,EAAa7C,cAAegC,EAAcO,cAAef,IAGtDsB,EAAyBF,EAC7B,CACEC,EAAaxC,qBACbC,EAAgBI,kBAChBsB,EAAcS,oBACXlB,GAEL,CAACsB,EAAaxC,qBAAsB2B,EAAcS,iBAAkBlB,IAGtE,OACEwB,EAACC,EAAS,CAAC7B,YAAa,CAAEzB,QAAMsB,SAAA,CAC9B+B,EAACC,GACCC,IAAK3B,EACLP,QA/CmB,KACnBG,IAEAE,EACFC,SAAAA,IAEAM,EAAeuB,IAAwBA,GAEzCnC,SAAAA,MAwCII,YAAa,CAAEzB,KAAM,CAACmD,EAAalD,SAAUqC,EAAcrC,YAAa8B,IAEvET,SAAA,CAAAF,EACAG,GAAckC,EAAA,MAAA,CAAKC,UAAWT,EAAsB3B,SAAAC,OAEvDkC,EAAA,MAAA,CAAKF,IAAKpB,EAAqBuB,UAAWN,EACvC9B,SAAAA,SAOXL,EAAU0C,YAAc"}
|
|
@@ -1,92 +1,88 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var tslib = require('tslib');
|
|
4
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
-
var
|
|
6
|
-
var ctDesignIcons = require('@cleartrip/ct-design-icons');
|
|
4
|
+
var react = require('react');
|
|
7
5
|
var ctDesignContainer = require('@cleartrip/ct-design-container');
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var classNames = require('classnames');
|
|
6
|
+
var useIsomorphicEffect = require('@cleartrip/ct-design-use-isomorphic-effect');
|
|
7
|
+
var ctDesignStyleManager = require('@cleartrip/ct-design-style-manager');
|
|
8
|
+
var css = require('@emotion/css');
|
|
12
9
|
|
|
13
10
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
11
|
|
|
15
|
-
var
|
|
16
|
-
var styled__default = /*#__PURE__*/_interopDefault(styled);
|
|
17
|
-
var classNames__default = /*#__PURE__*/_interopDefault(classNames);
|
|
12
|
+
var useIsomorphicEffect__default = /*#__PURE__*/_interopDefault(useIsomorphicEffect);
|
|
18
13
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
14
|
+
const accordionStaticStyles = ctDesignStyleManager.makeStyles((theme) => ({
|
|
15
|
+
root: {},
|
|
16
|
+
labelRow: {
|
|
17
|
+
display: 'flex',
|
|
18
|
+
flexDirection: 'row',
|
|
19
|
+
alignItems: 'center',
|
|
20
|
+
justifyContent: 'space-between',
|
|
21
|
+
},
|
|
22
|
+
iconContainer: {
|
|
23
|
+
display: 'flex',
|
|
24
|
+
justifyContent: 'center',
|
|
25
|
+
alignItems: 'center',
|
|
26
|
+
marginLeft: theme.spacing[4],
|
|
27
|
+
},
|
|
28
|
+
animatedAccordionRoot: {
|
|
29
|
+
overflow: 'hidden',
|
|
30
|
+
},
|
|
31
|
+
accordionContentRoot: {
|
|
32
|
+
overflow: 'hidden',
|
|
33
|
+
},
|
|
34
|
+
}));
|
|
35
|
+
|
|
36
|
+
const webStaticStyles = {
|
|
37
|
+
iconTransition: css.css({
|
|
38
|
+
transition: 'transform 0.3s',
|
|
39
|
+
}),
|
|
40
|
+
contentTransition: css.css({
|
|
41
|
+
transition: 'max-height 0.3s ease-in-out',
|
|
42
|
+
}),
|
|
28
43
|
};
|
|
29
44
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
45
|
+
const Accordion = react.forwardRef(({ expanded = false, label, onClick, children, expandIcon, disabled = false, styleConfig, isWrappedInAccordionGroup = false, onAccordionGroupClick, }, forwardedRef) => {
|
|
46
|
+
const { childrenContainer = [], icon = [], label: labelStyle = [], root = [] } = styleConfig || {};
|
|
47
|
+
const [isExpanded, setIsExpanded] = react.useState(expanded);
|
|
48
|
+
const accordionContentRef = react.useRef(null);
|
|
49
|
+
useIsomorphicEffect__default.default(() => {
|
|
50
|
+
setIsExpanded(expanded);
|
|
51
|
+
}, [expanded]);
|
|
52
|
+
const onAccordionClick = () => {
|
|
53
|
+
if (disabled)
|
|
54
|
+
return;
|
|
55
|
+
if (isWrappedInAccordionGroup) {
|
|
56
|
+
onAccordionGroupClick === null || onAccordionGroupClick === void 0 ? void 0 : onAccordionGroupClick();
|
|
37
57
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
var theme = _a.theme, height = _a.height;
|
|
43
|
-
return {
|
|
44
|
-
paddingTop: theme.spacing[4],
|
|
45
|
-
height: 'auto',
|
|
46
|
-
transition: "".concat(height, " 2s ease-in-out"),
|
|
47
|
-
overflow: 'hidden',
|
|
48
|
-
};
|
|
49
|
-
};
|
|
50
|
-
var getStyledAccordionArrowStyles = function (_a) {
|
|
51
|
-
var transform = _a.transform;
|
|
52
|
-
return {
|
|
53
|
-
display: 'flex',
|
|
54
|
-
height: '100%',
|
|
55
|
-
marginLeft: 'auto',
|
|
56
|
-
transition: 'transform 0.2s ease-in-out',
|
|
57
|
-
transform: transform,
|
|
58
|
-
cursor: 'pointer',
|
|
58
|
+
else {
|
|
59
|
+
setIsExpanded((previouslyExpanded) => !previouslyExpanded);
|
|
60
|
+
}
|
|
61
|
+
onClick === null || onClick === void 0 ? void 0 : onClick();
|
|
59
62
|
};
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
63
|
+
const dynamicStyles = ctDesignStyleManager.useStyles(() => {
|
|
64
|
+
var _a, _b;
|
|
65
|
+
const contentScrollHeight = (_b = (_a = accordionContentRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeight) !== null && _b !== void 0 ? _b : 0;
|
|
66
|
+
return {
|
|
67
|
+
labelRow: {},
|
|
68
|
+
iconTransform: {
|
|
69
|
+
transform: isExpanded ? 'rotate(180deg)' : 'rotate(0deg)',
|
|
70
|
+
},
|
|
71
|
+
contentMaxHeight: {
|
|
72
|
+
maxHeight: isExpanded ? contentScrollHeight : 0,
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}, [isExpanded, disabled]);
|
|
76
|
+
const mergedIconClassName = ctDesignStyleManager.useWebMergeStyles([accordionStaticStyles.iconContainer, webStaticStyles.iconTransition, dynamicStyles.iconTransform, ...icon], [accordionStaticStyles.iconContainer, dynamicStyles.iconTransform, icon]);
|
|
77
|
+
const mergedContentClassName = ctDesignStyleManager.useWebMergeStyles([
|
|
78
|
+
accordionStaticStyles.accordionContentRoot,
|
|
79
|
+
webStaticStyles.contentTransition,
|
|
80
|
+
dynamicStyles.contentMaxHeight,
|
|
81
|
+
...childrenContainer,
|
|
82
|
+
], [accordionStaticStyles.accordionContentRoot, dynamicStyles.contentMaxHeight, childrenContainer]);
|
|
83
|
+
return (jsxRuntime.jsxs(ctDesignContainer.Container, { styleConfig: { root }, children: [jsxRuntime.jsxs(ctDesignContainer.Container, { ref: forwardedRef, onClick: onAccordionClick, styleConfig: { root: [accordionStaticStyles.labelRow, dynamicStyles.labelRow, ...labelStyle] }, children: [label, expandIcon && jsxRuntime.jsx("div", { className: mergedIconClassName, children: expandIcon })] }), jsxRuntime.jsx("div", { ref: accordionContentRef, className: mergedContentClassName, children: children })] }));
|
|
76
84
|
});
|
|
77
|
-
|
|
78
|
-
var Accordion = function (_a) {
|
|
79
|
-
var _b = _a.children, children = _b === void 0 ? null : _b, _c = _a.isOpen, isOpen = _c === void 0 ? false : _c, _d = _a.title, title = _d === void 0 ? '' : _d, _e = _a.onClick, onClick = _e === void 0 ? function () { } : _e, _f = _a.showBorders, showBorders = _f === void 0 ? true : _f, _g = _a.titleVariant, titleVariant = _g === void 0 ? 'L1' : _g, _h = _a.subtitle, subtitle = _h === void 0 ? '' : _h, _j = _a.disableTransition, disableTransition = _j === void 0 ? false : _j, _k = _a.styleConfig, styleConfig = _k === void 0 ? {} : _k;
|
|
80
|
-
var accordionArrowStyles = getAccordionArrowStyles({
|
|
81
|
-
isOpen: isOpen,
|
|
82
|
-
});
|
|
83
|
-
var root = styleConfig.root, headerContainer = styleConfig.headerContainer, titleContainer = styleConfig.titleContainer, titleProp = styleConfig.title, subTitleProp = styleConfig.subTitle, arrow = styleConfig.arrow, childrenContainer = styleConfig.childrenContainer, childrenContentContainer = styleConfig.childrenContentContainer, arrowIcon = styleConfig.arrowIcon;
|
|
84
|
-
return (jsxRuntime.jsxs(StyledAccordionWrapper, tslib.__assign({ showBorders: showBorders, className: root === null || root === void 0 ? void 0 : root.className, css: root === null || root === void 0 ? void 0 : root.css }, { children: [jsxRuntime.jsxs(ctDesignContainer.Container, tslib.__assign({ className: headerContainer === null || headerContainer === void 0 ? void 0 : headerContainer.className, css: headerContainer === null || headerContainer === void 0 ? void 0 : headerContainer.css, display: 'flex', flexDirection: 'row', onClick: onClick }, { children: [jsxRuntime.jsxs(ctDesignContainer.Container, tslib.__assign({ className: classNames__default.default('flex flex-column', titleContainer === null || titleContainer === void 0 ? void 0 : titleContainer.className), rowGap: '4px', css: titleContainer === null || titleContainer === void 0 ? void 0 : titleContainer.css }, { children: [jsxRuntime.jsx(ctDesignTypography.Typography, tslib.__assign({ variant: titleVariant, styleConfig: titleProp }, { children: title })), subtitle && !isOpen && (jsxRuntime.jsx(ctDesignTypography.Typography, tslib.__assign({ variant: 'B2', color: 'subheading', styleConfig: subTitleProp }, { children: subtitle })))] })), jsxRuntime.jsx(StyledAccordionArrow, tslib.__assign({}, accordionArrowStyles, { className: arrow === null || arrow === void 0 ? void 0 : arrow.className, css: arrow === null || arrow === void 0 ? void 0 : arrow.css }, { children: jsxRuntime.jsx(ctDesignIcons.ChevronDown, tslib.__assign({}, arrowIcon)) }))] })), jsxRuntime.jsx(ctDesignContainer.Container, tslib.__assign({ className: childrenContainer === null || childrenContainer === void 0 ? void 0 : childrenContainer.className, css: childrenContainer === null || childrenContainer === void 0 ? void 0 : childrenContainer.css }, { children: isOpen && (jsxRuntime.jsx(StyledAccordionContent, tslib.__assign({ height: !isOpen ? '0px' : 'auto', className: childrenContentContainer === null || childrenContentContainer === void 0 ? void 0 : childrenContentContainer.className, css: childrenContentContainer === null || childrenContentContainer === void 0 ? void 0 : childrenContentContainer.css }, { children: !disableTransition && React__default.default.isValidElement(children) ? (jsxRuntime.jsx(ctDesignTransition.Transition, tslib.__assign({ type: 'slide', in: isOpen, timeout: {
|
|
85
|
-
appear: 200,
|
|
86
|
-
enter: 200,
|
|
87
|
-
exit: 200,
|
|
88
|
-
} }, { children: children }))) : (children) }))) }))] })));
|
|
89
|
-
};
|
|
85
|
+
Accordion.displayName = 'Accordion';
|
|
90
86
|
|
|
91
87
|
exports.Accordion = Accordion;
|
|
92
88
|
//# sourceMappingURL=ct-design-accordion.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-accordion.cjs.js","sources":["../packages/components/Accordion/src/style.ts","../packages/components/Accordion/src/
|
|
1
|
+
{"version":3,"file":"ct-design-accordion.cjs.js","sources":["../packages/components/Accordion/src/style.ts","../packages/components/Accordion/src/webStyle.ts","../packages/components/Accordion/src/Accordion.tsx"],"sourcesContent":[null,null,null],"names":["makeStyles","css","forwardRef","useState","useRef","useIsomorphicEffect","useStyles","useWebMergeStyles","staticStyles","_jsxs","Container","_jsx"],"mappings":"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"}
|
|
@@ -1,84 +1,82 @@
|
|
|
1
|
-
import { __assign } from 'tslib';
|
|
2
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
-
import
|
|
4
|
-
import { ChevronDown } from '@cleartrip/ct-design-icons';
|
|
2
|
+
import { forwardRef, useState, useRef } from 'react';
|
|
5
3
|
import { Container } from '@cleartrip/ct-design-container';
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
import classNames from 'classnames';
|
|
4
|
+
import useIsomorphicEffect from '@cleartrip/ct-design-use-isomorphic-effect';
|
|
5
|
+
import { makeStyles, useStyles, useWebMergeStyles } from '@cleartrip/ct-design-style-manager';
|
|
6
|
+
import { css } from '@emotion/css';
|
|
10
7
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
8
|
+
const accordionStaticStyles = makeStyles((theme) => ({
|
|
9
|
+
root: {},
|
|
10
|
+
labelRow: {
|
|
11
|
+
display: 'flex',
|
|
12
|
+
flexDirection: 'row',
|
|
13
|
+
alignItems: 'center',
|
|
14
|
+
justifyContent: 'space-between',
|
|
15
|
+
},
|
|
16
|
+
iconContainer: {
|
|
17
|
+
display: 'flex',
|
|
18
|
+
justifyContent: 'center',
|
|
19
|
+
alignItems: 'center',
|
|
20
|
+
marginLeft: theme.spacing[4],
|
|
21
|
+
},
|
|
22
|
+
animatedAccordionRoot: {
|
|
23
|
+
overflow: 'hidden',
|
|
24
|
+
},
|
|
25
|
+
accordionContentRoot: {
|
|
26
|
+
overflow: 'hidden',
|
|
27
|
+
},
|
|
28
|
+
}));
|
|
29
|
+
|
|
30
|
+
const webStaticStyles = {
|
|
31
|
+
iconTransition: css({
|
|
32
|
+
transition: 'transform 0.3s',
|
|
33
|
+
}),
|
|
34
|
+
contentTransition: css({
|
|
35
|
+
transition: 'max-height 0.3s ease-in-out',
|
|
36
|
+
}),
|
|
20
37
|
};
|
|
21
38
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
39
|
+
const Accordion = forwardRef(({ expanded = false, label, onClick, children, expandIcon, disabled = false, styleConfig, isWrappedInAccordionGroup = false, onAccordionGroupClick, }, forwardedRef) => {
|
|
40
|
+
const { childrenContainer = [], icon = [], label: labelStyle = [], root = [] } = styleConfig || {};
|
|
41
|
+
const [isExpanded, setIsExpanded] = useState(expanded);
|
|
42
|
+
const accordionContentRef = useRef(null);
|
|
43
|
+
useIsomorphicEffect(() => {
|
|
44
|
+
setIsExpanded(expanded);
|
|
45
|
+
}, [expanded]);
|
|
46
|
+
const onAccordionClick = () => {
|
|
47
|
+
if (disabled)
|
|
48
|
+
return;
|
|
49
|
+
if (isWrappedInAccordionGroup) {
|
|
50
|
+
onAccordionGroupClick === null || onAccordionGroupClick === void 0 ? void 0 : onAccordionGroupClick();
|
|
29
51
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
var theme = _a.theme, height = _a.height;
|
|
35
|
-
return {
|
|
36
|
-
paddingTop: theme.spacing[4],
|
|
37
|
-
height: 'auto',
|
|
38
|
-
transition: "".concat(height, " 2s ease-in-out"),
|
|
39
|
-
overflow: 'hidden',
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
var getStyledAccordionArrowStyles = function (_a) {
|
|
43
|
-
var transform = _a.transform;
|
|
44
|
-
return {
|
|
45
|
-
display: 'flex',
|
|
46
|
-
height: '100%',
|
|
47
|
-
marginLeft: 'auto',
|
|
48
|
-
transition: 'transform 0.2s ease-in-out',
|
|
49
|
-
transform: transform,
|
|
50
|
-
cursor: 'pointer',
|
|
52
|
+
else {
|
|
53
|
+
setIsExpanded((previouslyExpanded) => !previouslyExpanded);
|
|
54
|
+
}
|
|
55
|
+
onClick === null || onClick === void 0 ? void 0 : onClick();
|
|
51
56
|
};
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
57
|
+
const dynamicStyles = useStyles(() => {
|
|
58
|
+
var _a, _b;
|
|
59
|
+
const contentScrollHeight = (_b = (_a = accordionContentRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeight) !== null && _b !== void 0 ? _b : 0;
|
|
60
|
+
return {
|
|
61
|
+
labelRow: {},
|
|
62
|
+
iconTransform: {
|
|
63
|
+
transform: isExpanded ? 'rotate(180deg)' : 'rotate(0deg)',
|
|
64
|
+
},
|
|
65
|
+
contentMaxHeight: {
|
|
66
|
+
maxHeight: isExpanded ? contentScrollHeight : 0,
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}, [isExpanded, disabled]);
|
|
70
|
+
const mergedIconClassName = useWebMergeStyles([accordionStaticStyles.iconContainer, webStaticStyles.iconTransition, dynamicStyles.iconTransform, ...icon], [accordionStaticStyles.iconContainer, dynamicStyles.iconTransform, icon]);
|
|
71
|
+
const mergedContentClassName = useWebMergeStyles([
|
|
72
|
+
accordionStaticStyles.accordionContentRoot,
|
|
73
|
+
webStaticStyles.contentTransition,
|
|
74
|
+
dynamicStyles.contentMaxHeight,
|
|
75
|
+
...childrenContainer,
|
|
76
|
+
], [accordionStaticStyles.accordionContentRoot, dynamicStyles.contentMaxHeight, childrenContainer]);
|
|
77
|
+
return (jsxs(Container, { styleConfig: { root }, children: [jsxs(Container, { ref: forwardedRef, onClick: onAccordionClick, styleConfig: { root: [accordionStaticStyles.labelRow, dynamicStyles.labelRow, ...labelStyle] }, children: [label, expandIcon && jsx("div", { className: mergedIconClassName, children: expandIcon })] }), jsx("div", { ref: accordionContentRef, className: mergedContentClassName, children: children })] }));
|
|
68
78
|
});
|
|
69
|
-
|
|
70
|
-
var Accordion = function (_a) {
|
|
71
|
-
var _b = _a.children, children = _b === void 0 ? null : _b, _c = _a.isOpen, isOpen = _c === void 0 ? false : _c, _d = _a.title, title = _d === void 0 ? '' : _d, _e = _a.onClick, onClick = _e === void 0 ? function () { } : _e, _f = _a.showBorders, showBorders = _f === void 0 ? true : _f, _g = _a.titleVariant, titleVariant = _g === void 0 ? 'L1' : _g, _h = _a.subtitle, subtitle = _h === void 0 ? '' : _h, _j = _a.disableTransition, disableTransition = _j === void 0 ? false : _j, _k = _a.styleConfig, styleConfig = _k === void 0 ? {} : _k;
|
|
72
|
-
var accordionArrowStyles = getAccordionArrowStyles({
|
|
73
|
-
isOpen: isOpen,
|
|
74
|
-
});
|
|
75
|
-
var root = styleConfig.root, headerContainer = styleConfig.headerContainer, titleContainer = styleConfig.titleContainer, titleProp = styleConfig.title, subTitleProp = styleConfig.subTitle, arrow = styleConfig.arrow, childrenContainer = styleConfig.childrenContainer, childrenContentContainer = styleConfig.childrenContentContainer, arrowIcon = styleConfig.arrowIcon;
|
|
76
|
-
return (jsxs(StyledAccordionWrapper, __assign({ showBorders: showBorders, className: root === null || root === void 0 ? void 0 : root.className, css: root === null || root === void 0 ? void 0 : root.css }, { children: [jsxs(Container, __assign({ className: headerContainer === null || headerContainer === void 0 ? void 0 : headerContainer.className, css: headerContainer === null || headerContainer === void 0 ? void 0 : headerContainer.css, display: 'flex', flexDirection: 'row', onClick: onClick }, { children: [jsxs(Container, __assign({ className: classNames('flex flex-column', titleContainer === null || titleContainer === void 0 ? void 0 : titleContainer.className), rowGap: '4px', css: titleContainer === null || titleContainer === void 0 ? void 0 : titleContainer.css }, { children: [jsx(Typography, __assign({ variant: titleVariant, styleConfig: titleProp }, { children: title })), subtitle && !isOpen && (jsx(Typography, __assign({ variant: 'B2', color: 'subheading', styleConfig: subTitleProp }, { children: subtitle })))] })), jsx(StyledAccordionArrow, __assign({}, accordionArrowStyles, { className: arrow === null || arrow === void 0 ? void 0 : arrow.className, css: arrow === null || arrow === void 0 ? void 0 : arrow.css }, { children: jsx(ChevronDown, __assign({}, arrowIcon)) }))] })), jsx(Container, __assign({ className: childrenContainer === null || childrenContainer === void 0 ? void 0 : childrenContainer.className, css: childrenContainer === null || childrenContainer === void 0 ? void 0 : childrenContainer.css }, { children: isOpen && (jsx(StyledAccordionContent, __assign({ height: !isOpen ? '0px' : 'auto', className: childrenContentContainer === null || childrenContentContainer === void 0 ? void 0 : childrenContentContainer.className, css: childrenContentContainer === null || childrenContentContainer === void 0 ? void 0 : childrenContentContainer.css }, { children: !disableTransition && React.isValidElement(children) ? (jsx(Transition, __assign({ type: 'slide', in: isOpen, timeout: {
|
|
77
|
-
appear: 200,
|
|
78
|
-
enter: 200,
|
|
79
|
-
exit: 200,
|
|
80
|
-
} }, { children: children }))) : (children) }))) }))] })));
|
|
81
|
-
};
|
|
79
|
+
Accordion.displayName = 'Accordion';
|
|
82
80
|
|
|
83
81
|
export { Accordion };
|
|
84
82
|
//# sourceMappingURL=ct-design-accordion.esm.js.map
|