import { PropType, computed, defineComponent, onMounted, reactive } from 'vue';
import styles from './index.module.less';
import { NButton, NForm, NFormItem, NPopselect, NSpace } from 'naive-ui';
import TheSearch from '/src/components/TheSearch';
export default defineComponent({
  name: 'search-group',
  props: {
    categoryChildList: {
      type: Array as PropType<any>,
      default: () => []
    },
    wikiCategoryId: {
      type: String,
      default: ''
    }
  },
  emits: ['search', 'add'],
  expose: ['init'],
  setup(props, { emit }) {
    // const catchStore = useCatchStore();
    const forms = reactive({
      keyword: '',
      wikiCategoryId: props.wikiCategoryId || '',
      wikiCategoryIdChild: '',
      childIds: [] as any
    });

    const onSearch = () => {
      emit('search', forms);
    };

    const selectChildObj = (item: any, index: number) => {
      const obj: any = {};
      item?.forEach((child: any) => {
        if (child.id === forms.wikiCategoryIdChild) {
          obj.selected = true;
          obj.name = child.name;
        }
      });
      return obj;
    };

    const childList = computed(() => {
      const categoryChildList = props.categoryChildList || [];
      const child = categoryChildList.find(
        (item: any) => item.id === forms.wikiCategoryId
      );
      if (child && child.childrenList.length) {
        child.childrenList.forEach((child: any) => {
          const i = child.childrenList;
          if (i && i.length > 0) {
            i.forEach((j: any) => {
              j.label = j.name;
              j.value = j.id;
            });

            i.unshift({
              label: '全部',
              value: child.id,
              name: child.name,
              id: child.id
            });
          }
        });

        return (
          [
            {
              label: '全部',
              value: '',
              id: '',
              name: '全部',
              childrenList: []
            },
            ...child.childrenList
          ] || []
        );
      }
      return [];
    });

    return () => (
      <div class={styles.searchGroup}>
        <div
          class={[
            styles.searchCatatory,
            childList.value.length > 0 ? styles.border : ''
          ]}>
          <NSpace size="small" class={styles.btnType}>
            {props.categoryChildList.length > 0 ? (
              <NButton
                type={
                  forms.wikiCategoryId === props.wikiCategoryId
                    ? 'primary'
                    : 'default'
                }
                secondary={
                  forms.wikiCategoryId === props.wikiCategoryId ? false : true
                }
                round
                size="small"
                focusable={false}
                onClick={() => {
                  forms.wikiCategoryId = props.wikiCategoryId;
                  forms.wikiCategoryIdChild = '';
                  onSearch();
                }}>
                全部
              </NButton>
            ) : (
              <span></span>
            )}

            {props.categoryChildList.map((item: any) => (
              <NButton
                type={forms.wikiCategoryId === item.id ? 'primary' : 'default'}
                secondary={forms.wikiCategoryId === item.id ? false : true}
                round
                size="small"
                focusable={false}
                onClick={() => {
                  forms.wikiCategoryId = item.id;
                  onSearch();
                }}>
                {item.name}
              </NButton>
            ))}
          </NSpace>
          <TheSearch
            class={styles.inputSearch}
            placeholder="请输入名曲鉴赏关键词"
            round
            onSearch={(val: string) => {
              forms.keyword = val;
              onSearch();
            }}
          />
        </div>

        {childList.value.length > 0 && (
          <div class={[styles.collapseWrap]}>
            <NSpace class={[styles.spaceSection]}>
              {childList.value.map((music: any, index: number) => (
                <>
                  {music.childrenList.length > 0 ? (
                    <NPopselect
                      options={music.childrenList}
                      trigger="hover"
                      v-model:value={forms.wikiCategoryIdChild}
                      onUpdate:value={() => {
                        onSearch();
                      }}
                      key={music.id}
                      class={styles.popSelect}>
                      <span
                        class={[
                          styles.textBtn,
                          selectChildObj(music.childrenList, index).selected &&
                            styles.textBtnActive
                        ]}>
                        {selectChildObj(music.childrenList, index).name ||
                          music.name}
                        <i class={styles.iconArrow}></i>
                      </span>
                    </NPopselect>
                  ) : (
                    <span
                      class={[
                        styles.textBtn,
                        forms.wikiCategoryIdChild === music.id &&
                          styles.textBtnActive
                      ]}
                      onClick={() => {
                        forms.wikiCategoryIdChild = music.id;
                        onSearch();
                      }}>
                      {music.name}
                    </span>
                  )}
                </>
              ))}
            </NSpace>
          </div>
        )}
      </div>
    );
  }
});
