amis
Version:
一种MIS页面生成工具
646 lines (642 loc) • 32.6 kB
JavaScript
/**
* amis v6.12.0
* build time: 2025-04-03
* Copyright 2018-2025 baidu
*/
import { __extends, __read, __spreadArray, __assign, __awaiter, __generator, __decorate, __metadata } from 'tslib';
import React from 'react';
import { resolveVariableAndFilter, getVariable, isObjectShallowModified, isVisible, resolveEventData, str2AsyncFunction, filter, setThemeClassName, createObject, isObject, isDisabled, CustomStyle, autobind, ScopedContext, Renderer, isGlobalVarExpression } from 'amis-core';
import find from 'lodash/find';
import findIndex from 'lodash/findIndex';
import { Tab, Tabs as Tabs$1 } from 'amis-ui';
import isNaN from 'lodash/isNaN';
var Tabs = /** @class */ (function (_super) {
__extends(Tabs, _super);
function Tabs(props) {
var _this = _super.call(this, props) || this;
_this.newTabDefaultId = 3;
var location = props.location || window.location;
var tabs = props.tabs, source = props.source, data = props.data;
var activeKey = 0;
if (typeof props.activeKey !== 'undefined') {
activeKey = props.activeKey;
}
else if (location && Array.isArray(tabs)) {
var hash_1 = location.hash.substring(1);
var tab = find(tabs, function (tab) { return tab.hash === hash_1; });
if (tab) {
activeKey = tab.hash;
}
else if (props.defaultKey !== undefined) {
activeKey =
typeof props.defaultKey === 'string'
? resolveVariableAndFilter(props.defaultKey, props.data)
: props.defaultKey;
}
else if (props.defaultActiveKey) {
activeKey =
typeof props.defaultActiveKey === 'string'
? resolveVariableAndFilter(props.defaultActiveKey, props.data)
: props.defaultActiveKey;
}
activeKey = activeKey || (tabs[0] && tabs[0].hash) || 0;
}
var _a = __read(_this.initTabArray(tabs, source, data), 2), localTabs = _a[0], isFromSource = _a[1];
_this.state = {
prevKey: undefined,
activeKey: (_this.activeKey = activeKey),
localTabs: localTabs,
isFromSource: isFromSource
};
return _this;
}
// 初始化 tabs 数组,当从 source 获取数据源时
Tabs.prototype.initTabArray = function (tabs, source, data) {
if (!tabs) {
return [[], false];
}
var arr = resolveVariableAndFilter(source, data, '| raw');
if (!Array.isArray(arr)) {
return [tabs, false];
}
tabs = Array.isArray(tabs) ? tabs : [tabs];
var sourceTabs = [];
arr.forEach(function (value) {
sourceTabs.push.apply(sourceTabs, __spreadArray([], __read(tabs.map(function (tab) { return (__assign(__assign({}, tab), { data: value })); })), false));
});
return [sourceTabs, true];
};
Tabs.prototype.componentDidMount = function () {
var _a, _b;
this.autoJumpToNeighbour(this.activeKey);
var _c = this.props, name = _c.name, value = _c.value, onChange = _c.onChange, source = _c.source, tabs = _c.tabs, data = _c.data;
var localTabs = this.state.localTabs;
// 如果没有配置 name ,说明不需要同步表单值
if (!name ||
typeof onChange !== 'function' ||
// 如果关联某个变量数据,则不启用
source) {
return;
}
value = value !== null && value !== void 0 ? value : getVariable(data, name);
// 如果有值,切到对应的 tab
if (value && Array.isArray(localTabs)) {
var key = this.resolveKeyByValue(value);
key !== undefined && this.handleSelect(key);
}
else {
var tab = this.resolveTabByKey(this.activeKey);
if (tab && value !== ((_a = tab.value) !== null && _a !== void 0 ? _a : tab.title)) {
onChange((_b = tab.value) !== null && _b !== void 0 ? _b : tab.title, name);
}
}
};
Tabs.prototype.componentDidUpdate = function (preProps, prevState) {
var _a, _b, _c;
var props = this.props;
var localTabs = this.state.localTabs;
var prevActiveKey = resolveVariableAndFilter(preProps.defaultActiveKey, preProps.data);
var activeKey = resolveVariableAndFilter(props.defaultActiveKey, props.data);
// 响应外部修改 tabs
var isTabsModified = isObjectShallowModified({
tabs: props.tabs,
source: resolveVariableAndFilter(props.source, props.data, '| raw')
}, {
tabs: preProps.tabs,
source: resolveVariableAndFilter(preProps.source, preProps.data, '| raw')
}, false);
if (isTabsModified) {
var _d = __read(this.initTabArray(props.tabs, props.source, props.data), 2), newLocalTabs = _d[0], isFromSource = _d[1];
this.setState({
localTabs: newLocalTabs,
isFromSource: isFromSource
});
localTabs = newLocalTabs;
}
if (props.location &&
preProps.location &&
props.location.hash !== preProps.location.hash) {
var hash_2 = props.location.hash.substring(1);
if (!hash_2) {
return;
}
var tab = find(localTabs, function (tab) { return tab.hash === hash_2; });
if (tab && tab.hash && tab.hash !== this.state.activeKey) {
this.setState({
activeKey: (this.activeKey = tab.hash),
prevKey: this.state.activeKey
});
}
}
else if (Array.isArray(localTabs) &&
Array.isArray(prevState.localTabs) &&
JSON.stringify(localTabs.map(function (item) { return item.hash; })) !==
JSON.stringify(prevState.localTabs.map(function (item) { return item.hash; }))) {
var activeKey_1 = this.state.activeKey;
var location_1 = props.location;
var tab = null;
if (location_1 && Array.isArray(localTabs)) {
var hash_3 = location_1.hash.substring(1);
tab = find(localTabs, function (tab) { return tab.hash === hash_3; });
}
if (tab) {
activeKey_1 = tab.hash;
}
else if (!localTabs ||
!localTabs.some(function (item, index) {
return item.hash ? item.hash === activeKey_1 : index === activeKey_1;
})) {
activeKey_1 = (localTabs && localTabs[0] && localTabs[0].hash) || 0;
}
this.setState({
prevKey: undefined,
activeKey: (this.activeKey = activeKey_1)
});
}
else if (prevActiveKey !== activeKey) {
if (activeKey == null) {
return;
}
var newActivedKey = null;
var tab = find(localTabs, function (item) { return item.hash === activeKey; });
if (tab) {
newActivedKey = tab.hash;
}
else if (typeof activeKey === 'number' && localTabs[activeKey]) {
newActivedKey = activeKey;
}
// newActivedKey 可以为 0
if (newActivedKey !== null) {
this.setState({
prevKey: prevActiveKey,
activeKey: (this.activeKey = newActivedKey)
});
}
}
this.autoJumpToNeighbour(this.activeKey);
var _e = this.props, name = _e.name, value = _e.value, onChange = _e.onChange, source = _e.source, data = _e.data;
// 如果没有配置 name ,说明不需要同步表单值
if (!name ||
typeof onChange !== 'function' ||
// 如果关联某个变量数据,则不启用
source) {
return;
}
var key;
value = value !== null && value !== void 0 ? value : getVariable(data, name);
var prevValue = (_a = preProps.value) !== null && _a !== void 0 ? _a : getVariable(preProps.data, preProps.name);
if (value !== prevValue &&
(key = this.resolveKeyByValue(value)) !== undefined &&
key !== this.activeKey) {
this.handleSelect(key);
}
else if (this.activeKey !== prevState.activeKey) {
var tab = this.resolveTabByKey(this.activeKey);
if (tab && value !== ((_b = tab.value) !== null && _b !== void 0 ? _b : tab.title)) {
onChange((_c = tab.value) !== null && _c !== void 0 ? _c : tab.title, name);
}
}
};
Tabs.prototype.resolveTabByKey = function (key) {
var localTabs = this.state.localTabs;
if (!Array.isArray(localTabs)) {
return;
}
return find(localTabs, function (tab, index) {
return tab.hash ? tab.hash === key : index === key;
});
};
Tabs.prototype.resolveKeyByValue = function (value) {
var localTabs = this.state.localTabs;
if (!Array.isArray(localTabs)) {
return;
}
var tab = find(localTabs, function (tab) { var _a; return ((_a = tab.value) !== null && _a !== void 0 ? _a : tab.title) === value; });
return tab && tab.hash ? tab.hash : localTabs.indexOf(tab);
};
Tabs.prototype.autoJumpToNeighbour = function (key) {
var _a = this.props, tabs = _a.tabs, data = _a.data;
var localTabs = this.state.localTabs;
if (!Array.isArray(localTabs)) {
return;
}
// 当前 tab 可能不可见,所以需要自动切到一个可见的 tab, 左右左右找, 直到找到一个可见的 tab
var tabIndex = findIndex(localTabs, function (tab, index) {
return tab.hash ? tab.hash === key : index === key;
});
if (localTabs[tabIndex] &&
!isVisible(localTabs[tabIndex], this.props.data)) {
var len = localTabs.length;
var left = tabIndex;
var right = tabIndex;
while (left-- >= 0 || right++ < len) {
var activeKey = null;
if (left >= 0 && isVisible(localTabs[left], data)) {
activeKey = localTabs[left].hash || left;
}
else if (right < len && isVisible(localTabs[right], data)) {
activeKey = localTabs[right].hash || right;
}
if (activeKey !== null) {
this.setState({
activeKey: (this.activeKey = activeKey)
});
break;
}
}
}
};
Tabs.prototype.handleAdd = function () {
var _this = this;
var localTabs = this.state.localTabs.concat();
localTabs.push({
title: "tab".concat(this.newTabDefaultId++),
body: 'tab'
});
this.setState({
localTabs: localTabs
}, function () {
_this.switchTo(_this.state.localTabs.length - 1);
});
};
Tabs.prototype.handleClose = function (key, isHash) {
return __awaiter(this, void 0, void 0, function () {
var originTabs, tabIndex, dispatchEvent, rendererEvent;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
originTabs = this.state.localTabs.concat();
tabIndex = originTabs === null || originTabs === void 0 ? void 0 : originTabs.findIndex(function (item, index) { var _a; return key === (isHash ? item.hash : (_a = item.hash) !== null && _a !== void 0 ? _a : index); });
if (tabIndex === -1) {
return [2 /*return*/];
}
originTabs.splice(tabIndex, 1);
dispatchEvent = this.props.dispatchEvent;
return [4 /*yield*/, dispatchEvent('delete', resolveEventData(this.props, {
value: key
}))];
case 1:
rendererEvent = _a.sent();
if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
return [2 /*return*/];
}
this.setState({
localTabs: originTabs
});
return [2 /*return*/];
}
});
});
};
Tabs.prototype.handleEdit = function (index, text) {
var originTabs = this.state.localTabs.concat();
originTabs[index].title = text;
this.setState({
localTabs: originTabs
});
};
Tabs.prototype.handleDragChange = function (e) {
return __awaiter(this, void 0, void 0, function () {
var activeTab, originTabs;
var _this = this;
return __generator(this, function (_a) {
activeTab = this.resolveTabByKey(this.activeKey);
originTabs = this.state.localTabs.concat();
originTabs.splice(e.newIndex, 0, originTabs.splice(e.oldIndex, 1)[0]);
this.setState({
localTabs: originTabs
}, function () {
if (activeTab) {
var newActiveTabIndex = originTabs.indexOf(activeTab);
_this.switchTo(newActiveTabIndex);
}
});
return [2 /*return*/];
});
});
};
Tabs.prototype.handleSelect = function (key) {
var _a;
return __awaiter(this, void 0, void 0, function () {
var _b, dispatchEvent, data, env, onSelect, id, localTabs, tab, rendererEvent, selectFunc;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:
_b = this.props, dispatchEvent = _b.dispatchEvent, data = _b.data, env = _b.env, onSelect = _b.onSelect, id = _b.id;
localTabs = this.state.localTabs;
tab = localTabs === null || localTabs === void 0 ? void 0 : localTabs.find(function (item, index) { return key === (item.hash ? item.hash : index); });
if (!tab) {
return [2 /*return*/];
}
(_a = env.tracker) === null || _a === void 0 ? void 0 : _a.call(env, {
eventType: 'tabChange',
eventData: {
id: id,
key: key
}
});
return [4 /*yield*/, dispatchEvent('change', resolveEventData(this.props, {
value: (tab === null || tab === void 0 ? void 0 : tab.hash) ? tab === null || tab === void 0 ? void 0 : tab.hash : key + 1
}))];
case 1:
rendererEvent = _c.sent();
if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
return [2 /*return*/];
}
// 是 hash,需要更新到地址栏
if (typeof key === 'string' && env) {
env.updateLocation("#".concat(key));
}
else if (typeof this.state.activeKey === 'string' && env) {
env.updateLocation("#");
}
this.setState({
activeKey: (this.activeKey = key),
prevKey: this.state.activeKey
});
if (typeof onSelect === 'string') {
selectFunc = str2AsyncFunction(onSelect, 'key', 'props');
selectFunc && selectFunc(key, this.props);
}
else if (typeof onSelect === 'function') {
onSelect(key, this.props);
}
return [2 /*return*/];
}
});
});
};
/**
* 动作处理
*/
Tabs.prototype.doAction = function (action, data, throwErrors, args) {
if (throwErrors === void 0) { throwErrors = false; }
var actionType = action === null || action === void 0 ? void 0 : action.actionType;
var tmpKey = Number(args === null || args === void 0 ? void 0 : args.activeKey);
var activeKey = isNaN(tmpKey) ? args === null || args === void 0 ? void 0 : args.activeKey : tmpKey;
var deleteHash = args === null || args === void 0 ? void 0 : args.deleteHash;
if (actionType === 'changeActiveKey') {
this.handleSelect(typeof activeKey === 'number' ? activeKey - 1 : activeKey);
}
else if (actionType === 'deleteTab') {
this.handleClose(deleteHash, true);
}
};
Tabs.prototype.switchTo = function (index) {
var localTabs = this.state.localTabs;
Array.isArray(localTabs) &&
localTabs[index] &&
this.setState({
activeKey: (this.activeKey = localTabs[index].hash || index)
});
};
Tabs.prototype.currentIndex = function () {
var _this = this;
// const {tabs} = this.props;
var localTabs = this.state.localTabs;
return Array.isArray(localTabs)
? findIndex(localTabs, function (tab, index) {
return tab.hash
? tab.hash === _this.state.activeKey
: index === _this.state.activeKey;
})
: -1;
};
// 渲染tabs的title
Tabs.prototype.renderTabTitle = function (title, index, data) {
var render = this.props.render;
return typeof title === 'string' || !title
? filter(title, data)
: render("tab-title/".concat(index), title, {
data: __assign({ index: index, __index: index }, data)
});
};
Tabs.prototype.renderToolbar = function () {
var _a = this.props, toolbar = _a.toolbar, render = _a.render, cx = _a.classnames, toolbarClassName = _a.toolbarClassName, id = _a.id, themeCss = _a.themeCss;
return toolbar ? (React.createElement("div", { className: cx("Tabs-toolbar", toolbarClassName, setThemeClassName(__assign(__assign({}, this.props), { name: 'toolbarControlClassName', id: id, themeCss: themeCss }))) }, render('toolbar', toolbar))) : null;
};
Tabs.prototype.renderTabs = function () {
var _this = this;
var _a = this.props, cx = _a.classnames, ns = _a.classPrefix, contentClassName = _a.contentClassName, linksClassName = _a.linksClassName, tabRender = _a.tabRender, className = _a.className, style = _a.style, render = _a.render, data = _a.data, dMode = _a.mode, tabsMode = _a.tabsMode, unmountOnExit = _a.unmountOnExit, source = _a.source, formStore = _a.formStore, formMode = _a.formMode, formHorizontal = _a.formHorizontal, subFormMode = _a.subFormMode, subFormHorizontal = _a.subFormHorizontal, addable = _a.addable, closable = _a.closable, draggable = _a.draggable, showTip = _a.showTip, showTipClassName = _a.showTipClassName, editable = _a.editable, sidePosition = _a.sidePosition, __ = _a.translate, addBtnText = _a.addBtnText, collapseOnExceed = _a.collapseOnExceed, collapseBtnLabel = _a.collapseBtnLabel, disabled = _a.disabled, mobileUI = _a.mobileUI, swipeable = _a.swipeable, testIdBuilder = _a.testIdBuilder, id = _a.id, wrapperCustomStyle = _a.wrapperCustomStyle, themeCss = _a.themeCss, env = _a.env;
var mode = tabsMode || dMode;
var mountOnEnter = this.props.mountOnEnter;
// 如果在form下面,其他tabs默认需要渲染出来
// 否则在其他 tab 下面的必填项检测不到
if (formStore) {
mountOnEnter = false;
}
var _b = this.state, tabs = _b.localTabs, isFromSource = _b.isFromSource;
var children = [];
var childrenCustomStyle = [];
// 是否从 source 数据中生成
if (isFromSource) {
children = tabs.map(function (tab, index) {
var _a, _b;
var ctx = createObject(data, isObject(tab.data) ? __assign({ index: index }, tab.data) : { item: tab.data, index: index });
return isVisible(tab, ctx) ? (React.createElement(Tab, __assign({}, tab, { title: _this.renderTabTitle(tab.title, index, ctx), disabled: disabled || isDisabled(tab, ctx), key: index, eventKey: filter(tab.hash, ctx) || index, prevKey: index > 0 ? ((_a = tabs[index - 1]) === null || _a === void 0 ? void 0 : _a.hash) || index - 1 : 0, nextKey: index < tabs.length - 1
? ((_b = tabs[index + 1]) === null || _b === void 0 ? void 0 : _b.hash) || index + 1
: tabs.length - 1, swipeable: swipeable, mobileUI: mobileUI, mountOnEnter: mountOnEnter, unmountOnExit: typeof tab.reload === 'boolean'
? tab.reload
: typeof tab.unmountOnExit === 'boolean'
? tab.unmountOnExit
: unmountOnExit, onSelect: _this.handleSelect, testIdBuilder: testIdBuilder === null || testIdBuilder === void 0 ? void 0 : testIdBuilder.getChild("tab-".concat(typeof tab.title === 'string' ? tab.title : index)), className: cx(tab.className, setThemeClassName(__assign(__assign({}, tab), { name: 'panelControlClassName', id: tab.id, themeCss: tab.themeCss }))) }), render("item/".concat(index), (tab === null || tab === void 0 ? void 0 : tab.type) ? tab : tab.tab || tab.body, {
disabled: disabled || isDisabled(tab, ctx) || undefined,
data: ctx,
formMode: tab.mode || subFormMode || formMode,
formHorizontal: tab.horizontal || subFormHorizontal || formHorizontal
}))) : null;
});
childrenCustomStyle = tabs.map(function (tab, index) {
var ctx = createObject(data, isObject(tab.data) ? __assign({ index: index }, tab.data) : { item: tab.data, index: index });
return isVisible(tab, ctx) ? (React.createElement(CustomStyle, __assign({}, tab, { config: {
id: tab.id,
themeCss: tab.themeCss,
classNames: [
{
key: 'panelControlClassName'
}
]
}, env: _this.props.env, key: "customstyle_".concat(index) }))) : null;
});
}
else {
children = tabs.map(function (tab, index) {
var _a, _b;
return isVisible(tab, data) ? (React.createElement(Tab, __assign({}, tab, { title: _this.renderTabTitle(tab.title, index, data), disabled: disabled || isDisabled(tab, data), key: index, eventKey: tab.hash || index, prevKey: index > 0 ? ((_a = tabs[index - 1]) === null || _a === void 0 ? void 0 : _a.hash) || index - 1 : 0, nextKey: index < tabs.length - 1
? ((_b = tabs[index + 1]) === null || _b === void 0 ? void 0 : _b.hash) || index + 1
: tabs.length - 1, swipeable: swipeable, mobileUI: mobileUI, mountOnEnter: mountOnEnter, unmountOnExit: typeof tab.reload === 'boolean'
? tab.reload
: typeof tab.unmountOnExit === 'boolean'
? tab.unmountOnExit
: unmountOnExit, onSelect: _this.handleSelect, testIdBuilder: testIdBuilder === null || testIdBuilder === void 0 ? void 0 : testIdBuilder.getChild("tab-".concat(typeof tab.title === 'string' ? tab.title : index)), className: cx(tab.className, setThemeClassName(__assign(__assign({}, tab), { name: 'panelControlClassName', id: tab.id, themeCss: tab.themeCss }))) }), _this.renderTab
? _this.renderTab(tab, _this.props, index)
: tabRender
? tabRender(tab, _this.props, index)
: render("tab/".concat(index), (tab === null || tab === void 0 ? void 0 : tab.type) ? tab : tab.tab || tab.body, {
disabled: disabled || isDisabled(tab, data) || undefined,
formMode: tab.mode || subFormMode || formMode,
formHorizontal: tab.horizontal || subFormHorizontal || formHorizontal
}))) : null;
});
childrenCustomStyle = tabs.map(function (tab, index) {
return isVisible(tab, data) ? (React.createElement(CustomStyle, { config: {
id: tab.id,
themeCss: tab.themeCss,
classNames: [
{
key: 'panelControlClassName'
}
]
}, env: _this.props.env, key: "customstyle_".concat(index) })) : null;
});
}
return (React.createElement(React.Fragment, null,
React.createElement(Tabs$1, { addBtnText: __(addBtnText || 'add'), classPrefix: ns, classnames: cx, mode: mode, closable: closable, className: cx(className, setThemeClassName(__assign(__assign({}, this.props), { name: 'wrapperCustomStyle', id: id, themeCss: wrapperCustomStyle }))), style: style, contentClassName: cx(contentClassName, setThemeClassName(__assign(__assign({}, this.props), { name: 'contentControlClassName', id: id, themeCss: themeCss }))), linksClassName: linksClassName, titleClassName: cx(setThemeClassName(__assign(__assign({}, this.props), { name: 'titleControlClassName', id: id, themeCss: themeCss }))), onSelect: this.handleSelect, activeKey: this.state.activeKey, toolbar: this.renderToolbar(), addable: addable, onAdd: this.handleAdd, onClose: this.handleClose, draggable: draggable, onDragChange: this.handleDragChange, showTip: showTip, showTipClassName: showTipClassName, editable: editable, onEdit: this.handleEdit, sidePosition: sidePosition, collapseOnExceed: collapseOnExceed, collapseBtnLabel: collapseBtnLabel, mobileUI: mobileUI, testIdBuilder: testIdBuilder }, children),
childrenCustomStyle,
React.createElement(CustomStyle, __assign({}, this.props, { config: {
wrapperCustomStyle: wrapperCustomStyle,
id: id,
themeCss: themeCss,
classNames: [
{
key: 'titleControlClassName',
weights: {
default: {
important: true,
inner: '> a'
},
focused: {
important: true,
suf: '.is-active',
inner: '> a'
},
hover: {
important: true,
inner: '> a'
},
disabled: {
important: true,
suf: '.is-disabled',
inner: '> a'
}
}
},
{
key: 'toolbarControlClassName',
weights: {
default: {
important: true
}
}
},
{
key: 'contentControlClassName',
weights: {
default: {
important: true
}
}
}
]
}, env: env }))));
};
Tabs.prototype.render = function () {
return this.renderTabs();
};
Tabs.defaultProps = {
className: '',
mode: '',
mountOnEnter: true,
unmountOnExit: false
};
__decorate([
autobind,
__metadata("design:type", Function),
__metadata("design:paramtypes", [Array, String, Object]),
__metadata("design:returntype", Array)
], Tabs.prototype, "initTabArray", null);
__decorate([
autobind,
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", void 0)
], Tabs.prototype, "autoJumpToNeighbour", null);
__decorate([
autobind,
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], Tabs.prototype, "handleAdd", null);
__decorate([
autobind,
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Boolean]),
__metadata("design:returntype", Promise)
], Tabs.prototype, "handleClose", null);
__decorate([
autobind,
__metadata("design:type", Function),
__metadata("design:paramtypes", [Number, String]),
__metadata("design:returntype", void 0)
], Tabs.prototype, "handleEdit", null);
__decorate([
autobind,
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", Promise)
], Tabs.prototype, "handleDragChange", null);
__decorate([
autobind,
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", Promise)
], Tabs.prototype, "handleSelect", null);
__decorate([
autobind,
__metadata("design:type", Function),
__metadata("design:paramtypes", [Number]),
__metadata("design:returntype", void 0)
], Tabs.prototype, "switchTo", null);
__decorate([
autobind,
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", Number)
], Tabs.prototype, "currentIndex", null);
return Tabs;
}(React.Component));
var TabsRenderer = /** @class */ (function (_super) {
__extends(TabsRenderer, _super);
function TabsRenderer(props, context) {
var _this = _super.call(this, props) || this;
var scoped = context;
scoped.registerComponent(_this);
return _this;
}
TabsRenderer.prototype.componentWillUnmount = function () {
var _a;
(_a = _super.prototype.componentWillUnmount) === null || _a === void 0 ? void 0 : _a.call(this);
var scoped = this.context;
scoped.unRegisterComponent(this);
};
TabsRenderer.contextType = ScopedContext;
TabsRenderer = __decorate([
Renderer({
type: 'tabs',
onGlobalVarChanged: function (instance, schema, data) {
if (isGlobalVarExpression(schema.source)) {
// tabs 要靠手动刷新了
var _a = __read(instance.initTabArray(instance.props.tabs, instance.props.source, data), 2), newLocalTabs = _a[0], isFromSource = _a[1];
instance.setState({
localTabs: newLocalTabs,
isFromSource: isFromSource
});
return false;
}
}
}),
__metadata("design:paramtypes", [Object, Object])
], TabsRenderer);
return TabsRenderer;
}(Tabs));
export { TabsRenderer, Tabs as default };