496 lines
13 KiB
JavaScript
496 lines
13 KiB
JavaScript
import BaseStyle from 'primevue/base/style';
|
|
|
|
const theme = ({ dt }) => `
|
|
.p-galleria-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.p-galleria-items-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
position: relative;
|
|
}
|
|
|
|
.p-galleria-items {
|
|
position: relative;
|
|
display: flex;
|
|
height: 100%;
|
|
}
|
|
|
|
.p-galleria-navigate-button {
|
|
position: absolute;
|
|
top: 50%;
|
|
margin-top: -0.5rem;
|
|
display: inline-flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
overflow: hidden;
|
|
background: transparent;
|
|
color: ${dt('galleria.navigator.color')};
|
|
width: 3rem;
|
|
height: 3rem;
|
|
transition: background-color ${dt('transition.duration')}, color ${dt('transition.duration')}, outline-color ${dt('transition.duration')};
|
|
border-radius: 50%;
|
|
margin: 0 0.5rem;
|
|
padding: 0;
|
|
user-select: none;
|
|
border: none;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.p-galleria-navigate-button:not(.p-disabled):hover {
|
|
background: ${dt('galleria.navigator.hover.background')};
|
|
}
|
|
|
|
.p-galleria-next-icon,
|
|
.p-galleria-prev-icon {
|
|
font-size: 1.5rem;
|
|
width: 1.5rem;
|
|
height: 1.5rem;
|
|
}
|
|
|
|
.p-galleria-prev-button {
|
|
left: 0;
|
|
}
|
|
|
|
.p-galleria-next-button {
|
|
right: 0;
|
|
}
|
|
|
|
.p-galleria-item {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
height: 100%;
|
|
width: 100%;
|
|
}
|
|
|
|
.p-galleria-hover-navigators .p-galleria-navigate-button {
|
|
pointer-events: none;
|
|
opacity: 0;
|
|
transition: opacity ${dt('transition.duration')} ease-in-out;
|
|
}
|
|
|
|
.p-galleria-hover-navigators .p-galleria-items-container:hover .p-galleria-navigate-button {
|
|
pointer-events: all;
|
|
opacity: 1;
|
|
}
|
|
|
|
.p-galleria-hover-navigators .p-galleria-items-container:hover .p-galleria-navigate-button.p-disabled {
|
|
pointer-events: none;
|
|
}
|
|
|
|
.p-galleria-caption {
|
|
position: absolute;
|
|
bottom: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
background: ${dt('galleria.caption.background')};
|
|
color: ${dt('galleria.caption.color')};
|
|
padding: 1rem;
|
|
}
|
|
|
|
.p-galleria-thumbnails {
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: auto;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.p-galleria-thumbnail-prev-button,
|
|
.p-galleria-thumbnail-next-button {
|
|
align-self: center;
|
|
flex: 0 0 auto;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
overflow: hidden;
|
|
position: relative;
|
|
margin: 0.5rem;
|
|
padding: 0;
|
|
border: none;
|
|
user-select: none;
|
|
cursor: pointer;
|
|
background: transparent;
|
|
color: ${dt('galleria.thumbnail.navigator.color')};
|
|
width: 2rem;
|
|
height: 2rem;
|
|
transition: background-color ${dt('transition.duration')}, color ${dt('transition.duration')}, outline-color ${dt('transition.duration')};
|
|
outline-color: transparent;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.p-galleria-thumbnail-prev-button:hover,
|
|
.p-galleria-thumbnail-next-button:hover {
|
|
background: ${dt('galleria.thumbnail.navigator.hover.background')};
|
|
color: ${dt('galleria.thumbnail.navigator.hover.color')};
|
|
}
|
|
|
|
.p-galleria-thumbnail-prev-button:focus-visible,
|
|
.p-galleria-thumbnail-next-button:focus-visible {
|
|
outline: ${dt('focus.ring.width')} ${dt('focus.ring.style')} ${dt('focus.ring.color')};
|
|
outline-offset: ${dt('focus.ring.offset')};
|
|
}
|
|
|
|
.p-galleria-thumbnail-prev-button span,
|
|
.p-galleria-thumbnail-next-button span {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
|
|
.p-galleria-thumbnails-content {
|
|
display: flex;
|
|
flex-direction: row;
|
|
background: ${dt('galleria.thumbnail.container.background')};
|
|
padding: 1rem 0.25rem;
|
|
}
|
|
|
|
.p-galleria-thumbnails-viewport {
|
|
overflow: hidden;
|
|
width: 100%;
|
|
}
|
|
|
|
.p-galleria-thumbnail-items {
|
|
display: flex;
|
|
}
|
|
|
|
.p-galleria-thumbnail-item {
|
|
overflow: auto;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
cursor: pointer;
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.p-galleria-thumbnail {
|
|
outline-color: transparent;
|
|
}
|
|
|
|
.p-galleria-thumbnail:focus-visible {
|
|
outline: ${dt('focus.ring.width')} ${dt('focus.ring.style')} ${dt('focus.ring.color')};
|
|
outline-offset: ${dt('focus.ring.offset')};
|
|
}
|
|
|
|
.p-galleria-thumbnail-item:hover {
|
|
opacity: 1;
|
|
transition: opacity 0.3s;
|
|
}
|
|
|
|
.p-galleria-thumbnail-item-current {
|
|
opacity: 1;
|
|
}
|
|
|
|
.p-galleria-thumbnails-left .p-galleria-content,
|
|
.p-galleria-thumbnails-right .p-galleria-content {
|
|
flex-direction: row;
|
|
}
|
|
|
|
.p-galleria-thumbnails-left .p-galleria-items-container,
|
|
.p-galleria-thumbnails-right .p-galleria-items-container {
|
|
flex-direction: row;
|
|
}
|
|
|
|
.p-galleria-thumbnails-left .p-galleria-items-container,
|
|
.p-galleria-thumbnails-top .p-galleria-items-container {
|
|
order: 2;
|
|
}
|
|
|
|
.p-galleria-thumbnails-left .p-galleria-thumbnails,
|
|
.p-galleria-thumbnails-top .p-galleria-thumbnails {
|
|
order: 1;
|
|
}
|
|
|
|
.p-galleria-thumbnails-left .p-galleria-thumbnails-content,
|
|
.p-galleria-thumbnails-right .p-galleria-thumbnails-content {
|
|
flex-direction: column;
|
|
flex-grow: 1;
|
|
}
|
|
|
|
.p-galleria-thumbnails-left .p-galleria-thumbnail-items,
|
|
.p-galleria-thumbnails-right .p-galleria-thumbnail-items {
|
|
flex-direction: column;
|
|
height: 100%;
|
|
}
|
|
|
|
.p-galleria-indicator-list {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 1rem;
|
|
gap: 0.5rem;
|
|
margin: 0;
|
|
list-style: none;
|
|
}
|
|
|
|
.p-galleria-indicator-button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
background: ${dt('galleria.indicator.background')};
|
|
width: 1rem;
|
|
height: 1rem;
|
|
transition: background-color ${dt('transition.duration')}, color ${dt('transition.duration')}, outline-color ${dt('transition.duration')};
|
|
outline-color: transparent;
|
|
border-radius: 50%;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: none;
|
|
user-select: none;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.p-galleria-indicator-button:hover {
|
|
background: ${dt('galleria.indicator.hover.background')};
|
|
}
|
|
|
|
.p-galleria-indicator-button:focus-visible {
|
|
outline: ${dt('focus.ring.width')} ${dt('focus.ring.style')} ${dt('focus.ring.color')};
|
|
outline-offset: ${dt('focus.ring.offset')};
|
|
}
|
|
|
|
.p-galleria-indicator-active .p-galleria-indicator-button {
|
|
background-color: ${dt('galleria.indicator.active.background')};
|
|
}
|
|
|
|
.p-galleria-indicators-left .p-galleria-items-container,
|
|
.p-galleria-indicators-right .p-galleria-items-container {
|
|
flex-direction: row;
|
|
align-items: center;
|
|
}
|
|
|
|
.p-galleria-indicators-left .p-galleria-items,
|
|
.p-galleria-indicators-top .p-galleria-items {
|
|
order: 2;
|
|
}
|
|
|
|
.p-galleria-indicators-left .p-galleria-indicator-list,
|
|
.p-galleria-indicators-top .p-galleria-indicator-list {
|
|
order: 1;
|
|
}
|
|
|
|
.p-galleria-indicators-left .p-galleria-indicator-list,
|
|
.p-galleria-indicators-right .p-galleria-indicator-list {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.p-galleria-inset-indicators .p-galleria-indicator-list {
|
|
position: absolute;
|
|
display: flex;
|
|
z-index: 1;
|
|
background: ${dt('galleria.inset.indicators.background')};
|
|
}
|
|
|
|
.p-galleria-inset-indicators .p-galleria-indicator-button {
|
|
background: ${dt('galleria.inset.indicator.background')};
|
|
}
|
|
|
|
.p-galleria-inset-indicators .p-galleria-indicator-button:hover {
|
|
background: ${dt('galleria.inset.indicator.hover.background')};
|
|
}
|
|
|
|
.p-galleria-inset-indicators .p-galleria-indicator-active .p-galleria-indicator-button {
|
|
background: ${dt('galleria.inset.indicator.active.background')};
|
|
}
|
|
|
|
.p-galleria-inset-indicators.p-galleria-indicators-top .p-galleria-indicator-list {
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.p-galleria-inset-indicators.p-galleria-indicators-right .p-galleria-indicator-list {
|
|
right: 0;
|
|
top: 0;
|
|
height: 100%;
|
|
align-items: flex-end;
|
|
}
|
|
|
|
.p-galleria-inset-indicators.p-galleria-indicators-bottom .p-galleria-indicator-list {
|
|
bottom: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
align-items: flex-end;
|
|
}
|
|
|
|
.p-galleria-inset-indicators.p-galleria-indicators-left .p-galleria-indicator-list {
|
|
left: 0;
|
|
top: 0;
|
|
height: 100%;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.p-galleria-mask {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
--p-mask-background: ${dt('galleria.mask.background')};
|
|
}
|
|
|
|
.p-galleria-close-button {
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
overflow: hidden;
|
|
margin: 0.5rem;
|
|
background: transparent;
|
|
color: ${dt('galleria.close.color')};
|
|
width: 3rem;
|
|
height: 3rem;
|
|
padding: 0;
|
|
border: none;
|
|
user-select: none;
|
|
cursor: pointer;
|
|
border-radius: 50%;
|
|
outline-color: transparent;
|
|
transition: background-color ${dt('transition.duration')}, color ${dt('transition.duration')}, outline-color ${dt('transition.duration')};
|
|
}
|
|
|
|
.p-galleria-close-icon {
|
|
font-size: 1.5rem;
|
|
width: 1.5rem;
|
|
height: 1.5rem;
|
|
}
|
|
|
|
.p-galleria-close-button:hover {
|
|
background: ${dt('galleria.close.hover.background')};
|
|
color: ${dt('galleria.close.hover.color')};
|
|
}
|
|
|
|
.p-galleria-close-button:focus-visible {
|
|
outline: ${dt('focus.ring.width')} ${dt('focus.ring.style')} ${dt('focus.ring.color')};
|
|
outline-offset: ${dt('focus.ring.offset')};
|
|
}
|
|
|
|
.p-galleria-mask .p-galleria-navigate-button {
|
|
position: fixed;
|
|
top: 50%;
|
|
margin-top: -0.5rem;
|
|
}
|
|
|
|
.p-galleria-enter-active {
|
|
transition: all 150ms cubic-bezier(0, 0, 0.2, 1);
|
|
}
|
|
|
|
.p-galleria-leave-active {
|
|
transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
}
|
|
|
|
.p-galleria-enter-from,
|
|
.p-galleria-leave-to {
|
|
opacity: 0;
|
|
transform: scale(0.7);
|
|
}
|
|
|
|
.p-galleria-enter-active .p-galleria-navigate-button {
|
|
opacity: 0;
|
|
}
|
|
|
|
.p-items-hidden .p-galleria-thumbnail-item {
|
|
visibility: hidden;
|
|
}
|
|
|
|
.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active {
|
|
visibility: visible;
|
|
}
|
|
`;
|
|
|
|
const classes = {
|
|
mask: ({ instance }) => [
|
|
'p-galleria-mask p-component-overlay p-component-overlay-enter',
|
|
{
|
|
'p-ripple-disabled': instance.$primevue.config.ripple === false
|
|
}
|
|
],
|
|
root: ({ instance }) => {
|
|
const thumbnailsPosClass = instance.$attrs.showThumbnails && instance.getPositionClass('p-galleria-thumbnails', instance.$attrs.thumbnailsPosition);
|
|
const indicatorPosClass = instance.$attrs.showIndicators && instance.getPositionClass('p-galleria-indicators', instance.$attrs.indicatorsPosition);
|
|
|
|
return [
|
|
'p-galleria p-component',
|
|
{
|
|
'p-galleria-fullscreen': instance.$attrs.fullScreen,
|
|
'p-galleria-inset-indicators': instance.$attrs.showIndicatorsOnItem,
|
|
'p-galleria-hover-navigators': instance.$attrs.showItemNavigatorsOnHover && !instance.$attrs.fullScreen
|
|
},
|
|
thumbnailsPosClass,
|
|
indicatorPosClass
|
|
];
|
|
},
|
|
closeButton: 'p-galleria-close-button',
|
|
closeIcon: 'p-galleria-close-icon',
|
|
header: 'p-galleria-header',
|
|
content: 'p-galleria-content',
|
|
footer: 'p-galleria-footer',
|
|
itemsContainer: 'p-galleria-items-container',
|
|
items: 'p-galleria-items',
|
|
previousItemButton: ({ instance }) => [
|
|
'p-galleria-prev-button p-galleria-navigate-button',
|
|
{
|
|
'p-disabled': instance.isNavBackwardDisabled()
|
|
}
|
|
],
|
|
previousItemIcon: 'p-galleria-prev-icon',
|
|
item: 'p-galleria-item',
|
|
nextItemButton: ({ instance }) => [
|
|
'p-galleria-next-button p-galleria-navigate-button',
|
|
{
|
|
'p-disabled': instance.isNavForwardDisabled()
|
|
}
|
|
],
|
|
nextItemIcon: 'p-galleria-next-icon',
|
|
caption: 'p-galleria-caption',
|
|
indicatorList: 'p-galleria-indicator-list',
|
|
indicator: ({ instance, index }) => [
|
|
'p-galleria-indicator',
|
|
{
|
|
'p-galleria-indicator-active': instance.isIndicatorItemActive(index)
|
|
}
|
|
],
|
|
indicatorButton: 'p-galleria-indicator-button',
|
|
thumbnails: 'p-galleria-thumbnails',
|
|
thumbnailContent: 'p-galleria-thumbnails-content',
|
|
previousThumbnailButton: ({ instance }) => [
|
|
'p-galleria-thumbnail-prev-button',
|
|
{
|
|
'p-disabled': instance.isNavBackwardDisabled()
|
|
}
|
|
],
|
|
previousThumbnailIcon: 'p-galleria-thumbnail-prev-icon',
|
|
thumbnailItemsContainer: 'p-galleria-thumbnails-viewport',
|
|
thumbnailItems: 'p-galleria-thumbnail-items',
|
|
thumbnailItem: ({ instance, index, activeIndex }) => [
|
|
'p-galleria-thumbnail-item',
|
|
{
|
|
'p-galleria-thumbnail-item-current': activeIndex === index,
|
|
'p-galleria-thumbnail-item-active': instance.isItemActive(index),
|
|
'p-galleria-thumbnail-item-start': instance.firstItemAciveIndex() === index,
|
|
'p-galleria-thumbnail-item-end': instance.lastItemActiveIndex() === index
|
|
}
|
|
],
|
|
thumbnail: 'p-galleria-thumbnail',
|
|
nextThumbnailButton: ({ instance }) => [
|
|
'p-galleria-thumbnail-next-button',
|
|
{
|
|
'p-disabled': instance.isNavForwardDisabled()
|
|
}
|
|
],
|
|
nextThumbnailIcon: 'p-galleria-thumbnail-next-icon'
|
|
};
|
|
|
|
export default BaseStyle.extend({
|
|
name: 'galleria',
|
|
theme,
|
|
classes
|
|
});
|