<script> import BaseComponent from 'primevue/basecomponent'; import { useStyle } from 'primevue/usestyle'; const styles = ` .p-skeleton { overflow: hidden; } .p-skeleton::after { content: ''; animation: p-skeleton-animation 1.2s infinite; height: 100%; left: 0; position: absolute; right: 0; top: 0; transform: translateX(-100%); z-index: 1; } .p-skeleton.p-skeleton-circle { border-radius: 50%; } .p-skeleton-none::after { animation: none; } @keyframes p-skeleton-animation { from { transform: translateX(-100%); } to { transform: translateX(100%); } } `; const inlineStyles = { root: { position: 'relative' } }; const classes = { root: ({ props }) => [ 'p-skeleton p-component', { 'p-skeleton-circle': props.shape === 'circle', 'p-skeleton-none': props.animation === 'none' } ] }; const { load: loadStyle } = useStyle(styles, { name: 'skeleton', manual: true }); export default { name: 'BaseSkeleton', extends: BaseComponent, props: { shape: { type: String, default: 'rectangle' }, size: { type: String, default: null }, width: { type: String, default: '100%' }, height: { type: String, default: '1rem' }, borderRadius: { type: String, default: null }, animation: { type: String, default: 'wave' } }, css: { classes, inlineStyles, loadStyle }, provide() { return { $parentInstance: this }; } }; </script>