next-helios-fe 1.8.20 → 1.8.21

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-helios-fe",
3
- "version": "1.8.20",
3
+ "version": "1.8.21",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -12,15 +12,23 @@ interface TabProps {
12
12
  options?: {
13
13
  variant?: "vertical" | "horizontal";
14
14
  border?: boolean;
15
+ disablePadding?: boolean;
15
16
  };
16
17
  onChangeTab?: (tab: any) => void;
18
+ onCloseTab?: (tab: any) => void;
17
19
  }
18
20
 
19
21
  interface TabComponent extends React.FC<TabProps> {
20
22
  Window: React.FC<WindowProps>;
21
23
  }
22
24
 
23
- export const Tab: TabComponent = ({ children, tabs, options, onChangeTab }) => {
25
+ export const Tab: TabComponent = ({
26
+ children,
27
+ tabs,
28
+ options,
29
+ onChangeTab,
30
+ onCloseTab,
31
+ }) => {
24
32
  const childrenList = React.Children.toArray(children);
25
33
  const windowList = childrenList.filter((child) => {
26
34
  return (child as React.ReactElement).type === Tab.Window;
@@ -48,21 +56,45 @@ export const Tab: TabComponent = ({ children, tabs, options, onChangeTab }) => {
48
56
  <div className="flex overflow-auto [&::-webkit-scrollbar]:hidden">
49
57
  {tabs?.slice(0, childrenList?.length).map((tab, index) => {
50
58
  return (
51
- <button
52
- key={index}
53
- type="button"
54
- className={`flex items-center gap-2 px-6 pt-2 pb-1.5 border-b-2 whitespace-nowrap duration-300 ${
55
- activeTab === index
56
- ? "text-primary border-primary"
57
- : "border-transparent hover:text-primary hover:border-primary-transparent"
58
- }`}
59
- onClick={() => {
60
- setActiveTab(index);
61
- }}
62
- >
63
- {tab?.icon && <Icon icon={tab?.icon} className="text-lg" />}
64
- {tab.title}
65
- </button>
59
+ <div className="relative flex items-center">
60
+ <button
61
+ key={index}
62
+ type="button"
63
+ className={`flex items-center gap-2 pt-2 pb-1.5 border-b-2 select-none whitespace-nowrap duration-300 ${
64
+ activeTab === index
65
+ ? "text-primary border-primary"
66
+ : "border-transparent hover:text-primary hover:border-primary-transparent"
67
+ } ${
68
+ onCloseTab && childrenList.length !== 1
69
+ ? "ps-6 pe-10"
70
+ : "px-6"
71
+ }`}
72
+ onClick={() => {
73
+ setActiveTab(index);
74
+ }}
75
+ >
76
+ {tab?.icon && <Icon icon={tab?.icon} className="text-lg" />}
77
+ {tab.title}
78
+ </button>
79
+ {onCloseTab && childrenList.length !== 1 && (
80
+ <button
81
+ type="button"
82
+ className="absolute right-2 p-0.5 rounded-full hover:text-warning"
83
+ onClick={() => {
84
+ setActiveTab(
85
+ activeTab === index
86
+ ? index === 0
87
+ ? index
88
+ : index - 1
89
+ : activeTab
90
+ );
91
+ onCloseTab(index);
92
+ }}
93
+ >
94
+ <Icon icon="pajamas:close" />
95
+ </button>
96
+ )}
97
+ </div>
66
98
  );
67
99
  })}
68
100
  </div>
@@ -73,7 +105,7 @@ export const Tab: TabComponent = ({ children, tabs, options, onChangeTab }) => {
73
105
  <button
74
106
  key={index}
75
107
  type="button"
76
- className={`flex items-center gap-2 px-6 pt-2 pb-1.5 border-b-2 lg:border-b-0 border-r-0 lg:border-r-2 text-left whitespace-nowrap duration-300 ${
108
+ className={`flex items-center gap-2 px-6 pt-2 pb-1.5 border-b-2 lg:border-b-0 border-r-0 lg:border-r-2 text-left select-none whitespace-nowrap duration-300 ${
77
109
  activeTab === index
78
110
  ? "text-primary border-primary"
79
111
  : "border-transparent hover:text-primary hover:border-primary-transparent"
@@ -91,9 +123,11 @@ export const Tab: TabComponent = ({ children, tabs, options, onChangeTab }) => {
91
123
  )}
92
124
  <div
93
125
  className={`flex-1 overflow-auto ${
94
- options?.variant !== "horizontal"
95
- ? "px-6 py-8"
96
- : "px-6 lg:px-8 py-8 lg:py-6"
126
+ !options?.disablePadding
127
+ ? options?.variant !== "horizontal"
128
+ ? "px-6 py-8"
129
+ : "px-6 lg:px-8 py-8 lg:py-6"
130
+ : ""
97
131
  }`}
98
132
  >
99
133
  {windowList[activeTab]}