All files / ext.wikilambda.edit/components ZObjectPublish.vue

100% Statements 9/9
100% Branches 1/1
100% Functions 4/4
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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                                                    16x 16x 16x     16x                                     20x                 15x 15x 13x         2x                              
<template>
	<!--
		Wikilambda Vue component for publishing a zobject.
		Contains both the publish button and the dialog pop-up flow prior
		to submission.
 
		@copyright 2020– Abstract Wikipedia team; see AUTHORS.txt
		@license MIT
	-->
	<div class="ext-wikilambda-publish-zobject">
		<cdx-button
			class="ext-wikilambda-publish-zobject__publish-button"
			:action="action"
			:disabled="isDisabled"
			@click.stop="handlePublish">
			{{ $i18n( 'wikilambda-publishnew' ).text() }}
		</cdx-button>
		<wl-z-publish-dialog
			:show-dialog="showPublishDialog"
			:should-unattach-implementation-and-tester="shouldUnattachImplementationAndTester"
			@close-dialog="closeDialog"
		></wl-z-publish-dialog>
	</div>
</template>
 
<script>
var CdxButton = require( '@wikimedia/codex' ).CdxButton,
	mapActions = require( 'vuex' ).mapActions,
	PublishDialog = require( './base/PublishDialog.vue' );
 
// @vue/component
module.exports = exports = {
	name: 'wl-z-object-publish',
	components: {
		'cdx-button': CdxButton,
		'wl-z-publish-dialog': PublishDialog
	},
	props: {
		shouldUnattachImplementationAndTester: {
			type: Boolean,
			required: false,
			default: false
		},
		isDisabled: {
			type: Boolean,
			required: false,
			default: false
		}
	},
	data: function () {
		return {
			action: 'progressive',
			showPublishDialog: false
		};
	},
	methods: $.extend( {},
		mapActions( [ 'validateZObject' ] ),
		{
			handlePublish: function () {
				this.validateZObject().then( function ( isValid ) {
					if ( isValid ) {
						this.showPublishDialog = true;
					}
				}.bind( this ) );
			},
			closeDialog: function () {
				this.showPublishDialog = false;
			}
		}
	)
};
</script>
 
<style lang="less">
 
.ext-wikilambda-publish-zobject {
	&__publish-button {
		margin-right: 16px;
	}
}
</style>