HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/farmfun.komma.pro/resources/js/site/components/FlashMessage.vue
<template>

    <div class="flash-message" v-bind:data-type="messageType">
        <span v-if="!withoutIcon" class="flash-message__icon">
            <svg class="flash-message__icon-img">
                <use :href="icon"></use>
            </svg>
        </span>
        <span class="flash-message__text">
           <template v-for="(line, index) in lines">
                <span v-html="line"></span><br v-if="index <= lines.length"/>
           </template>
        </span>

        <svg v-if="withClose" class="flash-message__close">
            <use href="/img/icon-close.svg#close"></use>
        </svg>
    </div>

</template>

<script>
import {computed} from "vue";

export default {
    name: "FlashMessage",

    props: {
        messageType: {
            type: String,
            default: 'action',
        },
        lines: {
          type: Array,
          required: true,
        },
        withoutIcon: {
            type: Boolean,
            default: false,
        },

        withClose: {
            type: Boolean,
            default: false,
        },

        iconName: {
            type: String,
        }
    },

    setup(props) {

        const icon = computed(() => {

            if(props.iconName !== undefined) return '/img/icon-' + props.iconName + '.svg#' + props.iconName;

            switch (props.messageType) {

                case 'warning':
                    return '/img/icon-warning.svg#warning';

                case 'error':
                    return '/img/icon-cross--circle.svg#cross--circle';

                case 'success':
                    return '/img/icon-check--circle.svg#check--circle';

                default:
                case 'action':
                  return '/img/icon-info.svg#info';
            }

        });

        return {
            icon
        }

    }
}
</script>