1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.AnchorLinkProps = undefined;
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _vueTypes = require('../_util/vue-types');
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _propsUtil = require('../_util/props-util');
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var AnchorLinkProps = exports.AnchorLinkProps = {
prefixCls: _vueTypes2['default'].string,
href: _vueTypes2['default'].string,
title: _vueTypes2['default'].any
};
exports['default'] = {
name: 'AAnchorLink',
props: (0, _propsUtil.initDefaultProps)(AnchorLinkProps, {
prefixCls: 'ant-anchor',
href: '#'
}),
inject: {
antAnchor: { 'default': function _default() {
return {};
} },
antAnchorContext: { 'default': function _default() {
return {};
} }
},
watch: {
href: function href(val, oldVal) {
this.antAnchor.unregisterLink(oldVal);
this.antAnchor.registerLink(val);
}
},
mounted: function mounted() {
this.antAnchor.registerLink(this.href);
},
beforeDestroy: function beforeDestroy() {
this.antAnchor.unregisterLink(this.href);
},
methods: {
handleClick: function handleClick(e) {
this.antAnchor.scrollTo(this.href);
var scrollTo = this.antAnchor.scrollTo;
var _$props = this.$props,
href = _$props.href,
title = _$props.title;
if (this.antAnchorContext.$emit) {
this.antAnchorContext.$emit('click', e, { title: title, href: href });
}
scrollTo(href);
}
},
render: function render() {
var h = arguments[0];
var prefixCls = this.prefixCls,
href = this.href,
$slots = this.$slots;
var title = (0, _propsUtil.getComponentFromProp)(this, 'title');
var active = this.antAnchor.$data.activeLink === href;
var wrapperClassName = (0, _classnames2['default'])(prefixCls + '-link', (0, _defineProperty3['default'])({}, prefixCls + '-link-active', active));
var titleClassName = (0, _classnames2['default'])(prefixCls + '-link-title', (0, _defineProperty3['default'])({}, prefixCls + '-link-title-active', active));
return h(
'div',
{ 'class': wrapperClassName },
[h(
'a',
{
'class': titleClassName,
attrs: { href: href,
title: typeof title === 'string' ? title : ''
},
on: {
'click': this.handleClick
}
},
[title]
), $slots['default']]
);
}
};