<template>
  <Transition class="module-right">
    <div v-if="visible" class="module-content">
      <div v-if="title" class="module-content__title__expand">
        <span class="action-btn close-btn" @click="closeModel"></span>
        <span @click="clickHandler">{{ title }}</span>
      </div>
      <div class="module-slot">
        <slot></slot>
      </div>
    </div>
  </Transition>
</template>
<script lang="ts" setup>
  defineProps<{ title: string; visible: boolean }>();
  const emit = defineEmits(['close', 'click']);

  function closeModel() {
    emit('close');
  }
  function clickHandler() {
    emit('click');
  }
</script>
<style lang="less" scoped>
  .module-right {
    --bg-height: 33px;
    color: #fff;
    box-sizing: border-box;
    position: absolute;

    .module-content {
      width: 100%;
      height: 100%;
    }

    .module-content__title__expand {
      width: 100%;
      height: var(--bg-height);
      line-height: var(--bg-height);
      background: url('@/assets/images/home-container/configurable/model_right_title_bg_expand.png') no-repeat;
      background-size: 100% 100%;
      position: relative;
      text-align: left;
      padding: 0 0 0 10%;
    }

    .module-content__title {
      width: 50%;
      height: var(--bg-height);
      line-height: var(--bg-height);
      background: url('@/assets/images/home-container/configurable/model_right_title_bg.png') no-repeat;
      background-size: 100% 100%;
      position: relative;
      text-align: left;
      margin-left: 50%;
      padding: 0 0 0 10%;
    }

    // 固定在父容器右上角的按钮图标
    .action-btn {
      width: 18px;
      height: 18px;
      background: url('@/assets/images/home-container/configurable/expand.svg') no-repeat center;
      position: absolute;
      left: 0;
      top: 0;
      cursor: pointer;
    }
    .show-btn {
      transform: rotate(-90deg);
    }

    .module-slot {
      height: calc(100% - 33px);
      width: 100%;
      background-color: #259ccf22;
    }
  }

  // Transition动画相关
  .v-enter-active,
  .v-leave-active {
    transition: all 0.3s ease;
  }

  .v-enter-from,
  .v-leave-to {
    // opacity: 1;
    transform: translateX(100%);
    // transform: scaleY(0);
    // transform-origin: center top;
  }
</style>
