UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

1 lines 3.27 kB
{"version":3,"file":"button-group.vue2.mjs","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","useProps","__props","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":";;;;;;;;;;AAaM,UAAAA,IAAQC,EAAS,eADRC,GAC+B;AAAA,MAC5C,MAAM;AAAA,MACN,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,WAAW,CAACC,MAAsBC,EAAY,SAASD,CAAK;AAAA,MAC9D;AAAA,MACA,QAAQ;AAAA,IAAA,CACT,GAIKE,IAAKC,EAAc,cAAc,GAEjCC,IAAaC,EAAa,oBAAA,KAAkB,GAC5CC,IAAOC,EAAMV,GAAO,MAAM,GAC1BW,IAAOD,EAAMV,GAAO,MAAM,GAE1BY,IAAYC,EAAS,OAClB;AAAA,MACL,CAACR,EAAG,EAAE,CAAC,GAAG;AAAA,MACV,CAACA,EAAG,GAAG,SAAS,CAAC,GAAGL,EAAM;AAAA,MAC1B,CAACK,EAAG,GAAG,QAAQ,CAAC,GAAGL,EAAM;AAAA,IAC3B,EACD,GACKc,IAAWD,EAAS,MAAM,MAAM,KAAKN,CAAU,CAAC,GAEhDQ,IAAiBC,EAAc,MAAM;AAChC,eAAAC,IAAI,GAAGC,IAAMJ,EAAS,MAAM,QAAQG,IAAIC,GAAK,EAAED,GAAG;AACnD,cAAAE,IAAOL,EAAS,MAAMG,CAAC;AAE7B,QAAAE,EAAK,QAAQF,IAAI,GACZE,EAAA,SAASF,MAAMC,IAAM;AAAA,MAAA;AAAA,IAC5B,CACD;AAED,IAAAE;AAAA,MACEC;AAAA,MACAb,EAAS;AAAA,QACP,MAAAC;AAAA,QACA,MAAAE;AAAA,QACA,cAAAW;AAAA,QACA,cAAAC;AAAA,QACA,gBAAAR;AAAA,MACD,CAAA;AAAA,IACH;AAEA,aAASO,EAAaH,GAAmB;AACvC,MAAAZ,EAAW,IAAIY,CAAI,GACJJ,EAAA;AAAA,IAAA;AAGjB,aAASQ,EAAaJ,GAAmB;AACvC,MAAAZ,EAAW,OAAOY,CAAI,GACPJ,EAAA;AAAA,IAAA;2BAKfS,EAEM,OAAA;AAAA,MAFA,SAAOZ,EAAS,KAAA;AAAA,MAAE,MAAK;AAAA,IAAA;MAC3Ba,EAAaC,EAAA,QAAA,SAAA;AAAA;;;"}