@vue-skuilder/common-ui 0.1.27 → 0.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/index.css +1 -1
- package/dist/common-ui.es.js +1 -1
- package/dist/common-ui.es.js.map +1 -1
- package/dist/common-ui.umd.js +1 -1
- package/dist/common-ui.umd.js.map +1 -1
- package/dist/components/StudySession.types.d.ts +6 -0
- package/dist/components/StudySession.types.d.ts.map +1 -1
- package/dist/components/StudySession.vue.d.ts +19 -1
- package/dist/components/StudySession.vue.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/components/StudySession.types.ts +8 -0
- package/src/components/StudySession.vue +70 -14
- package/src/index.ts +1 -1
|
@@ -4,4 +4,10 @@
|
|
|
4
4
|
export type StudySessionConfig = {
|
|
5
5
|
likesConfetti: boolean;
|
|
6
6
|
};
|
|
7
|
+
/**
|
|
8
|
+
* Built-in card transition presets provided by StudySession.
|
|
9
|
+
* Consumers can also pass any custom string to use their own CSS transition classes.
|
|
10
|
+
*/
|
|
11
|
+
export type CardTransitionPreset = 'component-fade' | 'card-slide' | 'card-scale';
|
|
12
|
+
export type CardTransitionMode = 'out-in' | 'in-out' | 'default';
|
|
7
13
|
//# sourceMappingURL=StudySession.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StudySession.types.d.ts","sourceRoot":"","sources":["../../src/components/StudySession.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"StudySession.types.d.ts","sourceRoot":"","sources":["../../src/components/StudySession.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,YAAY,GAAG,YAAY,CAAC;AAElF,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { ViewComponent } from '../composables';
|
|
|
3
3
|
import { default as CardViewer } from './cardRendering/CardViewer.vue';
|
|
4
4
|
import { CourseElo, ViewData } from '../../../common/dist/index.mjs';
|
|
5
5
|
import { CardHistory, CardRecord, ContentSourceID, CourseRegistrationDoc, DataLayerProvider, HydratedCard, ResponseResult, SessionController, StudyContentSource, StudySessionRecord, UserDBInterface } from '../../../db/dist/index.mjs';
|
|
6
|
-
import { StudySessionConfig } from './StudySession.types';
|
|
6
|
+
import { StudySessionConfig, CardTransitionPreset, CardTransitionMode } from './StudySession.types';
|
|
7
7
|
interface StudyRefs {
|
|
8
8
|
shadowWrapper: HTMLDivElement;
|
|
9
9
|
cardViewer: InstanceType<typeof CardViewer>;
|
|
@@ -46,6 +46,14 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
46
46
|
type: BooleanConstructor;
|
|
47
47
|
default: boolean;
|
|
48
48
|
};
|
|
49
|
+
transitionName: {
|
|
50
|
+
type: PropType<CardTransitionPreset | string>;
|
|
51
|
+
default: string;
|
|
52
|
+
};
|
|
53
|
+
transitionMode: {
|
|
54
|
+
type: PropType<CardTransitionMode>;
|
|
55
|
+
default: string;
|
|
56
|
+
};
|
|
49
57
|
}>, {}, {
|
|
50
58
|
cardID: string;
|
|
51
59
|
view: ViewComponent | null;
|
|
@@ -118,6 +126,14 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
118
126
|
type: BooleanConstructor;
|
|
119
127
|
default: boolean;
|
|
120
128
|
};
|
|
129
|
+
transitionName: {
|
|
130
|
+
type: PropType<CardTransitionPreset | string>;
|
|
131
|
+
default: string;
|
|
132
|
+
};
|
|
133
|
+
transitionMode: {
|
|
134
|
+
type: PropType<CardTransitionMode>;
|
|
135
|
+
default: string;
|
|
136
|
+
};
|
|
121
137
|
}>> & Readonly<{
|
|
122
138
|
"onSession-finished"?: ((...args: any[]) => any) | undefined;
|
|
123
139
|
"onSession-started"?: ((...args: any[]) => any) | undefined;
|
|
@@ -130,6 +146,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
130
146
|
frameless: boolean;
|
|
131
147
|
sessionConfig: StudySessionConfig;
|
|
132
148
|
hideFooter: boolean;
|
|
149
|
+
transitionName: string;
|
|
150
|
+
transitionMode: CardTransitionMode;
|
|
133
151
|
}, {}, {
|
|
134
152
|
CardViewer: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
135
153
|
sessionOrder: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StudySession.vue.d.ts","sourceRoot":"","sources":["../../src/components/StudySession.vue"],"names":[],"mappings":"AAwEA;AAAA,
|
|
1
|
+
{"version":3,"file":"StudySession.vue.d.ts","sourceRoot":"","sources":["../../src/components/StudySession.vue"],"names":[],"mappings":"AAwEA;AAAA,OAmqBO,EAAE,eAAe,EAAW,QAAQ,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAM/C,OAAO,UAAU,MAAM,gCAAgC,CAAC;AAGxD,OAAO,EAAE,SAAS,EAAuB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EACL,WAAW,EACX,UAAU,EAEV,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EAEjB,YAAY,EAEZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAEpG,UAAU,SAAS;IACjB,aAAa,EAAE,cAAc,CAAC;IAC9B,UAAU,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;CAC7C;AAED,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,GAAG;IACxD,KAAK,EAAE,SAAS,CAAC;CAClB,CAAC;;;;;;;cAqBmB,QAAQ,CAAC,eAAe,EAAE,CAAC;;;;cAI1B,QAAQ,CAAC,eAAe,CAAC;;;;cAIzB,QAAQ,CAAC,iBAAiB,CAAC;;;;cAI3B,QAAQ,CAAC,kBAAkB,CAAC;;;;;;cAI1B,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,CAAC;;;;;;;;;;;;cAY7C,QAAQ,CAAC,oBAAoB,GAAG,MAAM,CAAC;;;;cAIvC,QAAQ,CAAC,kBAAkB,CAAC;;;;;UAmB9B,aAAa,GAAG,IAAI;UACtB,QAAQ,EAAE;;;iBAGH;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;;uBAEtB,iBAAiB,CAAC,aAAa,CAAC,GAAG,IAAI;;;mBAG7C,kBAAkB,EAAE;;;;sBAIf,qBAAqB,GAAG,IAAI;2BACzB,kBAAkB,EAAE;;qBAExB,MAAM,CAAC,OAAO,GAAG,IAAI;;;;mBAOjC,kBAAkB;;uBA4Cd,MAAM,GAAG,SAAS;kCASxB,OAAO;;;;8BA2HM,MAAM,WAAW,MAAM,GAAG,MAAM;0BAI9B,aAAa,KAAK,UAAU;6BAkE/B,cAAc;;qBAsDhB,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;mBAO/C,YAAY,GAAG,IAAI;;;;;;;cA7XvB,QAAQ,CAAC,eAAe,EAAE,CAAC;;;;cAI1B,QAAQ,CAAC,eAAe,CAAC;;;;cAIzB,QAAQ,CAAC,iBAAiB,CAAC;;;;cAI3B,QAAQ,CAAC,kBAAkB,CAAC;;;;;;cAI1B,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,CAAC;;;;;;;;;;;;cAY7C,QAAQ,CAAC,oBAAoB,GAAG,MAAM,CAAC;;;;cAIvC,QAAQ,CAAC,kBAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAnDlD,wBA0bG"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export * from './composables/useEntitlements';
|
|
|
19
19
|
export { default as StudySession } from './components/StudySession.vue';
|
|
20
20
|
export { default as StudySessionTimer } from './components/StudySessionTimer.vue';
|
|
21
21
|
export { default as SessionControllerDebug } from './components/SessionControllerDebug.vue';
|
|
22
|
-
export type { StudySessionConfig } from './components/StudySession.types';
|
|
22
|
+
export type { StudySessionConfig, CardTransitionPreset, CardTransitionMode } from './components/StudySession.types';
|
|
23
23
|
export * from './components/studentInputs/BaseUserInput';
|
|
24
24
|
export { default as RadioMultipleChoice } from './components/studentInputs/RadioMultipleChoice.vue';
|
|
25
25
|
export { default as MultipleChoiceOption } from './components/studentInputs/MultipleChoiceOption.vue';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACpF,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAClF,cAAc,sCAAsC,CAAC;AAGrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAGlF,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAM9C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAC5F,YAAY,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.1.
|
|
6
|
+
"version": "0.1.29",
|
|
7
7
|
"main": "./dist/common-ui.umd.js",
|
|
8
8
|
"module": "./dist/common-ui.es.js",
|
|
9
9
|
"types": "./dist/index.d.ts",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"@highlightjs/vue-plugin": "^2.1.2",
|
|
34
34
|
"@mdi/font": "^7.3.67",
|
|
35
35
|
"@vojtechlanka/vue-tags-input": "^3",
|
|
36
|
-
"@vue-skuilder/common": "0.1.
|
|
37
|
-
"@vue-skuilder/db": "0.1.
|
|
36
|
+
"@vue-skuilder/common": "0.1.29",
|
|
37
|
+
"@vue-skuilder/db": "0.1.29",
|
|
38
38
|
"highlight.js": "^11.0.1",
|
|
39
39
|
"marked": "^15.0.6",
|
|
40
40
|
"moment": "^2.29.4",
|
|
@@ -70,5 +70,5 @@
|
|
|
70
70
|
"vite-plugin-dts": "^4.5.3",
|
|
71
71
|
"vitest": "^4.0.15"
|
|
72
72
|
},
|
|
73
|
-
"stableVersion": "0.1.
|
|
73
|
+
"stableVersion": "0.1.29"
|
|
74
74
|
}
|
|
@@ -4,3 +4,11 @@
|
|
|
4
4
|
export type StudySessionConfig = {
|
|
5
5
|
likesConfetti: boolean;
|
|
6
6
|
};
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Built-in card transition presets provided by StudySession.
|
|
10
|
+
* Consumers can also pass any custom string to use their own CSS transition classes.
|
|
11
|
+
*/
|
|
12
|
+
export type CardTransitionPreset = 'component-fade' | 'card-slide' | 'card-scale';
|
|
13
|
+
|
|
14
|
+
export type CardTransitionMode = 'out-in' | 'in-out' | 'default';
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
<heat-map :activity-records-getter="() => user.getActivityRecords()" />
|
|
22
22
|
</div>
|
|
23
23
|
|
|
24
|
-
<div v-else ref="shadowWrapper">
|
|
25
|
-
<transition name="
|
|
24
|
+
<div v-else ref="shadowWrapper" class="card-transition-container">
|
|
25
|
+
<transition :name="transitionName" :mode="transitionMode">
|
|
26
26
|
<card-viewer
|
|
27
27
|
ref="cardViewer"
|
|
28
28
|
:key="cardID"
|
|
@@ -101,7 +101,7 @@ import {
|
|
|
101
101
|
} from '@vue-skuilder/db';
|
|
102
102
|
import confetti from 'canvas-confetti';
|
|
103
103
|
|
|
104
|
-
import { StudySessionConfig } from './StudySession.types';
|
|
104
|
+
import { StudySessionConfig, CardTransitionPreset, CardTransitionMode } from './StudySession.types';
|
|
105
105
|
|
|
106
106
|
interface StudyRefs {
|
|
107
107
|
shadowWrapper: HTMLDivElement;
|
|
@@ -158,6 +158,14 @@ export default defineComponent({
|
|
|
158
158
|
type: Boolean,
|
|
159
159
|
default: false,
|
|
160
160
|
},
|
|
161
|
+
transitionName: {
|
|
162
|
+
type: String as PropType<CardTransitionPreset | string>,
|
|
163
|
+
default: 'component-fade',
|
|
164
|
+
},
|
|
165
|
+
transitionMode: {
|
|
166
|
+
type: String as PropType<CardTransitionMode>,
|
|
167
|
+
default: 'out-in',
|
|
168
|
+
},
|
|
161
169
|
},
|
|
162
170
|
|
|
163
171
|
emits: [
|
|
@@ -446,13 +454,15 @@ export default defineComponent({
|
|
|
446
454
|
handleUIFeedback(result: ResponseResult) {
|
|
447
455
|
if (result.isCorrect) {
|
|
448
456
|
// Handle correct response UI
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
this.$refs.shadowWrapper
|
|
452
|
-
|
|
457
|
+
if (!this.frameless) {
|
|
458
|
+
try {
|
|
459
|
+
if (this.$refs.shadowWrapper && result.performanceScore !== undefined) {
|
|
460
|
+
this.$refs.shadowWrapper.setAttribute('style', `--r: ${255 * (1 - result.performanceScore)}; --g:${255}`);
|
|
461
|
+
this.$refs.shadowWrapper.classList.add('correct');
|
|
462
|
+
}
|
|
463
|
+
} catch (e) {
|
|
464
|
+
console.warn(`[StudySession] Error setting shadowWrapper style: ${e}`);
|
|
453
465
|
}
|
|
454
|
-
} catch (e) {
|
|
455
|
-
console.warn(`[StudySession] Error setting shadowWrapper style: ${e}`);
|
|
456
466
|
}
|
|
457
467
|
|
|
458
468
|
// Show confetti for correct responses
|
|
@@ -468,17 +478,21 @@ export default defineComponent({
|
|
|
468
478
|
}
|
|
469
479
|
} else {
|
|
470
480
|
// Handle incorrect response UI
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
this.$refs.shadowWrapper
|
|
481
|
+
if (!this.frameless) {
|
|
482
|
+
try {
|
|
483
|
+
if (this.$refs.shadowWrapper) {
|
|
484
|
+
this.$refs.shadowWrapper.classList.add('incorrect');
|
|
485
|
+
}
|
|
486
|
+
} catch (e) {
|
|
487
|
+
console.warn(`[StudySession] Error setting shadowWrapper style: ${e}`);
|
|
474
488
|
}
|
|
475
|
-
} catch (e) {
|
|
476
|
-
console.warn(`[StudySession] Error setting shadowWrapper style: ${e}`);
|
|
477
489
|
}
|
|
478
490
|
}
|
|
479
491
|
},
|
|
480
492
|
|
|
481
493
|
clearFeedbackShadow() {
|
|
494
|
+
if (this.frameless) return;
|
|
495
|
+
|
|
482
496
|
setTimeout(() => {
|
|
483
497
|
try {
|
|
484
498
|
if (this.$refs.shadowWrapper) {
|
|
@@ -571,6 +585,12 @@ a {
|
|
|
571
585
|
text-decoration: underline;
|
|
572
586
|
}
|
|
573
587
|
|
|
588
|
+
.card-transition-container {
|
|
589
|
+
position: relative;
|
|
590
|
+
overflow: hidden;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
/* Preset: component-fade (default) — simple opacity crossfade, use with mode="out-in" */
|
|
574
594
|
.component-fade-enter-active,
|
|
575
595
|
.component-fade-leave-active {
|
|
576
596
|
transition: opacity 0.2s ease;
|
|
@@ -580,6 +600,42 @@ a {
|
|
|
580
600
|
opacity: 0;
|
|
581
601
|
}
|
|
582
602
|
|
|
603
|
+
/* Preset: card-slide — simultaneous slide left-out / right-in, use with mode="default" */
|
|
604
|
+
.card-slide-leave-active {
|
|
605
|
+
transition: transform 200ms ease-in, opacity 200ms ease-in;
|
|
606
|
+
position: absolute;
|
|
607
|
+
width: 100%;
|
|
608
|
+
top: 0;
|
|
609
|
+
left: 0;
|
|
610
|
+
}
|
|
611
|
+
.card-slide-enter-active {
|
|
612
|
+
transition: transform 200ms ease-out, opacity 150ms ease-out;
|
|
613
|
+
}
|
|
614
|
+
.card-slide-leave-to {
|
|
615
|
+
transform: translateX(-100%);
|
|
616
|
+
opacity: 0.2;
|
|
617
|
+
}
|
|
618
|
+
.card-slide-enter-from {
|
|
619
|
+
transform: translateX(100%);
|
|
620
|
+
opacity: 0.6;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
/* Preset: card-scale — scale-down exit / gentle overshoot enter, use with mode="out-in" */
|
|
624
|
+
.card-scale-leave-active {
|
|
625
|
+
transition: transform 150ms ease-in, opacity 150ms ease-in;
|
|
626
|
+
}
|
|
627
|
+
.card-scale-enter-active {
|
|
628
|
+
transition: transform 200ms cubic-bezier(0.34, 1.4, 0.64, 1), opacity 150ms ease-out;
|
|
629
|
+
}
|
|
630
|
+
.card-scale-leave-to {
|
|
631
|
+
transform: scale(0.92);
|
|
632
|
+
opacity: 0;
|
|
633
|
+
}
|
|
634
|
+
.card-scale-enter-from {
|
|
635
|
+
transform: scale(1.03);
|
|
636
|
+
opacity: 0;
|
|
637
|
+
}
|
|
638
|
+
|
|
583
639
|
@keyframes varFade {
|
|
584
640
|
0% {
|
|
585
641
|
box-shadow:
|
package/src/index.ts
CHANGED
|
@@ -36,7 +36,7 @@ export * from './composables/useEntitlements';
|
|
|
36
36
|
export { default as StudySession } from './components/StudySession.vue';
|
|
37
37
|
export { default as StudySessionTimer } from './components/StudySessionTimer.vue';
|
|
38
38
|
export { default as SessionControllerDebug } from './components/SessionControllerDebug.vue';
|
|
39
|
-
export type { StudySessionConfig } from './components/StudySession.types';
|
|
39
|
+
export type { StudySessionConfig, CardTransitionPreset, CardTransitionMode } from './components/StudySession.types';
|
|
40
40
|
|
|
41
41
|
/*
|
|
42
42
|
studentInputs
|