@cleartrip/ct-design-tabs 1.1.1 → 1.2.0-beta.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.
@@ -1,217 +1,2 @@
1
- import { __rest as e, __assign as t } from 'tslib';
2
- import { jsx as o, jsxs as r } from 'react/jsx-runtime';
3
- import i, { useTheme as l } from 'styled-components';
4
- import { forwardRef as n, useCallback as c, useState as a, useRef as d, useEffect as s } from 'react';
5
- import { Button as u } from '@cleartrip/ct-design-button';
6
- import f from '@cleartrip/ct-design-use-theme';
7
- import { Typography as h, TypographyVariant as m } from '@cleartrip/ct-design-typography';
8
- import b from '@cleartrip/ct-design-use-merge-refs';
9
- import v from '@cleartrip/ct-design-use-props-state';
10
- var p = function (e) {
11
- switch (e.size) {
12
- case 'small':
13
- default:
14
- return m.B2;
15
- case 'medium':
16
- case 'large':
17
- return m.B1;
18
- }
19
- },
20
- C = function (e) {
21
- var t = e.selected,
22
- o = e.theme,
23
- r = e.focusColor,
24
- i = e.color;
25
- return t ? r || i || o.color.tab.selectedPrimaryLabel : i || o.color.tab.nonSelectedPrimaryLabel;
26
- },
27
- g = n(function (r) {
28
- var i = r.tabKey,
29
- l = r.onClick,
30
- n = r.tabIndex,
31
- a = r.selected,
32
- d = void 0 !== a && a,
33
- s = r.label,
34
- m = r.disabled,
35
- b = r.size,
36
- v = r.tabItemCSS,
37
- g = void 0 === v ? { label: {}, Root: {} } : v,
38
- w = r.css,
39
- S = r.focusColor,
40
- x = r.children,
41
- y = f(),
42
- z = (function (o) {
43
- o.theme;
44
- var r = e(o, ['theme']);
45
- return t({ backgroundColor: 'transparent', outline: 0, border: 0 }, r);
46
- })(t(t({ theme: y }, w), null == g ? void 0 : g.Root)),
47
- I = c(
48
- function (e) {
49
- m || l(e, r);
50
- },
51
- [i, l]
52
- ),
53
- k = g.label,
54
- H = k.color;
55
- return (
56
- e(k, ['color']),
57
- o(
58
- u,
59
- t(
60
- { disabled: m, css: z, onClick: I, tabIndex: n },
61
- {
62
- children: s
63
- ? o(
64
- h,
65
- t(
66
- {
67
- variant: p({ size: b }),
68
- colorCode: C({ selected: d, theme: y, focusColor: S, color: H }),
69
- },
70
- { children: s }
71
- )
72
- )
73
- : x,
74
- }
75
- )
76
- )
77
- );
78
- }),
79
- w = i.div(function (o) {
80
- var r = o.css,
81
- i = o.theme,
82
- l = o.isHorizontal,
83
- n = void 0 === l || l,
84
- c = o.width,
85
- a = o.height;
86
- return (function (o) {
87
- var r = o.theme,
88
- i = o.isHorizontal,
89
- l = o.width,
90
- n = o.height,
91
- c = e(o, ['theme', 'isHorizontal', 'width', 'height']);
92
- return t(
93
- {
94
- display: 'flex',
95
- flexDirection: i ? 'row' : 'column',
96
- width: l || i ? '100%' : '',
97
- height: n || !i ? '100%' : '',
98
- justifyContent: 'space-between',
99
- borderBottomWidth: r.border.width.sm,
100
- borderColor: r.color.border.default,
101
- borderBottomStyle: r.border.style.solid,
102
- cursor: 'pointer',
103
- position: 'relative',
104
- },
105
- c
106
- );
107
- })(t({ theme: i, isHorizontal: n, width: c, height: a }, r));
108
- }),
109
- S = i.div(function (e) {
110
- return e.theme, { display: 'flex', flexDirection: 'row' };
111
- }),
112
- x = i.div(function (e) {
113
- var t = e.theme,
114
- o = e.width,
115
- r = e.left;
116
- return {
117
- position: 'absolute',
118
- height: '2px',
119
- bottom: 0,
120
- transition: 'all ease-in 0.3s',
121
- backgroundColor: e.color || t.color.background.primary,
122
- width: o,
123
- left: r,
124
- };
125
- }),
126
- y = n(function (i, c) {
127
- i.children;
128
- var u = i.tabList,
129
- f = i.selectedTabIndex,
130
- h = void 0 === f ? 0 : f,
131
- m = i.onClick,
132
- p = i.isHorizontal,
133
- C = void 0 === p || p,
134
- y = i.css,
135
- z = i.tabCSS,
136
- I = i.focusColor,
137
- k = e(i, [
138
- 'children',
139
- 'tabList',
140
- 'selectedTabIndex',
141
- 'onClick',
142
- 'isHorizontal',
143
- 'css',
144
- 'tabCSS',
145
- 'focusColor',
146
- ]),
147
- H = l(),
148
- L = (function () {
149
- var e = a(!1),
150
- t = e[0],
151
- o = e[1];
152
- return (
153
- s(function () {
154
- o(!0);
155
- }, []),
156
- t
157
- );
158
- })(),
159
- B = v(h),
160
- R = B[0],
161
- T = B[1],
162
- j = a({ width: 0, left: 0 }),
163
- D = j[0],
164
- K = j[1],
165
- M = d(null),
166
- P = d(null),
167
- W = b(n, P);
168
- s(
169
- function () {
170
- !(function () {
171
- var e, t;
172
- if (M.current && void 0 !== R) {
173
- var o = M.current.children[R],
174
- r = o ? o.getBoundingClientRect() : { left: 0, width: 0 },
175
- i = null === (e = P.current) || void 0 === e ? void 0 : e.getBoundingClientRect(),
176
- l = {
177
- scrollLeft: (null === (t = P.current) || void 0 === t ? void 0 : t.scrollLeft) || 0,
178
- left: (null == i ? void 0 : i.left) || 0,
179
- },
180
- n = l.scrollLeft,
181
- c = { left: r.left - l.left + n, width: r.width },
182
- a = Math.abs(D.left - c.left),
183
- d = Math.abs(D.width - c.width);
184
- (a >= 1 || d >= 1) && K(c);
185
- }
186
- })();
187
- },
188
- [R]
189
- );
190
- var q = function (e, t) {
191
- T(t.tabIndex || 0), m && m(e, t);
192
- },
193
- A = u.map(function (e, t) {
194
- return o(
195
- g,
196
- {
197
- selected: t === R,
198
- tabIndex: t,
199
- tabKey: t,
200
- onClick: q,
201
- label: e.label,
202
- tabItemCSS: null == z ? void 0 : z.TabItemCSS,
203
- focusColor: I,
204
- },
205
- t
206
- );
207
- }),
208
- E = t(t({}, D), null == z ? void 0 : z.IndicatorCSS);
209
- return r(
210
- w,
211
- t({ ref: W, theme: H, isHorizontal: C, css: t(t({}, y), null == z ? void 0 : z.Root) }, k, {
212
- children: [o(S, t({ ref: M }, { children: A })), L && o(x, t({ color: I }, E))],
213
- })
214
- );
215
- });
216
- export { g as TabItem, y as Tabs };
1
+ import{__rest as e,__assign as t}from"tslib";import{jsx as o,jsxs as r}from"react/jsx-runtime";import i,{useTheme as l}from"styled-components";import{forwardRef as n,useCallback as s,useState as c,useRef as a,useEffect as d}from"react";import{Button as u}from"@cleartrip/ct-design-button";import{useTheme as f}from"@cleartrip/ct-design-theme";import{Typography as m,TypographyVariant as h}from"@cleartrip/ct-design-typography";import b from"@cleartrip/ct-design-use-merge-refs";import v from"@cleartrip/ct-design-use-prop-state";var p=function(e){switch(e.size){case"small":default:return h.B2;case"medium":case"large":return h.B1}},C=function(e){var t=e.selected,o=e.theme,r=e.focusColor,i=e.color;return t?r||i||o.color.tab.selectedPrimaryLabel:i||o.color.tab.nonSelectedPrimaryLabel},g=n((function(r){var i=r.tabKey,l=r.onClick,n=r.tabIndex,c=r.selected,a=void 0!==c&&c,d=r.label,h=r.disabled,b=r.size,v=r.tabItemCSS,g=void 0===v?{label:{},Root:{}}:v,y=r.css,w=r.focusColor,S=r.children,x=r.styleConfig,I=void 0===x?{}:x,z=f(),k=I.labelTypography,H=I.root,L=function(o){o.theme;var r=e(o,["theme"]);return t({backgroundColor:"transparent",outline:0,border:0},r)}(t(t({theme:z},y),(null==H?void 0:H.css)||(null==g?void 0:g.Root))),B=s((function(e){h||l(e,r)}),[i,l]),N=g.label,T=N.color;return e(N,["color"]),o(u,t({disabled:h,css:L,onClick:B,tabIndex:n,className:null==H?void 0:H.className},{children:d?o(m,t({variant:p({size:b}),colorCode:C({selected:a,theme:z,focusColor:w,color:T}),styleConfig:k},{children:d})):S}))})),y=i.div((function(o){var r=o.css,i=o.theme,l=o.isHorizontal,n=void 0===l||l,s=o.width,c=o.height;return function(o){var r=o.theme,i=o.isHorizontal,l=o.width,n=o.height,s=e(o,["theme","isHorizontal","width","height"]);return t({display:"flex",flexDirection:i?"row":"column",width:l||i?"100%":"",height:n||!i?"100%":"",justifyContent:"space-between",borderBottomWidth:r.border.width.sm,borderColor:r.color.border.default,borderBottomStyle:r.border.style.solid,cursor:"pointer",position:"relative"},s)}(t({theme:i,isHorizontal:n,width:s,height:c},r))})),w=i.div((function(e){e.theme;var o=e.css;return t({display:"flex",flexDirection:"row"},void 0===o?{}:o)})),S=i.div((function(e){var o=e.theme,r=e.width,i=e.left,l=e.color,n=e.css,s=void 0===n?{}:n;return t({position:"absolute",height:"2px",bottom:0,transition:"all ease-in 0.3s",backgroundColor:l||o.color.background.primary,width:r,left:i},s)})),x=n((function(i,s){i.children;var u=i.tabList,f=i.selectedTabIndex,m=void 0===f?0:f,h=i.onClick,p=i.isHorizontal,C=void 0===p||p,x=i.css,I=i.tabCSS,z=i.focusColor,k=i.styleConfig,H=void 0===k?{}:k,L=e(i,["children","tabList","selectedTabIndex","onClick","isHorizontal","css","tabCSS","focusColor","styleConfig"]),B=l(),N=H.indicator,T=H.listItemContainer,R=H.root,j=H.tabItem,D=function(){var e=c(!1),t=e[0],o=e[1];return d((function(){o(!0)}),[]),t}(),K=v(m),M=K[0],P=K[1],W=c({width:0,left:0}),q=W[0],A=W[1],E=a(null),F=a(null),G=b(n,F);d((function(){!function(){var e,t;if(E.current&&void 0!==M){var o=E.current.children[M],r=o?o.getBoundingClientRect():{left:0,width:0},i=null===(e=F.current)||void 0===e?void 0:e.getBoundingClientRect(),l={scrollLeft:(null===(t=F.current)||void 0===t?void 0:t.scrollLeft)||0,left:(null==i?void 0:i.left)||0},n=l.scrollLeft,s={left:r.left-l.left+n,width:r.width},c=Math.abs(q.left-s.left),a=Math.abs(q.width-s.width);(c>=1||a>=1)&&A(s)}}()}),[M]);var J=function(e,t){P(t.tabIndex||0),h&&h(e,t)},O=u.map((function(e,t){return o(g,{selected:t===M,tabIndex:t,tabKey:t,onClick:J,label:e.label,tabItemCSS:null==I?void 0:I.TabItemCSS,focusColor:z,styleConfig:j},t)})),Q=t(t({},q),null==I?void 0:I.IndicatorCSS);return r(y,t({ref:G,theme:B,isHorizontal:C,css:(null==R?void 0:R.css)||t(t({},x),null==I?void 0:I.Root)},L,{children:[o(w,t({ref:E,className:null==T?void 0:T.className,css:null==T?void 0:T.css},{children:O})),D&&o(S,t({color:z},Q,{className:null==N?void 0:N.className,css:null==N?void 0:N.css}))]}))}));export{g as TabItem,x as Tabs};
217
2
  //# sourceMappingURL=ct-design-tabs.browser.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ct-design-tabs.browser.esm.js","sources":["../packages/components/Tabs/src/style.ts","../packages/components/Tabs/src/TabItem/TabItem.tsx","../packages/components/Tabs/src/Tabs.tsx"],"sourcesContent":[null,null,null],"names":["getLabelVariant","_a","size","TypographyVariant","B2","B1","getTabLabelColor","selected","theme","focusColor","color","tab","selectedPrimaryLabel","nonSelectedPrimaryLabel","TabItem","forwardRef","props","tabKey","onClick","tabIndex","label","disabled","_b","tabItemCSS","Root","css","children","useTheme","tabItemStyles","rest","__rest","__assign","backgroundColor","outline","border","getTabItemStyles","handleClick","useCallback","event","_c","_jsx","Button","Typography","variant","colorCode","StyledTab","styled","div","isHorizontal","width","height","display","flexDirection","justifyContent","borderBottomWidth","sm","borderColor","default","borderBottomStyle","style","solid","cursor","position","getTabStyles","StyledFlexContainer","Indicator","left","bottom","transition","background","primary","Tab","forwardedRef","tabList","selectedTabIndex","tabCSS","isMounted","useState","setIsMounted","useEffect","useMounted","_d","usePropState","selectedIndex","setSelectedIndex","_e","indicatorStyle","setIndicatorStyle","listRef","useRef","tabsRef","handleRef","useMergeRefs","current","undefined","tabMeta","getBoundingClientRect","rect","tabsMeta","scrollLeft","correction","newIndicatorStyle","dStart","Math","abs","dSize","updateIndicatorState","e","tabItem","tabItemList","map","item","index","TabItemCSS","indicatorStyles","IndicatorCSS","_jsxs","ref"],"mappings":"0gBAIO,ICcMA,EAAkB,SAACC,GAC/B,OADqCA,EAAAC,MAEpC,IAAK,QASL,QACC,OAAOC,EAAkBC,GAP1B,IAAK,SAGL,IAAK,QACJ,OAAOD,EAAkBE,GAM5B,EAEaC,EAAmB,SAACL,OAChCM,EAAQN,EAAAM,SACRC,EAAKP,EAAAO,MACLC,EAAUR,EAAAQ,WACVC,EAAKT,EAAAS,MAOL,OAAIH,EACIE,GAAcC,GAASF,EAAME,MAAMC,IAAIC,qBAEvCF,GAASF,EAAME,MAAMC,IAAIE,uBAElC,EAEMC,EAAUC,GAAW,SAACC,GAE1B,IAAAC,EAWGD,EAAKC,OAVRC,EAUGF,EAAKE,QATRC,EASGH,WARHf,EAQGe,EAAKT,SARRA,OAAW,IAAAN,KACXmB,EAOGJ,QANHK,EAMGL,WALHd,EAKGc,EALCd,KACJoB,EAIGN,aAJHO,OAAa,IAAAD,EAAA,CAAEF,MAAO,CAAA,EAAII,KAAM,CAAE,GAAEF,EACpCG,EAGGT,MAFHP,EAEGO,aADHU,EACGV,WAEER,EAAQmB,IACRC,EA1DkB,SAAC3B,GAAOA,EAAAO,UAAKqB,EAAIC,EAAA7B,EAAhB,WAAuB,OAChD8B,EAAA,CAAAC,gBAAiB,cACjBC,QAAS,EACTC,OAAQ,GACLL,GAsDmBM,CAAmBJ,EAAAA,EAAA,CAAAvB,SAAUiB,GAAQF,aAAU,EAAVA,EAAYC,OACjEY,EAAcC,GACnB,SAACC,GACKjB,GACJH,EAAQoB,EAAOtB,EAEjB,GACA,CAACC,EAAQC,IAGJqB,EAAqBhB,EAAWH,MAA9BV,EAAK6B,EAAA7B,MACb,OADsBoB,EAAAS,EAAhB,CAAkB,UAEvBC,EAACC,EAAMV,EAAA,CAACV,SAAUA,EAAUI,IAAKG,EAAeV,QAASkB,EAAajB,SAAUA,GAAQ,CAAAO,SACtFN,EACAoB,EAACE,EACAX,EAAA,CAAAY,QAAS3C,EAAgB,CAAEE,KAAIA,IAC/B0C,UAAWtC,EAAiB,CAAEC,SAAQA,EAAEC,MAAKA,EAAEC,WAAUA,EAAEC,MAAKA,KAE/D,CAAAgB,SAAAN,KAGF,IAIJ,ICzEMyB,EAAYC,EAAOC,KACxB,SAAC9C,GAAE,IAAAwB,QAAKjB,EAAKP,EAAAO,MAAEc,iBAAA0B,OAAe,IAAA1B,KAAM2B,EAAKhD,EAAAgD,MAAEC,EAAMjD,EAAAiD,OAAO,OFlB7B,SAACjD,GAC5B,IAAAO,EAAKP,EAAAO,MACLwC,iBACAC,EAAKhD,EAAAgD,MACLC,EAAMjD,EAAAiD,OACHrB,EAAIC,EAAA7B,EALqB,2CAMmC,UAC/DkD,QAAS,OACTC,cAAeJ,EAAe,MAAQ,SACtCC,MAAOA,GAASD,EAAe,OAAS,GACxCE,OAAQA,IAAWF,EAAe,OAAS,GAC3CK,eAAgB,gBAChBC,kBAAmB9C,EAAM0B,OAAOe,MAAMM,GACtCC,YAAahD,EAAME,MAAMwB,OAAOuB,QAChCC,kBAAmBlD,EAAM0B,OAAOyB,MAAMC,MACtCC,OAAQ,UACRC,SAAU,YACPjC,GECqDkC,CAAYhC,EAAA,CAAGvB,MAAKA,EAAEwC,aAAYA,EAAEC,QAAOC,OAAMA,GAAKzB,GAAtD,IAGnDuC,EAAsBlB,EAAOC,KAAI,SAAC9C,GAAc,OAAPA,EAAAO,MAAQ,CACtD2C,QAAS,OACTC,cAAe,MAFsC,IAKhDa,EAAYnB,EAAOC,KAAe,SAAC9C,OAAEO,EAAKP,EAAAO,MAAEyC,EAAKhD,EAAAgD,MAAEiB,EAAIjE,EAAAiE,KAAc,MAAC,CAC3EJ,SAAU,WACVZ,OAAQ,MACRiB,OAAQ,EACRC,WAAY,mBACZpC,gBALmE/B,EAAAS,OAKzCF,EAAME,MAAM2D,WAAWC,QACjDrB,MAAKA,EACLiB,KAAIA,EAPsE,IAUrEK,EAAMxD,GACX,SACCd,EAWAuE,GAVuBvE,EAAAyB,aACtB+C,YACAnD,EAAArB,EAAAyE,iBAAAA,aAAmB,EAACpD,EACpBJ,YACAqB,EAAAtC,EAAA+C,aAAAA,cAAmBT,EACnBd,QACAkD,EAAM1E,EAAA0E,OACNlE,EAAUR,EAAAQ,WACPO,EAAKc,EAAA7B,EATT,gGAaMO,EAAQmB,IAERiD,EA/CW,WACZ,IAAA3E,EAA4B4E,GAAS,GAApCD,EAAS3E,EAAA,GAAE6E,EAAY7E,EAAA,GAK9B,OAHA8E,GAAU,WACTD,GAAa,EACb,GAAE,IACIF,CACR,CAwCoBI,GAEZC,EAAoCC,EAAqBR,GAAxDS,EAAaF,EAAA,GAAEG,EAAgBH,EAAA,GAChCI,EAAsCR,EAA0C,CAAE5B,MAAO,EAAGiB,KAAM,IAAjGoB,OAAgBC,OACjBC,EAAUC,EAAuB,MACjCC,EAAUD,EAAuB,MAEjCE,EAAYC,EAAa7E,EAAY2E,GAwB3CX,GAAU,YAtBmB,mBAC5B,GAAIS,EAAQK,cAA6BC,IAAlBX,EAA6B,CACnD,IACMxE,EADW6E,EAAQK,QAAQnE,SACZyD,GACfY,EAAUpF,EAAMA,EAAIqF,wBAA0B,CAAE9B,KAAM,EAAGjB,MAAO,GAChEgD,EAAsB,QAAfhG,EAAAyF,EAAQG,eAAO,IAAA5F,OAAA,EAAAA,EAAE+F,wBACxBE,EAAW,CAChBC,YAA2B,QAAf7E,EAAAoE,EAAQG,eAAO,IAAAvE,OAAA,EAAAA,EAAE6E,aAAc,EAC3CjC,MAAM+B,eAAAA,EAAM/B,OAAQ,GAEfkC,EAAaF,EAASC,WAGtBE,EAAoB,CAAEnC,KAFT6B,EAAQ7B,KAAOgC,EAAShC,KAAOkC,EAEJnD,MAAO8C,EAAQ9C,OACvDqD,EAASC,KAAKC,IAAIlB,EAAepB,KAAOmC,EAAkBnC,MAC1DuC,EAAQF,KAAKC,IAAIlB,EAAerC,MAAQoD,EAAkBpD,QAE5DqD,GAAU,GAAKG,GAAS,IAC3BlB,EAAkBc,EAEnB,CACF,CAECK,EACD,GAAG,CAACvB,IAGJ,IAAM/C,EAAc,SAACuE,EAAeC,GACnCxB,EAAiBwB,EAAQzF,UAAY,GACjCD,GACHA,EAAQyF,EAAGC,EAEb,EAEMC,EAAcpC,EAAQqC,KAAI,SAACC,EAAMC,GACtC,OACCxE,EAAC1B,EAAO,CAEPP,SAAUyG,IAAU7B,EACpBhE,SAAU6F,EACV/F,OAAQ+F,EACR9F,QAASkB,EACThB,MAAO2F,EAAK3F,MACZG,WAAYoD,aAAM,EAANA,EAAQsC,WACpBxG,WAAYA,GAPPuG,EAUR,IACME,EAAenF,EAAAA,EAAA,CAAA,EAAQuD,GAAmBX,aAAM,EAANA,EAAQwC,cACxD,OACCC,EAACvE,EACAd,EAAA,CAAAsF,IAAK1B,EACLnF,MAAOA,EACPwC,aAAcA,EACdvB,IAAUM,EAAAA,EAAA,GAAAN,GAAQkD,aAAM,EAANA,EAAQnD,OACtBR,EAEJ,CAAAU,SAAA,CAAAc,EAACwB,EAAmBjC,EAAA,CAACsF,IAAK7B,GAAU,CAAA9D,SAAAmF,KACnCjC,GAAapC,EAACyB,EAASlC,EAAA,CAACrB,MAAOD,GAAgByG,OAGnD"}
