MediaWiki:Gadget-codextest-main.vue: Difference between revisions
Patch Demo (talk | contribs) (Created page with "<template> <p class="testgadget-name"> Hello {{ displayName }}! </p> <cdx-button action="progressive" weight="primary" @click="dialogOpen = true" > Change your name </cdx-button> <cdx-dialog v-model:open="dialogOpen" title="Change name" close-button-label="Close" :primary-action="saveAction" @primary="saveName" > <p>New name:</p> <cdx-text-input v-...") |
Patch Demo (talk | contribs) No edit summary |
||
Line 10: | Line 10: | ||
Change your name |
Change your name |
||
</cdx-button> |
</cdx-button> |
||
+ | <change-name-dialog v-model:open="dialogOpen" @saveName="saveName"></change-name-dialog> |
||
− | <cdx-dialog |
||
− | v-model:open="dialogOpen" |
||
− | title="Change name" |
||
− | close-button-label="Close" |
||
− | :primary-action="saveAction" |
||
− | @primary="saveName" |
||
− | > |
||
− | <p>New name:</p> |
||
− | <cdx-text-input v-model="nameInput"></cdx-text-input> |
||
− | </cdx-dialog> |
||
</template> |
</template> |
||
<script> |
<script> |
||
const { ref, computed } = require( 'vue' ); |
const { ref, computed } = require( 'vue' ); |
||
− | const { CdxButton |
+ | const { CdxButton } = require( '@wikimedia/codex' ); |
+ | const ChangeNameDialog = require( './codextest-ChangeNameDialog.vue' ); |
||
module.exports = { |
module.exports = { |
||
components: { |
components: { |
||
CdxButton, |
CdxButton, |
||
− | + | ChangeNameDialog |
|
− | CdxTextInput |
||
}, |
}, |
||
setup() { |
setup() { |
||
const dialogOpen = ref( false ); |
const dialogOpen = ref( false ); |
||
const displayName = ref( '(name unknown)' ); |
const displayName = ref( '(name unknown)' ); |
||
− | const nameInput = ref( '' ); |
||
− | const saveAction = computed( () => ( { |
||
− | label: 'Save', |
||
− | actionType: 'progressive', |
||
− | disabled: nameInput.value === '' |
||
− | } ) ); |
||
− | function saveName() { |
+ | function saveName( newName ) { |
− | displayName.value = |
+ | displayName.value = newName; |
dialogOpen.value = false; |
dialogOpen.value = false; |
||
} |
} |
||
Line 50: | Line 35: | ||
dialogOpen, |
dialogOpen, |
||
displayName, |
displayName, |
||
− | nameInput, |
||
− | saveAction, |
||
saveName |
saveName |
||
}; |
}; |
Revision as of 00:05, 13 April 2023
<template> <p class="testgadget-name"> Hello {{ displayName }}! </p> <cdx-button action="progressive" weight="primary" @click="dialogOpen = true" > Change your name </cdx-button> <change-name-dialog v-model:open="dialogOpen" @saveName="saveName"></change-name-dialog> </template> <script> const { ref, computed } = require( 'vue' ); const { CdxButton } = require( '@wikimedia/codex' ); const ChangeNameDialog = require( './codextest-ChangeNameDialog.vue' ); module.exports = { components: { CdxButton, ChangeNameDialog }, setup() { const dialogOpen = ref( false ); const displayName = ref( '(name unknown)' ); function saveName( newName ) { displayName.value = newName; dialogOpen.value = false; } return { dialogOpen, displayName, saveName }; } }; </script> <style> .testgadget-name { font-style: italic; } </style>