@villetorio/lms-feedback-widget 1.0.2-dev → 1.0.4-dev
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/README.md +10 -11
- package/dist/index.cjs +16 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +16 -5
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +16 -5
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @villetorio/lms-
|
|
1
|
+
# @villetorio/lms-feedback-widget
|
|
2
2
|
|
|
3
3
|
> Framework-agnostic floating feedback widget. Works in Sapper, SvelteKit, Next.js, React, Vue, and plain HTML — zero framework dependencies.
|
|
4
4
|
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
|
|
9
9
|
- ⭐ Star rating (1–5)
|
|
10
10
|
- 💬 Optional message textarea
|
|
11
|
-
- 🎨 LegalMatch brand styling (navy + gold)
|
|
12
11
|
- ✅ Success / error states
|
|
13
12
|
- ♿ Accessible (ARIA labels, keyboard support)
|
|
14
13
|
- 🌙 Click-outside to close
|
|
@@ -20,12 +19,12 @@
|
|
|
20
19
|
## Installation
|
|
21
20
|
|
|
22
21
|
```bash
|
|
23
|
-
npm install @villetorio/lms-
|
|
22
|
+
npm install @villetorio/lms-feedback-widget
|
|
24
23
|
```
|
|
25
24
|
|
|
26
25
|
For projects with peer dependency conflicts (e.g. old Svelte 3 / Rollup 1):
|
|
27
26
|
```bash
|
|
28
|
-
npm install @villetorio/lms-
|
|
27
|
+
npm install @villetorio/lms-feedback-widget --legacy-peer-deps
|
|
29
28
|
```
|
|
30
29
|
|
|
31
30
|
---
|
|
@@ -42,7 +41,7 @@ npm install @villetorio/lms-svelte-feedback-widget --legacy-peer-deps
|
|
|
42
41
|
<!-- src/routes/_layout.svelte -->
|
|
43
42
|
<script>
|
|
44
43
|
import { onMount } from 'svelte';
|
|
45
|
-
import { FeedbackWidget } from '@villetorio/lms-
|
|
44
|
+
import { FeedbackWidget } from '@villetorio/lms-feedback-widget';
|
|
46
45
|
|
|
47
46
|
onMount(() => {
|
|
48
47
|
FeedbackWidget({ apiRoute: '/api/feedback', appName: 'My App' });
|
|
@@ -71,7 +70,7 @@ export async function post(req, res) {
|
|
|
71
70
|
<!-- src/routes/+layout.svelte -->
|
|
72
71
|
<script>
|
|
73
72
|
import { onMount } from 'svelte';
|
|
74
|
-
import { FeedbackWidget } from '@villetorio/lms-
|
|
73
|
+
import { FeedbackWidget } from '@villetorio/lms-feedback-widget';
|
|
75
74
|
|
|
76
75
|
onMount(() => {
|
|
77
76
|
FeedbackWidget({ apiRoute: '/api/feedback', appName: 'My App' });
|
|
@@ -103,7 +102,7 @@ export const POST: RequestHandler = async ({ request }) => {
|
|
|
103
102
|
'use client';
|
|
104
103
|
|
|
105
104
|
import { useEffect } from 'react';
|
|
106
|
-
import { FeedbackWidget } from '@villetorio/lms-
|
|
105
|
+
import { FeedbackWidget } from '@villetorio/lms-feedback-widget';
|
|
107
106
|
|
|
108
107
|
export default function FeedbackWidgetLoader() {
|
|
109
108
|
useEffect(() => {
|
|
@@ -149,7 +148,7 @@ export async function POST(req: NextRequest) {
|
|
|
149
148
|
```tsx
|
|
150
149
|
// FeedbackWidgetLoader.tsx
|
|
151
150
|
import { useEffect } from 'react';
|
|
152
|
-
import { FeedbackWidget } from '@villetorio/lms-
|
|
151
|
+
import { FeedbackWidget } from '@villetorio/lms-feedback-widget';
|
|
153
152
|
|
|
154
153
|
export default function FeedbackWidgetLoader() {
|
|
155
154
|
useEffect(() => {
|
|
@@ -182,7 +181,7 @@ export default function App() {
|
|
|
182
181
|
<!-- App.vue or a layout component -->
|
|
183
182
|
<script setup>
|
|
184
183
|
import { onMounted } from 'vue';
|
|
185
|
-
import { FeedbackWidget } from '@villetorio/lms-
|
|
184
|
+
import { FeedbackWidget } from '@villetorio/lms-feedback-widget';
|
|
186
185
|
|
|
187
186
|
onMounted(() => {
|
|
188
187
|
FeedbackWidget({ apiRoute: '/api/feedback', appName: 'My App' });
|
|
@@ -199,7 +198,7 @@ onMounted(() => {
|
|
|
199
198
|
### Plain HTML (no bundler)
|
|
200
199
|
|
|
201
200
|
```html
|
|
202
|
-
<script src="node_modules/@villetorio/lms-
|
|
201
|
+
<script src="node_modules/@villetorio/lms-feedback-widget/dist/index.umd.js"></script>
|
|
203
202
|
<script>
|
|
204
203
|
LMSFeedbackWidget.FeedbackWidget({
|
|
205
204
|
apiRoute: '/api/feedback',
|
|
@@ -210,7 +209,7 @@ onMounted(() => {
|
|
|
210
209
|
|
|
211
210
|
Or via CDN:
|
|
212
211
|
```html
|
|
213
|
-
<script src="https://unpkg.com/@villetorio/lms-
|
|
212
|
+
<script src="https://unpkg.com/@villetorio/lms-feedback-widget/dist/index.umd.js"></script>
|
|
214
213
|
<script>
|
|
215
214
|
LMSFeedbackWidget.FeedbackWidget({ apiRoute: '/api/feedback', appName: 'My App' });
|
|
216
215
|
</script>
|
package/dist/index.cjs
CHANGED
|
@@ -21,7 +21,7 @@ const CSS = `
|
|
|
21
21
|
background:#2c3e6b; color:#fff; padding:16px 18px 14px;
|
|
22
22
|
display:flex; align-items:flex-start; justify-content:space-between;
|
|
23
23
|
}
|
|
24
|
-
.fw2-header-text h3 { font-size:15px; font-weight:600; margin:0 0 3px; line-height:1.3; }
|
|
24
|
+
.fw2-header-text h3 { font-size:15px; font-weight:600; margin:0 0 3px; line-height:1.3; color:#fff; }
|
|
25
25
|
.fw2-header-text p { font-size:12px; opacity:.75; margin:0; }
|
|
26
26
|
.fw2-close-x { background:none; border:none; color:#fff; cursor:pointer; font-size:22px; line-height:1; opacity:.8; padding:0; margin-left:8px; }
|
|
27
27
|
.fw2-close-x:hover { opacity:1; }
|
|
@@ -131,7 +131,7 @@ function FeedbackWidget(opts = {}) {
|
|
|
131
131
|
}
|
|
132
132
|
function renderForm() {
|
|
133
133
|
const stars = [1, 2, 3, 4, 5].map(s => `
|
|
134
|
-
<button class="fw2-star${s <= rating ? ' active' : ''}
|
|
134
|
+
<button class="fw2-star${s <= rating ? ' active' : ''}"
|
|
135
135
|
data-star="${s}" aria-label="${s} star${s > 1 ? 's' : ''}" aria-pressed="${s <= rating}">★</button>
|
|
136
136
|
`).join('');
|
|
137
137
|
return `
|
|
@@ -146,6 +146,17 @@ function FeedbackWidget(opts = {}) {
|
|
|
146
146
|
</button>
|
|
147
147
|
</div>`;
|
|
148
148
|
}
|
|
149
|
+
// ── Update star states ──────────────────────────────────────────────────
|
|
150
|
+
function updateStarStates() {
|
|
151
|
+
wrap.querySelectorAll('.fw2-star').forEach(btn => {
|
|
152
|
+
const starValue = Number(btn.dataset.star);
|
|
153
|
+
const isActive = starValue <= rating;
|
|
154
|
+
const isHover = starValue <= hoverRating && starValue > rating;
|
|
155
|
+
btn.classList.toggle('active', isActive);
|
|
156
|
+
btn.classList.toggle('hover', isHover);
|
|
157
|
+
btn.setAttribute('aria-pressed', String(isActive));
|
|
158
|
+
});
|
|
159
|
+
}
|
|
149
160
|
// ── Event binding ────────────────────────────────────────────────────────
|
|
150
161
|
function bindEvents() {
|
|
151
162
|
var _a, _b, _c, _d, _e;
|
|
@@ -167,15 +178,15 @@ function FeedbackWidget(opts = {}) {
|
|
|
167
178
|
wrap.querySelectorAll('.fw2-star').forEach(btn => {
|
|
168
179
|
btn.addEventListener('click', () => {
|
|
169
180
|
rating = Number(btn.dataset.star);
|
|
170
|
-
|
|
181
|
+
updateStarStates();
|
|
171
182
|
});
|
|
172
183
|
btn.addEventListener('mouseenter', () => {
|
|
173
184
|
hoverRating = Number(btn.dataset.star);
|
|
174
|
-
|
|
185
|
+
updateStarStates();
|
|
175
186
|
});
|
|
176
187
|
btn.addEventListener('mouseleave', () => {
|
|
177
188
|
hoverRating = 0;
|
|
178
|
-
|
|
189
|
+
updateStarStates();
|
|
179
190
|
});
|
|
180
191
|
});
|
|
181
192
|
// Textarea — preserve value without full re-render
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/FeedbackWidget.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAkBA,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqEX;AAED,MAAM,SAAS,GAAG,CAAA,2OAAA,CAA6O;AAC/P,MAAM,SAAS,GAAG,CAAA,iOAAA,CAAmO;AACrP,MAAM,UAAU,GAAG,CAAA,6LAAA,CAA+L;AAClN,MAAM,UAAU,GAAG,CAAA,4MAAA,CAA8M;AAE3N,SAAU,cAAc,CAAC,IAAA,GAA8B,EAAE,EAAA;IAC7D,MAAM,EACJ,QAAQ,GAAI,eAAe,EAC3B,MAAM,GAAM,EAAE,EACd,KAAK,GAAO,qBAAqB,EACjC,QAAQ,GAAI,iBAAiB,EAC7B,OAAO,GAAK,KAAK,EACjB,SAAS,EACT,OAAO,GACR,GAAG,IAAI;;IAGR,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;QAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,QAAA,KAAK,CAAC,EAAE,GAAG,YAAY;AACvB,QAAA,KAAK,CAAC,WAAW,GAAG,GAAG;AACvB,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IAClC;;IAGA,IAAI,IAAI,GAAU,KAAK;IACvB,IAAI,MAAM,GAAQ,CAAC;IACnB,IAAI,WAAW,GAAG,CAAC;IACnB,IAAI,OAAO,GAAO,EAAE;IACpB,IAAI,MAAM,GAA6C,MAAM;IAC7D,IAAI,QAAQ,GAAM,EAAE;;IAGpB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC1C,IAAA,IAAI,CAAC,SAAS,GAAG,UAAU;AAC3B,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;;AAG/B,IAAA,SAAS,MAAM,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,WAAW,EAAE,GAAG,SAAS,EAAE;AACnD,QAAA,UAAU,EAAE;IACd;AAEA,IAAA,SAAS,SAAS,GAAA;QAChB,OAAO,CAAA,oEAAA,EAAuE,SAAS,CAAA,kBAAA,CAAoB;IAC7G;AAEA,IAAA,SAAS,WAAW,GAAA;QAClB,OAAO;;;;;oBAKS,KAAK,CAAA;mBACN,QAAQ,CAAA;;;;YAIf,MAAM,KAAK,SAAS,GAAG,aAAa,EAAE,GAAG,UAAU,EAAE;;;wCAGzB,UAAU,CAAA;;aAErC;IACX;AAEA,IAAA,SAAS,aAAa,GAAA;QACpB,OAAO;;wCAE6B,UAAU,CAAA;;oDAEE,OAAO,CAAA;;aAE9C;IACX;AAEA,IAAA,SAAS,UAAU,GAAA;AACjB,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI;+BACR,CAAC,IAAI,MAAM,GAAG,SAAS,GAAG,EAAE,CAAA
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/FeedbackWidget.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ const CSS = `
|
|
|
19
19
|
background:#2c3e6b; color:#fff; padding:16px 18px 14px;
|
|
20
20
|
display:flex; align-items:flex-start; justify-content:space-between;
|
|
21
21
|
}
|
|
22
|
-
.fw2-header-text h3 { font-size:15px; font-weight:600; margin:0 0 3px; line-height:1.3; }
|
|
22
|
+
.fw2-header-text h3 { font-size:15px; font-weight:600; margin:0 0 3px; line-height:1.3; color:#fff; }
|
|
23
23
|
.fw2-header-text p { font-size:12px; opacity:.75; margin:0; }
|
|
24
24
|
.fw2-close-x { background:none; border:none; color:#fff; cursor:pointer; font-size:22px; line-height:1; opacity:.8; padding:0; margin-left:8px; }
|
|
25
25
|
.fw2-close-x:hover { opacity:1; }
|
|
@@ -129,7 +129,7 @@ function FeedbackWidget(opts = {}) {
|
|
|
129
129
|
}
|
|
130
130
|
function renderForm() {
|
|
131
131
|
const stars = [1, 2, 3, 4, 5].map(s => `
|
|
132
|
-
<button class="fw2-star${s <= rating ? ' active' : ''}
|
|
132
|
+
<button class="fw2-star${s <= rating ? ' active' : ''}"
|
|
133
133
|
data-star="${s}" aria-label="${s} star${s > 1 ? 's' : ''}" aria-pressed="${s <= rating}">★</button>
|
|
134
134
|
`).join('');
|
|
135
135
|
return `
|
|
@@ -144,6 +144,17 @@ function FeedbackWidget(opts = {}) {
|
|
|
144
144
|
</button>
|
|
145
145
|
</div>`;
|
|
146
146
|
}
|
|
147
|
+
// ── Update star states ──────────────────────────────────────────────────
|
|
148
|
+
function updateStarStates() {
|
|
149
|
+
wrap.querySelectorAll('.fw2-star').forEach(btn => {
|
|
150
|
+
const starValue = Number(btn.dataset.star);
|
|
151
|
+
const isActive = starValue <= rating;
|
|
152
|
+
const isHover = starValue <= hoverRating && starValue > rating;
|
|
153
|
+
btn.classList.toggle('active', isActive);
|
|
154
|
+
btn.classList.toggle('hover', isHover);
|
|
155
|
+
btn.setAttribute('aria-pressed', String(isActive));
|
|
156
|
+
});
|
|
157
|
+
}
|
|
147
158
|
// ── Event binding ────────────────────────────────────────────────────────
|
|
148
159
|
function bindEvents() {
|
|
149
160
|
var _a, _b, _c, _d, _e;
|
|
@@ -165,15 +176,15 @@ function FeedbackWidget(opts = {}) {
|
|
|
165
176
|
wrap.querySelectorAll('.fw2-star').forEach(btn => {
|
|
166
177
|
btn.addEventListener('click', () => {
|
|
167
178
|
rating = Number(btn.dataset.star);
|
|
168
|
-
|
|
179
|
+
updateStarStates();
|
|
169
180
|
});
|
|
170
181
|
btn.addEventListener('mouseenter', () => {
|
|
171
182
|
hoverRating = Number(btn.dataset.star);
|
|
172
|
-
|
|
183
|
+
updateStarStates();
|
|
173
184
|
});
|
|
174
185
|
btn.addEventListener('mouseleave', () => {
|
|
175
186
|
hoverRating = 0;
|
|
176
|
-
|
|
187
|
+
updateStarStates();
|
|
177
188
|
});
|
|
178
189
|
});
|
|
179
190
|
// Textarea — preserve value without full re-render
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/FeedbackWidget.ts"],"sourcesContent":[null],"names":[],"mappings":"AAkBA,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqEX;AAED,MAAM,SAAS,GAAG,CAAA,2OAAA,CAA6O;AAC/P,MAAM,SAAS,GAAG,CAAA,iOAAA,CAAmO;AACrP,MAAM,UAAU,GAAG,CAAA,6LAAA,CAA+L;AAClN,MAAM,UAAU,GAAG,CAAA,4MAAA,CAA8M;AAE3N,SAAU,cAAc,CAAC,IAAA,GAA8B,EAAE,EAAA;IAC7D,MAAM,EACJ,QAAQ,GAAI,eAAe,EAC3B,MAAM,GAAM,EAAE,EACd,KAAK,GAAO,qBAAqB,EACjC,QAAQ,GAAI,iBAAiB,EAC7B,OAAO,GAAK,KAAK,EACjB,SAAS,EACT,OAAO,GACR,GAAG,IAAI;;IAGR,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;QAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,QAAA,KAAK,CAAC,EAAE,GAAG,YAAY;AACvB,QAAA,KAAK,CAAC,WAAW,GAAG,GAAG;AACvB,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IAClC;;IAGA,IAAI,IAAI,GAAU,KAAK;IACvB,IAAI,MAAM,GAAQ,CAAC;IACnB,IAAI,WAAW,GAAG,CAAC;IACnB,IAAI,OAAO,GAAO,EAAE;IACpB,IAAI,MAAM,GAA6C,MAAM;IAC7D,IAAI,QAAQ,GAAM,EAAE;;IAGpB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC1C,IAAA,IAAI,CAAC,SAAS,GAAG,UAAU;AAC3B,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;;AAG/B,IAAA,SAAS,MAAM,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,WAAW,EAAE,GAAG,SAAS,EAAE;AACnD,QAAA,UAAU,EAAE;IACd;AAEA,IAAA,SAAS,SAAS,GAAA;QAChB,OAAO,CAAA,oEAAA,EAAuE,SAAS,CAAA,kBAAA,CAAoB;IAC7G;AAEA,IAAA,SAAS,WAAW,GAAA;QAClB,OAAO;;;;;oBAKS,KAAK,CAAA;mBACN,QAAQ,CAAA;;;;YAIf,MAAM,KAAK,SAAS,GAAG,aAAa,EAAE,GAAG,UAAU,EAAE;;;wCAGzB,UAAU,CAAA;;aAErC;IACX;AAEA,IAAA,SAAS,aAAa,GAAA;QACpB,OAAO;;wCAE6B,UAAU,CAAA;;oDAEE,OAAO,CAAA;;aAE9C;IACX;AAEA,IAAA,SAAS,UAAU,GAAA;AACjB,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI;+BACR,CAAC,IAAI,MAAM,GAAG,SAAS,GAAG,EAAE,CAAA
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/FeedbackWidget.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/index.umd.js
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
background:#2c3e6b; color:#fff; padding:16px 18px 14px;
|
|
26
26
|
display:flex; align-items:flex-start; justify-content:space-between;
|
|
27
27
|
}
|
|
28
|
-
.fw2-header-text h3 { font-size:15px; font-weight:600; margin:0 0 3px; line-height:1.3; }
|
|
28
|
+
.fw2-header-text h3 { font-size:15px; font-weight:600; margin:0 0 3px; line-height:1.3; color:#fff; }
|
|
29
29
|
.fw2-header-text p { font-size:12px; opacity:.75; margin:0; }
|
|
30
30
|
.fw2-close-x { background:none; border:none; color:#fff; cursor:pointer; font-size:22px; line-height:1; opacity:.8; padding:0; margin-left:8px; }
|
|
31
31
|
.fw2-close-x:hover { opacity:1; }
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
}
|
|
136
136
|
function renderForm() {
|
|
137
137
|
const stars = [1, 2, 3, 4, 5].map(s => `
|
|
138
|
-
<button class="fw2-star${s <= rating ? ' active' : ''}
|
|
138
|
+
<button class="fw2-star${s <= rating ? ' active' : ''}"
|
|
139
139
|
data-star="${s}" aria-label="${s} star${s > 1 ? 's' : ''}" aria-pressed="${s <= rating}">★</button>
|
|
140
140
|
`).join('');
|
|
141
141
|
return `
|
|
@@ -150,6 +150,17 @@
|
|
|
150
150
|
</button>
|
|
151
151
|
</div>`;
|
|
152
152
|
}
|
|
153
|
+
// ── Update star states ──────────────────────────────────────────────────
|
|
154
|
+
function updateStarStates() {
|
|
155
|
+
wrap.querySelectorAll('.fw2-star').forEach(btn => {
|
|
156
|
+
const starValue = Number(btn.dataset.star);
|
|
157
|
+
const isActive = starValue <= rating;
|
|
158
|
+
const isHover = starValue <= hoverRating && starValue > rating;
|
|
159
|
+
btn.classList.toggle('active', isActive);
|
|
160
|
+
btn.classList.toggle('hover', isHover);
|
|
161
|
+
btn.setAttribute('aria-pressed', String(isActive));
|
|
162
|
+
});
|
|
163
|
+
}
|
|
153
164
|
// ── Event binding ────────────────────────────────────────────────────────
|
|
154
165
|
function bindEvents() {
|
|
155
166
|
var _a, _b, _c, _d, _e;
|
|
@@ -171,15 +182,15 @@
|
|
|
171
182
|
wrap.querySelectorAll('.fw2-star').forEach(btn => {
|
|
172
183
|
btn.addEventListener('click', () => {
|
|
173
184
|
rating = Number(btn.dataset.star);
|
|
174
|
-
|
|
185
|
+
updateStarStates();
|
|
175
186
|
});
|
|
176
187
|
btn.addEventListener('mouseenter', () => {
|
|
177
188
|
hoverRating = Number(btn.dataset.star);
|
|
178
|
-
|
|
189
|
+
updateStarStates();
|
|
179
190
|
});
|
|
180
191
|
btn.addEventListener('mouseleave', () => {
|
|
181
192
|
hoverRating = 0;
|
|
182
|
-
|
|
193
|
+
updateStarStates();
|
|
183
194
|
});
|
|
184
195
|
});
|
|
185
196
|
// Textarea — preserve value without full re-render
|
package/dist/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/FeedbackWidget.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;EAkBA,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqEX;EAED,MAAM,SAAS,GAAG,CAAA,2OAAA,CAA6O;EAC/P,MAAM,SAAS,GAAG,CAAA,iOAAA,CAAmO;EACrP,MAAM,UAAU,GAAG,CAAA,6LAAA,CAA+L;EAClN,MAAM,UAAU,GAAG,CAAA,4MAAA,CAA8M;EAE3N,SAAU,cAAc,CAAC,IAAA,GAA8B,EAAE,EAAA;MAC7D,MAAM,EACJ,QAAQ,GAAI,eAAe,EAC3B,MAAM,GAAM,EAAE,EACd,KAAK,GAAO,qBAAqB,EACjC,QAAQ,GAAI,iBAAiB,EAC7B,OAAO,GAAK,KAAK,EACjB,SAAS,EACT,OAAO,GACR,GAAG,IAAI;;MAGR,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;UAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;EAC7C,QAAA,KAAK,CAAC,EAAE,GAAG,YAAY;EACvB,QAAA,KAAK,CAAC,WAAW,GAAG,GAAG;EACvB,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;MAClC;;MAGA,IAAI,IAAI,GAAU,KAAK;MACvB,IAAI,MAAM,GAAQ,CAAC;MACnB,IAAI,WAAW,GAAG,CAAC;MACnB,IAAI,OAAO,GAAO,EAAE;MACpB,IAAI,MAAM,GAA6C,MAAM;MAC7D,IAAI,QAAQ,GAAM,EAAE;;MAGpB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;EAC1C,IAAA,IAAI,CAAC,SAAS,GAAG,UAAU;EAC3B,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;;EAG/B,IAAA,SAAS,MAAM,GAAA;EACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,WAAW,EAAE,GAAG,SAAS,EAAE;EACnD,QAAA,UAAU,EAAE;MACd;EAEA,IAAA,SAAS,SAAS,GAAA;UAChB,OAAO,CAAA,oEAAA,EAAuE,SAAS,CAAA,kBAAA,CAAoB;MAC7G;EAEA,IAAA,SAAS,WAAW,GAAA;UAClB,OAAO;;;;;oBAKS,KAAK,CAAA;mBACN,QAAQ,CAAA;;;;YAIf,MAAM,KAAK,SAAS,GAAG,aAAa,EAAE,GAAG,UAAU,EAAE;;;wCAGzB,UAAU,CAAA;;aAErC;MACX;EAEA,IAAA,SAAS,aAAa,GAAA;UACpB,OAAO;;wCAE6B,UAAU,CAAA;;oDAEE,OAAO,CAAA;;aAE9C;MACX;EAEA,IAAA,SAAS,UAAU,GAAA;EACjB,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI;+BACR,CAAC,IAAI,MAAM,GAAG,SAAS,GAAG,EAAE,CAAA
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/FeedbackWidget.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@villetorio/lms-feedback-widget",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4-dev",
|
|
4
4
|
"description": "Floating feedback widget — framework agnostic, works in Svelte, SvelteKit, Sapper, React, Vue, plain HTML",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"private": false,
|