1
+ {"version":3,"file":"ct-design-tabs.browser.esm.js","sources":["../packages/components/Tabs/src/style.ts","../packages/components/Tabs/src/TabItem/TabItem.tsx","../packages/components/Tabs/src/Tabs.tsx"],"sourcesContent":[null,null,null],"names":["getLabelVariant","_a","size","TypographyVariant","B2","B1","getTabLabelColor","selected","theme","focusColor","color","tab","selectedPrimaryLabel","nonSelectedPrimaryLabel","TabItem","forwardRef","props","tabKey","onClick","tabIndex","label","disabled","_b","tabItemCSS","Root","css","children","_c","styleConfig","useTheme","labelTypography","root","tabItemStyles","rest","__rest","__assign","backgroundColor","outline","border","getTabItemStyles","handleClick","useCallback","event","_d","_jsx","Button","className","Typography","variant","colorCode","StyledTab","styled","div","isHorizontal","width","height","display","flexDirection","justifyContent","borderBottomWidth","sm","borderColor","default","borderBottomStyle","style","solid","cursor","position","getTabStyles","StyledFlexContainer","Indicator","left","bottom","transition","background","primary","Tab","forwardedRef","tabList","selectedTabIndex","tabCSS","indicator","listItemContainer","tabItem","isMounted","useState","setIsMounted","useEffect","useMounted","_e","usePropState","selectedIndex","setSelectedIndex","_f","indicatorStyle","setIndicatorStyle","listRef","useRef","tabsRef","handleRef","useMergeRefs","current","undefined","tabMeta","getBoundingClientRect","rect","tabsMeta","scrollLeft","correction","newIndicatorStyle","dStart","Math","abs","dSize","updateIndicatorState","e","tabItemList","map","item","index","TabItemCSS","indicatorStyles","IndicatorCSS","_jsxs","ref"],"mappings":"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"}
@@ -5,282 +5,130 @@ var jsxRuntime = require('react/jsx-runtime');
5
5
  var styled = require('styled-components');
