wex-ui-lib 1.4.1 → 1.4.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.
package/dist/index.d.ts CHANGED
@@ -190,12 +190,13 @@ type EntrySelectorProps = {
190
190
  declare function EntrySelector(props: EntrySelectorProps): React$1.JSX.Element;
191
191
 
192
192
  interface TabsProps {
193
+ activeTabId?: string;
193
194
  tabPadding?: string;
194
195
  accentColor?: string;
195
196
  displayMode?: DisplayMode;
196
197
  font?: Font;
197
198
  tabs: {
198
- id?: string;
199
+ id: string;
199
200
  label: string;
200
201
  content: React$1.ReactNode;
201
202
  }[];
package/dist/index.esm.js CHANGED
@@ -2536,29 +2536,37 @@ var ItemContent = newStyled.div(templateObject_5$1 || (templateObject_5$1 = __ma
2536
2536
  var templateObject_1$1, templateObject_2$1, templateObject_3$1, templateObject_4$1, templateObject_5$1;
2537
2537
 
2538
2538
  var Tabs = function (_a) {
2539
- var tabs = _a.tabs, font = _a.font, _b = _a.displayMode, displayMode = _b === undefined ? "dark" : _b, accentColor = _a.accentColor, tabPadding = _a.tabPadding, onTabChange = _a.onTabChange;
2540
- var _c = useState(0), activeTab = _c[0], setActiveTab = _c[1];
2541
- var _d = useState({ left: 0, width: 0 }), indicatorStyle = _d[0], setIndicatorStyle = _d[1];
2539
+ var _b, _c;
2540
+ var tabs = _a.tabs, font = _a.font, _d = _a.displayMode, displayMode = _d === undefined ? "dark" : _d, accentColor = _a.accentColor, tabPadding = _a.tabPadding, onTabChange = _a.onTabChange, activeTabId = _a.activeTabId;
2541
+ var _e = useState((_b = tabs[0]) === null || _b === undefined ? undefined : _b.id), internalActiveTabId = _e[0], setInternalActiveTabId = _e[1];
2542
+ var isControlled = activeTabId !== undefined;
2543
+ var activeTab = isControlled ? activeTabId : internalActiveTabId;
2544
+ var _f = useState({ left: 0, width: 0 }), indicatorStyle = _f[0], setIndicatorStyle = _f[1];
2542
2545
  var tabRefs = useRef([]);
2543
2546
  useEffect(function () {
2544
- onTabChange && onTabChange(tabs[activeTab].id || tabs[activeTab].label);
2545
- var updateIndicator = function (index) {
2546
- var tab = tabRefs.current[index];
2547
- if (tab) {
2548
- setIndicatorStyle({ left: tab.offsetLeft, width: tab.offsetWidth });
2547
+ onTabChange && onTabChange(activeTab);
2548
+ var updateIndicator = function () {
2549
+ var index = tabs.findIndex(function (tab) { return tab.id === activeTab; });
2550
+ if (index !== -1) {
2551
+ var tab = tabRefs.current[index];
2552
+ if (tab) {
2553
+ setIndicatorStyle({ left: tab.offsetLeft, width: tab.offsetWidth });
2554
+ }
2549
2555
  }
2550
2556
  };
2551
- updateIndicator(activeTab);
2557
+ updateIndicator();
2552
2558
  }, [activeTab]);
2559
+ var handleTabClick = function (id) {
2560
+ if (!isControlled) {
2561
+ setInternalActiveTabId(id);
2562
+ }
2563
+ onTabChange === null || onTabChange === undefined ? undefined : onTabChange(id);
2564
+ };
2553
2565
  return (React__default.createElement(TabsContainer, null,
2554
2566
  React__default.createElement(TabsList, null,
2555
- tabs.map(function (tab, index) { return (React__default.createElement(Tab
2556
- // @ts-ignore
2557
- , {
2558
- // @ts-ignore
2559
- ref: function (el) { return (tabRefs.current[index] = el); }, key: index, active: activeTab === index, onClick: function () { return setActiveTab(index); }, font: font, accentColor: accentColor, displayMode: displayMode, tabPadding: tabPadding }, (font === null || font === undefined ? undefined : font.casing) ? formatText(tab.label, font.casing) : tab.label)); }),
2567
+ tabs.map(function (tab, index) { return (React__default.createElement(Tab, { ref: function (el) { tabRefs.current[index] = el; }, key: tab.id, active: activeTab === tab.id, onClick: function () { return handleTabClick(tab.id); }, font: font, accentColor: accentColor, displayMode: displayMode, tabPadding: tabPadding }, (font === null || font === undefined ? undefined : font.casing) ? formatText(tab.label, font.casing) : tab.label)); }),
2560
2568
  React__default.createElement(ActiveIndicator, { accentColor: accentColor, left: indicatorStyle.left, width: indicatorStyle.width })),
2561
- React__default.createElement(TabPanel, null, tabs[activeTab].content)));
2569
+ React__default.createElement(TabPanel, null, (_c = tabs.find(function (tab) { return tab.id === activeTab; })) === null || _c === undefined ? undefined : _c.content)));
2562
2570
  };
2563
2571
  var TabsContainer = newStyled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n width: 100%;\n position: relative;\n"], ["\n width: 100%;\n position: relative;\n"])));
2564
2572
  var TabsList = newStyled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: flex;\n justify-content: center;\n position: relative;\n"], ["\n display: flex;\n justify-content: center;\n position: relative;\n"])));