@qualified-salesforce/web 0.0.1-oidc-bootstrap → 0.1.1
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/CAPABILITY-REFERENCE.md +41 -0
- package/CHANGELOG.md +84 -0
- package/README.md +65 -0
- package/constants.generated.js +30 -2
- package/css/widget/multimodal_v2/index.split-css.panda.css +265 -47
- package/package.json +18 -4
- package/packs/widget/api/docking/viewport_lock.js +93 -2
- package/packs/widget/esm/index.d.ts +134 -0
- package/packs/widget/esm/index.js +18 -2
- package/packs/widget/esm/qualified.css +265 -47
- package/src/graphql-types.js +74 -1
- package/src/url.js +4 -1
- package/vendor/actioncable/connection.js +40 -3
- package/vendor/actioncable/connection_monitor.js +8 -0
- package/vendor/actioncable/consumer.js +7 -1
- package/vendor/actioncable/index.js +5 -2
- package/vendor/actioncable/sse_socket.js +262 -0
- package/widget/analytics.js +8 -0
- package/widget/api_handler/base_api_handler.js +24 -0
- package/widget/booker_outcome_tracker.js +58 -20
- package/widget/capabilities.js +190 -0
- package/widget/channel.js +38 -6
- package/widget/constants.generated.js +2 -1
- package/widget/multimodal_v2/components/AppLayout.js +1 -1
- package/widget/multimodal_v2/components/app/Foreground.js +10 -9
- package/widget/multimodal_v2/components/app/Input.js +8 -3
- package/widget/multimodal_v2/components/app/LightboxExperience.js +17 -3
- package/widget/multimodal_v2/components/app/Main.js +87 -31
- package/widget/multimodal_v2/components/app/MessengerButton.js +18 -1
- package/widget/multimodal_v2/components/chat/ChatInputForm.js +8 -6
- package/widget/multimodal_v2/components/chat/timeline/CalendarEventPickRenderer.js +2 -2
- package/widget/multimodal_v2/components/chat/timeline/PresentDeckRenderer.js +346 -170
- package/widget/multimodal_v2/components/chat/timeline/SystemRenderer.js +4 -7
- package/widget/multimodal_v2/components/decks/index.js +506 -52
- package/widget/multimodal_v2/components/helpers/content_click_payloads.js +67 -1
- package/widget/multimodal_v2/components/lightbox_gather/index.js +4 -4
- package/widget/multimodal_v2/components/meetings/MeetingBookerEntry.js +8 -1
- package/widget/multimodal_v2/components/meetings/MeetingOfferEmailStep.js +1 -1
- package/widget/multimodal_v2/components/meetings/MeetingSummaryRail.js +1 -1
- package/widget/multimodal_v2/components/meetings/MeetingTimeSelector.js +1 -1
- package/widget/multimodal_v2/components/multimodal/Controls.js +11 -3
- package/widget/multimodal_v2/components/multimodal/useMultimodal.js +19 -7
- package/widget/multimodal_v2/components/presentations/index.js +61 -0
- package/widget/multimodal_v2/constants.js +1 -1
- package/widget/multimodal_v2/images/icons.js +17 -1
- package/widget/multimodal_v2/index.panda.js +2 -2
- package/widget/multimodal_v2/locales/cs.js +8 -1
- package/widget/multimodal_v2/locales/da.js +8 -1
- package/widget/multimodal_v2/locales/de.js +8 -1
- package/widget/multimodal_v2/locales/en.js +8 -1
- package/widget/multimodal_v2/locales/en_AU.js +8 -1
- package/widget/multimodal_v2/locales/en_GB.js +8 -1
- package/widget/multimodal_v2/locales/es.js +8 -1
- package/widget/multimodal_v2/locales/es_LA.js +8 -1
- package/widget/multimodal_v2/locales/fi.js +8 -1
- package/widget/multimodal_v2/locales/fr.js +8 -1
- package/widget/multimodal_v2/locales/fr_CA.js +8 -1
- package/widget/multimodal_v2/locales/id.js +8 -1
- package/widget/multimodal_v2/locales/it.js +8 -1
- package/widget/multimodal_v2/locales/ja.js +8 -1
- package/widget/multimodal_v2/locales/ko.js +8 -1
- package/widget/multimodal_v2/locales/nb.js +8 -1
- package/widget/multimodal_v2/locales/nl.js +8 -1
- package/widget/multimodal_v2/locales/pl.js +8 -1
- package/widget/multimodal_v2/locales/pt_BR.js +8 -1
- package/widget/multimodal_v2/locales/ru.js +8 -1
- package/widget/multimodal_v2/locales/sv.js +8 -1
- package/widget/multimodal_v2/locales/th.js +8 -1
- package/widget/multimodal_v2/locales/tr.js +8 -1
- package/widget/multimodal_v2/locales/vi.js +8 -1
- package/widget/multimodal_v2/locales/zh_CN.js +8 -1
- package/widget/multimodal_v2/locales/zh_TW.js +8 -1
- package/widget/multimodal_v2/multimodal.js +5 -1
- package/widget/multimodal_v2/multimodal_channel.js +13 -8
- package/widget/multimodal_v2/signals/messages_signal.js +4 -0
- package/widget/multimodal_v2/stores/ai_conversation_store.js +6 -2
- package/widget/multimodal_v2/stores/artifact_store.js +352 -27
- package/widget/multimodal_v2/stores/call_store.js +40 -1
- package/widget/multimodal_v2/stores/call_ui_adapter.js +1 -1
- package/widget/multimodal_v2/stores/decks_store.js +405 -39
- package/widget/multimodal_v2/stores/meeting_store.js +15 -10
- package/widget/multimodal_v2/stores/presentation_ga_adapter.js +64 -0
- package/widget/multimodal_v2/stores/presentation_telemetry_store.js +556 -0
- package/widget/multimodal_v2/stores/presentations_store.js +1 -0
- package/widget/multimodal_v2/stores/root_store.js +157 -268
- package/widget/multimodal_v2/stores/screen_share_store.js +41 -21
- package/widget/multimodal_v2/stores/translation_store.js +9 -0
- package/widget/multimodal_v2/stores/ui_store.js +7 -7
- package/widget/multimodal_v2/stores/website_navigation_store.js +3 -1
- package/widget/multimodal_v2/text_turn_response_tracker.js +419 -0
- package/widget/multimodal_v2/types.js +21 -1
- package/widget/multimodal_v2/utils/locale.js +2 -1
- package/widget/multimodal_v2/utils/signals.js +35 -4
- package/widget/pardot_visitor.js +7 -1
- package/widget/server-logger.js +97 -2
- package/widget/tracker.js +69 -21
- package/widget/widget/page_mirror_factory.js +9 -1
- package/widget/widget/widget.js +29 -4
|
@@ -737,8 +737,8 @@
|
|
|
737
737
|
padding: 0 16px 0 8px;
|
|
738
738
|
}
|
|
739
739
|
|
|
740
|
-
.q-
|
|
741
|
-
padding: 0
|
|
740
|
+
.q-dqRdNH {
|
|
741
|
+
padding: 0;
|
|
742
742
|
}
|
|
743
743
|
|
|
744
744
|
.q-ffAOcM {
|
|
@@ -795,10 +795,6 @@
|
|
|
795
795
|
border: 1.5px solid #d7dde2;
|
|
796
796
|
}
|
|
797
797
|
|
|
798
|
-
.q-dqRdNH {
|
|
799
|
-
padding: 0;
|
|
800
|
-
}
|
|
801
|
-
|
|
802
798
|
.q-kgRGeM {
|
|
803
799
|
margin: -1px;
|
|
804
800
|
}
|
|
@@ -999,6 +995,10 @@
|
|
|
999
995
|
border: 1px solid \$colors\.border;
|
|
1000
996
|
}
|
|
1001
997
|
|
|
998
|
+
.q-kWIjhW {
|
|
999
|
+
font: inherit;
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
1002
|
.q-gPyWWT {
|
|
1003
1003
|
border: 1px solid;
|
|
1004
1004
|
}
|
|
@@ -1284,6 +1284,16 @@
|
|
|
1284
1284
|
gap: 10px;
|
|
1285
1285
|
}
|
|
1286
1286
|
|
|
1287
|
+
.q-cfDrIW {
|
|
1288
|
+
border-radius: 16px;
|
|
1289
|
+
border-radius: var(--q-dxfumK);
|
|
1290
|
+
}
|
|
1291
|
+
|
|
1292
|
+
.q-iainBx {
|
|
1293
|
+
gap: 16px;
|
|
1294
|
+
gap: var(--q-jugHdA);
|
|
1295
|
+
}
|
|
1296
|
+
|
|
1287
1297
|
.q-hMIFSa {
|
|
1288
1298
|
transition: background-color .2s;
|
|
1289
1299
|
}
|
|
@@ -1441,11 +1451,6 @@
|
|
|
1441
1451
|
gap: 24px;
|
|
1442
1452
|
}
|
|
1443
1453
|
|
|
1444
|
-
.q-iainBx {
|
|
1445
|
-
gap: 16px;
|
|
1446
|
-
gap: var(--q-jugHdA);
|
|
1447
|
-
}
|
|
1448
|
-
|
|
1449
1454
|
.q-bMcXFr {
|
|
1450
1455
|
border-radius: 8px;
|
|
1451
1456
|
border-radius: var(--q-control-border-radius, 8px);
|
|
@@ -1618,6 +1623,23 @@
|
|
|
1618
1623
|
transition: opacity .2s, box-shadow .2s, transform .2s;
|
|
1619
1624
|
}
|
|
1620
1625
|
|
|
1626
|
+
.q-bkgpAA {
|
|
1627
|
+
inset-inline: 16px;
|
|
1628
|
+
}
|
|
1629
|
+
|
|
1630
|
+
.q-NGWtr {
|
|
1631
|
+
inset-inline: 8px;
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1634
|
+
.q-DHTGQ {
|
|
1635
|
+
inset-inline: -20px;
|
|
1636
|
+
}
|
|
1637
|
+
|
|
1638
|
+
.q-fNJrUv {
|
|
1639
|
+
border-radius: 8px;
|
|
1640
|
+
border-radius: var(--q-bewZvn);
|
|
1641
|
+
}
|
|
1642
|
+
|
|
1621
1643
|
.q-brKOqO {
|
|
1622
1644
|
overscroll-behavior: contain;
|
|
1623
1645
|
}
|
|
@@ -2212,6 +2234,18 @@
|
|
|
2212
2234
|
resize: none;
|
|
2213
2235
|
}
|
|
2214
2236
|
|
|
2237
|
+
.q-kGHEMe {
|
|
2238
|
+
align-self: flex-start;
|
|
2239
|
+
}
|
|
2240
|
+
|
|
2241
|
+
.q-cOEFXT {
|
|
2242
|
+
transform: rotate(180deg);
|
|
2243
|
+
}
|
|
2244
|
+
|
|
2245
|
+
.q-kTBjet {
|
|
2246
|
+
align-items: stretch;
|
|
2247
|
+
}
|
|
2248
|
+
|
|
2215
2249
|
.q-bSTPIv {
|
|
2216
2250
|
box-shadow: 0 8px 32px #0000004d;
|
|
2217
2251
|
}
|
|
@@ -2233,14 +2267,27 @@
|
|
|
2233
2267
|
transform-origin: bottom;
|
|
2234
2268
|
}
|
|
2235
2269
|
|
|
2236
|
-
.q-
|
|
2237
|
-
|
|
2270
|
+
.q-jcVpEa {
|
|
2271
|
+
line-height: 22px;
|
|
2238
2272
|
}
|
|
2239
2273
|
|
|
2240
2274
|
.q-iCfjvi {
|
|
2241
2275
|
flex-grow: 1;
|
|
2242
2276
|
}
|
|
2243
2277
|
|
|
2278
|
+
.q-gasSYy {
|
|
2279
|
+
flex-wrap: wrap;
|
|
2280
|
+
}
|
|
2281
|
+
|
|
2282
|
+
.q-loatqo {
|
|
2283
|
+
background-color: #fff6;
|
|
2284
|
+
}
|
|
2285
|
+
|
|
2286
|
+
.q-hdUyV {
|
|
2287
|
+
background-color: #e6e9ec;
|
|
2288
|
+
background-color: var(--q-gjomaU);
|
|
2289
|
+
}
|
|
2290
|
+
|
|
2244
2291
|
.q-eIsAcC {
|
|
2245
2292
|
-webkit-user-select: none;
|
|
2246
2293
|
user-select: none;
|
|
@@ -2263,18 +2310,10 @@
|
|
|
2263
2310
|
transform: translateY(8px);
|
|
2264
2311
|
}
|
|
2265
2312
|
|
|
2266
|
-
.q-gasSYy {
|
|
2267
|
-
flex-wrap: wrap;
|
|
2268
|
-
}
|
|
2269
|
-
|
|
2270
2313
|
.q-hxBzcr {
|
|
2271
2314
|
align-items: flex-end;
|
|
2272
2315
|
}
|
|
2273
2316
|
|
|
2274
|
-
.q-kTBjet {
|
|
2275
|
-
align-items: stretch;
|
|
2276
|
-
}
|
|
2277
|
-
|
|
2278
2317
|
.q-hYhvQY {
|
|
2279
2318
|
box-shadow: none;
|
|
2280
2319
|
box-shadow: var(--q-jLtLHp);
|
|
@@ -2337,10 +2376,6 @@
|
|
|
2337
2376
|
container-name: bookerPanel;
|
|
2338
2377
|
}
|
|
2339
2378
|
|
|
2340
|
-
.q-cOEFXT {
|
|
2341
|
-
transform: rotate(180deg);
|
|
2342
|
-
}
|
|
2343
|
-
|
|
2344
2379
|
.q-hBOzJB {
|
|
2345
2380
|
color: #e4251b;
|
|
2346
2381
|
}
|
|
@@ -2592,10 +2627,6 @@
|
|
|
2592
2627
|
background-color: #2dd272;
|
|
2593
2628
|
}
|
|
2594
2629
|
|
|
2595
|
-
.q-kGHEMe {
|
|
2596
|
-
align-self: flex-start;
|
|
2597
|
-
}
|
|
2598
|
-
|
|
2599
2630
|
.q-iMVOnP {
|
|
2600
2631
|
align-self: center;
|
|
2601
2632
|
}
|
|
@@ -2608,10 +2639,6 @@
|
|
|
2608
2639
|
line-height: 14px;
|
|
2609
2640
|
}
|
|
2610
2641
|
|
|
2611
|
-
.q-jcVpEa {
|
|
2612
|
-
line-height: 22px;
|
|
2613
|
-
}
|
|
2614
|
-
|
|
2615
2642
|
.q-krbBcV {
|
|
2616
2643
|
white-space: normal;
|
|
2617
2644
|
}
|
|
@@ -2714,6 +2741,45 @@
|
|
|
2714
2741
|
justify-content: flex-start;
|
|
2715
2742
|
}
|
|
2716
2743
|
|
|
2744
|
+
.q-bGTgkg {
|
|
2745
|
+
appearance: none;
|
|
2746
|
+
}
|
|
2747
|
+
|
|
2748
|
+
.q-vNRpm {
|
|
2749
|
+
-webkit-appearance: none;
|
|
2750
|
+
}
|
|
2751
|
+
|
|
2752
|
+
.q-jKfYXo {
|
|
2753
|
+
text-align: inherit;
|
|
2754
|
+
}
|
|
2755
|
+
|
|
2756
|
+
.q-irWrst {
|
|
2757
|
+
background-color: #66a8eb;
|
|
2758
|
+
background-color: var(--q-btpljM);
|
|
2759
|
+
}
|
|
2760
|
+
|
|
2761
|
+
.q-gXqRpG {
|
|
2762
|
+
opacity: .45;
|
|
2763
|
+
}
|
|
2764
|
+
|
|
2765
|
+
.q-bMGTxJ {
|
|
2766
|
+
opacity: .75;
|
|
2767
|
+
}
|
|
2768
|
+
|
|
2769
|
+
.q-cqCfxu {
|
|
2770
|
+
-o-object-position: top;
|
|
2771
|
+
object-position: top;
|
|
2772
|
+
}
|
|
2773
|
+
|
|
2774
|
+
.q-boLblZ {
|
|
2775
|
+
filter: blur(12px);
|
|
2776
|
+
}
|
|
2777
|
+
|
|
2778
|
+
.q-hwlKiV {
|
|
2779
|
+
background-color: #152229;
|
|
2780
|
+
background-color: var(--q-ckoJkw);
|
|
2781
|
+
}
|
|
2782
|
+
|
|
2717
2783
|
.q-fLVKVB {
|
|
2718
2784
|
scrollbar-width: none;
|
|
2719
2785
|
}
|
|
@@ -2965,6 +3031,10 @@
|
|
|
2965
3031
|
height: 48px;
|
|
2966
3032
|
}
|
|
2967
3033
|
|
|
3034
|
+
.q-eRLSQw {
|
|
3035
|
+
width: 48px;
|
|
3036
|
+
}
|
|
3037
|
+
|
|
2968
3038
|
.q-iWjbPW {
|
|
2969
3039
|
width: 24px;
|
|
2970
3040
|
}
|
|
@@ -3010,6 +3080,10 @@
|
|
|
3010
3080
|
height: 64px;
|
|
3011
3081
|
}
|
|
3012
3082
|
|
|
3083
|
+
.q-cCoqvZ {
|
|
3084
|
+
max-width: 100%;
|
|
3085
|
+
}
|
|
3086
|
+
|
|
3013
3087
|
.q-dxbJmu {
|
|
3014
3088
|
min-height: 0;
|
|
3015
3089
|
}
|
|
@@ -3018,14 +3092,52 @@
|
|
|
3018
3092
|
width: auto;
|
|
3019
3093
|
}
|
|
3020
3094
|
|
|
3021
|
-
.q-cCoqvZ {
|
|
3022
|
-
max-width: 100%;
|
|
3023
|
-
}
|
|
3024
|
-
|
|
3025
3095
|
.q-jJlZBc {
|
|
3026
3096
|
max-height: 100%;
|
|
3027
3097
|
}
|
|
3028
3098
|
|
|
3099
|
+
.q-niSFv {
|
|
3100
|
+
border-bottom-left-radius: 0;
|
|
3101
|
+
}
|
|
3102
|
+
|
|
3103
|
+
.q-gqcmcs {
|
|
3104
|
+
border-bottom-right-radius: 0;
|
|
3105
|
+
}
|
|
3106
|
+
|
|
3107
|
+
.q-hnYqHC {
|
|
3108
|
+
max-height: calc(100% - 124px);
|
|
3109
|
+
}
|
|
3110
|
+
|
|
3111
|
+
.q-dQsKWZ {
|
|
3112
|
+
max-height: calc(100% - 172px);
|
|
3113
|
+
}
|
|
3114
|
+
|
|
3115
|
+
.q-dQrOvv {
|
|
3116
|
+
border-bottom-left-radius: 16px;
|
|
3117
|
+
border-bottom-left-radius: var(--q-dxfumK);
|
|
3118
|
+
}
|
|
3119
|
+
|
|
3120
|
+
.q-kZnTsk {
|
|
3121
|
+
border-bottom-right-radius: 16px;
|
|
3122
|
+
border-bottom-right-radius: var(--q-dxfumK);
|
|
3123
|
+
}
|
|
3124
|
+
|
|
3125
|
+
.q-fSNeID {
|
|
3126
|
+
border-top-left-radius: 0;
|
|
3127
|
+
}
|
|
3128
|
+
|
|
3129
|
+
.q-lmIybk {
|
|
3130
|
+
border-top-right-radius: 0;
|
|
3131
|
+
}
|
|
3132
|
+
|
|
3133
|
+
.q-kEmBGl {
|
|
3134
|
+
min-height: 124px;
|
|
3135
|
+
}
|
|
3136
|
+
|
|
3137
|
+
.q-eeWvqi {
|
|
3138
|
+
min-height: 172px;
|
|
3139
|
+
}
|
|
3140
|
+
|
|
3029
3141
|
.q-ipiJSk {
|
|
3030
3142
|
width: 8px;
|
|
3031
3143
|
}
|
|
@@ -3520,6 +3632,41 @@
|
|
|
3520
3632
|
border-top-left-radius: 4px;
|
|
3521
3633
|
}
|
|
3522
3634
|
|
|
3635
|
+
.q-cBlWNH {
|
|
3636
|
+
min-height: 32px;
|
|
3637
|
+
}
|
|
3638
|
+
|
|
3639
|
+
.q-kJvXpK {
|
|
3640
|
+
padding-top: 12px;
|
|
3641
|
+
padding-top: var(--q-cXTyBO);
|
|
3642
|
+
}
|
|
3643
|
+
|
|
3644
|
+
.q-dlHacb {
|
|
3645
|
+
top: 6px;
|
|
3646
|
+
}
|
|
3647
|
+
|
|
3648
|
+
.q-iHDoAO {
|
|
3649
|
+
top: -20px;
|
|
3650
|
+
}
|
|
3651
|
+
|
|
3652
|
+
.q-bYDZOv {
|
|
3653
|
+
width: calc(100% + 40px);
|
|
3654
|
+
}
|
|
3655
|
+
|
|
3656
|
+
.q-jQmYcu {
|
|
3657
|
+
height: calc(100% + 40px);
|
|
3658
|
+
}
|
|
3659
|
+
|
|
3660
|
+
.q-lnCtVe {
|
|
3661
|
+
right: 8px;
|
|
3662
|
+
right: var(--q-cSaSxh);
|
|
3663
|
+
}
|
|
3664
|
+
|
|
3665
|
+
.q-jgAsJt {
|
|
3666
|
+
bottom: 8px;
|
|
3667
|
+
bottom: var(--q-cSaSxh);
|
|
3668
|
+
}
|
|
3669
|
+
|
|
3523
3670
|
.q-ilCorh {
|
|
3524
3671
|
line-clamp: 1;
|
|
3525
3672
|
}
|
|
@@ -3789,10 +3936,19 @@
|
|
|
3789
3936
|
color: var(--q-ekJvRZ);
|
|
3790
3937
|
}
|
|
3791
3938
|
|
|
3939
|
+
.q-eHRSUh:empty {
|
|
3940
|
+
display: none;
|
|
3941
|
+
}
|
|
3942
|
+
|
|
3792
3943
|
.q-ldTxnm[data-active="true"] {
|
|
3793
3944
|
background-color: #fffffff2;
|
|
3794
3945
|
}
|
|
3795
3946
|
|
|
3947
|
+
.q-hmyJss[data-active="true"] {
|
|
3948
|
+
background-color: #0070d2;
|
|
3949
|
+
background-color: var(--q-bebYds);
|
|
3950
|
+
}
|
|
3951
|
+
|
|
3796
3952
|
.q-bEFJjx:disabled {
|
|
3797
3953
|
opacity: .6;
|
|
3798
3954
|
}
|
|
@@ -4487,6 +4643,12 @@
|
|
|
4487
4643
|
background: #e6e9ec;
|
|
4488
4644
|
}
|
|
4489
4645
|
|
|
4646
|
+
.q-kEebOH:is(:hover, :focus-visible) [data-component-name="Button.StyledButton"] {
|
|
4647
|
+
background: #fff linear-gradient(#0070d2e6, #0070d2e6);
|
|
4648
|
+
background: linear-gradient(var(--q-bQGTFq),var(--q-bQGTFq)) #fff;
|
|
4649
|
+
background: linear-gradient(var(--q-bQGTFq),var(--q-bQGTFq)) var(--q-button-hover-background-layer, #fff);
|
|
4650
|
+
}
|
|
4651
|
+
|
|
4490
4652
|
.q-fRIQMO:focus-visible {
|
|
4491
4653
|
outline: 2px solid #0070d2;
|
|
4492
4654
|
outline: 2px solid var(--q-bebYds);
|
|
@@ -4549,6 +4711,11 @@
|
|
|
4549
4711
|
outline: none;
|
|
4550
4712
|
}
|
|
4551
4713
|
|
|
4714
|
+
.q-hHgwIf:is(:hover, :focus-visible) [data-component-name="Button.StyledButton"] {
|
|
4715
|
+
border-color: #0000;
|
|
4716
|
+
border-color: var(--q-eBDiUw);
|
|
4717
|
+
}
|
|
4718
|
+
|
|
4552
4719
|
.q-jtPCJn:has(select:focus-visible) {
|
|
4553
4720
|
outline: 2px solid #0070d2;
|
|
4554
4721
|
outline: 2px solid var(--q-bebYds);
|
|
@@ -4626,6 +4793,10 @@
|
|
|
4626
4793
|
visibility: visible;
|
|
4627
4794
|
}
|
|
4628
4795
|
|
|
4796
|
+
.q-kELdYL:is(:hover, :focus-visible) [data-component-name="Button.StyledButton"] {
|
|
4797
|
+
color: var(--q-kHrcNZ);
|
|
4798
|
+
}
|
|
4799
|
+
|
|
4629
4800
|
.q-iayYaR:has(select:focus-visible) {
|
|
4630
4801
|
outline-offset: -2px;
|
|
4631
4802
|
}
|
|
@@ -4636,11 +4807,16 @@
|
|
|
4636
4807
|
background: linear-gradient(var(--q-bQGTFq),var(--q-bQGTFq)) var(--q-button-hover-background-layer, #fff);
|
|
4637
4808
|
}
|
|
4638
4809
|
|
|
4810
|
+
.q-hnauCG:hover {
|
|
4811
|
+
background: none;
|
|
4812
|
+
background: var(--q-cWcXnW);
|
|
4813
|
+
}
|
|
4814
|
+
|
|
4639
4815
|
.q-jjvLow:hover {
|
|
4640
4816
|
background: #e6e9ec;
|
|
4641
4817
|
}
|
|
4642
4818
|
|
|
4643
|
-
.q-
|
|
4819
|
+
.q-ixOhNh:hover:not(:disabled), .q-hKPjHd:hover {
|
|
4644
4820
|
background: #0000000f;
|
|
4645
4821
|
}
|
|
4646
4822
|
|
|
@@ -4689,6 +4865,10 @@
|
|
|
4689
4865
|
color: var(--q-kHrcNZ);
|
|
4690
4866
|
}
|
|
4691
4867
|
|
|
4868
|
+
.q-crUTNY:hover {
|
|
4869
|
+
box-shadow: none;
|
|
4870
|
+
}
|
|
4871
|
+
|
|
4692
4872
|
.q-MuFSQ:hover {
|
|
4693
4873
|
color: var(--q-ckoJkw);
|
|
4694
4874
|
}
|
|
@@ -4880,10 +5060,6 @@
|
|
|
4880
5060
|
height: 100%;
|
|
4881
5061
|
}
|
|
4882
5062
|
|
|
4883
|
-
.q-gfNJoW {
|
|
4884
|
-
height: 40%;
|
|
4885
|
-
}
|
|
4886
|
-
|
|
4887
5063
|
.q-jMeGMD {
|
|
4888
5064
|
height: 50%;
|
|
4889
5065
|
}
|
|
@@ -4914,7 +5090,7 @@
|
|
|
4914
5090
|
height: 24px;
|
|
4915
5091
|
}
|
|
4916
5092
|
|
|
4917
|
-
.q-
|
|
5093
|
+
.q-kSIGpb > [part="multimodal"], .q-cAmJVr > [part="multimodal"] {
|
|
4918
5094
|
padding: 0;
|
|
4919
5095
|
}
|
|
4920
5096
|
|
|
@@ -4926,7 +5102,28 @@
|
|
|
4926
5102
|
z-index: 1001;
|
|
4927
5103
|
}
|
|
4928
5104
|
|
|
4929
|
-
.q-
|
|
5105
|
+
.q-kxvSgE > [part="chat"], .q-kxvSgE > [part="input"], .q-kxvSgE > [part="privacy"] {
|
|
5106
|
+
display: none;
|
|
5107
|
+
}
|
|
5108
|
+
|
|
5109
|
+
.q-iNDLkz > [part="artifact"] {
|
|
5110
|
+
background-color: #00000080;
|
|
5111
|
+
}
|
|
5112
|
+
|
|
5113
|
+
.q-isJuhH > [part="artifact"] {
|
|
5114
|
+
-webkit-backdrop-filter: blur(2px);
|
|
5115
|
+
backdrop-filter: blur(2px);
|
|
5116
|
+
}
|
|
5117
|
+
|
|
5118
|
+
.q-cbBLhX > [part="artifact"] {
|
|
5119
|
+
z-index: 2;
|
|
5120
|
+
}
|
|
5121
|
+
|
|
5122
|
+
.q-gTaxHS > [part="multimodal"] {
|
|
5123
|
+
z-index: 3;
|
|
5124
|
+
}
|
|
5125
|
+
|
|
5126
|
+
.q-cEUyLT > [part="toolbar"] {
|
|
4930
5127
|
display: none;
|
|
4931
5128
|
}
|
|
4932
5129
|
|
|
@@ -5007,13 +5204,30 @@
|
|
|
5007
5204
|
width: 100%;
|
|
5008
5205
|
}
|
|
5009
5206
|
|
|
5010
|
-
.q-
|
|
5011
|
-
height:
|
|
5207
|
+
.q-xjpwZ > [part="artifact"] {
|
|
5208
|
+
height: 100%;
|
|
5012
5209
|
}
|
|
5013
5210
|
|
|
5014
5211
|
.q-gZeTFg > [part="artifact"] {
|
|
5015
5212
|
height: 80%;
|
|
5016
5213
|
}
|
|
5214
|
+
|
|
5215
|
+
.q-hSCbuw > [part="multimodal"] {
|
|
5216
|
+
bottom: 24px;
|
|
5217
|
+
bottom: calc(24px + var(--q-bottom-offset, 0px));
|
|
5218
|
+
}
|
|
5219
|
+
|
|
5220
|
+
.q-iWYrFM > [part="multimodal"] {
|
|
5221
|
+
right: 24px;
|
|
5222
|
+
}
|
|
5223
|
+
|
|
5224
|
+
.q-gUeaVj > [part="multimodal"] {
|
|
5225
|
+
width: fit-content;
|
|
5226
|
+
}
|
|
5227
|
+
|
|
5228
|
+
.q-bEbKWC > [part="multimodal"] {
|
|
5229
|
+
height: auto;
|
|
5230
|
+
}
|
|
5017
5231
|
}
|
|
5018
5232
|
|
|
5019
5233
|
@container bookerPanel (width <= 720px) {
|
|
@@ -5178,7 +5392,7 @@
|
|
|
5178
5392
|
transform: translateY(calc(-100% - 8px));
|
|
5179
5393
|
}
|
|
5180
5394
|
|
|
5181
|
-
.q-
|
|
5395
|
+
.q-lgmAsb > [part="controls"], .q-eQFZen > [data-chat-controls] {
|
|
5182
5396
|
opacity: 1;
|
|
5183
5397
|
}
|
|
5184
5398
|
|
|
@@ -5235,6 +5449,10 @@
|
|
|
5235
5449
|
.q-iLwSqI {
|
|
5236
5450
|
opacity: .14;
|
|
5237
5451
|
}
|
|
5452
|
+
|
|
5453
|
+
.q-bfvFLs:hover {
|
|
5454
|
+
transform: none;
|
|
5455
|
+
}
|
|
5238
5456
|
}
|
|
5239
5457
|
}
|
|
5240
5458
|
|
package/package.json
CHANGED
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qualified-salesforce/web",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Embeddable Qualified messenger widget
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Embeddable Qualified messenger widget (text-only ESM build).",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
|
+
"private": false,
|
|
6
7
|
"type": "module",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/FatbearLabs/fireball.git",
|
|
11
|
+
"directory": "npm-package/package-esm"
|
|
12
|
+
},
|
|
7
13
|
"exports": {
|
|
8
|
-
".":
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./packs/widget/esm/index.d.ts",
|
|
16
|
+
"default": "./packs/widget/esm/index.js"
|
|
17
|
+
},
|
|
9
18
|
"./qualified.css": "./packs/widget/esm/qualified.css"
|
|
10
19
|
},
|
|
11
20
|
"sideEffects": [
|
|
@@ -16,5 +25,10 @@
|
|
|
16
25
|
"./widget/multimodal_v2/index.panda.js",
|
|
17
26
|
"./widget/utils/native_globals.js",
|
|
18
27
|
"./packs/widget/esm/index.js"
|
|
19
|
-
]
|
|
28
|
+
],
|
|
29
|
+
"publishConfig": {
|
|
30
|
+
"access": "public",
|
|
31
|
+
"provenance": false,
|
|
32
|
+
"tag": "next"
|
|
33
|
+
}
|
|
20
34
|
}
|
|
@@ -205,6 +205,29 @@ function swapMarginWithPadding(body) {
|
|
|
205
205
|
whenBodyAvailable((body)=>{
|
|
206
206
|
markOverflowTraps(body);
|
|
207
207
|
observeBodyChildList(body);
|
|
208
|
+
reScanOnLoad(body);
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Re-runs {@link markOverflowTraps} once the document has finished loading.
|
|
213
|
+
*
|
|
214
|
+
* Both of the scan's decisions read layout that late content can still change:
|
|
215
|
+
* whether an element clips overflowing content, and whether `<body>` ends up
|
|
216
|
+
* scrollable (see {@link restoreStrandedScrollers}). A pass that runs while
|
|
217
|
+
* images / async sections are still arriving can therefore miss a trap, or
|
|
218
|
+
* roll one back that should have stood.
|
|
219
|
+
*
|
|
220
|
+
* Nothing else closes that window: the childList observer is skipped once the
|
|
221
|
+
* document is complete and disconnects after
|
|
222
|
+
* {@link OVERFLOW_TRAP_OBSERVER_LIFETIME_MS}, and `reEvaluate` only re-enters
|
|
223
|
+
* on host navigation. `applyOnce` keeps repeated `reEvaluate` calls from
|
|
224
|
+
* stacking listeners.
|
|
225
|
+
*/ function reScanOnLoad(body) {
|
|
226
|
+
if (document.readyState === "complete") return;
|
|
227
|
+
applyOnce(body, "" + DOCKING_PROXY_MARKER + "_overflow_trap_load", (b)=>{
|
|
228
|
+
__nativeWindowAddEventListener("load", ()=>markOverflowTraps(b), {
|
|
229
|
+
once: true
|
|
230
|
+
});
|
|
208
231
|
});
|
|
209
232
|
}
|
|
210
233
|
/** Bounds the MutationObserver's lifetime so long-lived pages don't keep re-scanning. */ const OVERFLOW_TRAP_OBSERVER_LIFETIME_MS = 5000;
|
|
@@ -235,6 +258,11 @@ function swapMarginWithPadding(body) {
|
|
|
235
258
|
* its art keeps its clip, but low enough to catch tall content sections
|
|
236
259
|
* (~1.4× viewport) that would otherwise trap the wheel.
|
|
237
260
|
*/ const SHELL_PASS_THROUGH_VIEWPORT_RATIO = 1.25;
|
|
261
|
+
/**
|
|
262
|
+
* Margin by which `scrollHeight` must exceed `clientHeight` before an element
|
|
263
|
+
* counts as having overflowing content. Covers sub-pixel rounding and
|
|
264
|
+
* scrollbar-gutter reservation.
|
|
265
|
+
*/ const SCROLL_OVERFLOW_SLACK_PX = 4;
|
|
238
266
|
/**
|
|
239
267
|
* Walks body's subtree post-order, marking each qualifying scroll trap. Post-
|
|
240
268
|
* order is load-bearing: marking an inner trap exposes its previously-clipped
|
|
@@ -255,6 +283,10 @@ function swapMarginWithPadding(body) {
|
|
|
255
283
|
for (const el of body.querySelectorAll("[" + OVERFLOW_TRAP_ATTRIBUTE + "]")){
|
|
256
284
|
el.removeAttribute(OVERFLOW_TRAP_ATTRIBUTE);
|
|
257
285
|
}
|
|
286
|
+
// Scroll containers this pass clipped, with the range each one lost, so
|
|
287
|
+
// {@link restoreStrandedScrollers} can tell a real handoff to `<body>` from
|
|
288
|
+
// one that left the content unreachable.
|
|
289
|
+
const clipped = [];
|
|
258
290
|
const visit = (el, depth)=>{
|
|
259
291
|
if (depth < OVERFLOW_TRAP_MAX_DEPTH) {
|
|
260
292
|
for (const child of el.children){
|
|
@@ -262,12 +294,72 @@ function swapMarginWithPadding(body) {
|
|
|
262
294
|
}
|
|
263
295
|
}
|
|
264
296
|
if (isOverflowTrap(el, depth, dims)) {
|
|
297
|
+
// Measure before the write — the attribute changes the computed overflow.
|
|
298
|
+
const lostRange = scrollRangeOf(el);
|
|
299
|
+
if (lostRange > 0) clipped.push({
|
|
300
|
+
el,
|
|
301
|
+
lostRange
|
|
302
|
+
});
|
|
265
303
|
el.setAttribute(OVERFLOW_TRAP_ATTRIBUTE, "");
|
|
266
304
|
}
|
|
267
305
|
};
|
|
268
306
|
for (const child of body.children){
|
|
269
307
|
if (child instanceof HTMLElement) visit(child, 1);
|
|
270
308
|
}
|
|
309
|
+
restoreStrandedScrollers(body, clipped);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* How far `el` can currently be scrolled, or 0 when it is not a functioning
|
|
313
|
+
* scroll container.
|
|
314
|
+
*
|
|
315
|
+
* A `hidden` / `clip` trap scores 0 even when its content overflows: it eats
|
|
316
|
+
* the wheel without ever scrolling, so opening it up cannot take scrolling
|
|
317
|
+
* away. Only `auto` / `scroll` elements can lose something.
|
|
318
|
+
*/ function scrollRangeOf(el) {
|
|
319
|
+
const { overflowY } = getComputedStyle(el);
|
|
320
|
+
if (!/auto|scroll/.test(overflowY)) return 0;
|
|
321
|
+
const range = el.scrollHeight - el.clientHeight;
|
|
322
|
+
return range > SCROLL_OVERFLOW_SLACK_PX ? range : 0;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Undoes trap marks that took the page's scrolling away without giving
|
|
326
|
+
* `<body>` anything to scroll in exchange.
|
|
327
|
+
*
|
|
328
|
+
* Opening up an `overflow-y: auto` shell is only sound when its content can
|
|
329
|
+
* flow into body's scroll range once the clip is lifted. On a host whose shell
|
|
330
|
+
* chain is pinned to the viewport (`height: 100vh` the whole way down) it
|
|
331
|
+
* cannot: the marked element keeps its fixed height, body's `scrollHeight`
|
|
332
|
+
* never grows, and `overflow: clip` has meanwhile destroyed the only scroller
|
|
333
|
+
* on the page — so the document freezes and the visitor can't reach the
|
|
334
|
+
* content below the fold.
|
|
335
|
+
*
|
|
336
|
+
* Only marks on live scroll containers roll back. A `hidden` / `clip` trap
|
|
337
|
+
* never scrolled, so opening it up can't take scrolling away, and leaving
|
|
338
|
+
* those marked preserves the original heuristic's behaviour.
|
|
339
|
+
*
|
|
340
|
+
* The handoff is judged by range rather than by "body scrolls at all": a
|
|
341
|
+
* pinned shell can carry a little unrelated body overflow (a banner, a
|
|
342
|
+
* stray footer) while the clipped scroller gave up hundreds of pixels, and
|
|
343
|
+
* treating those few pixels as success would leave the content unreachable.
|
|
344
|
+
* `<body>` has to gain at least as much range as the largest clipped
|
|
345
|
+
* scroller lost. Largest rather than total, since nested scrollers overlap
|
|
346
|
+
* and summing them would demand range the page never had.
|
|
347
|
+
*
|
|
348
|
+
* A zero-height body means layout isn't available (jsdom, or a pass that ran
|
|
349
|
+
* before first paint) and the comparison would be meaningless, so leave the
|
|
350
|
+
* marks alone — `markOverflowTraps` is idempotent and later passes re-decide
|
|
351
|
+
* against real numbers.
|
|
352
|
+
*/ function restoreStrandedScrollers(body, clipped) {
|
|
353
|
+
if (clipped.length === 0) return;
|
|
354
|
+
if (body.clientHeight === 0) return;
|
|
355
|
+
// This read flushes the attribute writes above, so body's scrollHeight
|
|
356
|
+
// already reflects the clipped descendants.
|
|
357
|
+
const bodyRange = body.scrollHeight - body.clientHeight;
|
|
358
|
+
const lostRange = Math.max(...clipped.map((c)=>c.lostRange));
|
|
359
|
+
if (bodyRange >= lostRange) return;
|
|
360
|
+
for (const { el } of clipped){
|
|
361
|
+
el.removeAttribute(OVERFLOW_TRAP_ATTRIBUTE);
|
|
362
|
+
}
|
|
271
363
|
}
|
|
272
364
|
function isOverflowTrap(el, depth, dims) {
|
|
273
365
|
const { overflowY, position } = getComputedStyle(el);
|
|
@@ -284,8 +376,7 @@ function isOverflowTrap(el, depth, dims) {
|
|
|
284
376
|
if (position && position !== "static" && position !== "relative") return false;
|
|
285
377
|
if (el.offsetWidth < dims.minW) return false;
|
|
286
378
|
// Active trap: full-size clipper with currently-overflowing content.
|
|
287
|
-
|
|
288
|
-
if (el.offsetHeight >= dims.minH && el.scrollHeight > el.clientHeight + 4) {
|
|
379
|
+
if (el.offsetHeight >= dims.minH && el.scrollHeight > el.clientHeight + SCROLL_OVERFLOW_SLACK_PX) {
|
|
289
380
|
return true;
|
|
290
381
|
}
|
|
291
382
|
// Page-shell pass-through: tall clipper whose scrollHeight === clientHeight
|