6
6
  var react = require('react');
7
7
  var ctDesignButton = require('@cleartrip/ct-design-button');
8
- var useTheme = require('@cleartrip/ct-design-use-theme');
8
+ var ctDesignTheme = require('@cleartrip/ct-design-theme');
9
9
  var ctDesignTypography = require('@cleartrip/ct-design-typography');
10
10
  var useMergeRefs = require('@cleartrip/ct-design-use-merge-refs');
11
- var usePropState = require('@cleartrip/ct-design-use-props-state');
11
+ var usePropState = require('@cleartrip/ct-design-use-prop-state');
12
12
 
13
- function _interopDefault(e) {
14
- return e && e.__esModule ? e : { default: e };
15
- }
13
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
14
 
17
- var styled__default = /*#__PURE__*/ _interopDefault(styled);
18
- var useTheme__default = /*#__PURE__*/ _interopDefault(useTheme);
19
- var useMergeRefs__default = /*#__PURE__*/ _interopDefault(useMergeRefs);
20
- var usePropState__default = /*#__PURE__*/ _interopDefault(usePropState);
15
+ var styled__default = /*#__PURE__*/_interopDefault(styled);
16
+ var useMergeRefs__default = /*#__PURE__*/_interopDefault(useMergeRefs);
17
+ var usePropState__default = /*#__PURE__*/_interopDefault(usePropState);
21
18
 
