ant-design-vue
Version:
An enterprise-class UI design language and Vue-based implementation
113 lines (104 loc) • 3.76 kB
JavaScript
import { createVNode as _createVNode } from "vue";
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
import { reactive, provide, defineComponent, watch } from 'vue';
import PropTypes from '../_util/vue-types';
import defaultRenderEmpty from './renderEmpty';
import LocaleProvider, { ANT_MARK } from '../locale-provider';
import LocaleReceiver from '../locale-provider/LocaleReceiver';
import { withInstall } from '../_util/type';
export var configConsumerProps = ['getTargetContainer', 'getPopupContainer', 'rootPrefixCls', 'getPrefixCls', 'renderEmpty', 'csp', 'autoInsertSpaceInButton', 'locale', 'pageHeader'];
var ConfigProvider = defineComponent({
name: 'AConfigProvider',
props: {
getTargetContainer: {
type: Function
},
getPopupContainer: {
type: Function
},
prefixCls: String,
getPrefixCls: {
type: Function
},
renderEmpty: {
type: Function
},
transformCellText: {
type: Function
},
csp: {
type: Object
},
autoInsertSpaceInButton: PropTypes.looseBool,
locale: {
type: Object
},
pageHeader: {
type: Object
},
componentSize: {
type: Object
},
direction: {
type: String
},
space: {
type: [String, Number]
},
virtual: PropTypes.looseBool,
dropdownMatchSelectWidth: PropTypes.looseBool
},
setup: function setup(props, _ref) {
var slots = _ref.slots;
var getPrefixCls = function getPrefixCls(suffixCls, customizePrefixCls) {
var _props$prefixCls = props.prefixCls,
prefixCls = _props$prefixCls === void 0 ? 'ant' : _props$prefixCls;
if (customizePrefixCls) return customizePrefixCls;
return suffixCls ? "".concat(prefixCls, "-").concat(suffixCls) : prefixCls;
};
var renderEmptyComponent = function renderEmptyComponent(name) {
var renderEmpty = props.renderEmpty || slots.renderEmpty || defaultRenderEmpty;
return renderEmpty(name);
};
var getPrefixClsWrapper = function getPrefixClsWrapper(suffixCls, customizePrefixCls) {
var prefixCls = props.prefixCls;
if (customizePrefixCls) return customizePrefixCls;
var mergedPrefixCls = prefixCls || getPrefixCls('');
return suffixCls ? "".concat(mergedPrefixCls, "-").concat(suffixCls) : mergedPrefixCls;
};
var configProvider = reactive(_extends(_extends({}, props), {
getPrefixCls: getPrefixClsWrapper,
renderEmpty: renderEmptyComponent
}));
watch(props, function () {
_extends(configProvider, props);
});
provide('configProvider', configProvider);
var renderProvider = function renderProvider(legacyLocale) {
var _a;
return _createVNode(LocaleProvider, {
"locale": props.locale || legacyLocale,
"ANT_MARK__": ANT_MARK
}, {
default: function _default() {
return [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)];
}
});
};
return function () {
return _createVNode(LocaleReceiver, {
"children": function children(_, __, legacyLocale) {
return renderProvider(legacyLocale);
}
}, null);
};
}
});
export var defaultConfigProvider = {
getPrefixCls: function getPrefixCls(suffixCls, customizePrefixCls) {
if (customizePrefixCls) return customizePrefixCls;
return "ant-".concat(suffixCls);
},
renderEmpty: defaultRenderEmpty
};
export default withInstall(ConfigProvider);