MediaWiki:Gadget-codextest-main.vue: Difference between revisions

    From Patch demo (907557,2 907556,4)
    (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-...")
     
    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, CdxDialog, CdxTextInput } = require( '@wikimedia/codex' );
    +
    const { CdxButton } = require( '@wikimedia/codex' );
      +
    const ChangeNameDialog = require( './codextest-ChangeNameDialog.vue' );
       
     
    module.exports = {
     
    module.exports = {
     
    components: {
     
    components: {
     
    CdxButton,
     
    CdxButton,
    CdxDialog,
    +
    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 = nameInput.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>