song-ui-u
Version:
vue3 + js的PC前端组件库
1 lines • 4.47 kB
Source Map (JSON)
{"version":3,"file":"collapse.cjs","sources":["../../../../../packages/components/collapse/src/collapse.jsx"],"sourcesContent":["import { defineComponent, ref, provide, watch } from \"vue\";\r\nimport { useNamespace } from \"@ui-library/hook\";\r\nimport { COLLAPSE_KEY } from \"../constants\";\r\n\r\nexport default defineComponent({\r\n name: \"x-collapse\",\r\n\r\n props: {\r\n modelValue: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n accordion: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n emits: [\"update:modelValue\", \"change\"],\r\n\r\n setup(props, { slots, emit }) {\r\n const ns = useNamespace(\"collapse\");\r\n\r\n const activeNames = ref(props.modelValue || []);\r\n const collapseItems = ref([]);\r\n\r\n // 监听modelValue变化\r\n watch(\r\n () => props.modelValue,\r\n (val) => {\r\n if (val !== activeNames.value) {\r\n activeNames.value = val;\r\n }\r\n }\r\n );\r\n\r\n // 设置折叠项\r\n const setCollapseItems = (collapseItem) => {\r\n collapseItems.value.push(collapseItem);\r\n };\r\n\r\n // 处理折叠项点击\r\n const handleItemClick = (name) => {\r\n if (props.accordion) {\r\n // 手风琴模式\r\n activeNames.value = activeNames.value[0] === name ? [] : [name];\r\n } else {\r\n // 多选模式\r\n const index = activeNames.value.indexOf(name);\r\n if (index > -1) {\r\n activeNames.value.splice(index, 1);\r\n } else {\r\n activeNames.value.push(name);\r\n }\r\n }\r\n\r\n emit(\"update:modelValue\", activeNames.value);\r\n emit(\"change\", activeNames.value);\r\n };\r\n\r\n // 判断折叠项是否激活\r\n const isItemActive = (name) => {\r\n return activeNames.value.includes(name);\r\n };\r\n\r\n provide(COLLAPSE_KEY, {\r\n setCollapseItems,\r\n handleItemClick,\r\n isItemActive,\r\n props,\r\n collapseItems,\r\n });\r\n\r\n return () => <div class={ns.b()}>{slots.default?.()}</div>;\r\n },\r\n});\r\n"],"names":["defineComponent","name","props","modelValue","type","Array","default","accordion","Boolean","emits","setup","slots","emit","ns","useNamespace","activeNames","ref","collapseItems","watch","val","value","setCollapseItems","collapseItem","push","handleItemClick","index","indexOf","splice","isItemActive","includes","provide","COLLAPSE_KEY","_createVNode","b"],"mappings":";;;;;;;;AAIA,+BAA+BA,mBAAA,CAAA;AAAA,EAC7BC,IAAM,EAAA,YAAA;AAAA,EAENC,KAAO,EAAA;AAAA,IACLC,UAAY,EAAA;AAAA,MACVC,IAAMC,EAAAA,KAAAA;AAAAA,MACNC,OAAAA,EAASA,MAAM,EAAA;AAAA,KACjB;AAAA,IACAC,SAAW,EAAA;AAAA,MACTH,IAAMI,EAAAA,OAAAA;AAAAA,MACNF,OAAS,EAAA,KAAA;AAAA,KACX;AAAA,GACF;AAAA,EAEAG,KAAAA,EAAO,CAAC,mBAAA,EAAqB,QAAQ,CAAA;AAAA,EAErCC,MAAMR,KAAO,EAAA;AAAA,IAAES,KAAAA;AAAAA,IAAOC,IAAAA;AAAAA,GAAQ,EAAA;AAC5B,IAAMC,MAAAA,EAAAA,GAAKC,mBAAa,UAAU,CAAA,CAAA;AAElC,IAAA,MAAMC,WAAcC,GAAAA,OAAAA,CAAId,KAAMC,CAAAA,UAAAA,IAAc,EAAE,CAAA,CAAA;AAC9C,IAAMc,MAAAA,aAAAA,GAAgBD,OAAI,CAAA,EAAE,CAAA,CAAA;AAG5BE,IACEA,SAAA,CAAA,MAAMhB,KAAMC,CAAAA,UAAAA,EACXgB,CAAQ,GAAA,KAAA;AACP,MAAIA,IAAAA,GAAAA,KAAQJ,YAAYK,KAAO,EAAA;AAC7BL,QAAAA,WAAAA,CAAYK,KAAQD,GAAAA,GAAAA,CAAAA;AAAAA,OACtB;AAAA,KAEJ,CAAA,CAAA;AAGA,IAAA,MAAME,mBAAoBC,CAAiB,YAAA,KAAA;AACzCL,MAAcG,aAAAA,CAAAA,KAAAA,CAAMG,KAAKD,YAAY,CAAA,CAAA;AAAA,KACvC,CAAA;AAGA,IAAA,MAAME,kBAAmBvB,CAAS,IAAA,KAAA;AAChC,MAAA,IAAIC,MAAMK,SAAW,EAAA;AAEnBQ,QAAYK,WAAAA,CAAAA,KAAAA,GAAQL,YAAYK,KAAM,CAAA,CAAC,MAAMnB,IAAO,GAAA,EAAK,GAAA,CAACA,IAAI,CAAA,CAAA;AAAA,OACzD,MAAA;AAEL,QAAA,MAAMwB,KAAQV,GAAAA,WAAAA,CAAYK,KAAMM,CAAAA,OAAAA,CAAQzB,IAAI,CAAA,CAAA;AAC5C,QAAA,IAAIwB,QAAQ,CAAI,CAAA,EAAA;AACdV,UAAYK,WAAAA,CAAAA,KAAAA,CAAMO,MAAOF,CAAAA,KAAAA,EAAO,CAAC,CAAA,CAAA;AAAA,SAC5B,MAAA;AACLV,UAAYK,WAAAA,CAAAA,KAAAA,CAAMG,KAAKtB,IAAI,CAAA,CAAA;AAAA,SAC7B;AAAA,OACF;AAEAW,MAAK,IAAA,CAAA,mBAAA,EAAqBG,YAAYK,KAAK,CAAA,CAAA;AAC3CR,MAAK,IAAA,CAAA,QAAA,EAAUG,YAAYK,KAAK,CAAA,CAAA;AAAA,KAClC,CAAA;AAGA,IAAA,MAAMQ,eAAgB3B,CAAS,IAAA,KAAA;AAC7B,MAAOc,OAAAA,WAAAA,CAAYK,KAAMS,CAAAA,QAAAA,CAAS5B,IAAI,CAAA,CAAA;AAAA,KACxC,CAAA;AAEA6B,IAAAA,WAAAA,CAAQC,sBAAc,EAAA;AAAA,MACpBV,gBAAAA;AAAAA,MACAG,eAAAA;AAAAA,MACAI,YAAAA;AAAAA,MACA1B,KAAAA;AAAAA,MACAe,aAAAA;AAAAA,KACD,CAAA,CAAA;AAED,IAAO,OAAA,MAAAe,gBAAA,KAAA,EAAA;AAAA,MAAA,OAAA,EAAkBnB,GAAGoB,CAAE,EAAA;AAAA,KAAC,EAAA,CAAGtB,KAAML,CAAAA,OAAAA,IAAW,CAAO,CAAA,CAAA;AAAA,GAC5D;AACF,CAAC,CAAA;;;;"}