123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- "use strict";
- exports.__esModule = true;
- exports.default = void 0;
- var _utils = require("../utils");
- var _relation = require("../mixins/relation");
- var _constant = require("../utils/constant");
- var _scroll = require("../utils/dom/scroll");
- var _createNamespace = (0, _utils.createNamespace)('index-anchor'),
- createComponent = _createNamespace[0],
- bem = _createNamespace[1];
- var _default = createComponent({
- mixins: [(0, _relation.ChildrenMixin)('vanIndexBar', {
- indexKey: 'childrenIndex'
- })],
- props: {
- index: [Number, String]
- },
- data: function data() {
- return {
- top: 0,
- left: null,
- rect: {
- top: 0,
- height: 0
- },
- width: null,
- active: false
- };
- },
- computed: {
- sticky: function sticky() {
- return this.active && this.parent.sticky;
- },
- anchorStyle: function anchorStyle() {
- if (this.sticky) {
- return {
- zIndex: "" + this.parent.zIndex,
- left: this.left ? this.left + "px" : null,
- width: this.width ? this.width + "px" : null,
- transform: "translate3d(0, " + this.top + "px, 0)",
- color: this.parent.highlightColor
- };
- }
- }
- },
- mounted: function mounted() {
- var rect = this.$el.getBoundingClientRect();
- this.rect.height = rect.height;
- },
- methods: {
- scrollIntoView: function scrollIntoView() {
- this.$el.scrollIntoView();
- },
- getRect: function getRect(scroller, scrollerRect) {
- var el = this.$el;
- var elRect = el.getBoundingClientRect();
- this.rect.height = elRect.height;
- if (scroller === window || scroller === document.body) {
- this.rect.top = elRect.top + (0, _scroll.getRootScrollTop)();
- } else {
- this.rect.top = elRect.top + (0, _scroll.getScrollTop)(scroller) - scrollerRect.top;
- }
- return this.rect;
- }
- },
- render: function render() {
- var _ref;
- var h = arguments[0];
- var sticky = this.sticky;
- return h("div", {
- "style": {
- height: sticky ? this.rect.height + "px" : null
- }
- }, [h("div", {
- "style": this.anchorStyle,
- "class": [bem({
- sticky: sticky
- }), (_ref = {}, _ref[_constant.BORDER_BOTTOM] = sticky, _ref)]
- }, [this.slots('default') || this.index])]);
- }
- });
- exports.default = _default;
|