22
19
  var getTabStyles = function (_a) {
23
- var theme = _a.theme,
24
- isHorizontal = _a.isHorizontal,
25
- width = _a.width,
26
- height = _a.height,
27
- rest = tslib.__rest(_a, ['theme', 'isHorizontal', 'width', 'height']);
28
- return tslib.__assign(
29
- {
30
- display: 'flex',
31
- flexDirection: isHorizontal ? 'row' : 'column',
32
- width: width || isHorizontal ? '100%' : '',
33
- height: height || !isHorizontal ? '100%' : '',
34
- justifyContent: 'space-between',
35
- borderBottomWidth: theme.border.width.sm,
36
- borderColor: theme.color.border.default,
37
- borderBottomStyle: theme.border.style.solid,
38
- cursor: 'pointer',
39
- position: 'relative',
40
- },
41
- rest
42
- );
20
+ var theme = _a.theme, isHorizontal = _a.isHorizontal, width = _a.width, height = _a.height, rest = tslib.__rest(_a, ["theme", "isHorizontal", "width", "height"]);
21
+ return (tslib.__assign({ display: 'flex', flexDirection: isHorizontal ? 'row' : 'column', width: width || isHorizontal ? '100%' : '', height: height || !isHorizontal ? '100%' : '', justifyContent: 'space-between', borderBottomWidth: theme.border.width.sm, borderColor: theme.color.border.default, borderBottomStyle: theme.border.style.solid, cursor: 'pointer', position: 'relative' }, rest));
43
22
  };
