{"version":3,"file":"select.mjs","sources":["../../../../../packages/components/select/src/select.jsx"],"sourcesContent":["import { defineComponent, ref, provide, computed, watch, nextTick } from \"vue\";\r\nimport { useNamespace } from \"@ui-library/hook\";\r\nimport { SELECT_KEY } from \"./constant\";\r\nimport { XIcon } from \"@ui-library/components\";\r\nimport { ChevronDown, X, Search } from \"song-ui-pro-icon\";\r\n// import { XInput } from \"@ui-library/components\";\r\n\r\nexport default defineComponent({\r\n  name: \"x-select\",\r\n  props: {\r\n    modelValue: {\r\n      type: [String, Number, Array],\r\n      default: \"\",\r\n    },\r\n    multiple: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    disabled: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    clearable: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    placeholder: {\r\n      type: String,\r\n      default: \"请选择\",\r\n    },\r\n    filterable: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    size: {\r\n      type: String,\r\n      default: \"default\",\r\n    },\r\n    width: {\r\n      type: String,\r\n      default: \"100%\",\r\n    },\r\n  },\r\n  emits: [\"update:modelValue\", \"change\", \"clear\", \"blur\", \"focus\"],\r\n  setup(props, { slots, emit }) {\r\n    const ns = useNamespace(\"select\");\r\n    const visible = ref(false);\r\n    const selectedLabel = ref(\"\");\r\n    const selectedLabels = ref([]);\r\n    const inputValue = ref(\"\");\r\n    const options = ref([]);\r\n    const selectRef = ref(null);\r\n    const inputRef = ref(null);\r\n    const dropdownRef = ref(null);\r\n    const isFocus = ref(false);\r\n    const isHover = ref(false);\r\n\r\n    // 计算样式\r\n    const styleWidth = computed(() => ({\r\n      width: props.width,\r\n    }));\r\n\r\n    // 计算控件大小\r\n    const controlSize = computed(() => props.size);\r\n\r\n    // 注册选项\r\n    const registerOption = (option) => {\r\n      options.value.push(option);\r\n    };\r\n\r\n    // 注销选项\r\n    const unregisterOption = (id) => {\r\n      const index = options.value.findIndex((option) => option.id === id);\r\n      if (index !== -1) {\r\n        options.value.splice(index, 1);\r\n      }\r\n    };\r\n\r\n    // 选择选项\r\n    const selectOption = (value, label) => {\r\n      if (props.multiple) {\r\n        const values = Array.isArray(props.modelValue)\r\n          ? [...props.modelValue]\r\n          : [];\r\n        const index = values.indexOf(value);\r\n        if (index === -1) {\r\n          values.push(value);\r\n          selectedLabels.value.push(label);\r\n        } else {\r\n          values.splice(index, 1);\r\n          selectedLabels.value.splice(index, 1);\r\n        }\r\n        emit(\"update:modelValue\", values);\r\n        emit(\"change\", values);\r\n      } else {\r\n        if (selectedLabel.value == label) {\r\n          selectedLabel.value = \"\";\r\n        } else {\r\n          selectedLabel.value = label;\r\n        }\r\n\r\n        emit(\"update:modelValue\", value);\r\n        emit(\"change\", value);\r\n        closeDropdown();\r\n      }\r\n    };\r\n\r\n    // 清空选择\r\n    const clearSelection = (e) => {\r\n      e.stopPropagation();\r\n\r\n      console.log(\"clearSelection\");\r\n\r\n      if (props.multiple) {\r\n        emit(\"update:modelValue\", []);\r\n        selectedLabels.value = [];\r\n      } else {\r\n        emit(\"update:modelValue\", \"\");\r\n        selectedLabel.value = \"\";\r\n      }\r\n      emit(\"clear\");\r\n    };\r\n\r\n    // 切换下拉框\r\n    const toggleDropdown = () => {\r\n      if (props.disabled) return;\r\n      visible.value = !visible.value;\r\n      if (visible.value && props.filterable) {\r\n        nextTick(() => {\r\n          inputRef.value?.focus();\r\n        });\r\n      }\r\n    };\r\n\r\n    // 关闭下拉框\r\n    const closeDropdown = () => {\r\n      visible.value = false;\r\n\r\n      if (props.filterable) {\r\n        inputValue.value = \"\";\r\n      }\r\n    };\r\n\r\n    // 处理输入\r\n    const handleInput = (e) => {\r\n      inputValue.value = e.target.value;\r\n    };\r\n\r\n    // 处理聚焦\r\n    const handleFocus = () => {\r\n      isFocus.value = true;\r\n      emit(\"focus\");\r\n    };\r\n\r\n    // 处理失焦\r\n    const handleBlur = () => {\r\n      isFocus.value = false;\r\n      emit(\"blur\");\r\n    };\r\n\r\n    // 处理鼠标进入\r\n    const handleMouseEnter = () => {\r\n      isHover.value = true;\r\n    };\r\n\r\n    // 处理鼠标离开\r\n    const handleMouseLeave = () => {\r\n      isHover.value = false;\r\n    };\r\n\r\n    // 判断选项是否被选中\r\n    const isOptionSelected = (value) => {\r\n      if (props.multiple) {\r\n        return (\r\n          Array.isArray(props.modelValue) && props.modelValue.includes(value)\r\n        );\r\n      }\r\n      return props.modelValue === value && selectedLabel.value;\r\n    };\r\n\r\n    // 监听modelValue变化\r\n    watch(\r\n      () => props.modelValue,\r\n      (newVal) => {\r\n        if (props.multiple) {\r\n          // 多选模式下，更新已选标签\r\n          // selectedLabels.value = options.value\r\n          //   .filter(\r\n          //     (option) => Array.isArray(newVal) && newVal.includes(option.value)\r\n          //   )\r\n          //   .map((option) => option.label);\r\n        } else {\r\n          // 单选模式下，更新已选标签\r\n          const selectedOption = options.value.find(\r\n            (option) => option.value === newVal\r\n          );\r\n          selectedLabel.value = selectedOption ? selectedOption.label : \"\";\r\n        }\r\n      },\r\n      { immediate: true }\r\n    );\r\n\r\n    // 提供上下文\r\n    provide(SELECT_KEY, {\r\n      props,\r\n      registerOption,\r\n      unregisterOption,\r\n      selectOption,\r\n      isOptionSelected,\r\n      inputValue,\r\n    });\r\n\r\n    // 点击外部关闭下拉框\r\n    const handleClickOutside = (e) => {\r\n      if (selectRef.value && !selectRef.value.contains(e.target)) {\r\n        closeDropdown();\r\n      }\r\n    };\r\n\r\n    // 添加点击外部事件监听\r\n    watch(visible, (newVal) => {\r\n      if (newVal) {\r\n        document.addEventListener(\"click\", handleClickOutside);\r\n      } else {\r\n        document.removeEventListener(\"click\", handleClickOutside);\r\n      }\r\n    });\r\n\r\n    return () => (\r\n      <div\r\n        ref={selectRef}\r\n        style={styleWidth.value}\r\n        class={[\r\n          ns.b(),\r\n          ns.is(\"focus\", isFocus.value),\r\n          ns.is(\"disabled\", props.disabled),\r\n          ns.m(\"size\", controlSize.value),\r\n          ns.is(\r\n            \"clearable\",\r\n            props.clearable &&\r\n              !props.disabled &&\r\n              (props.multiple\r\n                ? selectedLabels.value.length > 0\r\n                : selectedLabel.value)\r\n          ),\r\n          ns.is(\"multiple\", props.multiple),\r\n          ns.is(\"filterable\", props.filterable),\r\n        ]}\r\n        onClick={toggleDropdown}\r\n        onMouseenter={handleMouseEnter}\r\n        onMouseleave={handleMouseLeave}\r\n      >\r\n        <div\r\n          class={[\r\n            ns.e(\"wrapper\"),\r\n            ns.is(\"hover\", isHover.value && !props.disabled),\r\n          ]}\r\n        >\r\n          {/* 多选模式 */}\r\n          {props.multiple ? (\r\n            <div class={[ns.e(\"tags\")]}>\r\n              {selectedLabels.value.length > 0 ? (\r\n                selectedLabels.value.map((label, index) => (\r\n                  <span class={[ns.e(\"tag\")]} key={index}>\r\n                    {label}\r\n                    <XIcon\r\n                      onClick={(e) => {\r\n                        e.stopPropagation();\r\n                        selectOption(props.modelValue[index], label);\r\n                      }}\r\n                    >\r\n                      <X />\r\n                    </XIcon>\r\n                  </span>\r\n                ))\r\n              ) : (\r\n                <span class={[ns.e(\"placeholder\")]}>\r\n                  {/* {props.placeholder} */}\r\n                </span>\r\n              )}\r\n              {props.filterable && (\r\n                <input\r\n                  ref={inputRef}\r\n                  type=\"text\"\r\n                  class={[ns.e(\"filter-input\")]}\r\n                  value={inputValue.value}\r\n                  onInput={handleInput}\r\n                  disabled={props.disabled}\r\n                  onFocus={handleFocus}\r\n                  onBlur={handleBlur}\r\n                  placeholder={selectedLabel.value || props.placeholder}\r\n                />\r\n              )}\r\n            </div>\r\n          ) : (\r\n            /* 单选模式 */\r\n            <div class={[ns.e(\"selected\")]}>\r\n              {props.filterable && visible.value ? (\r\n                <input\r\n                  ref={inputRef}\r\n                  type=\"text\"\r\n                  class={[ns.e(\"filter-input\")]}\r\n                  value={inputValue.value}\r\n                  placeholder={selectedLabel.value || props.placeholder}\r\n                  onInput={handleInput}\r\n                  onFocus={handleFocus}\r\n                  onBlur={handleBlur}\r\n                />\r\n              ) : (\r\n                <span\r\n                  class={[\r\n                    selectedLabel.value ? ns.e(\"label\") : ns.e(\"placeholder\"),\r\n                  ]}\r\n                >\r\n                  {selectedLabel.value || props.placeholder}\r\n                </span>\r\n              )}\r\n            </div>\r\n          )}\r\n\r\n          {/* 清空按钮 */}\r\n          {props.clearable &&\r\n            !props.disabled &&\r\n            (props.multiple\r\n              ? selectedLabels.value.length > 0\r\n              : selectedLabel.value) &&\r\n            isHover.value && (\r\n              <XIcon class={[ns.e(\"clear\")]} onClick={clearSelection}>\r\n                <X />\r\n              </XIcon>\r\n            )}\r\n\r\n          {/* 下拉箭头 */}\r\n          <XIcon\r\n            class={[ns.e(\"arrow\"), visible.value ? ns.is(\"reverse\", true) : \"\"]}\r\n          >\r\n            <ChevronDown />\r\n          </XIcon>\r\n        </div>\r\n\r\n        {/* 下拉菜单 */}\r\n        {visible.value && (\r\n          <div ref={dropdownRef} class={[ns.e(\"dropdown\")]}>\r\n            {options.value.length === 0 && (\r\n              <div class={[ns.e(\"empty\")]}>无数据</div>\r\n            )}\r\n            {slots.default?.()}\r\n          </div>\r\n        )}\r\n      </div>\r\n    );\r\n  },\r\n});\r\n"],"names":["name","props","modelValue","type","String","Number","Array","default","multiple","Boolean","disabled","clearable","placeholder","filterable","size","width","emits","setup","slots","emit","ns","useNamespace","visible","ref","selectedLabel","selectedLabels","inputValue","options","selectRef","inputRef","dropdownRef","isFocus","isHover","styleWidth","computed","controlSize","registerOption","option","value","push","unregisterOption","id","index","findIndex","splice","selectOption","label","values","isArray","indexOf","closeDropdown","clearSelection","e","stopPropagation","console","log","toggleDropdown","nextTick","focus","handleInput","target","handleFocus","handleBlur","handleMouseEnter","handleMouseLeave","isOptionSelected","includes","watch","newVal","selectedOption","find","immediate","provide","SELECT_KEY","handleClickOutside","contains","document","addEventListener","removeEventListener","_createVNode","b","is","m","length","map","XIcon","X","ChevronDown","_createTextVNode"],"mappings":"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"}