@magicfeedback/popup-sdk 1.9.0 → 1.11.0
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 +23 -1
- package/dist/assets/assets/style.css +303 -1
- package/dist/{chunk-MTV7T4OW.mjs → chunk-GXEPYT33.mjs} +304 -2
- package/dist/{chunk-MTV7T4OW.mjs.map → chunk-GXEPYT33.mjs.map} +1 -1
- package/dist/{chunk-AKVMUQXO.mjs → chunk-TSORXOQG.mjs} +304 -2
- package/dist/{chunk-AKVMUQXO.mjs.map → chunk-TSORXOQG.mjs.map} +1 -1
- package/dist/index.d.mts +57 -1
- package/dist/index.d.ts +57 -1
- package/dist/index.js +1752 -898
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +229 -16
- package/dist/index.mjs.map +1 -1
- package/dist/react-native.d.mts +52 -1
- package/dist/react-native.d.ts +52 -1
- package/dist/react-native.js +556 -21
- package/dist/react-native.js.map +1 -1
- package/dist/react-native.mjs +230 -16
- package/dist/react-native.mjs.map +1 -1
- package/dist/{renderPopup-LEM2MLWT.mjs → renderPopup-JF6IB6HL.mjs} +29 -10
- package/dist/renderPopup-JF6IB6HL.mjs.map +1 -0
- package/dist/{renderPopup-LEGTSBLD.mjs → renderPopup-KSZJ5AN4.mjs} +1231 -892
- package/dist/renderPopup-KSZJ5AN4.mjs.map +1 -0
- package/package.json +5 -3
- package/dist/renderPopup-LEGTSBLD.mjs.map +0 -1
- package/dist/renderPopup-LEM2MLWT.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -215,6 +215,26 @@ const renderer = new ReactNativePopupRenderer({
|
|
|
215
215
|
`onReady` is optional: a host that opens its container on `onShow` still never shows the spinner,
|
|
216
216
|
because the HTML reveals itself; the container just appears a few hundred ms before the card.
|
|
217
217
|
|
|
218
|
+
### Focus on text questions
|
|
219
|
+
|
|
220
|
+
When the first question of a page is a text field (text, long text, email or number), the cursor
|
|
221
|
+
is placed in it so the user can start typing:
|
|
222
|
+
|
|
223
|
+
- **When the popup opens:** only on devices with a mouse or trackpad (`pointer: fine`). On touch
|
|
224
|
+
devices it does nothing, so the keyboard never pops up over a popup the user has not touched.
|
|
225
|
+
- **After Start, Next or Back:** on every device, since the user has just tapped.
|
|
226
|
+
|
|
227
|
+
Only the first question counts: if the page starts with a rating and the text field comes after
|
|
228
|
+
it, nothing is focused. The focus is never taken away from a field of the host page.
|
|
229
|
+
|
|
230
|
+
The focus itself comes from `@magicfeedback/native` (its `autofocus` option, which the popup sets
|
|
231
|
+
to `'navigation'`, and `focusFirstQuestion()` when the popup is revealed). Versions of
|
|
232
|
+
`@magicfeedback/native` without that option simply ignore it.
|
|
233
|
+
|
|
234
|
+
In React Native on iOS, the WebView ignores focus set from JavaScript unless the keyboard is
|
|
235
|
+
allowed to open without a direct tap. `DeepdotsProvider` already does this; if you mount the
|
|
236
|
+
WebView yourself, add `keyboardDisplayRequiresUserAction={false}` to it.
|
|
237
|
+
|
|
218
238
|
### `autoLaunch()`
|
|
219
239
|
|
|
220
240
|
Starts the triggers derived from the popup definitions loaded during `init()`.
|
|
@@ -237,6 +257,8 @@ Example:
|
|
|
237
257
|
popups.triggerEvent('search');
|
|
238
258
|
```
|
|
239
259
|
|
|
260
|
+
It can be called right after `init()`: if the popup definitions are still loading, the event is kept and evaluated as soon as they arrive (the same applies to `triggerSurvey`).
|
|
261
|
+
|
|
240
262
|
### `triggerSurvey(surveyId, popupId?)`
|
|
241
263
|
|
|
242
264
|
Opens a specific survey directly, bypassing trigger evaluation.
|
|
@@ -500,7 +522,7 @@ interface DeepdotsEvent {
|
|
|
500
522
|
- `action`
|
|
501
523
|
- `userId`
|
|
502
524
|
|
|
503
|
-
`popup_clicked`
|
|
525
|
+
`popup_clicked` means the user did something in the popup. On the web, `data.action` is one of `start_survey`, `manual_send`, `back`, `complete`, `close_icon`, or `partial` (the user answered a page and moved on; this one also marks the popup as `PARTIAL` in the backend). Loading the survey, the start of a submit, and validation or submit errors are not interactions and do not emit it. In React Native the bridge emits it once per popup, with `action: 'partial'`, on the first real interaction (sending an answer or going back).
|
|
504
526
|
|
|
505
527
|
## Important Behavior Notes
|
|
506
528
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* NO EDITAR A MANO — generado por scripts/vendor-survey-css.mjs
|
|
3
3
|
*
|
|
4
|
-
* Copia de @magicfeedback/native@2.2.
|
|
4
|
+
* Copia de @magicfeedback/native@2.2.31 → dist/styles/magicfeedback-default.css
|
|
5
5
|
* (la hoja canónica del paquete, la que apunta su campo "style"), con estos cambios locales:
|
|
6
6
|
*
|
|
7
7
|
* 1. Sin el @import de Google Fonts (Nunito): no queremos una petición externa desde la
|
|
@@ -985,6 +985,9 @@ div.magicfeedback-radio {
|
|
|
985
985
|
width: 100%;
|
|
986
986
|
overflow-x: auto;
|
|
987
987
|
border-radius: var(--mf-radius-md);
|
|
988
|
+
/* the layout follows the space the survey gets (a pop-in, a sidebar),
|
|
989
|
+
not the size of the window */
|
|
990
|
+
container-type: inline-size;
|
|
988
991
|
}
|
|
989
992
|
|
|
990
993
|
.magicfeedback-multi-question-matrix-table {
|
|
@@ -1036,6 +1039,296 @@ div.magicfeedback-radio {
|
|
|
1036
1039
|
accent-color: var(--mf-primary);
|
|
1037
1040
|
}
|
|
1038
1041
|
|
|
1042
|
+
.magicfeedback-multi-question-matrix-question {
|
|
1043
|
+
min-width: 200px;
|
|
1044
|
+
padding: 10px;
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
/* the column header names the option in a table; the per-cell label is for
|
|
1048
|
+
screen readers until the rows stack */
|
|
1049
|
+
.magicfeedback-multi-question-matrix-option-label {
|
|
1050
|
+
position: absolute;
|
|
1051
|
+
width: 1px;
|
|
1052
|
+
height: 1px;
|
|
1053
|
+
overflow: hidden;
|
|
1054
|
+
clip: rect(0, 0, 0, 0);
|
|
1055
|
+
white-space: nowrap;
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
/* narrow container: every row becomes its own question with the options
|
|
1059
|
+
stacked underneath, instead of a table cut off at the side */
|
|
1060
|
+
@container (max-width: 599px) {
|
|
1061
|
+
.magicfeedback-multi-question-matrix-table,
|
|
1062
|
+
.magicfeedback-multi-question-matrix-table tbody,
|
|
1063
|
+
.magicfeedback-multi-question-matrix-table tr,
|
|
1064
|
+
.magicfeedback-multi-question-matrix-table td {
|
|
1065
|
+
display: block;
|
|
1066
|
+
width: 100%;
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
.magicfeedback-multi-question-matrix-table thead {
|
|
1070
|
+
display: none;
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
.magicfeedback-multi-question-matrix-row-tr,
|
|
1074
|
+
.magicfeedback-multi-question-matrix-row-tr:nth-child(even) {
|
|
1075
|
+
margin-bottom: var(--mf-space-lg);
|
|
1076
|
+
background: transparent;
|
|
1077
|
+
box-shadow: none;
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
@media (hover: hover) {
|
|
1081
|
+
.magicfeedback-multi-question-matrix-row-tr:hover {
|
|
1082
|
+
margin-bottom: var(--mf-space-lg);
|
|
1083
|
+
background: transparent;
|
|
1084
|
+
box-shadow: none;
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
.magicfeedback-multi-question-matrix-table td.magicfeedback-multi-question-matrix-question {
|
|
1089
|
+
min-width: 0;
|
|
1090
|
+
padding: 0 0 var(--mf-space-sm);
|
|
1091
|
+
text-align: start;
|
|
1092
|
+
}
|
|
1093
|
+
|
|
1094
|
+
.magicfeedback-multi-question-matrix-question .magicfeedback-multi-question-matrix-label {
|
|
1095
|
+
font-weight: 600;
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1098
|
+
.magicfeedback-multi-question-matrix-table td.magicfeedback-multi-question-matrix-option {
|
|
1099
|
+
display: flex;
|
|
1100
|
+
align-items: center;
|
|
1101
|
+
gap: var(--mf-space-sm);
|
|
1102
|
+
margin-bottom: var(--mf-space-sm);
|
|
1103
|
+
padding: 0 var(--mf-space-md);
|
|
1104
|
+
text-align: start;
|
|
1105
|
+
background: var(--mf-bg-secondary);
|
|
1106
|
+
border: 2px solid var(--mf-border);
|
|
1107
|
+
border-radius: var(--mf-radius-md);
|
|
1108
|
+
cursor: pointer;
|
|
1109
|
+
transition: var(--mf-transition-fast);
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
@media (hover: hover) {
|
|
1113
|
+
.magicfeedback-multi-question-matrix-option:hover {
|
|
1114
|
+
border-color: var(--mf-primary-border);
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1118
|
+
.magicfeedback-multi-question-matrix-option:has(input:checked) {
|
|
1119
|
+
border-color: var(--mf-primary);
|
|
1120
|
+
background: var(--mf-primary-light);
|
|
1121
|
+
}
|
|
1122
|
+
|
|
1123
|
+
.magicfeedback-multi-question-matrix-table .magicfeedback-multi-question-matrix-option input[type="radio"] {
|
|
1124
|
+
flex-shrink: 0;
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
/* the whole card is the click target */
|
|
1128
|
+
.magicfeedback-multi-question-matrix-option-label {
|
|
1129
|
+
position: static;
|
|
1130
|
+
flex: 1;
|
|
1131
|
+
width: auto;
|
|
1132
|
+
height: auto;
|
|
1133
|
+
padding: var(--mf-space-md) 0;
|
|
1134
|
+
overflow: visible;
|
|
1135
|
+
clip: auto;
|
|
1136
|
+
white-space: normal;
|
|
1137
|
+
font-size: var(--mf-font-size-base);
|
|
1138
|
+
color: var(--mf-text-primary);
|
|
1139
|
+
cursor: pointer;
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
/* ========================================
|
|
1144
|
+
MAXDIFF (BEST–WORST)
|
|
1145
|
+
======================================== */
|
|
1146
|
+
.magicfeedback-max-diff {
|
|
1147
|
+
/* "least" gets its own hue, apart from the brand color "most" uses; dark
|
|
1148
|
+
enough to read as header text and to hold the white center dot */
|
|
1149
|
+
--mf-max-diff-worst: #b45309;
|
|
1150
|
+
width: 100%;
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
.magicfeedback-max-diff-container {
|
|
1154
|
+
width: 100%;
|
|
1155
|
+
/* the layout follows the space the survey gets (a pop-in, a sidebar),
|
|
1156
|
+
not the size of the window */
|
|
1157
|
+
container-type: inline-size;
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
.magicfeedback-max-diff-progress {
|
|
1161
|
+
display: flex;
|
|
1162
|
+
align-items: center;
|
|
1163
|
+
gap: var(--mf-space-md);
|
|
1164
|
+
margin-bottom: var(--mf-space-lg);
|
|
1165
|
+
}
|
|
1166
|
+
|
|
1167
|
+
.magicfeedback-max-diff-progress-label {
|
|
1168
|
+
font-size: 0.8125rem;
|
|
1169
|
+
font-weight: var(--mf-font-weight-bold);
|
|
1170
|
+
letter-spacing: 0.04em;
|
|
1171
|
+
text-transform: uppercase;
|
|
1172
|
+
white-space: nowrap;
|
|
1173
|
+
color: var(--mf-text-secondary);
|
|
1174
|
+
}
|
|
1175
|
+
|
|
1176
|
+
.magicfeedback-max-diff-progress-track {
|
|
1177
|
+
flex: 1;
|
|
1178
|
+
height: 6px;
|
|
1179
|
+
overflow: hidden;
|
|
1180
|
+
border-radius: var(--mf-radius-full);
|
|
1181
|
+
background: var(--mf-border);
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
.magicfeedback-max-diff-progress-fill {
|
|
1185
|
+
display: block;
|
|
1186
|
+
height: 100%;
|
|
1187
|
+
border-radius: var(--mf-radius-full);
|
|
1188
|
+
background: var(--mf-primary);
|
|
1189
|
+
}
|
|
1190
|
+
|
|
1191
|
+
.magicfeedback-max-diff-table {
|
|
1192
|
+
width: 100%;
|
|
1193
|
+
border-collapse: collapse;
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
.magicfeedback-max-diff-head,
|
|
1197
|
+
.magicfeedback-max-diff-head-spacer {
|
|
1198
|
+
border-bottom: 1px solid var(--mf-border);
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
.magicfeedback-max-diff-head {
|
|
1202
|
+
width: 11rem;
|
|
1203
|
+
padding: 0 var(--mf-space-sm) var(--mf-space-sm);
|
|
1204
|
+
font-size: 0.8125rem;
|
|
1205
|
+
font-weight: var(--mf-font-weight-extrabold);
|
|
1206
|
+
letter-spacing: 0.04em;
|
|
1207
|
+
text-transform: uppercase;
|
|
1208
|
+
text-align: center;
|
|
1209
|
+
vertical-align: bottom;
|
|
1210
|
+
}
|
|
1211
|
+
|
|
1212
|
+
.magicfeedback-max-diff-head-best {
|
|
1213
|
+
color: var(--mf-primary);
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
.magicfeedback-max-diff-head-worst {
|
|
1217
|
+
color: var(--mf-max-diff-worst);
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1220
|
+
.magicfeedback-max-diff-head-label {
|
|
1221
|
+
display: inline-flex;
|
|
1222
|
+
align-items: center;
|
|
1223
|
+
gap: 6px;
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
.magicfeedback-max-diff-row {
|
|
1227
|
+
transition: background-color 0.15s ease;
|
|
1228
|
+
}
|
|
1229
|
+
|
|
1230
|
+
.magicfeedback-max-diff-row > * {
|
|
1231
|
+
border-bottom: 1px solid var(--mf-border);
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
.magicfeedback-max-diff-row:has(.magicfeedback-max-diff-best:checked) {
|
|
1235
|
+
background-color: color-mix(in srgb, var(--mf-primary) 8%, transparent);
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1238
|
+
.magicfeedback-max-diff-row:has(.magicfeedback-max-diff-worst:checked) {
|
|
1239
|
+
background-color: color-mix(in srgb, var(--mf-max-diff-worst) 8%, transparent);
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1242
|
+
.magicfeedback-max-diff-item {
|
|
1243
|
+
padding: var(--mf-space-md) var(--mf-space-sm);
|
|
1244
|
+
font-size: 1.0625rem;
|
|
1245
|
+
font-weight: var(--mf-font-weight-semibold);
|
|
1246
|
+
line-height: 1.4;
|
|
1247
|
+
text-align: center;
|
|
1248
|
+
color: var(--mf-text-primary);
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1251
|
+
.magicfeedback-max-diff-row:has(input:checked) .magicfeedback-max-diff-item {
|
|
1252
|
+
font-weight: var(--mf-font-weight-extrabold);
|
|
1253
|
+
}
|
|
1254
|
+
|
|
1255
|
+
.magicfeedback-max-diff-cell {
|
|
1256
|
+
padding: 0;
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1259
|
+
/* the whole cell is the click target */
|
|
1260
|
+
.magicfeedback-max-diff-pick {
|
|
1261
|
+
display: flex;
|
|
1262
|
+
align-items: center;
|
|
1263
|
+
justify-content: center;
|
|
1264
|
+
min-height: 64px;
|
|
1265
|
+
cursor: pointer;
|
|
1266
|
+
}
|
|
1267
|
+
|
|
1268
|
+
.magicfeedback-max-diff-input {
|
|
1269
|
+
appearance: none;
|
|
1270
|
+
-webkit-appearance: none;
|
|
1271
|
+
flex-shrink: 0;
|
|
1272
|
+
width: 26px;
|
|
1273
|
+
height: 26px;
|
|
1274
|
+
margin: 0;
|
|
1275
|
+
border: 2px solid color-mix(in srgb, var(--mf-text-secondary) 80%, white);
|
|
1276
|
+
border-radius: var(--mf-radius-full);
|
|
1277
|
+
background: var(--mf-bg-secondary);
|
|
1278
|
+
cursor: pointer;
|
|
1279
|
+
transition: var(--mf-transition-fast);
|
|
1280
|
+
}
|
|
1281
|
+
|
|
1282
|
+
@media (hover: hover) {
|
|
1283
|
+
.magicfeedback-max-diff-pick:hover .magicfeedback-max-diff-input {
|
|
1284
|
+
transform: scale(1.08);
|
|
1285
|
+
}
|
|
1286
|
+
}
|
|
1287
|
+
|
|
1288
|
+
.magicfeedback-max-diff-best:checked {
|
|
1289
|
+
border-color: var(--mf-primary);
|
|
1290
|
+
background: radial-gradient(circle, #FFFFFF 0 4px, var(--mf-primary) 4.5px);
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
.magicfeedback-max-diff-worst:checked {
|
|
1294
|
+
border-color: var(--mf-max-diff-worst);
|
|
1295
|
+
background: radial-gradient(circle, #FFFFFF 0 4px, var(--mf-max-diff-worst) 4.5px);
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
.magicfeedback-max-diff-input:focus-visible {
|
|
1299
|
+
outline: 3px solid var(--mf-primary-border);
|
|
1300
|
+
outline-offset: 3px;
|
|
1301
|
+
}
|
|
1302
|
+
|
|
1303
|
+
/* narrow container: same table, slimmer pick columns and the header icon
|
|
1304
|
+
stacked over its label */
|
|
1305
|
+
@container (max-width: 599px) {
|
|
1306
|
+
.magicfeedback-max-diff-head {
|
|
1307
|
+
width: 4.75rem;
|
|
1308
|
+
padding-inline: 2px;
|
|
1309
|
+
font-size: 0.6875rem;
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1312
|
+
.magicfeedback-max-diff-head-label {
|
|
1313
|
+
flex-direction: column;
|
|
1314
|
+
gap: 2px;
|
|
1315
|
+
}
|
|
1316
|
+
|
|
1317
|
+
.magicfeedback-max-diff-item {
|
|
1318
|
+
padding-inline: 4px;
|
|
1319
|
+
font-size: var(--mf-font-size-base);
|
|
1320
|
+
}
|
|
1321
|
+
|
|
1322
|
+
.magicfeedback-max-diff-pick {
|
|
1323
|
+
min-height: 68px;
|
|
1324
|
+
}
|
|
1325
|
+
|
|
1326
|
+
.magicfeedback-max-diff-input {
|
|
1327
|
+
width: 28px;
|
|
1328
|
+
height: 28px;
|
|
1329
|
+
}
|
|
1330
|
+
}
|
|
1331
|
+
|
|
1039
1332
|
/* ========================================
|
|
1040
1333
|
PRIORITY LIST
|
|
1041
1334
|
======================================== */
|
|
@@ -1226,6 +1519,15 @@ div.magicfeedback-radio {
|
|
|
1226
1519
|
}
|
|
1227
1520
|
}
|
|
1228
1521
|
|
|
1522
|
+
/* hidden on the first page; keep the submit button on the right */
|
|
1523
|
+
.magicfeedback-back[hidden] {
|
|
1524
|
+
display: none;
|
|
1525
|
+
}
|
|
1526
|
+
|
|
1527
|
+
.magicfeedback-action-container .magicfeedback-submit {
|
|
1528
|
+
margin-left: auto;
|
|
1529
|
+
}
|
|
1530
|
+
|
|
1229
1531
|
/* ========================================
|
|
1230
1532
|
SKIP & COUNTER
|
|
1231
1533
|
======================================== */
|
|
@@ -524,7 +524,7 @@ function ddSetSurveyBusy(el, busy){
|
|
|
524
524
|
var style_default = `/**
|
|
525
525
|
* NO EDITAR A MANO \u2014 generado por scripts/vendor-survey-css.mjs
|
|
526
526
|
*
|
|
527
|
-
* Copia de @magicfeedback/native@2.2.
|
|
527
|
+
* Copia de @magicfeedback/native@2.2.31 \u2192 dist/styles/magicfeedback-default.css
|
|
528
528
|
* (la hoja can\xF3nica del paquete, la que apunta su campo "style"), con estos cambios locales:
|
|
529
529
|
*
|
|
530
530
|
* 1. Sin el @import de Google Fonts (Nunito): no queremos una petici\xF3n externa desde la
|
|
@@ -1508,6 +1508,9 @@ div.magicfeedback-radio {
|
|
|
1508
1508
|
width: 100%;
|
|
1509
1509
|
overflow-x: auto;
|
|
1510
1510
|
border-radius: var(--mf-radius-md);
|
|
1511
|
+
/* the layout follows the space the survey gets (a pop-in, a sidebar),
|
|
1512
|
+
not the size of the window */
|
|
1513
|
+
container-type: inline-size;
|
|
1511
1514
|
}
|
|
1512
1515
|
|
|
1513
1516
|
.magicfeedback-multi-question-matrix-table {
|
|
@@ -1559,6 +1562,296 @@ div.magicfeedback-radio {
|
|
|
1559
1562
|
accent-color: var(--mf-primary);
|
|
1560
1563
|
}
|
|
1561
1564
|
|
|
1565
|
+
.magicfeedback-multi-question-matrix-question {
|
|
1566
|
+
min-width: 200px;
|
|
1567
|
+
padding: 10px;
|
|
1568
|
+
}
|
|
1569
|
+
|
|
1570
|
+
/* the column header names the option in a table; the per-cell label is for
|
|
1571
|
+
screen readers until the rows stack */
|
|
1572
|
+
.magicfeedback-multi-question-matrix-option-label {
|
|
1573
|
+
position: absolute;
|
|
1574
|
+
width: 1px;
|
|
1575
|
+
height: 1px;
|
|
1576
|
+
overflow: hidden;
|
|
1577
|
+
clip: rect(0, 0, 0, 0);
|
|
1578
|
+
white-space: nowrap;
|
|
1579
|
+
}
|
|
1580
|
+
|
|
1581
|
+
/* narrow container: every row becomes its own question with the options
|
|
1582
|
+
stacked underneath, instead of a table cut off at the side */
|
|
1583
|
+
@container (max-width: 599px) {
|
|
1584
|
+
.magicfeedback-multi-question-matrix-table,
|
|
1585
|
+
.magicfeedback-multi-question-matrix-table tbody,
|
|
1586
|
+
.magicfeedback-multi-question-matrix-table tr,
|
|
1587
|
+
.magicfeedback-multi-question-matrix-table td {
|
|
1588
|
+
display: block;
|
|
1589
|
+
width: 100%;
|
|
1590
|
+
}
|
|
1591
|
+
|
|
1592
|
+
.magicfeedback-multi-question-matrix-table thead {
|
|
1593
|
+
display: none;
|
|
1594
|
+
}
|
|
1595
|
+
|
|
1596
|
+
.magicfeedback-multi-question-matrix-row-tr,
|
|
1597
|
+
.magicfeedback-multi-question-matrix-row-tr:nth-child(even) {
|
|
1598
|
+
margin-bottom: var(--mf-space-lg);
|
|
1599
|
+
background: transparent;
|
|
1600
|
+
box-shadow: none;
|
|
1601
|
+
}
|
|
1602
|
+
|
|
1603
|
+
@media (hover: hover) {
|
|
1604
|
+
.magicfeedback-multi-question-matrix-row-tr:hover {
|
|
1605
|
+
margin-bottom: var(--mf-space-lg);
|
|
1606
|
+
background: transparent;
|
|
1607
|
+
box-shadow: none;
|
|
1608
|
+
}
|
|
1609
|
+
}
|
|
1610
|
+
|
|
1611
|
+
.magicfeedback-multi-question-matrix-table td.magicfeedback-multi-question-matrix-question {
|
|
1612
|
+
min-width: 0;
|
|
1613
|
+
padding: 0 0 var(--mf-space-sm);
|
|
1614
|
+
text-align: start;
|
|
1615
|
+
}
|
|
1616
|
+
|
|
1617
|
+
.magicfeedback-multi-question-matrix-question .magicfeedback-multi-question-matrix-label {
|
|
1618
|
+
font-weight: 600;
|
|
1619
|
+
}
|
|
1620
|
+
|
|
1621
|
+
.magicfeedback-multi-question-matrix-table td.magicfeedback-multi-question-matrix-option {
|
|
1622
|
+
display: flex;
|
|
1623
|
+
align-items: center;
|
|
1624
|
+
gap: var(--mf-space-sm);
|
|
1625
|
+
margin-bottom: var(--mf-space-sm);
|
|
1626
|
+
padding: 0 var(--mf-space-md);
|
|
1627
|
+
text-align: start;
|
|
1628
|
+
background: var(--mf-bg-secondary);
|
|
1629
|
+
border: 2px solid var(--mf-border);
|
|
1630
|
+
border-radius: var(--mf-radius-md);
|
|
1631
|
+
cursor: pointer;
|
|
1632
|
+
transition: var(--mf-transition-fast);
|
|
1633
|
+
}
|
|
1634
|
+
|
|
1635
|
+
@media (hover: hover) {
|
|
1636
|
+
.magicfeedback-multi-question-matrix-option:hover {
|
|
1637
|
+
border-color: var(--mf-primary-border);
|
|
1638
|
+
}
|
|
1639
|
+
}
|
|
1640
|
+
|
|
1641
|
+
.magicfeedback-multi-question-matrix-option:has(input:checked) {
|
|
1642
|
+
border-color: var(--mf-primary);
|
|
1643
|
+
background: var(--mf-primary-light);
|
|
1644
|
+
}
|
|
1645
|
+
|
|
1646
|
+
.magicfeedback-multi-question-matrix-table .magicfeedback-multi-question-matrix-option input[type="radio"] {
|
|
1647
|
+
flex-shrink: 0;
|
|
1648
|
+
}
|
|
1649
|
+
|
|
1650
|
+
/* the whole card is the click target */
|
|
1651
|
+
.magicfeedback-multi-question-matrix-option-label {
|
|
1652
|
+
position: static;
|
|
1653
|
+
flex: 1;
|
|
1654
|
+
width: auto;
|
|
1655
|
+
height: auto;
|
|
1656
|
+
padding: var(--mf-space-md) 0;
|
|
1657
|
+
overflow: visible;
|
|
1658
|
+
clip: auto;
|
|
1659
|
+
white-space: normal;
|
|
1660
|
+
font-size: var(--mf-font-size-base);
|
|
1661
|
+
color: var(--mf-text-primary);
|
|
1662
|
+
cursor: pointer;
|
|
1663
|
+
}
|
|
1664
|
+
}
|
|
1665
|
+
|
|
1666
|
+
/* ========================================
|
|
1667
|
+
MAXDIFF (BEST\u2013WORST)
|
|
1668
|
+
======================================== */
|
|
1669
|
+
.magicfeedback-max-diff {
|
|
1670
|
+
/* "least" gets its own hue, apart from the brand color "most" uses; dark
|
|
1671
|
+
enough to read as header text and to hold the white center dot */
|
|
1672
|
+
--mf-max-diff-worst: #b45309;
|
|
1673
|
+
width: 100%;
|
|
1674
|
+
}
|
|
1675
|
+
|
|
1676
|
+
.magicfeedback-max-diff-container {
|
|
1677
|
+
width: 100%;
|
|
1678
|
+
/* the layout follows the space the survey gets (a pop-in, a sidebar),
|
|
1679
|
+
not the size of the window */
|
|
1680
|
+
container-type: inline-size;
|
|
1681
|
+
}
|
|
1682
|
+
|
|
1683
|
+
.magicfeedback-max-diff-progress {
|
|
1684
|
+
display: flex;
|
|
1685
|
+
align-items: center;
|
|
1686
|
+
gap: var(--mf-space-md);
|
|
1687
|
+
margin-bottom: var(--mf-space-lg);
|
|
1688
|
+
}
|
|
1689
|
+
|
|
1690
|
+
.magicfeedback-max-diff-progress-label {
|
|
1691
|
+
font-size: 0.8125rem;
|
|
1692
|
+
font-weight: var(--mf-font-weight-bold);
|
|
1693
|
+
letter-spacing: 0.04em;
|
|
1694
|
+
text-transform: uppercase;
|
|
1695
|
+
white-space: nowrap;
|
|
1696
|
+
color: var(--mf-text-secondary);
|
|
1697
|
+
}
|
|
1698
|
+
|
|
1699
|
+
.magicfeedback-max-diff-progress-track {
|
|
1700
|
+
flex: 1;
|
|
1701
|
+
height: 6px;
|
|
1702
|
+
overflow: hidden;
|
|
1703
|
+
border-radius: var(--mf-radius-full);
|
|
1704
|
+
background: var(--mf-border);
|
|
1705
|
+
}
|
|
1706
|
+
|
|
1707
|
+
.magicfeedback-max-diff-progress-fill {
|
|
1708
|
+
display: block;
|
|
1709
|
+
height: 100%;
|
|
1710
|
+
border-radius: var(--mf-radius-full);
|
|
1711
|
+
background: var(--mf-primary);
|
|
1712
|
+
}
|
|
1713
|
+
|
|
1714
|
+
.magicfeedback-max-diff-table {
|
|
1715
|
+
width: 100%;
|
|
1716
|
+
border-collapse: collapse;
|
|
1717
|
+
}
|
|
1718
|
+
|
|
1719
|
+
.magicfeedback-max-diff-head,
|
|
1720
|
+
.magicfeedback-max-diff-head-spacer {
|
|
1721
|
+
border-bottom: 1px solid var(--mf-border);
|
|
1722
|
+
}
|
|
1723
|
+
|
|
1724
|
+
.magicfeedback-max-diff-head {
|
|
1725
|
+
width: 11rem;
|
|
1726
|
+
padding: 0 var(--mf-space-sm) var(--mf-space-sm);
|
|
1727
|
+
font-size: 0.8125rem;
|
|
1728
|
+
font-weight: var(--mf-font-weight-extrabold);
|
|
1729
|
+
letter-spacing: 0.04em;
|
|
1730
|
+
text-transform: uppercase;
|
|
1731
|
+
text-align: center;
|
|
1732
|
+
vertical-align: bottom;
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1735
|
+
.magicfeedback-max-diff-head-best {
|
|
1736
|
+
color: var(--mf-primary);
|
|
1737
|
+
}
|
|
1738
|
+
|
|
1739
|
+
.magicfeedback-max-diff-head-worst {
|
|
1740
|
+
color: var(--mf-max-diff-worst);
|
|
1741
|
+
}
|
|
1742
|
+
|
|
1743
|
+
.magicfeedback-max-diff-head-label {
|
|
1744
|
+
display: inline-flex;
|
|
1745
|
+
align-items: center;
|
|
1746
|
+
gap: 6px;
|
|
1747
|
+
}
|
|
1748
|
+
|
|
1749
|
+
.magicfeedback-max-diff-row {
|
|
1750
|
+
transition: background-color 0.15s ease;
|
|
1751
|
+
}
|
|
1752
|
+
|
|
1753
|
+
.magicfeedback-max-diff-row > * {
|
|
1754
|
+
border-bottom: 1px solid var(--mf-border);
|
|
1755
|
+
}
|
|
1756
|
+
|
|
1757
|
+
.magicfeedback-max-diff-row:has(.magicfeedback-max-diff-best:checked) {
|
|
1758
|
+
background-color: color-mix(in srgb, var(--mf-primary) 8%, transparent);
|
|
1759
|
+
}
|
|
1760
|
+
|
|
1761
|
+
.magicfeedback-max-diff-row:has(.magicfeedback-max-diff-worst:checked) {
|
|
1762
|
+
background-color: color-mix(in srgb, var(--mf-max-diff-worst) 8%, transparent);
|
|
1763
|
+
}
|
|
1764
|
+
|
|
1765
|
+
.magicfeedback-max-diff-item {
|
|
1766
|
+
padding: var(--mf-space-md) var(--mf-space-sm);
|
|
1767
|
+
font-size: 1.0625rem;
|
|
1768
|
+
font-weight: var(--mf-font-weight-semibold);
|
|
1769
|
+
line-height: 1.4;
|
|
1770
|
+
text-align: center;
|
|
1771
|
+
color: var(--mf-text-primary);
|
|
1772
|
+
}
|
|
1773
|
+
|
|
1774
|
+
.magicfeedback-max-diff-row:has(input:checked) .magicfeedback-max-diff-item {
|
|
1775
|
+
font-weight: var(--mf-font-weight-extrabold);
|
|
1776
|
+
}
|
|
1777
|
+
|
|
1778
|
+
.magicfeedback-max-diff-cell {
|
|
1779
|
+
padding: 0;
|
|
1780
|
+
}
|
|
1781
|
+
|
|
1782
|
+
/* the whole cell is the click target */
|
|
1783
|
+
.magicfeedback-max-diff-pick {
|
|
1784
|
+
display: flex;
|
|
1785
|
+
align-items: center;
|
|
1786
|
+
justify-content: center;
|
|
1787
|
+
min-height: 64px;
|
|
1788
|
+
cursor: pointer;
|
|
1789
|
+
}
|
|
1790
|
+
|
|
1791
|
+
.magicfeedback-max-diff-input {
|
|
1792
|
+
appearance: none;
|
|
1793
|
+
-webkit-appearance: none;
|
|
1794
|
+
flex-shrink: 0;
|
|
1795
|
+
width: 26px;
|
|
1796
|
+
height: 26px;
|
|
1797
|
+
margin: 0;
|
|
1798
|
+
border: 2px solid color-mix(in srgb, var(--mf-text-secondary) 80%, white);
|
|
1799
|
+
border-radius: var(--mf-radius-full);
|
|
1800
|
+
background: var(--mf-bg-secondary);
|
|
1801
|
+
cursor: pointer;
|
|
1802
|
+
transition: var(--mf-transition-fast);
|
|
1803
|
+
}
|
|
1804
|
+
|
|
1805
|
+
@media (hover: hover) {
|
|
1806
|
+
.magicfeedback-max-diff-pick:hover .magicfeedback-max-diff-input {
|
|
1807
|
+
transform: scale(1.08);
|
|
1808
|
+
}
|
|
1809
|
+
}
|
|
1810
|
+
|
|
1811
|
+
.magicfeedback-max-diff-best:checked {
|
|
1812
|
+
border-color: var(--mf-primary);
|
|
1813
|
+
background: radial-gradient(circle, #FFFFFF 0 4px, var(--mf-primary) 4.5px);
|
|
1814
|
+
}
|
|
1815
|
+
|
|
1816
|
+
.magicfeedback-max-diff-worst:checked {
|
|
1817
|
+
border-color: var(--mf-max-diff-worst);
|
|
1818
|
+
background: radial-gradient(circle, #FFFFFF 0 4px, var(--mf-max-diff-worst) 4.5px);
|
|
1819
|
+
}
|
|
1820
|
+
|
|
1821
|
+
.magicfeedback-max-diff-input:focus-visible {
|
|
1822
|
+
outline: 3px solid var(--mf-primary-border);
|
|
1823
|
+
outline-offset: 3px;
|
|
1824
|
+
}
|
|
1825
|
+
|
|
1826
|
+
/* narrow container: same table, slimmer pick columns and the header icon
|
|
1827
|
+
stacked over its label */
|
|
1828
|
+
@container (max-width: 599px) {
|
|
1829
|
+
.magicfeedback-max-diff-head {
|
|
1830
|
+
width: 4.75rem;
|
|
1831
|
+
padding-inline: 2px;
|
|
1832
|
+
font-size: 0.6875rem;
|
|
1833
|
+
}
|
|
1834
|
+
|
|
1835
|
+
.magicfeedback-max-diff-head-label {
|
|
1836
|
+
flex-direction: column;
|
|
1837
|
+
gap: 2px;
|
|
1838
|
+
}
|
|
1839
|
+
|
|
1840
|
+
.magicfeedback-max-diff-item {
|
|
1841
|
+
padding-inline: 4px;
|
|
1842
|
+
font-size: var(--mf-font-size-base);
|
|
1843
|
+
}
|
|
1844
|
+
|
|
1845
|
+
.magicfeedback-max-diff-pick {
|
|
1846
|
+
min-height: 68px;
|
|
1847
|
+
}
|
|
1848
|
+
|
|
1849
|
+
.magicfeedback-max-diff-input {
|
|
1850
|
+
width: 28px;
|
|
1851
|
+
height: 28px;
|
|
1852
|
+
}
|
|
1853
|
+
}
|
|
1854
|
+
|
|
1562
1855
|
/* ========================================
|
|
1563
1856
|
PRIORITY LIST
|
|
1564
1857
|
======================================== */
|
|
@@ -1749,6 +2042,15 @@ div.magicfeedback-radio {
|
|
|
1749
2042
|
}
|
|
1750
2043
|
}
|
|
1751
2044
|
|
|
2045
|
+
/* hidden on the first page; keep the submit button on the right */
|
|
2046
|
+
.magicfeedback-back[hidden] {
|
|
2047
|
+
display: none;
|
|
2048
|
+
}
|
|
2049
|
+
|
|
2050
|
+
.magicfeedback-action-container .magicfeedback-submit {
|
|
2051
|
+
margin-left: auto;
|
|
2052
|
+
}
|
|
2053
|
+
|
|
1752
2054
|
/* ========================================
|
|
1753
2055
|
SKIP & COUNTER
|
|
1754
2056
|
======================================== */
|
|
@@ -2439,4 +2741,4 @@ export {
|
|
|
2439
2741
|
sdkWarn,
|
|
2440
2742
|
sdkError
|
|
2441
2743
|
};
|
|
2442
|
-
//# sourceMappingURL=chunk-
|
|
2744
|
+
//# sourceMappingURL=chunk-GXEPYT33.mjs.map
|