UNPKG

song-ui-u

Version:

vue3 + js的PC前端组件库

1 lines 21.9 kB
{"version":3,"file":"select.cjs","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":["defineComponent","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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"}