<script setup>
import { h } from 'vue'

defineOptions({
  name: 'xtx-brand',
})

// 用法
// 1. template 标签去除，单文件组件 (但是在setup语法糖 则需要占位)
// 2. 返回值就是组件内容
// 3. vue2.0 的h函数传参进来的，vue3.0 的h函数导入进来
// 4. h 第一个参数 标签名字  第二个参数 标签属性对象  第三个参数 子节点
// 需求
// 1. 创建xtx-bread父容器
// 2. 获取默认插槽内容
// 3. 去除xtx-bread-item组件的i标签，因该由render函数来组织
// 4. 遍历插槽中的item，得到一个动态创建的节点，最后一个item不加i标签
// 5. 把动态创建的节点渲染再xtx-bread标签中

const slots = defineSlots()

// 获取插槽中全部信息
const items = slots.default()
const dymanicItems = []

items.forEach((item, i) => {
  // 对插槽节点进行判断（是XtxBreadItem和Transition才进行组装）
  if (item.type.name === 'xtx-bread-item' || item.type.displayName === 'Transition') {
    dymanicItems.push(item)
    if (i < items.length - 1) {
      dymanicItems.push(h('i', { class: 'iconfont icon-angle-right' }))
    }
  }
})

const XtxBreadContainer = h('div', { class: 'xtx-bread' }, dymanicItems)
</script>

<template>
  <xtx-bread-container></xtx-bread-container>
</template>

<style lang="less">
// 去除 scoped 属性，目的：然样式作用到xtx-bread-item组件
.xtx-bread {
  display: flex;
  padding: 25px 10px;
  align-items: center;
  // ul li:last-child {}
  // 先找到父元素，找到所有的子元素，找到最后一个，判断是不是LI，是就是选中，不是就是无效选择器
  // ul li:last-of-type {}
  // 先找到父元素，找到所有的类型为li的元素，选中最后一个
  &-item {
    a {
      color: #666;
      transition: all 0.4s;
      &:hover {
        color: var(--xtx-color);
      }
    }
  }
  i {
    font-size: 12px;
    margin-left: 5px;
    margin-right: 5px;
    line-height: 22px;
    // 样式的方式，不合理
    // &:last-child {
    //   display: none;
    // }
  }
}
</style>
