2024-06-27 03:40:46 +02:00
<!--
SPDX - FileCopyrightText : syuilo and misskey - project
SPDX - License - Identifier : AGPL - 3.0 - only
-- >
< template >
< div :class = "$style.preview" >
2024-08-17 20:40:21 +02:00
< div >
2024-06-27 03:40:46 +02:00
< MkInput v-model = "text" >
< template # label > Text < / template >
< / MkInput >
< MkSwitch v-model = "flag" :class="$style.preview__content1__switch_button" >
< span > Switch is now { { flag ? 'on' : 'off' } } < / span >
< / MkSwitch >
< div :class = "$style.preview__content1__input" >
< MkRadio v-model = "radio" value="misskey" > Misskey < / MkRadio >
< MkRadio v-model = "radio" value="mastodon" > Mastodon < / MkRadio >
< MkRadio v-model = "radio" value="pleroma" > Pleroma < / MkRadio >
< / div >
< div :class = "$style.preview__content1__button" >
< MkButton inline > This is < / MkButton >
< MkButton inline primary > the button < / MkButton >
< / div >
< / div >
< div :class = "$style.preview__content2" style = "pointer-events: none;" >
< Mfm :text = "mfm" / >
< / div >
< div :class = "$style.preview__content3" >
< MkButton inline primary @click ="openMenu" > Open menu < / MkButton >
< MkButton inline primary @click ="openDialog" > Open dialog < / MkButton >
< MkButton inline primary @click ="openForm" > Open form < / MkButton >
< MkButton inline primary @click ="openDrive" > Open drive < / MkButton >
< / div >
< / div >
< / template >
< script lang = "ts" setup >
import { ref } from 'vue' ;
import MkButton from '@/components/MkButton.vue' ;
import MkInput from '@/components/MkInput.vue' ;
import MkSwitch from '@/components/MkSwitch.vue' ;
import MkTextarea from '@/components/MkTextarea.vue' ;
import MkRadio from '@/components/MkRadio.vue' ;
import * as os from '@/os.js' ;
import * as config from '@/config.js' ;
import { $i } from '@/account.js' ;
const text = ref ( '' ) ;
const flag = ref ( true ) ;
const radio = ref ( 'misskey' ) ;
const mfm = ref ( ` Hello world! This is an @example mention. BTW you are @ ${ $i ? $i . username : 'guest' } . \ nAlso, here is ${ config . url } and [example link]( ${ config . url } ). for more details, see https://example.com. \ nAs you know #misskey is open-source software. ` ) ;
const openDialog = async ( ) => {
await os . alert ( {
type : 'warning' ,
title : 'Oh my Aichan' ,
text : 'Lorem ipsum dolor sit amet, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' ,
} ) ;
} ;
const openForm = async ( ) => {
await os . form ( 'Example form' , {
foo : {
type : 'boolean' ,
default : true ,
label : 'This is a boolean property' ,
} ,
bar : {
type : 'number' ,
default : 300 ,
label : 'This is a number property' ,
} ,
baz : {
type : 'string' ,
default : 'Misskey makes you happy.' ,
label : 'This is a string property' ,
} ,
} ) ;
} ;
const openDrive = async ( ) => {
await os . selectDriveFile ( false ) ;
} ;
const selectUser = async ( ) => {
await os . selectUser ( ) ;
} ;
const openMenu = async ( ev : Event ) => {
os . popupMenu ( [ {
type : 'label' ,
text : 'Fruits' ,
} , {
text : 'Create some apples' ,
action : ( ) => { } ,
} , {
text : 'Read some oranges' ,
action : ( ) => { } ,
} , {
text : 'Update some melons' ,
action : ( ) => { } ,
} , {
text : 'Delete some bananas' ,
danger : true ,
action : ( ) => { } ,
} ] , ev . currentTarget ? ? ev . target ) ;
} ;
< / script >
< style lang = "scss" module >
. preview {
padding : 16 px ;
& _ _content1 {
& _ _switch _button {
padding : 16 px 0 8 px 0 ;
}
& _ _input {
padding : 8 px 0 8 px 0 ;
div {
margin : 0 8 px 8 px 0 ;
}
}
& _ _button {
padding : 4 px 0 8 px 0 ;
button {
margin : 0 8 px 8 px 0 ;
}
}
}
& _ _content2 {
padding : 8 px 0 8 px 0 ;
}
& _ _content3 {
padding : 8 px 0 8 px 0 ;
button {
margin : 0 8 px 8 px 0 ;
}
}
}
< / style >