[Client] Resolve #2225
This commit is contained in:
		| @@ -2,9 +2,12 @@ | ||||
| <div class="felqjxyj" :class="{ splash }"> | ||||
| 	<div class="bg" ref="bg" @click="onBgClick"></div> | ||||
| 	<div class="main" ref="main"> | ||||
| 		<div class="icon" :class="type"><fa :icon="icon"/></div> | ||||
| 		<div class="icon" v-if="type" :class="type"><fa :icon="icon"/></div> | ||||
| 		<header v-if="title" v-html="title"></header> | ||||
| 		<div class="body" v-if="text" v-html="text"></div> | ||||
| 		<ui-select v-if="select" v-model="selectedValue"> | ||||
| 			<option v-for="item in select.items" :value="item.value">{{ item.text }}</option> | ||||
| 		</ui-select> | ||||
| 		<ui-horizon-group no-grow class="buttons fit-bottom" v-if="!splash"> | ||||
| 			<ui-button @click="ok" primary autofocus>OK</ui-button> | ||||
| 			<ui-button @click="cancel" v-if="showCancelButton">Cancel</ui-button> | ||||
| @@ -33,6 +36,9 @@ export default Vue.extend({ | ||||
| 			type: String, | ||||
| 			required: false | ||||
| 		}, | ||||
| 		select: { | ||||
| 			required: false | ||||
| 		}, | ||||
| 		showCancelButton: { | ||||
| 			type: Boolean, | ||||
| 			default: false | ||||
| @@ -43,6 +49,12 @@ export default Vue.extend({ | ||||
| 		} | ||||
| 	}, | ||||
|  | ||||
| 	data() { | ||||
| 		return { | ||||
| 			selectedValue: null | ||||
| 		}; | ||||
| 	}, | ||||
|  | ||||
| 	computed: { | ||||
| 		icon(): any { | ||||
| 			switch (this.type) { | ||||
| @@ -83,7 +95,8 @@ export default Vue.extend({ | ||||
|  | ||||
| 	methods: { | ||||
| 		ok() { | ||||
| 			this.$emit('ok'); | ||||
| 			const result = this.select ? this.selectedValue : true; | ||||
| 			this.$emit('ok', result); | ||||
| 			this.close(); | ||||
| 		}, | ||||
|  | ||||
| @@ -180,8 +193,11 @@ export default Vue.extend({ | ||||
| 				display block | ||||
| 				margin 0 auto | ||||
|  | ||||
| 			& + header | ||||
| 				margin-top 16px | ||||
|  | ||||
| 		> header | ||||
| 			margin 16px 0 8px 0 | ||||
| 			margin 0 0 8px 0 | ||||
| 			font-weight bold | ||||
| 			font-size 20px | ||||
|  | ||||
|   | ||||
| @@ -109,8 +109,12 @@ export default Vue.extend({ | ||||
| 					userId: this.user.id | ||||
| 				}); | ||||
| 				this.$root.alert({ | ||||
| 					type: 'success', | ||||
| 					title: 'Done!', | ||||
| 					text: this.$t('list-pushed').replace('{user}', this.user.name).replace('{list}', list.title) | ||||
| 					text: this.$t('list-pushed', { | ||||
| 						user: this.user.name, | ||||
| 						list: list.title | ||||
| 					}) | ||||
| 				}); | ||||
| 			}); | ||||
| 		} | ||||
|   | ||||
| @@ -460,7 +460,7 @@ export default (callback: (launch: (router: VueRouter) => [Vue, MiOS]) => void, | ||||
| 					alert(opts) { | ||||
| 						return new Promise((res) => { | ||||
| 							const vm = this.new(Alert, opts); | ||||
| 							vm.$once('ok', () => res(true)); | ||||
| 							vm.$once('ok', result => res(result)); | ||||
| 							vm.$once('cancel', () => res(false)); | ||||
| 						}); | ||||
| 					} | ||||
|   | ||||
| @@ -116,6 +116,34 @@ export default Vue.extend({ | ||||
|  | ||||
| 		menu() { | ||||
| 			let menu = [{ | ||||
| 				icon: ['far', 'list'], | ||||
| 				text: this.$t('push-to-list'), | ||||
| 				action: async () => { | ||||
| 					const lists = await this.$root.api('users/lists/list'); | ||||
| 					const listId = await this.$root.alert({ | ||||
| 						type: null, | ||||
| 						title: this.$t('select-list'), | ||||
| 						select: { | ||||
| 							items: lists.map(list => ({ | ||||
| 								value: list.id, text: list.title | ||||
| 							})) | ||||
| 						}, | ||||
| 						showCancelButton: true | ||||
| 					}); | ||||
| 					if (listId == null) return; | ||||
| 					await this.$root.api('users/lists/push', { | ||||
| 						listId: listId, | ||||
| 						userId: this.user.id | ||||
| 					}); | ||||
| 					this.$root.alert({ | ||||
| 						type: 'success', | ||||
| 						text: this.$t('list-pushed', { | ||||
| 							user: this.user.name, | ||||
| 							list: lists.find(l => l.id === listId).title | ||||
| 						}) | ||||
| 					}); | ||||
| 				} | ||||
| 			}, null, { | ||||
| 				icon: this.user.isMuted ? ['fas', 'eye'] : ['far', 'eye-slash'], | ||||
| 				text: this.user.isMuted ? this.$t('unmute') : this.$t('mute'), | ||||
| 				action: () => { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 syuilo
					syuilo