import BaseStyle from 'primevue/base/style'; const css = ` @layer primevue { .p-dialog-mask.p-component-overlay { pointer-events: auto; } .p-dialog { max-height: 90%; transform: scale(1); } .p-dialog-content { overflow-y: auto; } .p-dialog-header { display: flex; align-items: center; justify-content: space-between; flex-shrink: 0; } .p-dialog-footer { flex-shrink: 0; } .p-dialog .p-dialog-header-icons { display: flex; align-items: center; } .p-dialog .p-dialog-header-icon { display: flex; align-items: center; justify-content: center; overflow: hidden; position: relative; } /* Fluid */ .p-fluid .p-dialog-footer .p-button { width: auto; } /* Animation */ /* Center */ .p-dialog-enter-active { transition: all 150ms cubic-bezier(0, 0, 0.2, 1); } .p-dialog-leave-active { transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1); } .p-dialog-enter-from, .p-dialog-leave-to { opacity: 0; transform: scale(0.7); } /* Top, Bottom, Left, Right, Top* and Bottom* */ .p-dialog-top .p-dialog, .p-dialog-bottom .p-dialog, .p-dialog-left .p-dialog, .p-dialog-right .p-dialog, .p-dialog-topleft .p-dialog, .p-dialog-topright .p-dialog, .p-dialog-bottomleft .p-dialog, .p-dialog-bottomright .p-dialog { margin: 0.75rem; transform: translate3d(0px, 0px, 0px); } .p-dialog-top .p-dialog-enter-active, .p-dialog-top .p-dialog-leave-active, .p-dialog-bottom .p-dialog-enter-active, .p-dialog-bottom .p-dialog-leave-active, .p-dialog-left .p-dialog-enter-active, .p-dialog-left .p-dialog-leave-active, .p-dialog-right .p-dialog-enter-active, .p-dialog-right .p-dialog-leave-active, .p-dialog-topleft .p-dialog-enter-active, .p-dialog-topleft .p-dialog-leave-active, .p-dialog-topright .p-dialog-enter-active, .p-dialog-topright .p-dialog-leave-active, .p-dialog-bottomleft .p-dialog-enter-active, .p-dialog-bottomleft .p-dialog-leave-active, .p-dialog-bottomright .p-dialog-enter-active, .p-dialog-bottomright .p-dialog-leave-active { transition: all 0.3s ease-out; } .p-dialog-top .p-dialog-enter-from, .p-dialog-top .p-dialog-leave-to { transform: translate3d(0px, -100%, 0px); } .p-dialog-bottom .p-dialog-enter-from, .p-dialog-bottom .p-dialog-leave-to { transform: translate3d(0px, 100%, 0px); } .p-dialog-left .p-dialog-enter-from, .p-dialog-left .p-dialog-leave-to, .p-dialog-topleft .p-dialog-enter-from, .p-dialog-topleft .p-dialog-leave-to, .p-dialog-bottomleft .p-dialog-enter-from, .p-dialog-bottomleft .p-dialog-leave-to { transform: translate3d(-100%, 0px, 0px); } .p-dialog-right .p-dialog-enter-from, .p-dialog-right .p-dialog-leave-to, .p-dialog-topright .p-dialog-enter-from, .p-dialog-topright .p-dialog-leave-to, .p-dialog-bottomright .p-dialog-enter-from, .p-dialog-bottomright .p-dialog-leave-to { transform: translate3d(100%, 0px, 0px); } /* Maximize */ .p-dialog-maximized { -webkit-transition: none; transition: none; transform: none; width: 100vw !important; height: 100vh !important; top: 0px; left: 0px; max-height: 100%; height: 100%; } .p-dialog-maximized .p-dialog-content { flex-grow: 1; } .p-confirm-dialog .p-dialog-content { display: flex; align-items: center; } } `; /* Position */ const inlineStyles = { mask: ({ position, modal }) => ({ position: 'fixed', height: '100%', width: '100%', left: 0, top: 0, display: 'flex', justifyContent: position === 'left' || position === 'topleft' || position === 'bottomleft' ? 'flex-start' : position === 'right' || position === 'topright' || position === 'bottomright' ? 'flex-end' : 'center', alignItems: position === 'top' || position === 'topleft' || position === 'topright' ? 'flex-start' : position === 'bottom' || position === 'bottomleft' || position === 'bottomright' ? 'flex-end' : 'center', pointerEvents: modal ? 'auto' : 'none' }), root: { display: 'flex', flexDirection: 'column', pointerEvents: 'auto' } }; const classes = { mask: ({ props }) => { const positions = ['left', 'right', 'top', 'topleft', 'topright', 'bottom', 'bottomleft', 'bottomright']; const pos = positions.find((item) => item === props.position); return [ 'p-dialog-mask', { 'p-component-overlay p-component-overlay-enter': props.modal }, pos ? `p-dialog-${pos}` : '' ]; }, root: ({ props, instance }) => [ 'p-dialog p-component', { 'p-dialog-rtl': props.rtl, 'p-dialog-maximized': props.maximizable && instance.maximized, 'p-input-filled': instance.$primevue.config.inputStyle === 'filled', 'p-ripple-disabled': instance.$primevue.config.ripple === false } ], header: 'p-dialog-header', title: 'p-dialog-title', icons: 'p-dialog-header-icons', maximizableButton: 'p-dialog-header-icon p-dialog-header-maximize p-link', maximizableIcon: 'p-dialog-header-maximize-icon', closeButton: 'p-dialog-header-icon p-dialog-header-close p-link', closeButtonIcon: 'p-dialog-header-close-icon', content: 'p-dialog-content', footer: 'p-dialog-footer' }; export default BaseStyle.extend({ name: 'dialog', css, classes, inlineStyles });