import BaseStyle from 'primevue/base/style';

const css = `
@layer primevue {
    .p-confirm-popup {
        position: absolute;
        margin-top: 10px;
        top: 0;
        left: 0;
    }

    .p-confirm-popup-flipped {
        margin-top: 0;
        margin-bottom: 10px;
    }

    /* Animation */
    .p-confirm-popup-enter-from {
        opacity: 0;
        transform: scaleY(0.8);
    }

    .p-confirm-popup-leave-to {
        opacity: 0;
    }

    .p-confirm-popup-enter-active {
        transition: transform 0.12s cubic-bezier(0, 0, 0.2, 1), opacity 0.12s cubic-bezier(0, 0, 0.2, 1);
    }

    .p-confirm-popup-leave-active {
        transition: opacity 0.1s linear;
    }

    .p-confirm-popup:after,
    .p-confirm-popup:before {
        bottom: 100%;
        left: calc(var(--overlayArrowLeft, 0) + 1.25rem);
        content: ' ';
        height: 0;
        width: 0;
        position: absolute;
        pointer-events: none;
    }

    .p-confirm-popup:after {
        border-width: 8px;
        margin-left: -8px;
    }

    .p-confirm-popup:before {
        border-width: 10px;
        margin-left: -10px;
    }

    .p-confirm-popup-flipped:after,
    .p-confirm-popup-flipped:before {
        bottom: auto;
        top: 100%;
    }

    .p-confirm-popup.p-confirm-popup-flipped:after {
        border-bottom-color: transparent;
    }

    .p-confirm-popup.p-confirm-popup-flipped:before {
        border-bottom-color: transparent;
    }

    .p-confirm-popup .p-confirm-popup-content {
        display: flex;
        align-items: center;
    }
}
`;

const classes = {
    root: ({ instance }) => [
        'p-confirm-popup p-component',
        {
            'p-input-filled': instance.$primevue.config.inputStyle === 'filled',
            'p-ripple-disabled': instance.$primevue.config.ripple === false
        }
    ],
    content: 'p-confirm-popup-content',
    icon: 'p-confirm-popup-icon',
    message: 'p-confirm-popup-message',
    footer: 'p-confirm-popup-footer',
    rejectButton: ({ instance }) => ['p-confirm-popup-reject', instance.confirmation && !instance.confirmation.rejectClass ? 'p-button-sm p-button-text' : null],
    acceptButton: ({ instance }) => ['p-confirm-popup-accept', instance.confirmation && !instance.confirmation.acceptClass ? 'p-button-sm' : null]
};

export default BaseStyle.extend({
    name: 'confirmpopup',
    css,
    classes
});
