UNPKG

vuetify

Version:

Vue Material Component Framework

1 lines 12.1 kB
{"version":3,"file":"VSkeletonLoader.mjs","names":["Elevatable","Measurable","Themeable","mixins","getSlot","extend","name","props","boilerplate","Boolean","loading","tile","transition","String","type","types","Object","default","computed","attrs","isLoading","$attrs","role","classes","themeClasses","elevationClasses","$scopedSlots","rootTypes","actions","article","avatar","button","card","chip","heading","image","paragraph","sentences","table","text","methods","genBone","children","$createElement","staticClass","genBones","bone","length","split","generator","genStructure","Array","from","map","indexOf","mapBones","push","genSkeleton","on","afterEnter","resetStyles","beforeEnter","onBeforeEnter","beforeLeave","onBeforeLeave","leaveCancelled","bones","replace","el","_initialStyle","display","style","setProperty","render","h","$listeners","class","measurableStyles","undefined"],"sources":["../../../src/components/VSkeletonLoader/VSkeletonLoader.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\n// Styles\nimport './VSkeletonLoader.sass'\n\n// Mixins\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\nimport { getSlot } from '../../util/helpers'\nimport { PropValidator } from 'vue/types/options'\n\nexport interface HTMLSkeletonLoaderElement extends HTMLElement {\n _initialStyle?: {\n display: string | null\n transition: string\n }\n}\n\n/* @vue/component */\nexport default mixins(\n Elevatable,\n Measurable,\n Themeable,\n).extend({\n name: 'VSkeletonLoader',\n\n props: {\n boilerplate: Boolean,\n loading: Boolean,\n tile: Boolean,\n transition: String,\n type: String,\n types: {\n type: Object,\n default: () => ({}),\n } as PropValidator<Record<string, string>>,\n },\n\n computed: {\n attrs (): object {\n if (!this.isLoading) return this.$attrs\n\n return !this.boilerplate ? {\n 'aria-busy': true,\n 'aria-live': 'polite',\n role: 'alert',\n ...this.$attrs,\n } : {}\n },\n classes (): object {\n return {\n 'v-skeleton-loader--boilerplate': this.boilerplate,\n 'v-skeleton-loader--is-loading': this.isLoading,\n 'v-skeleton-loader--tile': this.tile,\n ...this.themeClasses,\n ...this.elevationClasses,\n }\n },\n isLoading (): boolean {\n return !('default' in this.$scopedSlots) || this.loading\n },\n rootTypes (): Record<string, string> {\n return {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, card-heading',\n 'card-avatar': 'image, list-item-avatar',\n 'card-heading': 'heading',\n chip: 'chip',\n 'date-picker': 'list-item, card-heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n paragraph: 'text@3',\n sentences: 'text@2',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'heading, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'table-cell@6',\n 'table-cell': 'text',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text',\n ...this.types,\n }\n },\n },\n\n methods: {\n genBone (text: string, children: VNode[]) {\n return this.$createElement('div', {\n staticClass: `v-skeleton-loader__${text} v-skeleton-loader__bone`,\n }, children)\n },\n genBones (bone: string): VNode[] {\n // e.g. 'text@3'\n const [type, length] = bone.split('@') as [string, number]\n const generator = () => this.genStructure(type)\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({ length }).map(generator)\n },\n // Fix type when this is merged\n // https://github.com/microsoft/TypeScript/pull/33050\n genStructure (type?: string): any {\n let children = []\n type = type || this.type || ''\n const bone = this.rootTypes[type] || ''\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.indexOf(',') > -1) return this.mapBones(type)\n // Array of values - e.g. 'paragraph@4'\n else if (type.indexOf('@') > -1) return this.genBones(type)\n // Array of values - e.g. 'card@2'\n else if (bone.indexOf(',') > -1) children = this.mapBones(bone)\n // Array of values - e.g. 'list-item@2'\n else if (bone.indexOf('@') > -1) children = this.genBones(bone)\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(this.genStructure(bone))\n\n return [this.genBone(type, children)]\n },\n genSkeleton () {\n const children = []\n\n if (!this.isLoading) children.push(getSlot(this))\n else children.push(this.genStructure())\n\n /* istanbul ignore else */\n if (!this.transition) return children\n\n /* istanbul ignore next */\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n },\n // Only show transition when\n // content has been loaded\n on: {\n afterEnter: this.resetStyles,\n beforeEnter: this.onBeforeEnter,\n beforeLeave: this.onBeforeLeave,\n leaveCancelled: this.resetStyles,\n },\n }, children)\n },\n mapBones (bones: string) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(this.genStructure)\n },\n onBeforeEnter (el: HTMLSkeletonLoaderElement) {\n this.resetStyles(el)\n\n if (!this.isLoading) return\n\n el._initialStyle = {\n display: el.style.display,\n transition: el.style.transition,\n }\n\n el.style.setProperty('transition', 'none', 'important')\n },\n onBeforeLeave (el: HTMLSkeletonLoaderElement) {\n el.style.setProperty('display', 'none', 'important')\n },\n resetStyles (el: HTMLSkeletonLoaderElement) {\n if (!el._initialStyle) return\n\n el.style.display = el._initialStyle.display || ''\n el.style.transition = el._initialStyle.transition\n\n delete el._initialStyle\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-skeleton-loader',\n attrs: this.attrs,\n on: this.$listeners,\n class: this.classes,\n style: this.isLoading ? this.measurableStyles : undefined,\n }, [this.genSkeleton()])\n },\n})\n"],"mappings":"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"}