絵文字のSet Lisenceを複数行対応 (MisskeyIO#181)
This commit is contained in:
		| @@ -27,13 +27,22 @@ SPDX-License-Identifier: AGPL-3.0-only | |||||||
| 		</div> | 		</div> | ||||||
| 		<header v-if="title" :class="$style.title"><Mfm :text="title"/></header> | 		<header v-if="title" :class="$style.title"><Mfm :text="title"/></header> | ||||||
| 		<div v-if="text" :class="$style.text"><Mfm :text="text"/></div> | 		<div v-if="text" :class="$style.text"><Mfm :text="text"/></div> | ||||||
| 		<MkInput v-if="input" v-model="inputValue" autofocus :type="input.type || 'text'" :placeholder="input.placeholder || undefined" :autocomplete="input.autocomplete" @keydown="onInputKeydown"> | 		<template v-if="input"> | ||||||
|  | 			<MkInput v-if="input.type != 'textarea'" v-model="inputValue" autofocus :type="input.type || 'text'" :placeholder="input.placeholder || undefined" :autocomplete="input.autocomplete" @keydown="onInputKeydown"> | ||||||
| 				<template v-if="input.type === 'password'" #prefix><i class="ti ti-lock"></i></template> | 				<template v-if="input.type === 'password'" #prefix><i class="ti ti-lock"></i></template> | ||||||
| 				<template #caption> | 				<template #caption> | ||||||
| 					<span v-if="okButtonDisabled && disabledReason === 'charactersExceeded'" v-text="i18n.t('_dialog.charactersExceeded', { current: (inputValue as string).length, max: input.maxLength ?? 'NaN' })"/> | 					<span v-if="okButtonDisabled && disabledReason === 'charactersExceeded'" v-text="i18n.t('_dialog.charactersExceeded', { current: (inputValue as string).length, max: input.maxLength ?? 'NaN' })"/> | ||||||
| 					<span v-else-if="okButtonDisabled && disabledReason === 'charactersBelow'" v-text="i18n.t('_dialog.charactersBelow', { current: (inputValue as string).length, min: input.minLength ?? 'NaN' })"/> | 					<span v-else-if="okButtonDisabled && disabledReason === 'charactersBelow'" v-text="i18n.t('_dialog.charactersBelow', { current: (inputValue as string).length, min: input.minLength ?? 'NaN' })"/> | ||||||
| 				</template> | 				</template> | ||||||
| 			</MkInput> | 			</MkInput> | ||||||
|  | 			<MkTextarea v-if="input.type === 'textarea'" v-model="inputValue" :placeholder="input.placeholder || undefined" :autocomplete="input.autocomplete"> | ||||||
|  | 				<template #label>{{ input.placeholder }}</template> | ||||||
|  | 				<template #caption> | ||||||
|  | 					<span v-if="okButtonDisabled && disabledReason === 'charactersExceeded'" v-text="i18n.t('_dialog.charactersExceeded', { current: (inputValue as string).length, max: input.maxLength ?? 'NaN' })"/> | ||||||
|  | 					<span v-else-if="okButtonDisabled && disabledReason === 'charactersBelow'" v-text="i18n.t('_dialog.charactersBelow', { current: (inputValue as string).length, min: input.minLength ?? 'NaN' })"/> | ||||||
|  | 				</template> | ||||||
|  | 			</MkTextarea> | ||||||
|  | 		</template> | ||||||
| 		<MkSelect v-if="select" v-model="selectedValue" autofocus> | 		<MkSelect v-if="select" v-model="selectedValue" autofocus> | ||||||
| 			<template v-if="select.items"> | 			<template v-if="select.items"> | ||||||
| 				<option v-for="item in select.items" :value="item.value">{{ item.text }}</option> | 				<option v-for="item in select.items" :value="item.value">{{ item.text }}</option> | ||||||
| @@ -61,10 +70,11 @@ import MkModal from '@/components/MkModal.vue'; | |||||||
| import MkButton from '@/components/MkButton.vue'; | import MkButton from '@/components/MkButton.vue'; | ||||||
| import MkInput from '@/components/MkInput.vue'; | import MkInput from '@/components/MkInput.vue'; | ||||||
| import MkSelect from '@/components/MkSelect.vue'; | import MkSelect from '@/components/MkSelect.vue'; | ||||||
|  | import MkTextarea from '@/components/MkTextarea.vue'; | ||||||
| import { i18n } from '@/i18n'; | import { i18n } from '@/i18n'; | ||||||
|  |  | ||||||
| type Input = { | type Input = { | ||||||
| 	type: 'text' | 'number' | 'password' | 'email' | 'url' | 'date' | 'time' | 'search' | 'datetime-local'; | 	type: 'text' | 'number' | 'password' | 'email' | 'url' | 'date' | 'time' | 'search' | 'datetime-local' | 'textarea'; | ||||||
| 	placeholder?: string | null; | 	placeholder?: string | null; | ||||||
| 	autocomplete?: string; | 	autocomplete?: string; | ||||||
| 	default: string | number | null; | 	default: string | number | null; | ||||||
|   | |||||||
| @@ -251,7 +251,7 @@ export function actions<T extends { | |||||||
| } | } | ||||||
|  |  | ||||||
| export function inputText(props: { | export function inputText(props: { | ||||||
| 	type?: 'text' | 'email' | 'password' | 'url'; | 	type?: 'text' | 'email' | 'password' | 'url' | 'textarea'; | ||||||
| 	title?: string | null; | 	title?: string | null; | ||||||
| 	text?: string | null; | 	text?: string | null; | ||||||
| 	placeholder?: string | null; | 	placeholder?: string | null; | ||||||
|   | |||||||
| @@ -228,6 +228,7 @@ const setCategoryBulk = async () => { | |||||||
|  |  | ||||||
| const setLicenseBulk = async () => { | const setLicenseBulk = async () => { | ||||||
| 	const { canceled, result } = await os.inputText({ | 	const { canceled, result } = await os.inputText({ | ||||||
|  | 		type: 'textarea', | ||||||
| 		title: 'License', | 		title: 'License', | ||||||
| 	}); | 	}); | ||||||
| 	if (canceled) return; | 	if (canceled) return; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 nenohi
					nenohi