vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 3.18 kB
Source Map (JSON)
{"version":3,"file":"button-group.vue2.cjs","sources":["../../../components/button/button-group.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, provide, reactive, toRef } from 'vue'\n\nimport { useNameHelper, useProps } from '@vexip-ui/config'\nimport { debounceMinor } from '@vexip-ui/utils'\nimport { buttonGroupProps } from './props'\nimport { GROUP_STATE, buttonTypes } from './symbol'\n\nimport type { ButtonState, ButtonType } from './symbol'\n\ndefineOptions({ name: 'ButtonGroup' })\n\nconst _props = defineProps(buttonGroupProps)\nconst props = useProps('buttonGroup', _props, {\n size: null,\n type: {\n default: 'default' as ButtonType,\n validator: (value: ButtonType) => buttonTypes.includes(value),\n },\n circle: false,\n})\n\ndefineSlots<{ default: () => any }>()\n\nconst nh = useNameHelper('button-group')\n\nconst itemStates = reactive(new Set<ButtonState>())\nconst size = toRef(props, 'size')\nconst type = toRef(props, 'type')\n\nconst className = computed(() => {\n return {\n [nh.b()]: true,\n [nh.bm('inherit')]: props.inherit,\n [nh.bm('circle')]: props.circle,\n }\n})\nconst itemList = computed(() => Array.from(itemStates))\n\nconst refreshIndexes = debounceMinor(() => {\n for (let i = 0, len = itemList.value.length; i < len; ++i) {\n const item = itemList.value[i]\n\n item.index = i + 1\n item.isLast = i === len - 1\n }\n})\n\nprovide(\n GROUP_STATE,\n reactive({\n size,\n type,\n increaseItem,\n decreaseItem,\n refreshIndexes,\n }),\n)\n\nfunction increaseItem(item: ButtonState) {\n itemStates.add(item)\n refreshIndexes()\n}\n\nfunction decreaseItem(item: ButtonState) {\n itemStates.delete(item)\n refreshIndexes()\n}\n</script>\n\n<template>\n <div :class=\"className\" role=\"group\">\n <slot></slot>\n </div>\n</template>\n"],"names":["_props","__props","props","useProps","value","buttonTypes","nh","useNameHelper","itemStates","reactive","size","toRef","type","className","computed","itemList","refreshIndexes","debounceMinor","i","len","item","provide","GROUP_STATE","increaseItem","decreaseItem","_createElementBlock","_renderSlot","_ctx"],"mappings":"kPAYA,MAAMA,EAASC,EACTC,EAAQC,EAAAA,SAAS,cAAeH,EAAQ,CAC5C,KAAM,KACN,KAAM,CACJ,QAAS,UACT,UAAYI,GAAsBC,EAAA,YAAY,SAASD,CAAK,CAC9D,EACA,OAAQ,EAAA,CACT,EAIKE,EAAKC,gBAAc,cAAc,EAEjCC,EAAaC,EAAAA,SAAa,IAAA,GAAkB,EAC5CC,EAAOC,EAAAA,MAAMT,EAAO,MAAM,EAC1BU,EAAOD,EAAAA,MAAMT,EAAO,MAAM,EAE1BW,EAAYC,EAAAA,SAAS,KAClB,CACL,CAACR,EAAG,EAAE,CAAC,EAAG,GACV,CAACA,EAAG,GAAG,SAAS,CAAC,EAAGJ,EAAM,QAC1B,CAACI,EAAG,GAAG,QAAQ,CAAC,EAAGJ,EAAM,MAC3B,EACD,EACKa,EAAWD,EAAAA,SAAS,IAAM,MAAM,KAAKN,CAAU,CAAC,EAEhDQ,EAAiBC,EAAAA,cAAc,IAAM,CAChC,QAAAC,EAAI,EAAGC,EAAMJ,EAAS,MAAM,OAAQG,EAAIC,EAAK,EAAED,EAAG,CACnD,MAAAE,EAAOL,EAAS,MAAMG,CAAC,EAE7BE,EAAK,MAAQF,EAAI,EACZE,EAAA,OAASF,IAAMC,EAAM,CAAA,CAC5B,CACD,EAEDE,EAAA,QACEC,EAAA,YACAb,WAAS,CACP,KAAAC,EACA,KAAAE,EACA,aAAAW,EACA,aAAAC,EACA,eAAAR,CACD,CAAA,CACH,EAEA,SAASO,EAAaH,EAAmB,CACvCZ,EAAW,IAAIY,CAAI,EACJJ,EAAA,CAAA,CAGjB,SAASQ,EAAaJ,EAAmB,CACvCZ,EAAW,OAAOY,CAAI,EACPJ,EAAA,CAAA,6BAKfS,EAAA,mBAEM,MAAA,CAFA,uBAAOZ,EAAS,KAAA,EAAE,KAAK,OAAA,GAC3Ba,aAAaC,EAAA,OAAA,SAAA"}