UNPKG

vuestic-ui

Version:
1 lines 5.5 kB
{"version":3,"file":"VaTimeline.mjs","sources":["../../../../../src/components/va-timeline/VaTimeline.vue"],"sourcesContent":["<script>\nimport { h, Fragment } from 'vue'\nimport { useComponentPresetProp } from '../../composables/useComponentPreset.ts'\n\nconst getPropsData = (slot) => slot?.props\n\nconst getIsActive = (slot) => !!slot?.props?.active || false\n\n/**\n* Slot can be Vue Fragment generated by v-for.\n* If slot `type` property is Vue Fragment Symbol return true\n*/\nconst isVueFragment = (slot) => slot.type === Fragment\n\nconst isEmptyArray = (arr) => arr && arr.length === 0\n\n/* Returns correct slots without v-for vue fragment */\nfunction getSlots (slots) {\n const defaultSlots = slots.default?.()\n\n if (!defaultSlots || isEmptyArray(defaultSlots)) { return [] }\n if (isVueFragment(defaultSlots[0])) { return defaultSlots[0].children }\n\n return defaultSlots\n}\n\nconst processSlots = (context) => {\n const slots = getSlots(context.slots)\n\n slots.forEach((slot, index) => {\n if (!getPropsData(slot)) {\n slot.props = {}\n }\n\n const propsData = getPropsData(slot)\n\n // Pass down vertical prop.\n propsData.vertical = context.props.vertical\n\n if (context.props.centered) {\n // Every second slot will be inverted\n propsData.inverted = !!(index % 2)\n }\n\n if (index === 0) {\n propsData.isFirst = true\n }\n if (index === slots.length - 1) {\n propsData.isLast = true\n }\n\n const currentSlotActive = propsData.active\n\n // For inactive slot props are default\n if (!currentSlotActive) {\n return\n }\n\n if (index === 0) {\n propsData.activePrevious = currentSlotActive\n }\n\n if (index === slots.length - 1) {\n propsData.activeNext = currentSlotActive\n }\n\n const previousSlotActive = getIsActive(slots[index - 1])\n if (previousSlotActive) {\n propsData.activePrevious = true\n }\n\n const nextSlotActive = getIsActive(slots[index + 1])\n if (nextSlotActive) {\n propsData.activeNext = true\n }\n })\n\n return slots\n}\n\nconst COMPONENT_NAME = 'va-timeline'\n\nexport default {\n name: COMPONENT_NAME,\n props: {\n ...useComponentPresetProp,\n vertical: { type: Boolean },\n centered: { type: Boolean },\n alignTop: { type: Boolean },\n },\n setup (props, { slots }) {\n return () => h(\n 'div',\n {\n class: {\n [COMPONENT_NAME]: true,\n [`${COMPONENT_NAME}--vertical`]: props.vertical,\n [`${COMPONENT_NAME}--align-top`]: props.alignTop,\n },\n },\n processSlots({ props, slots }),\n )\n },\n}\n</script>\n\n<style lang=\"scss\">\n@import 'variables';\n\n.va-timeline {\n display: var(--va-timeline-display);\n flex-wrap: var(--va-timeline-flex-wrap);\n font-family: var(--va-font-family);\n\n &--vertical {\n flex-direction: var(--va-timeline-vertical-flex-direction);\n padding-left: var(--va-timeline-vertical-padding-left);\n padding-right: var(--va-timeline-vertical-padding-right);\n }\n\n &--align-top {\n .va-timeline-item__before,\n .va-timeline-item__after {\n flex: 0;\n }\n }\n\n .va-timeline-item {\n flex: 1;\n }\n\n .va-timeline-item--vertical {\n .va-timeline-separator--vertical .va-timeline-separator__line {\n &:first-child {\n flex: 0 0 1rem;\n }\n }\n\n &.va-timeline-item--is-first {\n .va-timeline-separator--vertical .va-timeline-separator__line {\n &:first-child {\n flex-basis: 2rem;\n }\n }\n\n .va-timeline-item__after,\n .va-timeline-item__before {\n padding-top: 2rem;\n }\n }\n\n &.va-timeline-item--vertical.va-timeline-item--is-last {\n .va-timeline-item__after,\n .va-timeline-item__before {\n padding-bottom: 2rem;\n }\n }\n }\n}\n</style>\n"],"names":[],"mappings":";;;AAIA,MAAM,eAAe,CAAC,SAAS,6BAAM;AAErC,MAAM,cAAc,CAAC,SAAS;;AAAA,UAAC,GAAC,kCAAM,UAAN,mBAAa,WAAU;AAAA;AAMvD,MAAM,gBAAgB,CAAC,SAAS,KAAK,SAAS;AAE9C,MAAM,eAAe,CAAC,QAAQ,OAAO,IAAI,WAAW;AAGpD,SAAS,SAAU,OAAO;;AACxB,QAAM,gBAAe,WAAM,YAAN;AAErB,MAAI,CAAC,gBAAgB,aAAa,YAAY,GAAG;AAAE,WAAO,CAAA;AAAA,EAAG;AAC7D,MAAI,cAAc,aAAa,CAAC,CAAC,GAAG;AAAE,WAAO,aAAa,CAAC,EAAE;AAAA,EAAS;AAEtE,SAAO;AACT;AAEA,MAAM,eAAe,CAAC,YAAY;AAChC,QAAM,QAAQ,SAAS,QAAQ,KAAK;AAEpC,QAAM,QAAQ,CAAC,MAAM,UAAU;AAC7B,QAAI,CAAC,aAAa,IAAI,GAAG;AACvB,WAAK,QAAQ,CAAC;AAAA,IAChB;AAEA,UAAM,YAAY,aAAa,IAAI;AAGnC,cAAU,WAAW,QAAQ,MAAM;AAEnC,QAAI,QAAQ,MAAM,UAAU;AAE1B,gBAAU,WAAW,CAAC,EAAE,QAAQ;AAAA,IAClC;AAEA,QAAI,UAAU,GAAG;AACf,gBAAU,UAAU;AAAA,IACtB;AACA,QAAI,UAAU,MAAM,SAAS,GAAG;AAC9B,gBAAU,SAAS;AAAA,IACrB;AAEA,UAAM,oBAAoB,UAAU;AAGpC,QAAI,CAAC,mBAAmB;AACtB;AAAA,IACF;AAEA,QAAI,UAAU,GAAG;AACf,gBAAU,iBAAiB;AAAA,IAC7B;AAEA,QAAI,UAAU,MAAM,SAAS,GAAG;AAC9B,gBAAU,aAAa;AAAA,IACzB;AAEA,UAAM,qBAAqB,YAAY,MAAM,QAAQ,CAAC,CAAC;AACvD,QAAI,oBAAoB;AACtB,gBAAU,iBAAiB;AAAA,IAC7B;AAEA,UAAM,iBAAiB,YAAY,MAAM,QAAQ,CAAC,CAAC;AACnD,QAAI,gBAAgB;AAClB,gBAAU,aAAa;AAAA,IACzB;AAAA,GACD;AAED,SAAO;AACT;AAEA,MAAM,iBAAiB;AAElB,MAAA,YAAU;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,IACL,GAAG;AAAA,IACH,UAAU,EAAE,MAAM,QAAS;AAAA,IAC3B,UAAU,EAAE,MAAM,QAAS;AAAA,IAC3B,UAAU,EAAE,MAAM,QAAS;AAAA,EAC5B;AAAA,EACD,MAAO,OAAO,EAAE,SAAS;AACvB,WAAO,MAAM;AAAA,MACX;AAAA,MACA;AAAA,QACE,OAAO;AAAA,UACL,CAAC,cAAc,GAAG;AAAA,UAClB,CAAC,GAAG,cAAc,YAAY,GAAG,MAAM;AAAA,UACvC,CAAC,GAAG,cAAc,aAAa,GAAG,MAAM;AAAA,QACzC;AAAA,MACF;AAAA,MACD,aAAa,EAAE,OAAO,OAAO;AAAA,IAC/B;AAAA,EACD;AACH;"}