{
- showFull.set(!showFull.value);
- playSeClick();
- }}
+ onClick={closeFullPreview}
className={styles.showFullContainer}
onMouseEnter={playSeEnter}
>
-
{renderMedia(true)}
+
handleFullPreviewClick(e)}>
+ {renderMedia(currentResource.url)}
+
)}
{
- showFull.set(!showFull.value);
- playSeClick();
- }}
+ onClick={openFullPreview}
onMouseEnter={playSeEnter}
style={{
- animation: `cg_softIn_${props.transformDeg} 1.5s ease-out ${100 + props.index * 100}ms forwards`,
+ animation: `cg_softIn_${isStackPreview ? 0 : props.transformDeg} 1.5s ease-out ${animationDelay}ms forwards`,
}}
key={props.name}
- className={styles.cgElement}
+ className={`${styles.cgElement} ${isStackPreview ? styles.cgElementStack : ''}`}
>
- {renderMedia(false)}
+ {isStackPreview ? (
+ <>
+ {stackResources.map((resource, index) => (
+
+ {renderMedia(resource.url)}
+
+ ))}
+ >
+ ) : (
+ renderMedia(previewResource.url)
+ )}
>
);
diff --git a/packages/webgal/src/UI/Extra/extra.module.scss b/packages/webgal/src/UI/Extra/extra.module.scss
index a4a032599..02fa08640 100644
--- a/packages/webgal/src/UI/Extra/extra.module.scss
+++ b/packages/webgal/src/UI/Extra/extra.module.scss
@@ -189,6 +189,37 @@
cursor: pointer;
}
+.cgElementStack {
+ background-color: transparent;
+ box-shadow: none;
+}
+
+.cgStackItem {
+ position: absolute;
+ inset: 0.6em;
+ box-sizing: border-box;
+ padding: 0.75em;
+ background-color: rgba(255, 255, 255, 0.85);
+ box-shadow: 0 0 15px 5px rgba(0, 0, 0, 0.28);
+ transform-origin: center 70%;
+ opacity: 0;
+ animation: cgStackItemIn 1.5s ease-out both;
+}
+
+@keyframes cgStackItemIn {
+ 0% {
+ opacity: 0;
+ transform: var(--cg-stack-start-transform);
+ }
+ 20% {
+ opacity: 1;
+ }
+ 100% {
+ opacity: 1;
+ transform: var(--cg-stack-end-transform);
+ }
+}
+
.cgShowDiv {
height: 8%;
width: 100%;
diff --git a/packages/webgal/src/UI/Extra/extraCG_animation_List.scss b/packages/webgal/src/UI/Extra/extraCG_animation_List.scss
index 21522f6a2..090fbdb23 100644
--- a/packages/webgal/src/UI/Extra/extraCG_animation_List.scss
+++ b/packages/webgal/src/UI/Extra/extraCG_animation_List.scss
@@ -1,123 +1,19 @@
$initialTransform: scale(1.15, 1.15) translate(-50px, -125px) rotateX(-25deg) rotateY(25deg);
$endTransform: scale(1, 1) translate3d(0, 0, 0);
-@keyframes cg_softIn_-5 {
- 0% {
- opacity: 0;
- transform: $initialTransform;
- }
- 100% {
- opacity: 1;
- transform: $endTransform + rotate(-5deg);
- }
-}
-
-@keyframes cg_softIn_-4 {
- 0% {
- opacity: 0;
- transform: $initialTransform;
- }
- 100% {
- opacity: 1;
- transform: $endTransform + rotate(-4deg);
- }
-}
-
-@keyframes cg_softIn_-3 {
- 0% {
- opacity: 0;
- transform: $initialTransform;
- }
- 100% {
- opacity: 1;
- transform: $endTransform + rotate(-3deg);
- }
-}
-
-@keyframes cg_softIn_-2 {
- 0% {
- opacity: 0;
- transform: $initialTransform;
- }
- 100% {
- opacity: 1;
- transform: $endTransform + rotate(-2deg);
- }
-}
-
-@keyframes cg_softIn_-1 {
- 0% {
- opacity: 0;
- transform: $initialTransform;
- }
- 100% {
- opacity: 1;
- transform: $endTransform + rotate(-1deg);
- }
-}
-
-@keyframes cg_softIn_0 {
- 0% {
- opacity: 0;
- transform: $initialTransform;
- }
- 100% {
- opacity: 1;
- transform: $endTransform + rotate(0);
- }
-}
-
-@keyframes cg_softIn_1 {
- 0% {
- opacity: 0;
- transform: $initialTransform;
- }
- 100% {
- opacity: 1;
- transform: $endTransform + rotate(1deg);
- }
-}
-
-@keyframes cg_softIn_2 {
- 0% {
- opacity: 0;
- transform: $initialTransform;
- }
- 100% {
- opacity: 1;
- transform: $endTransform + rotate(2deg);
- }
-}
-
-@keyframes cg_softIn_3 {
- 0% {
- opacity: 0;
- transform: $initialTransform;
- }
- 100% {
- opacity: 1;
- transform: $endTransform + rotate(3deg);
- }
-}
-
-@keyframes cg_softIn_4 {
- 0% {
- opacity: 0;
- transform: $initialTransform;
- }
- 100% {
- opacity: 1;
- transform: $endTransform + rotate(4deg);
- }
-}
-
-@keyframes cg_softIn_5 {
- 0% {
- opacity: 0;
- transform: $initialTransform;
- }
- 100% {
- opacity: 1;
- transform: $endTransform + rotate(5deg);
+@for $deg from -5 through 5 {
+ @keyframes cg_softIn_#{$deg} {
+ 0% {
+ opacity: 0;
+ transform: $initialTransform rotate($deg * -2deg);
+ }
+ 70% {
+ opacity: 1;
+ transform: $endTransform rotate($deg * 1.4deg);
+ }
+ 100% {
+ opacity: 1;
+ transform: $endTransform rotate($deg * 1deg);
+ }
}
}
diff --git a/packages/webgal/src/store/userDataInterface.ts b/packages/webgal/src/store/userDataInterface.ts
index 9098ff20d..fcec40710 100644
--- a/packages/webgal/src/store/userDataInterface.ts
+++ b/packages/webgal/src/store/userDataInterface.ts
@@ -76,6 +76,7 @@ export interface IAppreciationAsset {
name: string;
url: string;
series: string;
+ order?: number;
}
export interface IAppreciation {
diff --git a/packages/webgal/src/store/userDataReducer.ts b/packages/webgal/src/store/userDataReducer.ts
index 3807fb63c..5c211b416 100644
--- a/packages/webgal/src/store/userDataReducer.ts
+++ b/packages/webgal/src/store/userDataReducer.ts
@@ -65,7 +65,7 @@ const userDataSlice = createSlice({
state[key] = value;
},
unlockCgInUserData: (state, action: PayloadAction