xdesign-vue-next
Version:
XDesign Component for vue-next
100 lines (92 loc) • 3.71 kB
JavaScript
/**
* xdesign v1.0.6
* (c) 2023 xdesign
* @license MIT
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
var vue = require('vue');
var utils_helper = require('../utils/helper.js');
var tabs_props = require('./props.js');
var hooks_useConfig = require('../hooks/useConfig.js');
require('@babel/runtime/helpers/objectWithoutProperties');
require('lodash/camelCase');
require('lodash/isUndefined');
require('lodash/isNull');
require('lodash/isArray');
require('lodash/isNumber');
require('lodash/isString');
require('../config-provider/useConfig.js');
require('lodash/isFunction');
require('lodash/cloneDeep');
require('../config-provider/context.js');
require('lodash/mergeWith');
require('lodash/merge');
require('../_common/js/global-config/default-config.js');
require('../_common/js/global-config/locale/en_US.js');
require('../_chunks/dep-8d10b59f.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
var TTabNavBar = vue.defineComponent({
props: {
navs: {
type: Array
},
placement: tabs_props["default"].placement,
value: tabs_props["default"].value
},
setup: function setup(props) {
var COMPONENT_NAME = hooks_useConfig.usePrefixClass("tabs");
var classPrefix = hooks_useConfig.usePrefixClass();
var navBarClass = vue.computed(function () {
return ["".concat(COMPONENT_NAME.value, "__bar"), "".concat(classPrefix.value, "-is-").concat(props.placement)];
});
var navBarStyle = vue.ref(null);
var getStyle = function getStyle() {
var _props$navs$i$el, _ref3;
var isVertical = ["left", "right"].includes(props.placement.toLowerCase());
var _ref = isVertical ? ["height", "top"] : ["width", "left"],
_ref2 = _slicedToArray__default["default"](_ref, 2),
sizePropName = _ref2[0],
offsetPropName = _ref2[1];
var offset = 0;
var i = 0;
for (; i < props.navs.length; i++) {
var _props$navs$i;
if (props.navs[i].props.value === props.value) {
break;
}
offset += ((_props$navs$i = props.navs[i]) === null || _props$navs$i === void 0 || (_props$navs$i = _props$navs$i.el) === null || _props$navs$i === void 0 ? void 0 : _props$navs$i["client".concat(utils_helper.firstUpperCase(sizePropName))]) || 0;
}
if (!props.navs[i]) return {};
return _ref3 = {}, _defineProperty__default["default"](_ref3, offsetPropName, "".concat(offset, "px")), _defineProperty__default["default"](_ref3, sizePropName, "".concat(((_props$navs$i$el = props.navs[i].el) === null || _props$navs$i$el === void 0 ? void 0 : _props$navs$i$el["client".concat(utils_helper.firstUpperCase(sizePropName))]) || 0, "px")), _ref3;
};
vue.onMounted(function () {
vue.nextTick(function () {
navBarStyle.value = getStyle();
});
});
vue.watch([function () {
return props.navs;
}, function () {
return props.value;
}, function () {
return props.placement;
}], function () {
vue.nextTick(function () {
navBarStyle.value = getStyle();
});
});
return function () {
return vue.createVNode("div", {
"class": navBarClass.value,
"style": navBarStyle.value
}, null);
};
}
});
exports["default"] = TTabNavBar;
//# sourceMappingURL=tab-nav-bar.js.map