44
23
 
45
24
  var getTabItemStyles = function (_a) {
46
- _a.theme;
47
- var rest = tslib.__rest(_a, ['theme']);
48
- return tslib.__assign({ backgroundColor: 'transparent', outline: 0, border: 0 }, rest);
25
+ _a.theme; var rest = tslib.__rest(_a, ["theme"]);
26
+ return (tslib.__assign({ backgroundColor: 'transparent', outline: 0, border: 0 }, rest));
49
27
  };
50
28
  var getLabelVariant = function (_a) {
51
- var size = _a.size;
52
- switch (size) {
53
- case 'small': {
54
- return ctDesignTypography.TypographyVariant.B2;
55
- }
56
- case 'medium': {
57
- return ctDesignTypography.TypographyVariant.B1;
58
- }
59
- case 'large': {
60
- return ctDesignTypography.TypographyVariant.B1;
61
- }
62
- default: {
63
- return ctDesignTypography.TypographyVariant.B2;
64
- }
65
- }
29
+ var size = _a.size;
30
+ switch (size) {
31
+ case 'small': {
32
+ return ctDesignTypography.TypographyVariant.B2;
33
+ }
34
+ case 'medium': {
35
+ return ctDesignTypography.TypographyVariant.B1;
36
+ }
37
+ case 'large': {
38
+ return ctDesignTypography.TypographyVariant.B1;
39
+ }
40
+ default: {
41
+ return ctDesignTypography.TypographyVariant.B2;
42
+ }
43
+ }
66
44
  };
