@use "sass:map";
@use "./_variables.scss" as *;
@use "../core/_index.scss" as *;
@use "../toolbar/_variables.scss" as *;

@use "@progress/kendo-theme-core/scss/components/scheduler/_layout.scss" as *;

@mixin kendo-scheduler--layout() {
    @include kendo-scheduler--layout-base();

    .k-scheduler-layout-flex {

        .k-scheduler-head {
            inset-block-start: 0;
        }

        .k-sticky-cell {
            inset-inline-start: 0;
        }
    }


    // Appointments
    kendo-scheduler .k-event,
    .k-event {
        display: flex;
        flex-flow: row nowrap;
        align-items: flex-start;
        padding-inline: $kendo-scheduler-event-padding-x calc( #{$kendo-scheduler-event-padding-x} / 2 );
        padding-block: $kendo-scheduler-event-padding-y;
        gap: 2px;

        > div {
            flex: 1 1 auto;
            overflow: hidden;
        }

        // Actions
        .k-event-actions {
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: calc( #{$kendo-scheduler-line-height} * #{$kendo-scheduler-font-size} );
            position: relative;
        }

        // Resize handles
        .k-resize-n {
            inset-block-start: 0;
        }

        .k-resize-s {
            inset-block-end: 0;
        }

        .k-resize-n::before,
        .k-resize-s::before {
            width: $kendo-scheduler-resize-handle-width;
        }

        .k-resize-w {
            inset-inline-start: 0;
        }

        .k-resize-e {
            inset-inline-end: 0;
        }

        .k-resize-w::before,
        .k-resize-e::before {
            height: $kendo-scheduler-resize-handle-width;
        }

        // Hover
        .k-event-top-actions,
        .k-event-bottom-actions {
            inset-block-start: 0;
            inset-inline-start: 0;
            text-align: center;
            display: flex;
            justify-content: center;
        }

        .k-event-bottom-actions {
            inset-block-start: auto;
            inset-block-end: 0;
        }
    }

    .k-event-delete {
        opacity: .5;
        visibility: hidden;
        display: flex;
        align-items: center;
        margin-inline-start: auto;

        &:hover,
        &.k-hover {
            opacity: 1;
        }
    }

    // More events indicator
    .k-more-events {
        height: $kendo-scheduler-more-btn-height;
    }

    // Resizing
    .k-scheduler-marquee {
        &.k-first::before {
            inset-block-start: 0;
            inset-inline-start: 0;
        }

        &.k-last::after {
            inset-block-end: 0;
            inset-inline-end: 0;
        }
    }

    // Agenda view
    :where(.k-scheduler-agendaview) {

        .k-task {
            display: flex;
            flex: 1 1 100%;
            align-items: center;
            gap: k-spacing(0.5);
        }
    }


    // Year view
    .k-scheduler-yearview {

        .k-day-indicator {
            inset-inline-start: $kendo-scheduler-yearview-indicator-calc-offset-left;
        }
    }

    .k-scheduler-tooltip {
        .k-tooltip-event {
            .k-event-title {
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
            }
        }
    }

    .k-scheduler-edit-form {
        .k-scheduler-datetime-picker {
            gap: k-spacing(1);
        }
    }

    .k-safari {
        .k-scheduler-yearview .k-calendar-view .k-month {
            margin-inline: calc( #{$kendo-scheduler-yearview-calendar-gap} / 2);
        }
    }
}
