123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- "use strict";
- exports.__esModule = true;
- exports.default = exports.bem = void 0;
- var _utils = require("../../utils");
- var _constant = require("../../utils/constant");
- var _relation = require("../../mixins/relation");
- var _bindEvent = require("../../mixins/bind-event");
- // Utils
- // Mixins
- var _createNamespace = (0, _utils.createNamespace)('sku-row'),
- createComponent = _createNamespace[0],
- bem = _createNamespace[1],
- t = _createNamespace[2];
- exports.bem = bem;
- var _default = createComponent({
- mixins: [(0, _relation.ParentMixin)('vanSkuRows'), (0, _bindEvent.BindEventMixin)(function (bind) {
- if (this.scrollable && this.$refs.scroller) {
- bind(this.$refs.scroller, 'scroll', this.onScroll);
- }
- })],
- props: {
- skuRow: Object
- },
- data: function data() {
- return {
- progress: 0
- };
- },
- computed: {
- scrollable: function scrollable() {
- return this.skuRow.largeImageMode && this.skuRow.v.length > 6;
- }
- },
- methods: {
- onScroll: function onScroll() {
- var _this$$refs = this.$refs,
- scroller = _this$$refs.scroller,
- row = _this$$refs.row;
- var distance = row.offsetWidth - scroller.offsetWidth;
- this.progress = scroller.scrollLeft / distance;
- },
- genTitle: function genTitle() {
- var h = this.$createElement;
- return h("div", {
- "class": bem('title')
- }, [this.skuRow.k, this.skuRow.is_multiple && h("span", {
- "class": bem('title-multiple')
- }, ["\uFF08", t('multiple'), "\uFF09"])]);
- },
- genIndicator: function genIndicator() {
- var h = this.$createElement;
- if (this.scrollable) {
- var style = {
- transform: "translate3d(" + this.progress * 20 + "px, 0, 0)"
- };
- return h("div", {
- "class": bem('indicator-wrapper')
- }, [h("div", {
- "class": bem('indicator')
- }, [h("div", {
- "class": bem('indicator-slider'),
- "style": style
- })])]);
- }
- },
- genContent: function genContent() {
- var h = this.$createElement;
- var nodes = this.slots();
- if (this.skuRow.largeImageMode) {
- var top = [];
- var bottom = [];
- nodes.forEach(function (node, index) {
- var group = Math.floor(index / 3) % 2 === 0 ? top : bottom;
- group.push(node);
- });
- return h("div", {
- "class": bem('scroller'),
- "ref": "scroller"
- }, [h("div", {
- "class": bem('row'),
- "ref": "row"
- }, [top]), bottom.length ? h("div", {
- "class": bem('row')
- }, [bottom]) : null]);
- }
- return nodes;
- },
- centerItem: function centerItem(selectSkuId) {
- if (!this.skuRow.largeImageMode || !selectSkuId) {
- return;
- }
- var _this$children = this.children,
- children = _this$children === void 0 ? [] : _this$children;
- var _this$$refs2 = this.$refs,
- scroller = _this$$refs2.scroller,
- row = _this$$refs2.row;
- var child = children.find(function (it) {
- return +it.skuValue.id === +selectSkuId;
- });
- if (scroller && row && child && child.$el) {
- var target = child.$el;
- var to = target.offsetLeft - (scroller.offsetWidth - target.offsetWidth) / 2;
- scroller.scrollLeft = to;
- }
- }
- },
- render: function render() {
- var h = arguments[0];
- return h("div", {
- "class": [bem(), _constant.BORDER_BOTTOM]
- }, [this.genTitle(), this.genContent(), this.genIndicator()]);
- }
- });
- exports.default = _default;
|