67
45
  var getTabLabelColor = function (_a) {
68
- var selected = _a.selected,
69
- theme = _a.theme,
70
- focusColor = _a.focusColor,
71
- color = _a.color;
72
- if (selected) {
73
- return focusColor || color || theme.color.tab.selectedPrimaryLabel;
74
- } else {
75
- return color || theme.color.tab.nonSelectedPrimaryLabel;
76
- }
46
+ var selected = _a.selected, theme = _a.theme, focusColor = _a.focusColor, color = _a.color;
47
+ if (selected) {
48
+ return focusColor || color || theme.color.tab.selectedPrimaryLabel;
49
+ }
50
+ else {
51
+ return color || theme.color.tab.nonSelectedPrimaryLabel;
52
+ }
77
53
  };
78
54
  var TabItem = react.forwardRef(function (props) {
79
- var tabKey = props.tabKey,
80
- onClick = props.onClick,
81
- tabIndex = props.tabIndex,
82
- _a = props.selected,
83
- selected = _a === void 0 ? false : _a,
84
- label = props.label,
85
- disabled = props.disabled,
86
- size = props.size,
87
- _b = props.tabItemCSS,
88
- tabItemCSS = _b === void 0 ? { label: {}, Root: {} } : _b,
89
- css = props.css,
90
- focusColor = props.focusColor,
91
- children = props.children;
92
- var theme = useTheme__default.default();
93
- var tabItemStyles = getTabItemStyles(
94
- tslib.__assign(
95
- tslib.__assign({ theme: theme }, css),
96
- tabItemCSS === null || tabItemCSS === void 0 ? void 0 : tabItemCSS.Root
97
- )
98
- );
99
- var handleClick = react.useCallback(
100
- function (event) {
101
- if (!disabled) {
102
- onClick(event, props);
103
- }
104
- },
105
- [tabKey, onClick]
106
- );
107
- var _c = tabItemCSS.label,
108
- color = _c.color;
109
- tslib.__rest(_c, ['color']);
110
- return jsxRuntime.jsx(
111
- ctDesignButton.Button,
112
- tslib.__assign(
113
- { disabled: disabled, css: tabItemStyles, onClick: handleClick, tabIndex: tabIndex },
114
- {
115
- children: label
116
- ? jsxRuntime.jsx(
117
- ctDesignTypography.Typography,
118
- tslib.__assign(
119
- {
120
- variant: getLabelVariant({ size: size }),
121
- colorCode: getTabLabelColor({
122
- selected: selected,
123
- theme: theme,
124
- focusColor: focusColor,
125
- color: color,
126
- }),
127
- },
128
- { children: label }
129
- )
130
- )
131
- : children,
132
- }
133
- )
134
- );
55
+ var tabKey = props.tabKey, onClick = props.onClick, tabIndex = props.tabIndex, _a = props.selected, selected = _a === void 0 ? false : _a, label = props.label, disabled = props.disabled, size = props.size, _b = props.tabItemCSS, tabItemCSS = _b === void 0 ? { label: {}, Root: {} } : _b, css = props.css, focusColor = props.focusColor, children = props.children, _c = props.styleConfig, styleConfig = _c === void 0 ? {} : _c;
56
+ var theme = ctDesignTheme.useTheme();
57
+ var labelTypography = styleConfig.labelTypography, root = styleConfig.root;
58
+ var tabItemStyles = getTabItemStyles(tslib.__assign(tslib.__assign({ theme: theme }, css), ((root === null || root === void 0 ? void 0 : root.css) || (tabItemCSS === null || tabItemCSS === void 0 ? void 0 : tabItemCSS.Root))));
59
+ var handleClick = react.useCallback(function (event) {
60
+ if (!disabled) {
61
+ onClick(event, props);
62
+ }
63
+ }, [tabKey, onClick]);
64
+ var _d = tabItemCSS.label, color = _d.color; tslib.__rest(_d, ["color"]);
65
+ return (jsxRuntime.jsx(ctDesignButton.Button, tslib.__assign({ disabled: disabled, css: tabItemStyles, onClick: handleClick, tabIndex: tabIndex, className: root === null || root === void 0 ? void 0 : root.className }, { children: label ? (jsxRuntime.jsx(ctDesignTypography.Typography, tslib.__assign({ variant: getLabelVariant({ size: size }), colorCode: getTabLabelColor({ selected: selected, theme: theme, focusColor: focusColor, color: color }), styleConfig: labelTypography }, { children: label }))) : (children) })));
135
66
  });
