vuetify
Version:
Vue Material Component Framework
1 lines • 5.52 kB
Source Map (JSON)
{"version":3,"file":"VTimelineItem.mjs","names":["VTimelineDivider","IconValue","makeElevationProps","makeRoundedProps","makeSizeProps","makeTagProps","convertToUnit","genericComponent","useRender","makeDimensionProps","useDimension","ref","watch","VTimelineItem","name","props","density","String","dotColor","fillDot","Boolean","hideDot","hideOpposite","type","default","undefined","icon","iconColor","lineInset","Number","setup","slots","dimensionStyles","dotSize","dotRef","newValue","value","$el","querySelector","getBoundingClientRect","width","flush","size","elevation","rounded","opposite"],"sources":["../../../src/components/VTimeline/VTimelineItem.tsx"],"sourcesContent":["// Components\nimport { VTimelineDivider } from './VTimelineDivider'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { convertToUnit, genericComponent, useRender } from '@/util'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { ref, watch } from 'vue'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VTimelineItemSlots = {\n default: []\n icon: []\n opposite: []\n}\n\nexport const VTimelineItem = genericComponent<VTimelineItemSlots>()({\n name: 'VTimelineItem',\n\n props: {\n density: String as PropType<'default' | 'compact'>,\n dotColor: String,\n fillDot: Boolean,\n hideDot: Boolean,\n hideOpposite: {\n type: Boolean,\n default: undefined,\n },\n icon: IconValue,\n iconColor: String,\n lineInset: [Number, String],\n\n ...makeRoundedProps(),\n ...makeElevationProps(),\n ...makeSizeProps(),\n ...makeTagProps(),\n ...makeDimensionProps(),\n },\n\n setup (props, { slots }) {\n const { dimensionStyles } = useDimension(props)\n\n const dotSize = ref(0)\n const dotRef = ref<VTimelineDivider>()\n watch(dotRef, newValue => {\n if (!newValue) return\n dotSize.value = newValue.$el.querySelector('.v-timeline-divider__dot')?.getBoundingClientRect().width ?? 0\n }, {\n flush: 'post',\n })\n\n useRender(() => (\n <div\n class={[\n 'v-timeline-item',\n {\n 'v-timeline-item--fill-dot': props.fillDot,\n },\n ]}\n style={{\n '--v-timeline-dot-size': convertToUnit(dotSize.value),\n '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0),\n }}\n >\n <div\n class=\"v-timeline-item__body\"\n style={ dimensionStyles.value }\n >\n { slots.default?.() }\n </div>\n\n <VTimelineDivider\n ref={ dotRef }\n hideDot={ props.hideDot }\n icon={ props.icon }\n iconColor={ props.iconColor }\n size={ props.size }\n elevation={ props.elevation }\n dotColor={ props.dotColor }\n fillDot={ props.fillDot }\n rounded={ props.rounded }\n v-slots={{ default: slots.icon }}\n />\n\n { props.density !== 'compact' && (\n <div class=\"v-timeline-item__opposite\">\n { !props.hideOpposite && slots.opposite?.() }\n </div>\n ) }\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VTimelineItem = InstanceType<typeof VTimelineItem>\n"],"mappings":";AAAA;AAAA,SACSA,gBAAgB,kCAEzB;AAAA,SACSC,SAAS;AAAA,SACTC,kBAAkB;AAAA,SAClBC,gBAAgB;AAAA,SAChBC,aAAa;AAAA,SACbC,YAAY,qCAErB;AAAA,SACSC,aAAa,EAAEC,gBAAgB,EAAEC,SAAS;AAAA,SAC1CC,kBAAkB,EAAEC,YAAY;AACzC,SAASC,GAAG,EAAEC,KAAK,QAAQ,KAAK;;AAEhC;;AAUA,OAAO,MAAMC,aAAa,GAAGN,gBAAgB,EAAsB,CAAC;EAClEO,IAAI,EAAE,eAAe;EAErBC,KAAK,EAAE;IACLC,OAAO,EAAEC,MAAyC;IAClDC,QAAQ,EAAED,MAAM;IAChBE,OAAO,EAAEC,OAAO;IAChBC,OAAO,EAAED,OAAO;IAChBE,YAAY,EAAE;MACZC,IAAI,EAAEH,OAAO;MACbI,OAAO,EAAEC;IACX,CAAC;IACDC,IAAI,EAAEzB,SAAS;IACf0B,SAAS,EAAEV,MAAM;IACjBW,SAAS,EAAE,CAACC,MAAM,EAAEZ,MAAM,CAAC;IAE3B,GAAGd,gBAAgB,EAAE;IACrB,GAAGD,kBAAkB,EAAE;IACvB,GAAGE,aAAa,EAAE;IAClB,GAAGC,YAAY,EAAE;IACjB,GAAGI,kBAAkB;EACvB,CAAC;EAEDqB,KAAK,CAAEf,KAAK,QAAa;IAAA,IAAX;MAAEgB;IAAM,CAAC;IACrB,MAAM;MAAEC;IAAgB,CAAC,GAAGtB,YAAY,CAACK,KAAK,CAAC;IAE/C,MAAMkB,OAAO,GAAGtB,GAAG,CAAC,CAAC,CAAC;IACtB,MAAMuB,MAAM,GAAGvB,GAAG,EAAoB;IACtCC,KAAK,CAACsB,MAAM,EAAEC,QAAQ,IAAI;MACxB,IAAI,CAACA,QAAQ,EAAE;MACfF,OAAO,CAACG,KAAK,GAAGD,QAAQ,CAACE,GAAG,CAACC,aAAa,CAAC,0BAA0B,CAAC,EAAEC,qBAAqB,EAAE,CAACC,KAAK,IAAI,CAAC;IAC5G,CAAC,EAAE;MACDC,KAAK,EAAE;IACT,CAAC,CAAC;IAEFjC,SAAS,CAAC;MAAA,SAEC,CACL,iBAAiB,EACjB;QACE,2BAA2B,EAAEO,KAAK,CAACI;MACrC,CAAC,CACF;MAAA,SACM;QACL,uBAAuB,EAAEb,aAAa,CAAC2B,OAAO,CAACG,KAAK,CAAC;QACrD,yBAAyB,EAAErB,KAAK,CAACa,SAAS,GAAI,yCAAwCtB,aAAa,CAACS,KAAK,CAACa,SAAS,CAAE,GAAE,GAAGtB,aAAa,CAAC,CAAC;MAC3I;IAAC;MAAA,SAGO,uBAAuB;MAAA,SACrB0B,eAAe,CAACI;IAAK,IAE3BL,KAAK,CAACP,OAAO,IAAI;MAAA,OAIbU,MAAM;MAAA,WACFnB,KAAK,CAACM,OAAO;MAAA,QAChBN,KAAK,CAACW,IAAI;MAAA,aACLX,KAAK,CAACY,SAAS;MAAA,QACpBZ,KAAK,CAAC2B,IAAI;MAAA,aACL3B,KAAK,CAAC4B,SAAS;MAAA,YAChB5B,KAAK,CAACG,QAAQ;MAAA,WACfH,KAAK,CAACI,OAAO;MAAA,WACbJ,KAAK,CAAC6B;IAAO,GACd;MAAEpB,OAAO,EAAEO,KAAK,CAACL;IAAK,CAAC,GAGhCX,KAAK,CAACC,OAAO,KAAK,SAAS;MAAA,SAChB;IAA2B,IAClC,CAACD,KAAK,CAACO,YAAY,IAAIS,KAAK,CAACc,QAAQ,IAAI,EAE9C,EAEJ,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}