vuestic-ui
Version:
Vue 3 UI Framework
1 lines • 1.98 kB
Source Map (JSON)
{"version":3,"file":"useAnimationName.mjs","sources":["../../../../../../src/components/va-data-table/hooks/useAnimationName.ts"],"sourcesContent":["import { computed, ExtractPropTypes, Ref, ref, watch, ComputedRef } from 'vue'\n\nimport { useCurrentPageProp } from './useCommonProps'\n\nimport type { DataTableRow } from '../types'\n\ntype AnimationName = 'shuffle' | 'fade'\n\nexport const useAnimationNameProps = {\n ...useCurrentPageProp,\n animated: { type: Boolean, default: true },\n}\n\nexport const useAnimationName = (\n props: ExtractPropTypes<typeof useAnimationNameProps>,\n rows: Ref<DataTableRow[]>,\n) => {\n const animationType = ref<AnimationName>('shuffle')\n\n const animationName = computed(() => props.animated ? `table-transition-${animationType.value}` : '')\n\n const oldRowsLength = ref(rows.value.length)\n const isDifferentRowLength = computed(() => rows.value.length !== oldRowsLength.value)\n\n watch(rows, (newRows, oldRows) => {\n const hasRows = !!(newRows.length && oldRows.length)\n\n animationType.value = newRows.length > 50 || (isDifferentRowLength.value && hasRows)\n ? 'fade'\n : 'shuffle'\n\n oldRowsLength.value = newRows.length\n })\n\n watch(() => props.currentPage, () => {\n if (!isDifferentRowLength.value) {\n animationType.value = 'shuffle'\n }\n })\n\n return animationName\n}\n"],"names":[],"mappings":";;AAQO,MAAM,wBAAwB;AAAA,EACnC,GAAG;AAAA,EACH,UAAU,EAAE,MAAM,SAAS,SAAS,KAAK;AAC3C;AAEa,MAAA,mBAAmB,CAC9B,OACA,SACG;AACG,QAAA,gBAAgB,IAAmB,SAAS;AAE5C,QAAA,gBAAgB,SAAS,MAAM,MAAM,WAAW,oBAAoB,cAAc,KAAK,KAAK,EAAE;AAEpG,QAAM,gBAAgB,IAAI,KAAK,MAAM,MAAM;AAC3C,QAAM,uBAAuB,SAAS,MAAM,KAAK,MAAM,WAAW,cAAc,KAAK;AAE/E,QAAA,MAAM,CAAC,SAAS,YAAY;AAChC,UAAM,UAAU,CAAC,EAAE,QAAQ,UAAU,QAAQ;AAE7C,kBAAc,QAAQ,QAAQ,SAAS,MAAO,qBAAqB,SAAS,UACxE,SACA;AAEJ,kBAAc,QAAQ,QAAQ;AAAA,EAAA,CAC/B;AAEK,QAAA,MAAM,MAAM,aAAa,MAAM;AAC/B,QAAA,CAAC,qBAAqB,OAAO;AAC/B,oBAAc,QAAQ;AAAA,IACxB;AAAA,EAAA,CACD;AAEM,SAAA;AACT;"}