You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							136 lines
						
					
					
						
							4.4 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							136 lines
						
					
					
						
							4.4 KiB
						
					
					
				
								"use strict";
							 | 
						|
								Object.defineProperty(exports, "__esModule", { value: true });
							 | 
						|
								var relation_1 = require("../common/relation");
							 | 
						|
								var component_1 = require("../common/component");
							 | 
						|
								(0, component_1.VantComponent)({
							 | 
						|
								    classes: ['item-title-class'],
							 | 
						|
								    field: true,
							 | 
						|
								    relation: (0, relation_1.useParent)('dropdown-menu', function () {
							 | 
						|
								        this.updateDataFromParent();
							 | 
						|
								    }),
							 | 
						|
								    props: {
							 | 
						|
								        value: {
							 | 
						|
								            type: null,
							 | 
						|
								            observer: 'rerender',
							 | 
						|
								        },
							 | 
						|
								        title: {
							 | 
						|
								            type: String,
							 | 
						|
								            observer: 'rerender',
							 | 
						|
								        },
							 | 
						|
								        disabled: Boolean,
							 | 
						|
								        titleClass: {
							 | 
						|
								            type: String,
							 | 
						|
								            observer: 'rerender',
							 | 
						|
								        },
							 | 
						|
								        options: {
							 | 
						|
								            type: Array,
							 | 
						|
								            value: [],
							 | 
						|
								            observer: 'rerender',
							 | 
						|
								        },
							 | 
						|
								        popupStyle: String,
							 | 
						|
								        useBeforeToggle: {
							 | 
						|
								            type: Boolean,
							 | 
						|
								            value: false,
							 | 
						|
								        },
							 | 
						|
								        rootPortal: {
							 | 
						|
								            type: Boolean,
							 | 
						|
								            value: false,
							 | 
						|
								        },
							 | 
						|
								    },
							 | 
						|
								    data: {
							 | 
						|
								        transition: true,
							 | 
						|
								        showPopup: false,
							 | 
						|
								        showWrapper: false,
							 | 
						|
								        displayTitle: '',
							 | 
						|
								        safeAreaTabBar: false,
							 | 
						|
								    },
							 | 
						|
								    methods: {
							 | 
						|
								        rerender: function () {
							 | 
						|
								            var _this = this;
							 | 
						|
								            wx.nextTick(function () {
							 | 
						|
								                var _a;
							 | 
						|
								                (_a = _this.parent) === null || _a === void 0 ? void 0 : _a.updateItemListData();
							 | 
						|
								            });
							 | 
						|
								        },
							 | 
						|
								        updateDataFromParent: function () {
							 | 
						|
								            if (this.parent) {
							 | 
						|
								                var _a = this.parent.data, overlay = _a.overlay, duration = _a.duration, activeColor = _a.activeColor, closeOnClickOverlay = _a.closeOnClickOverlay, direction = _a.direction, safeAreaTabBar = _a.safeAreaTabBar;
							 | 
						|
								                this.setData({
							 | 
						|
								                    overlay: overlay,
							 | 
						|
								                    duration: duration,
							 | 
						|
								                    activeColor: activeColor,
							 | 
						|
								                    closeOnClickOverlay: closeOnClickOverlay,
							 | 
						|
								                    direction: direction,
							 | 
						|
								                    safeAreaTabBar: safeAreaTabBar,
							 | 
						|
								                });
							 | 
						|
								            }
							 | 
						|
								        },
							 | 
						|
								        onOpen: function () {
							 | 
						|
								            this.$emit('open');
							 | 
						|
								        },
							 | 
						|
								        onOpened: function () {
							 | 
						|
								            this.$emit('opened');
							 | 
						|
								        },
							 | 
						|
								        onClose: function () {
							 | 
						|
								            this.$emit('close');
							 | 
						|
								        },
							 | 
						|
								        onClosed: function () {
							 | 
						|
								            this.$emit('closed');
							 | 
						|
								            this.setData({ showWrapper: false });
							 | 
						|
								        },
							 | 
						|
								        onOptionTap: function (event) {
							 | 
						|
								            var option = event.currentTarget.dataset.option;
							 | 
						|
								            var value = option.value;
							 | 
						|
								            var shouldEmitChange = this.data.value !== value;
							 | 
						|
								            this.setData({ showPopup: false, value: value });
							 | 
						|
								            this.$emit('close');
							 | 
						|
								            this.rerender();
							 | 
						|
								            if (shouldEmitChange) {
							 | 
						|
								                this.$emit('change', value);
							 | 
						|
								            }
							 | 
						|
								        },
							 | 
						|
								        toggle: function (show, options) {
							 | 
						|
								            var _this = this;
							 | 
						|
								            if (options === void 0) { options = {}; }
							 | 
						|
								            var showPopup = this.data.showPopup;
							 | 
						|
								            if (typeof show !== 'boolean') {
							 | 
						|
								                show = !showPopup;
							 | 
						|
								            }
							 | 
						|
								            if (show === showPopup) {
							 | 
						|
								                return;
							 | 
						|
								            }
							 | 
						|
								            this.onBeforeToggle(show).then(function (status) {
							 | 
						|
								                var _a;
							 | 
						|
								                if (!status) {
							 | 
						|
								                    return;
							 | 
						|
								                }
							 | 
						|
								                _this.setData({
							 | 
						|
								                    transition: !options.immediate,
							 | 
						|
								                    showPopup: show,
							 | 
						|
								                });
							 | 
						|
								                if (show) {
							 | 
						|
								                    (_a = _this.parent) === null || _a === void 0 ? void 0 : _a.getChildWrapperStyle().then(function (wrapperStyle) {
							 | 
						|
								                        _this.setData({ wrapperStyle: wrapperStyle, showWrapper: true });
							 | 
						|
								                        _this.rerender();
							 | 
						|
								                    });
							 | 
						|
								                }
							 | 
						|
								                else {
							 | 
						|
								                    _this.rerender();
							 | 
						|
								                }
							 | 
						|
								            });
							 | 
						|
								        },
							 | 
						|
								        onBeforeToggle: function (status) {
							 | 
						|
								            var _this = this;
							 | 
						|
								            var useBeforeToggle = this.data.useBeforeToggle;
							 | 
						|
								            if (!useBeforeToggle) {
							 | 
						|
								                return Promise.resolve(true);
							 | 
						|
								            }
							 | 
						|
								            return new Promise(function (resolve) {
							 | 
						|
								                _this.$emit('before-toggle', {
							 | 
						|
								                    status: status,
							 | 
						|
								                    callback: function (value) { return resolve(value); },
							 | 
						|
								                });
							 | 
						|
								            });
							 | 
						|
								        },
							 | 
						|
								    },
							 | 
						|
								});
							 | 
						|
								
							 |