chili-ui 0.22.0 → 0.22.2

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.
@@ -21,15 +21,23 @@ export const Tabs = React.forwardRef((props: TabsProps, ref?: React.Ref<HTMLElem
21
21
  activeTabKey: activeTabKeyProp,
22
22
  children,
23
23
  className,
24
+ contentRender,
25
+ headingRender,
26
+ onChange,
24
27
  shouldScrollTabs,
25
28
  style,
26
29
  tabContentNode,
27
30
  tabRender,
31
+ wrapperRender,
32
+ ...restProps
28
33
  } = useProps(props);
29
34
 
30
35
  const theme = useTheme(themeProp, COMPONENTS_NAMESPACES.tabs);
31
36
 
32
- const [activeTabKeyState, setActiveTabKeyState] = React.useState<string | number>(0);
37
+ const [activeTabKeyState, setActiveTabKeyState] = React.useState<string | number>(() => {
38
+ const firstChild = React.Children.toArray(children).find(React.isValidElement);
39
+ return firstChild ? (firstChild.props as { tabKey?: string | number }).tabKey ?? 0 : 0;
40
+ });
33
41
 
34
42
  // if activeTabKey is not passed - work in uncontrolled mode
35
43
  const activeTabKey = isNil(activeTabKeyProp)
@@ -74,6 +82,7 @@ export const Tabs = React.forwardRef((props: TabsProps, ref?: React.Ref<HTMLElem
74
82
 
75
83
  return (
76
84
  <Wrapper
85
+ {...restProps}
77
86
  className={combinedClassNames}
78
87
  style={style as React.CSSProperties}
79
88
  ref={ref}
@@ -90,6 +90,7 @@ export interface WrapperProps {
90
90
  style?: React.CSSProperties,
91
91
  ref?: React.Ref<HTMLElement>,
92
92
  children?: React.ReactNode,
93
+ [x: string]: unknown,
93
94
  }
94
95
 
95
96
  export interface ContentProps {
@@ -1,4 +1,15 @@
1
1
  'use client';
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
2
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
14
  import React from 'react';
4
15
  import isNil from 'lodash/isNil';
@@ -12,9 +23,13 @@ import { TabsContext } from './TabsContext';
12
23
  import { ArrowLeft, ArrowRight } from './ScrollArrows';
13
24
  import { Div } from '../Div';
14
25
  export const Tabs = React.forwardRef((props, ref) => {
15
- const { theme: themeProp, activeTabKey: activeTabKeyProp, children, className, shouldScrollTabs, style, tabContentNode, tabRender, } = useProps(props);
26
+ const _a = useProps(props), { theme: themeProp, activeTabKey: activeTabKeyProp, children, className, contentRender, headingRender, onChange, shouldScrollTabs, style, tabContentNode, tabRender, wrapperRender } = _a, restProps = __rest(_a, ["theme", "activeTabKey", "children", "className", "contentRender", "headingRender", "onChange", "shouldScrollTabs", "style", "tabContentNode", "tabRender", "wrapperRender"]);
16
27
  const theme = useTheme(themeProp, COMPONENTS_NAMESPACES.tabs);
17
- const [activeTabKeyState, setActiveTabKeyState] = React.useState(0);
28
+ const [activeTabKeyState, setActiveTabKeyState] = React.useState(() => {
29
+ var _a;
30
+ const firstChild = React.Children.toArray(children).find(React.isValidElement);
31
+ return firstChild ? (_a = firstChild.props.tabKey) !== null && _a !== void 0 ? _a : 0 : 0;
32
+ });
18
33
  // if activeTabKey is not passed - work in uncontrolled mode
19
34
  const activeTabKey = isNil(activeTabKeyProp)
20
35
  ? activeTabKeyState
@@ -31,11 +46,11 @@ export const Tabs = React.forwardRef((props, ref) => {
31
46
  const headingClassNames = getClassNames(theme.tabsBar, shouldScrollTabs && theme.scroll);
32
47
  if (!children)
33
48
  return null;
34
- return (_jsxs(Wrapper, { className: combinedClassNames, style: style, ref: ref, children: [_jsxs(Div, { ref: containerRef, className: containerClassNames, children: [hasLeftArrow && (_jsx(ArrowLeft, { onClick: onLeftClick, theme: theme })), hasRightArrow && (_jsx(ArrowRight, { onClick: onRightClick, theme: theme })), _jsx(Heading, { className: headingClassNames, children: _jsx(TabsContext.Provider, { value: tabsContext, children: React.Children.map(children, (child) => {
49
+ return (_jsxs(Wrapper, Object.assign({}, restProps, { className: combinedClassNames, style: style, ref: ref, children: [_jsxs(Div, { ref: containerRef, className: containerClassNames, children: [hasLeftArrow && (_jsx(ArrowLeft, { onClick: onLeftClick, theme: theme })), hasRightArrow && (_jsx(ArrowRight, { onClick: onRightClick, theme: theme })), _jsx(Heading, { className: headingClassNames, children: _jsx(TabsContext.Provider, { value: tabsContext, children: React.Children.map(children, (child) => {
35
50
  if (!React.isValidElement(child))
36
51
  return null;
37
52
  return (_jsx(Tab, Object.assign({}, child.props)));
38
- }) }) })] }), _jsx(Content, { className: theme.content, tabContentNode: tabContentNode, children: _jsx(TabContent, { activeTabKey: activeTabKey, children: children }, activeTabKey) })] }));
53
+ }) }) })] }), _jsx(Content, { className: theme.content, tabContentNode: tabContentNode, children: _jsx(TabContent, { activeTabKey: activeTabKey, children: children }, activeTabKey) })] })));
39
54
  });
40
55
  Tabs.displayName = 'Tabs';
41
56
  //# sourceMappingURL=Tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../chili/components/Tabs/Tabs.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../chili/components/Tabs/Tabs.tsx"],"names":[],"mappings":"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"}
@@ -77,6 +77,7 @@ export interface WrapperProps {
77
77
  style?: React.CSSProperties;
78
78
  ref?: React.Ref<HTMLElement>;
79
79
  children?: React.ReactNode;
80
+ [x: string]: unknown;
80
81
  }
81
82
  export interface ContentProps {
82
83
  className?: string;
@@ -0,0 +1,31 @@
1
+ 'use client';
2
+
3
+ import * as L from '@chili';
4
+ import { Live } from '@/components/live';
5
+
6
+ export const ControlledDemo = () => (
7
+ <Live scope={{ L }}>
8
+ {`
9
+ () => {
10
+ const [selected, setSelected] = React.useState(0);
11
+
12
+ return (
13
+ <L.Tabs
14
+ activeTabKey={selected}
15
+ onChange={(ev) => setSelected(ev.component.value)}
16
+ >
17
+ <L.Tab title={'Tab 1'} tabKey={0}>
18
+ <div className='p-4'>Tab 1 content</div>
19
+ </L.Tab>
20
+ <L.Tab title={'Tab 2'} tabKey={1}>
21
+ <div className='p-4'>Tab 2 content</div>
22
+ </L.Tab>
23
+ <L.Tab title={'Tab 3'} tabKey={2}>
24
+ <div className='p-4'>Tab 3 content</div>
25
+ </L.Tab>
26
+ </L.Tabs>
27
+ );
28
+ }
29
+ `}
30
+ </Live>
31
+ );
@@ -0,0 +1,22 @@
1
+ 'use client';
2
+
3
+ import * as L from '@chili';
4
+ import { Live } from '@/components/live';
5
+
6
+ export const UncontrolledDemo = () => (
7
+ <Live scope={{ L }}>
8
+ {`
9
+ <L.Tabs>
10
+ <L.Tab title={'Tab 1'} tabKey={0}>
11
+ <div className='p-4'>Tab 1 content</div>
12
+ </L.Tab>
13
+ <L.Tab title={'Tab 2'} tabKey={1}>
14
+ <div className='p-4'>Tab 2 content</div>
15
+ </L.Tab>
16
+ <L.Tab title={'Tab 3'} tabKey={2}>
17
+ <div className='p-4'>Tab 3 content</div>
18
+ </L.Tab>
19
+ </L.Tabs>
20
+ `}
21
+ </Live>
22
+ );
@@ -0,0 +1,25 @@
1
+ 'use client';
2
+
3
+ import * as L from '@chili';
4
+ import React from 'react';
5
+ import { ControlledDemo } from './ControlledDemo';
6
+ import { UncontrolledDemo } from './UncontrolledDemo';
7
+
8
+ export const MainDemo = () => {
9
+ const [selected, setSelected] = React.useState<string | number>(0);
10
+
11
+ return (
12
+ <L.Tabs
13
+ activeTabKey={selected}
14
+ onChange={(ev) => setSelected(ev.component.value)}
15
+ _my-6
16
+ >
17
+ <L.Tab title="Controlled" tabKey={0}>
18
+ <ControlledDemo />
19
+ </L.Tab>
20
+ <L.Tab title="Uncontrolled" tabKey={1}>
21
+ <UncontrolledDemo />
22
+ </L.Tab>
23
+ </L.Tabs>
24
+ );
25
+ };
@@ -1,11 +1,10 @@
1
1
  'use client';
2
2
 
3
- import * as L from '@chili';
4
3
  import { UnderscoreClasses } from '@/components/commonProps';
5
4
  import {
6
5
  H1, H2, Section, THead, Table, Td, propsTableCommonHeaders,
7
6
  } from '@/components/typography';
8
- import { Live } from '@/components/live';
7
+ import { MainDemo } from './MainDemo';
9
8
 
10
9
  const TabsPage = () => (
11
10
  <article>
@@ -94,30 +93,7 @@ const TabsPage = () => (
94
93
  </Table>
95
94
  </Section>
96
95
 
97
- <Live scope={{ L }}>
98
- {`
99
- () => {
100
- const [selected, setSelected] = React.useState(0);
101
-
102
- return (
103
- <L.Tabs
104
- activeTabKey={selected}
105
- onChange={(ev) => setSelected(ev.component.value)}
106
- >
107
- <L.Tab title={'Tab 1'} tabKey={0}>
108
- <div className='p-4'>Tab 1 content</div>
109
- </L.Tab>
110
- <L.Tab title={'Tab 2'} tabKey={1}>
111
- <div className='p-4'>Tab 2 content</div>
112
- </L.Tab>
113
- <L.Tab title={'Tab 3'} tabKey={2}>
114
- <div className='p-4'>Tab 3 content</div>
115
- </L.Tab>
116
- </L.Tabs>
117
- );
118
- };
119
- `}
120
- </Live>
96
+ <MainDemo />
121
97
  </article>
122
98
  );
123
99
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chili-ui",
3
- "version": "0.22.0",
3
+ "version": "0.22.2",
4
4
  "description": "UI components library for React applications",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",