vue-ant-patterns
Version:
vue-ant-patterns
269 lines (232 loc) • 9.21 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _babelHelperVueJsxMergeProps = require('babel-helper-vue-jsx-merge-props');
var _babelHelperVueJsxMergeProps2 = _interopRequireDefault(_babelHelperVueJsxMergeProps);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _vueTypes = require('ant-design-vue/lib/_util/vue-types');
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _LocaleReceiver = require('ant-design-vue/lib/locale-provider/LocaleReceiver');
var _LocaleReceiver2 = _interopRequireDefault(_LocaleReceiver);
var _dContainer = require('../d-container');
var _dContainer2 = _interopRequireDefault(_dContainer);
var _dIconButton = require('../d-icon-button');
var _dIconButton2 = _interopRequireDefault(_dIconButton);
var _antDesignVue = require('ant-design-vue');
var _dIcon = require('../d-icon');
var _dIcon2 = _interopRequireDefault(_dIcon);
var _dAutoComplete = require('../d-auto-complete');
var _dAutoComplete2 = _interopRequireDefault(_dAutoComplete);
var _zh_CN = require('../d-language/global/zh_CN');
var _zh_CN2 = _interopRequireDefault(_zh_CN);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
/* babel-plugin-inline-import '../style/image/avatar.svg' */var avatarSvg = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTY4NjI3MTAwNjUxIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjY2MzIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTUxMiAyMjcuNDg4Yy03NC4xMTIgMC0xMzQuMzA0IDYwLjI4OC0xMzQuMzA0IDEzNC4zMDRzNjAuMTkyIDEzNC40IDEzNC4zMDQgMTM0LjQgMTM0LjMwNC02MC4yODggMTM0LjMwNC0xMzQuMzA0LTYwLjE5Mi0xMzQuNC0xMzQuMzA0LTEzNC40ek01MTIgMEMyMjkuMTg0IDAgMCAyMjkuMTg0IDAgNTEyczIyOS4xODQgNTEyIDUxMiA1MTJjMjgyLjc4NCAwIDUxMi0yMjkuMjE2IDUxMi01MTJTNzk0Ljc4NCAwIDUxMiAweiBtMjM3Ljg4OCA3ODAuMDk2YTI1LjI4IDI1LjI4IDAgMCAxLTI1LjMxMi0yNS4zMTJjMC0xMTYtOTMuNDA4LTIwNi44MTYtMjEyLjYwOC0yMDYuODE2cy0yMTIuNjA4IDkwLjc4NC0yMTIuNjA4IDIwNi43ODRjMCAxNC4wMTYtMTEuMjk2IDI1LjMxMi0yNS4zMTIgMjUuMzEycy0yNS4zMTItMTEuMjk2LTI1LjMxMi0yNS4zMTJjMC03MC4xMTIgMjcuNDg4LTEzNS4yOTYgNzcuNDA4LTE4My42MTZhMjU5LjM5MiAyNTkuMzkyIDAgMCAxIDg0LjUxMi01NC41OTIgMTg4LjM4NCAxODguMzg0IDAgMCAxLTI5LjQwOC0yNGMtMzQuOTEyLTM0LjkxMi01NC4yMDgtODEuNDA4LTU0LjIwOC0xMzAuODE2czE5LjItOTUuOTA0IDU0LjIwOC0xMzAuODE2YzM0LjkxMi0zNC45MTIgODEuNDA4LTU0LjIwOCAxMzAuNzg0LTU0LjIwOHM5NS45MDQgMTkuMiAxMzAuNzg0IDU0LjIwOGMzNC43ODQgMzUuMDA4IDU0LjExMiA4MS41MDQgNTQuMTEyIDEzMC45MTJzLTE5LjIgOTUuOTA0LTU0LjIwOCAxMzAuODE2YTE4Ni45MTIgMTg2LjkxMiAwIDAgMS0yOS40MDggMjQgMjYxLjc5MiAyNjEuNzkyIDAgMCAxIDg0LjUxMiA1NC41OTJjNDkuODg4IDQ4LjE5MiA3Ny40MDggMTEzLjQwOCA3Ny40MDggMTgzLjYxNmEyNS40MDggMjUuNDA4IDAgMCAxLTI1LjQwOCAyNS4yMTZ6IiBwLWlkPSI2NjMzIiBmaWxsPSIjY2NjIj48L3BhdGg+PC9zdmc+';
var Horizontal = _dContainer2['default'].Horizontal;
var renderOptions = _dAutoComplete2['default'].renderOptions;
var HeaderTools = {
name: 'DHeaderTools',
props: {
prefixCls: _vueTypes2['default'].string.def('depot-header-tools'),
avatar: _vueTypes2['default'].string,
userName: _vueTypes2['default'].string,
locale: _vueTypes2['default'].object,
search: _vueTypes2['default'].bool.def(true),
searchDataSource: _vueTypes2['default'].array,
userDropmenuItems: _vueTypes2['default'].array.def([{
title: '设置',
icon: 'setting',
key: 'setting'
}, {
title: '切换自助',
icon: 'swap',
key: 'swap'
}, {
title: '退出',
icon: 'logout',
key: 'logout'
}]),
theme: _vueTypes2['default'].string.def('dark'),
funcs: _vueTypes2['default'].array.def([{
type: 'task',
count: 0,
title: '任务',
icon: 'alert'
}, {
type: 'notifications',
title: '通知',
icon: 'notification'
}, {
type: 'star',
title: '收藏',
icon: 'star'
}, {
type: 'help',
title: '帮助',
icon: 'question-circle'
}])
},
methods: {
getDefaultLocale: function getDefaultLocale() {
var result = (0, _extends3['default'])({}, _zh_CN2['default'], this.locale);
result.lang = (0, _extends3['default'])({}, result.lang, (this.locale || {}).lang);
return result;
},
getFuncs: function getFuncs(locale) {
var h = this.$createElement;
var funcs = this.funcs,
$slots = this.$slots;
var _ = this;
if ($slots.funcs) {
return $slots.funcs;
}
if (!funcs || !funcs.length) return null;
return funcs.map(function (it) {
var type = it.type,
count = it.count,
title = it.title,
icon = it.icon;
var props = {
key: type,
attrs: { title: locale[type] || title },
on: {
click: function click(e) {
_.$emit('fnClick', e, it);
}
}
};
var isCount = !it.hasOwnProperty('count');
return h(
_dIconButton2['default'],
props,
[isCount ? h(_dIcon2['default'], {
attrs: { type: icon }
}) : h(
_antDesignVue.Badge,
{
attrs: { count: count }
},
[h(_dIcon2['default'], {
attrs: { type: icon }
})]
)]
);
});
},
renderSearch: function renderSearch() {
var _this = this;
var h = this.$createElement;
var searchDataSource = this.$props.searchDataSource;
var $slots = this.$slots;
/* serch event
searchSelect,
searchChange,
searchSearch,
*/
var props = {
on: {
change: function change(value) {
_this.$emit('searchChange', value);
},
blur: function blur() {
_this.$emit('blur');
},
search: function search(value) {
_this.$emit('search', value);
},
select: function select(value, option) {
_this.$emit('searchSelect', value, option);
}
},
props: {
dataSource: searchDataSource
}
};
if ($slots.search) {
return $slots.search;
}
return h(
_dAutoComplete2['default'],
props,
[$slots.searchOptions]
);
},
renderComponent: function renderComponent(contextLocale, locale) {
var _this2 = this;
var h = this.$createElement;
var prefixCls = this.prefixCls,
userDropmenuItems = this.userDropmenuItems,
search = this.search,
theme = this.theme,
avatar = this.avatar,
userName = this.userName;
var containerProps = {
props: {
align: 'center',
justify: 'end'
},
'class': prefixCls
};
var menuProps = {
props: {
theme: theme
// selectable: true,
},
on: {
click: function click(_ref) {
var item = _ref.item,
key = _ref.key,
selectedKeys = _ref.selectedKeys;
/* avatar menu select */
_this2.$emit('userDropMenuSelect', { item: item, key: key, selectedKeys: selectedKeys });
}
}
};
return h(
Horizontal,
containerProps,
[search ? this.renderSearch() : null, this.getFuncs(contextLocale), h(
'span',
{ 'class': 'avatar-button' },
[h(
_antDesignVue.Dropdown,
{ 'class': 'icon-button icon-button-avatar', attrs: { overlayClassName: 'depot-header-dropdown avatar-dropdown' }
},
[h('span', [h('img', { 'class': 'avatar', attrs: { src: avatar || avatarSvg, alt: userName }
})]), h(
_antDesignVue.Menu,
(0, _babelHelperVueJsxMergeProps2['default'])([menuProps, { slot: 'overlay' }]),
[userDropmenuItems.map(function (it) {
if (it === null) {
return h(_antDesignVue.Menu.Divider, { key: 'null' });
}
return h(
_antDesignVue.Menu.Item,
{ key: it.key },
[it.icon ? h(_dIcon2['default'], {
attrs: { type: it.icon }
}) : null, contextLocale[it.key] || it.title]
);
})]
)]
)]
)]
);
}
},
render: function render() {
var h = arguments[0];
return h(_LocaleReceiver2['default'], {
attrs: {
componentName: 'Global',
defaultLocale: this.getDefaultLocale
},
scopedSlots: { 'default': this.renderComponent }
});
}
};
HeaderTools.install = function (Vue) {
Vue.component(HeaderTools.name, HeaderTools);
};
exports['default'] = HeaderTools;