<template>
    <baseInputButton
        v-bind="$props"
        v-model="selectedValue">
        <div
            class="option-label"
            :class="[buttonLabelSubCopy ? 'has-subheader' : '']"
            for="testradio">
            <div class="option-specs">
                <p class="m-0">
                    <span v-html="buttonLabel"></span>
                    <span
                        class="option-info"
                        v-html="buttonAuxiliaryCopy"></span>
                </p>
                <p
                    v-if="buttonLabelSubCopy"
                    class="sub-label m-0"
                    v-html="buttonLabelSubCopy"></p>
                <div>
                    <ul>
                        <li
                            v-for="listItem in arrayOfListItemsFromBodyText"
                            :key="listItem"
                            class="mb-0">
                            <!-- no textLink -->
                            <span v-html="listItem"></span>
                        </li>
                    </ul>
                </div>
            </div>
        </div>
    </baseInputButton>
</template>

<script>
import baseInputButton from '@/digital-components/base-input-button/base-input-button.vue';
import inputButtonWrapperMixin from '@/mixins/input-button-wrapper-mixin';

export default {
    name: 'provider-pref-radio',
    components: {
        baseInputButton
    },
    mixins: [inputButtonWrapperMixin],
    computed: {
        arrayOfListItemsFromBodyText() {
            return this.getArrayOfListItemsFromRawCmsCopy(this.buttonBodyCopy);
        }
    },
    methods: {
        getArrayOfListItemsFromRawCmsCopy(copy) {
            if (copy) {
                return copy
                    .split('- ') // At some point we'll want a better delimiter
                    .filter((lineItem) => lineItem);
            }
            return null;
        }
    }
};
</script>

<style lang="scss" scoped>
    .option-wrapper:last-child .option-label{
        margin-bottom: .25rem;
    }

    .option-wrapper .option-label{
        margin-bottom: 1rem;
    }

    .option-main {

        .has-error > .option-label {
            border: 1px solid $red !important;
            &:hover {
                box-shadow: 0 0 0 4px $red-200 !important;
                z-index: 5 !important;
            }
        }
        .option-wrapper {
            margin: 0.5rem 0;

            label {
                display: block;
            }

            input[type="radio"] {
                opacity: 0;
                position: absolute;
                left: -9999px;

                + .option-label {
                    display: flex;
                    align-items: flex-start;
                    position: relative;
                    cursor: pointer;
                    width: 100%;
                    padding: 1rem;
                    border: 1px solid $gray-300;
                    box-shadow: 0px 4px 8px -4px rgba(0, 0, 0, 0.15), 0px 4px 24px -8px rgba(0, 0, 0, 0.2);
                    border-radius: 0.5rem;
                    overflow: hidden;
                    min-height: 60px;

                    &.has-subheader {
                        min-height: 80px;
                    }

                    &:before {
                        content: "";
                        position: relative;
                        top: 5px;
                        margin-right: 1rem;
                        border-radius: 50%;
                        border: 1px solid $gray-500;
                        width: 16px;
                        height: 16px;
                        min-width: 16px;
                    }

                    &:after {
                        content: "";
                        position: absolute;
                        left: 19px;
                        top: 24px;
                        border-radius: 50%;
                        width: 10px;
                        height: 10px;
                        min-width: 10px;
                    }
                }

                &:hover {
                    + .option-label {
                        &:before {
                            border: 1px solid #8e9292;
                            box-shadow: 0px 0px 0px 4px #9fcee6, 0px 1px 4px rgba(0, 0, 0, 0.2);
                        }
                    }
                }

                &:checked {
                    + .option-label {
                        .option-specs {
                            max-height: 1000px;
                        }
                    }

                    + .option-label {
                        .option-specs {
                            .hide-when-closed {
                                display: block;
                            }
                        }
                    }

                    + .option-label {
                        background-color: $blue-100;
                        border: 1px solid $blue;
                        max-height: 500px;
                    }

                    + .option-label {
                        &:before {
                            box-shadow: 0px 0px 0px 1px $blue;
                        }
                    }

                    + .option-label {
                        &:after {
                            background: $blue;
                        }
                    }
                }

                &:focus {
                    + .option-label {
                        &:before {
                            border: 2px solid $blue;
                        }
                    }
                }
            }

            .option-specs {
                display: flex;
                flex-direction: column;
                width: 100%;
                max-height: 1000px;
                transition: all 0.5s ease;

                p {
                    font-weight: 500;
                    display: flex;
                    justify-content: space-between;

                    span {
                        &.option-info {
                            color: $green;
                            font-size: 0.875rem;
                        }
                    }

                    &.sub-label {
                        color: $green;
                        text-transform: uppercase;
                        font-size: 0.75rem;
                    }
                }

                ul {
                    margin: 1rem 0 0 -.6rem;
                    padding: 0;

                    li {
                        margin-bottom: 0.5rem;
                        font-size: 0.875rem;
                        line-height: 1.714;

                        a {
                            line-height: 1.714;
                            padding: 0;
                        }
                    }
                }

            }
        }
    }
</style>