136
67
 
137
68
  var useMounted = function () {
138
- var _a = react.useState(false),
139
- isMounted = _a[0],
140
- setIsMounted = _a[1];
141
- react.useEffect(function () {
142
- setIsMounted(true);
143
- }, []);
144
- return isMounted;
69
+ var _a = react.useState(false), isMounted = _a[0], setIsMounted = _a[1];
70
+ react.useEffect(function () {
71
+ setIsMounted(true);
72
+ }, []);
73
+ return isMounted;
145
74
  };
146
75
  var StyledTab = styled__default.default.div(function (_a) {
147
- var css = _a.css,
148
- theme = _a.theme,
149
- _b = _a.isHorizontal,
150
- isHorizontal = _b === void 0 ? true : _b,
151
- width = _a.width,
152
- height = _a.height;
153
- return getTabStyles(
154
- tslib.__assign({ theme: theme, isHorizontal: isHorizontal, width: width, height: height }, css)
155
- );
76
+ var css = _a.css, theme = _a.theme, _b = _a.isHorizontal, isHorizontal = _b === void 0 ? true : _b, width = _a.width, height = _a.height;
77
+ return getTabStyles(tslib.__assign({ theme: theme, isHorizontal: isHorizontal, width: width, height: height }, css));
156
78
  });
157
79
  var StyledFlexContainer = styled__default.default.div(function (_a) {
158
- _a.theme;
159
- return {
160
- display: 'flex',
161
- flexDirection: 'row',
162
- };
80
+ _a.theme; var _b = _a.css, css = _b === void 0 ? {} : _b;
81
+ return (tslib.__assign({ display: 'flex', flexDirection: 'row' }, css));
163
82
  });
164
83
  var Indicator = styled__default.default.div(function (_a) {
165
- var theme = _a.theme,
166
- width = _a.width,
167
- left = _a.left,
168
- color = _a.color;
169
- return {
170
- position: 'absolute',
171
- height: '2px',
172
- bottom: 0,
173
- transition: 'all ease-in 0.3s',
174
- backgroundColor: color || theme.color.background.primary,
175
- width: width,
176
- left: left,
177
- };
84
+ var theme = _a.theme, width = _a.width, left = _a.left, color = _a.color, _b = _a.css, css = _b === void 0 ? {} : _b;
85
+ return (tslib.__assign({ position: 'absolute', height: '2px', bottom: 0, transition: 'all ease-in 0.3s', backgroundColor: color || theme.color.background.primary, width: width, left: left }, css));
178
86
  });
