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.
		
		
		
		
			
				
					98 lines
				
				2.4 KiB
			
		
		
			
		
	
	
					98 lines
				
				2.4 KiB
			| 
											9 months ago
										 | import { VantComponent } from '../common/component';
 | ||
|  | import { transition } from '../mixins/transition';
 | ||
|  | VantComponent({
 | ||
|  |     classes: [
 | ||
|  |         'enter-class',
 | ||
|  |         'enter-active-class',
 | ||
|  |         'enter-to-class',
 | ||
|  |         'leave-class',
 | ||
|  |         'leave-active-class',
 | ||
|  |         'leave-to-class',
 | ||
|  |         'close-icon-class',
 | ||
|  |     ],
 | ||
|  |     mixins: [transition(false)],
 | ||
|  |     props: {
 | ||
|  |         round: Boolean,
 | ||
|  |         closeable: Boolean,
 | ||
|  |         customStyle: String,
 | ||
|  |         overlayStyle: String,
 | ||
|  |         transition: {
 | ||
|  |             type: String,
 | ||
|  |             observer: 'observeClass',
 | ||
|  |         },
 | ||
|  |         zIndex: {
 | ||
|  |             type: Number,
 | ||
|  |             value: 100,
 | ||
|  |         },
 | ||
|  |         overlay: {
 | ||
|  |             type: Boolean,
 | ||
|  |             value: true,
 | ||
|  |         },
 | ||
|  |         closeIcon: {
 | ||
|  |             type: String,
 | ||
|  |             value: 'cross',
 | ||
|  |         },
 | ||
|  |         closeIconPosition: {
 | ||
|  |             type: String,
 | ||
|  |             value: 'top-right',
 | ||
|  |         },
 | ||
|  |         closeOnClickOverlay: {
 | ||
|  |             type: Boolean,
 | ||
|  |             value: true,
 | ||
|  |         },
 | ||
|  |         position: {
 | ||
|  |             type: String,
 | ||
|  |             value: 'center',
 | ||
|  |             observer: 'observeClass',
 | ||
|  |         },
 | ||
|  |         safeAreaInsetBottom: {
 | ||
|  |             type: Boolean,
 | ||
|  |             value: true,
 | ||
|  |         },
 | ||
|  |         safeAreaInsetTop: {
 | ||
|  |             type: Boolean,
 | ||
|  |             value: false,
 | ||
|  |         },
 | ||
|  |         safeAreaTabBar: {
 | ||
|  |             type: Boolean,
 | ||
|  |             value: false,
 | ||
|  |         },
 | ||
|  |         lockScroll: {
 | ||
|  |             type: Boolean,
 | ||
|  |             value: true,
 | ||
|  |         },
 | ||
|  |         rootPortal: {
 | ||
|  |             type: Boolean,
 | ||
|  |             value: false,
 | ||
|  |         },
 | ||
|  |     },
 | ||
|  |     created() {
 | ||
|  |         this.observeClass();
 | ||
|  |     },
 | ||
|  |     methods: {
 | ||
|  |         onClickCloseIcon() {
 | ||
|  |             this.$emit('close');
 | ||
|  |         },
 | ||
|  |         onClickOverlay() {
 | ||
|  |             this.$emit('click-overlay');
 | ||
|  |             if (this.data.closeOnClickOverlay) {
 | ||
|  |                 this.$emit('close');
 | ||
|  |             }
 | ||
|  |         },
 | ||
|  |         observeClass() {
 | ||
|  |             const { transition, position, duration } = this.data;
 | ||
|  |             const updateData = {
 | ||
|  |                 name: transition || position,
 | ||
|  |             };
 | ||
|  |             if (transition === 'none') {
 | ||
|  |                 updateData.duration = 0;
 | ||
|  |                 this.originDuration = duration;
 | ||
|  |             }
 | ||
|  |             else if (this.originDuration != null) {
 | ||
|  |                 updateData.duration = this.originDuration;
 | ||
|  |             }
 | ||
|  |             this.setData(updateData);
 | ||
|  |         },
 | ||
|  |     },
 | ||
|  | });
 |