179
87
  var Tab = react.forwardRef(function (_a, forwardedRef) {
180
- _a.children;
181
- var tabList = _a.tabList,
182
- _b = _a.selectedTabIndex,
183
- selectedTabIndex = _b === void 0 ? 0 : _b,
184
- onClick = _a.onClick,
185
- _c = _a.isHorizontal,
186
- isHorizontal = _c === void 0 ? true : _c,
187
- css = _a.css,
188
- tabCSS = _a.tabCSS,
189
- focusColor = _a.focusColor,
190
- props = tslib.__rest(_a, [
191
- 'children',
192
- 'tabList',
193
- 'selectedTabIndex',
194
- 'onClick',
195
- 'isHorizontal',
196
- 'css',
197
- 'tabCSS',
198
- 'focusColor',
199
- ]);
200
- var theme = styled.useTheme();
201
- var isMounted = useMounted();
202
- var _d = usePropState__default.default(selectedTabIndex),
203
- selectedIndex = _d[0],
204
- setSelectedIndex = _d[1];
205
- var _e = react.useState({ width: 0, left: 0 }),
206
- indicatorStyle = _e[0],
207
- setIndicatorStyle = _e[1];
208
- var listRef = react.useRef(null);
209
- var tabsRef = react.useRef(null);
210
- var handleRef = useMergeRefs__default.default(react.forwardRef, tabsRef);
211
- var updateIndicatorState = function () {
212
- var _a, _b;
213
- if (listRef.current && selectedIndex !== undefined) {
214
- var children = listRef.current.children;
215
- var tab = children[selectedIndex];
216
- var tabMeta = tab ? tab.getBoundingClientRect() : { left: 0, width: 0 };
217
- var rect = (_a = tabsRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
218
- var tabsMeta = {
219
- scrollLeft: ((_b = tabsRef.current) === null || _b === void 0 ? void 0 : _b.scrollLeft) || 0,
220
- left: (rect === null || rect === void 0 ? void 0 : rect.left) || 0,
221
- };
222
- var correction = tabsMeta.scrollLeft;
223
- var startValue = tabMeta.left - tabsMeta.left + correction;
224
- var newIndicatorStyle = { left: startValue, width: tabMeta.width };
225
- var dStart = Math.abs(indicatorStyle.left - newIndicatorStyle.left);
226
- var dSize = Math.abs(indicatorStyle.width - newIndicatorStyle.width);
227
- if (dStart >= 1 || dSize >= 1) {
228
- setIndicatorStyle(newIndicatorStyle);
229
- }
230
- }
231
- };
232
- react.useEffect(
233
- function () {
234
- updateIndicatorState();
235
- },
236
- [selectedIndex]
237
- );
238
- var handleClick = function (e, tabItem) {
239
- setSelectedIndex(tabItem.tabIndex || 0);
240
- if (onClick) {
241
- onClick(e, tabItem);
242
- }
243
- };
244
- var tabItemList = tabList.map(function (item, index) {
245
- return jsxRuntime.jsx(
246
- TabItem,
247
- {
248
- selected: index === selectedIndex,
249
- tabIndex: index,
250
- tabKey: index,
251
- onClick: handleClick,
252
- label: item.label,
253
- tabItemCSS: tabCSS === null || tabCSS === void 0 ? void 0 : tabCSS.TabItemCSS,
254
- focusColor: focusColor,
255
- },
256
- index
257
- );
258
- });
259
- var indicatorStyles = tslib.__assign(
260
- tslib.__assign({}, indicatorStyle),
261
- tabCSS === null || tabCSS === void 0 ? void 0 : tabCSS.IndicatorCSS
262
- );
263
- return jsxRuntime.jsxs(
264
- StyledTab,
265
- tslib.__assign(
266
- {
267
- ref: handleRef,
268
- theme: theme,
269
- isHorizontal: isHorizontal,
270
- css: tslib.__assign(
271
- tslib.__assign({}, css),
272
- tabCSS === null || tabCSS === void 0 ? void 0 : tabCSS.Root
273
- ),
274
- },
275
- props,
276
- {
277
- children: [
278
- jsxRuntime.jsx(StyledFlexContainer, tslib.__assign({ ref: listRef }, { children: tabItemList })),
279
- isMounted && jsxRuntime.jsx(Indicator, tslib.__assign({ color: focusColor }, indicatorStyles)),
280
- ],
281
- }
282
- )
283
- );
88
+ _a.children; var tabList = _a.tabList, _b = _a.selectedTabIndex, selectedTabIndex = _b === void 0 ? 0 : _b, onClick = _a.onClick, _c = _a.isHorizontal, isHorizontal = _c === void 0 ? true : _c, css = _a.css, tabCSS = _a.tabCSS, focusColor = _a.focusColor, _d = _a.styleConfig, styleConfig = _d === void 0 ? {} : _d, props = tslib.__rest(_a, ["children", "tabList", "selectedTabIndex", "onClick", "isHorizontal", "css", "tabCSS", "focusColor", "styleConfig"]);
89
+ var theme = styled.useTheme();
90
+ var indicator = styleConfig.indicator, listItemContainer = styleConfig.listItemContainer, root = styleConfig.root, tabItem = styleConfig.tabItem;
91
+ var isMounted = useMounted();
92
+ var _e = usePropState__default.default(selectedTabIndex), selectedIndex = _e[0], setSelectedIndex = _e[1];
93
+ var _f = react.useState({ width: 0, left: 0 }), indicatorStyle = _f[0], setIndicatorStyle = _f[1];
94
+ var listRef = react.useRef(null);
95
+ var tabsRef = react.useRef(null);
96
+ var handleRef = useMergeRefs__default.default(react.forwardRef, tabsRef);
97
+ var updateIndicatorState = function () {
98
+ var _a, _b;
99
+ if (listRef.current && selectedIndex !== undefined) {
100
+ var children = listRef.current.children;
101
+ var tab = children[selectedIndex];
102
+ var tabMeta = tab ? tab.getBoundingClientRect() : { left: 0, width: 0 };
103
+ var rect = (_a = tabsRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
104
+ var tabsMeta = {
105
+ scrollLeft: ((_b = tabsRef.current) === null || _b === void 0 ? void 0 : _b.scrollLeft) || 0,
106
+ left: (rect === null || rect === void 0 ? void 0 : rect.left) || 0,
107
+ };
108
+ var correction = tabsMeta.scrollLeft;
109
+ var startValue = tabMeta.left - tabsMeta.left + correction;
110
+ var newIndicatorStyle = { left: startValue, width: tabMeta.width };
111
+ var dStart = Math.abs(indicatorStyle.left - newIndicatorStyle.left);
112
+ var dSize = Math.abs(indicatorStyle.width - newIndicatorStyle.width);
113
+ if (dStart >= 1 || dSize >= 1) {
114
+ setIndicatorStyle(newIndicatorStyle);
115
+ }
116
+ }
117
+ };
118
+ react.useEffect(function () {
119
+ updateIndicatorState();
120
+ }, [selectedIndex]);
121
+ var handleClick = function (e, tabItem) {
122
+ setSelectedIndex(tabItem.tabIndex || 0);
123
+ if (onClick) {
124
+ onClick(e, tabItem);
125
+ }
126
+ };
127
+ var tabItemList = tabList.map(function (item, index) {
128
+ return (jsxRuntime.jsx(TabItem, { selected: index === selectedIndex, tabIndex: index, tabKey: index, onClick: handleClick, label: item.label, tabItemCSS: tabCSS === null || tabCSS === void 0 ? void 0 : tabCSS.TabItemCSS, focusColor: focusColor, styleConfig: tabItem }, index));
129
+ });
130
+ var indicatorStyles = tslib.__assign(tslib.__assign({}, indicatorStyle), tabCSS === null || tabCSS === void 0 ? void 0 : tabCSS.IndicatorCSS);
131
+ return (jsxRuntime.jsxs(StyledTab, tslib.__assign({ ref: handleRef, theme: theme, isHorizontal: isHorizontal, css: (root === null || root === void 0 ? void 0 : root.css) || tslib.__assign(tslib.__assign({}, css), tabCSS === null || tabCSS === void 0 ? void 0 : tabCSS.Root) }, props, { children: [jsxRuntime.jsx(StyledFlexContainer, tslib.__assign({ ref: listRef, className: listItemContainer === null || listItemContainer === void 0 ? void 0 : listItemContainer.className, css: listItemContainer === null || listItemContainer === void 0 ? void 0 : listItemContainer.css }, { children: tabItemList })), isMounted && (jsxRuntime.jsx(Indicator, tslib.__assign({ color: focusColor }, indicatorStyles, { className: indicator === null || indicator === void 0 ? void 0 : indicator.className, css: indicator === null || indicator === void 0 ? void 0 : indicator.css })))] })));
284
132
  });
285
133
 
286
134
  exports.TabItem = TabItem;