rails_onboarding 0.7.2 → 0.8.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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/rails_onboarding/progress_controller.js +8 -4
- data/app/assets/javascripts/rails_onboarding/tooltip_controller.js +10 -3
- data/app/assets/stylesheets/rails_onboarding/accessibility.css +2 -2
- data/app/assets/stylesheets/rails_onboarding/application.css +36 -23
- data/app/assets/stylesheets/rails_onboarding/mobile.css +1 -1
- data/app/assets/stylesheets/rails_onboarding/tooltips.css +5 -5
- data/app/assets/stylesheets/rails_onboarding/utilities.css +1 -1
- data/lib/rails_onboarding/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 968d937235787bd7b4b096707cd9e44f2152d11c5b9d6f92f8f684d4b0807e98
|
|
4
|
+
data.tar.gz: f3b564a235899a551598ae48c9877ef5090261240a9e5b33cf0f63af6c155fc4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 35466bcb9f4c22021d9a8012cb4f0fc0bf3a2b3ccaeedf270f0681711d1a686e41b6a3e102b6a5084955ca7b0c2bc5ad84203b284303604b1e27c5c93a032a58
|
|
7
|
+
data.tar.gz: 1674b9b08636d82c3d71fb78b80d8aae49d7f7510f91ff948dbbf642c79ddf21118248d465bce33b84e5630c24ee37b04cdfc2d30542047cc50fa2469210babd
|
|
@@ -149,8 +149,8 @@ export default class extends Controller {
|
|
|
149
149
|
</div>
|
|
150
150
|
`
|
|
151
151
|
|
|
152
|
-
// Position tooltip (top/left are
|
|
153
|
-
//
|
|
152
|
+
// Position tooltip (top/left are computed per call, so they stay inline;
|
|
153
|
+
// everything else lives in .step-tooltip)
|
|
154
154
|
document.body.appendChild(tooltip)
|
|
155
155
|
this.positionTooltip(tooltip, targetElement)
|
|
156
156
|
|
|
@@ -179,8 +179,12 @@ export default class extends Controller {
|
|
|
179
179
|
top = rect.top - tooltipRect.height - 8
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
-
|
|
183
|
-
|
|
182
|
+
// The maths above is all in viewport space (getBoundingClientRect,
|
|
183
|
+
// window.innerWidth/Height), but .step-tooltip is `position: absolute`
|
|
184
|
+
// on document.body, so add the scroll offset when applying. See the same
|
|
185
|
+
// conversion in tooltip_controller.js#positionTooltip.
|
|
186
|
+
tooltip.style.top = `${top + window.scrollY}px`
|
|
187
|
+
tooltip.style.left = `${left + window.scrollX}px`
|
|
184
188
|
}
|
|
185
189
|
|
|
186
190
|
// Advance to next step (for testing/demo purposes)
|
|
@@ -784,9 +784,16 @@ export default class extends Controller {
|
|
|
784
784
|
|
|
785
785
|
let { position, top, left, arrowPosition } = bestPosition
|
|
786
786
|
|
|
787
|
-
// Apply position
|
|
788
|
-
|
|
789
|
-
|
|
787
|
+
// Apply position, converting viewport coordinates to document ones.
|
|
788
|
+
// Everything above - getBoundingClientRect, the edge clamping in
|
|
789
|
+
// calculatePosition, the collision checks in scorePosition - works in
|
|
790
|
+
// viewport space, but .onboarding-tooltip is `position: absolute` on
|
|
791
|
+
// document.body, so top/left are resolved against the document. Without
|
|
792
|
+
// the scroll offset the tooltip lands a full scroll position away from
|
|
793
|
+
// its trigger. Absolute (not fixed) is deliberate: it keeps the tooltip
|
|
794
|
+
// glued to the trigger if the page scrolls while it's open.
|
|
795
|
+
this.tooltip.style.top = `${top + viewport.scrollY}px`
|
|
796
|
+
this.tooltip.style.left = `${left + viewport.scrollX}px`
|
|
790
797
|
|
|
791
798
|
// Style arrow based on final position
|
|
792
799
|
if (arrow) {
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
position: absolute;
|
|
27
27
|
top: -2.5rem;
|
|
28
28
|
left: var(--onboarding-space-md);
|
|
29
|
-
background: var(--onboarding-primary);
|
|
30
|
-
color:
|
|
29
|
+
background: var(--onboarding-primary-fill);
|
|
30
|
+
color: var(--onboarding-on-primary);
|
|
31
31
|
padding: var(--onboarding-space-sm) var(--onboarding-space-md);
|
|
32
32
|
border-radius: 0.375rem;
|
|
33
33
|
text-decoration: none;
|
|
@@ -40,6 +40,19 @@
|
|
|
40
40
|
--onboarding-primary: #6366f1;
|
|
41
41
|
--onboarding-primary-hover: #4f46e5;
|
|
42
42
|
--onboarding-secondary: #64748b;
|
|
43
|
+
|
|
44
|
+
/* The brand colour doing its other job: filling a surface that carries a
|
|
45
|
+
label - buttons, step markers, the progress bar, the tooltip bubble. It
|
|
46
|
+
defaults to --onboarding-primary, so a host that sets nothing sees exactly
|
|
47
|
+
what it saw before.
|
|
48
|
+
Set it when one value cannot do both. In a dark theme it usually cannot:
|
|
49
|
+
text on a dark page has to be light, a fill behind a light label has to be
|
|
50
|
+
dark, and against a #16151a background those requirements (luminance
|
|
51
|
+
>= 0.21 and <= 0.18) do not overlap at WCAG AA. Splitting them lets a host
|
|
52
|
+
keep readable brand text *and* a readable button, instead of choosing. */
|
|
53
|
+
--onboarding-primary-fill: var(--onboarding-primary);
|
|
54
|
+
--onboarding-primary-fill-hover: var(--onboarding-primary-hover);
|
|
55
|
+
--onboarding-on-primary: #ffffff;
|
|
43
56
|
--onboarding-success: #10b981;
|
|
44
57
|
--onboarding-warning: #f59e0b;
|
|
45
58
|
--onboarding-danger: #ef4444;
|
|
@@ -173,9 +186,9 @@
|
|
|
173
186
|
}
|
|
174
187
|
|
|
175
188
|
.onboarding-banner-continue {
|
|
176
|
-
background: var(--onboarding-primary);
|
|
177
|
-
color:
|
|
178
|
-
border: 2px solid var(--onboarding-primary);
|
|
189
|
+
background: var(--onboarding-primary-fill);
|
|
190
|
+
color: var(--onboarding-on-primary);
|
|
191
|
+
border: 2px solid var(--onboarding-primary-fill);
|
|
179
192
|
padding: var(--onboarding-space-sm) var(--onboarding-space-lg);
|
|
180
193
|
border-radius: 0.5rem;
|
|
181
194
|
font-weight: 600;
|
|
@@ -186,8 +199,8 @@
|
|
|
186
199
|
}
|
|
187
200
|
|
|
188
201
|
.onboarding-banner-continue:hover {
|
|
189
|
-
background: var(--onboarding-primary-hover);
|
|
190
|
-
border-color: var(--onboarding-primary-hover);
|
|
202
|
+
background: var(--onboarding-primary-fill-hover);
|
|
203
|
+
border-color: var(--onboarding-primary-fill-hover);
|
|
191
204
|
}
|
|
192
205
|
|
|
193
206
|
.onboarding-banner-skip {
|
|
@@ -236,7 +249,7 @@
|
|
|
236
249
|
.onboarding-progress-fill {
|
|
237
250
|
height: 100%;
|
|
238
251
|
width: var(--onboarding-progress-width, 0%);
|
|
239
|
-
background: linear-gradient(90deg, var(--onboarding-primary), var(--onboarding-success));
|
|
252
|
+
background: linear-gradient(90deg, var(--onboarding-primary-fill), var(--onboarding-success));
|
|
240
253
|
border-radius: 0.25rem;
|
|
241
254
|
transition: width 0.3s ease;
|
|
242
255
|
}
|
|
@@ -277,9 +290,9 @@
|
|
|
277
290
|
}
|
|
278
291
|
|
|
279
292
|
.progress-step.onboarding-current .step-marker {
|
|
280
|
-
background: var(--onboarding-primary);
|
|
281
|
-
border: 2px solid var(--onboarding-primary);
|
|
282
|
-
color:
|
|
293
|
+
background: var(--onboarding-primary-fill);
|
|
294
|
+
border: 2px solid var(--onboarding-primary-fill);
|
|
295
|
+
color: var(--onboarding-on-primary);
|
|
283
296
|
}
|
|
284
297
|
|
|
285
298
|
.progress-step.onboarding-completed .step-marker {
|
|
@@ -442,8 +455,8 @@
|
|
|
442
455
|
}
|
|
443
456
|
|
|
444
457
|
.time-estimate {
|
|
445
|
-
background: linear-gradient(135deg, var(--onboarding-primary), var(--onboarding-success));
|
|
446
|
-
color:
|
|
458
|
+
background: linear-gradient(135deg, var(--onboarding-primary-fill), var(--onboarding-success));
|
|
459
|
+
color: var(--onboarding-on-primary);
|
|
447
460
|
padding: var(--onboarding-space-lg);
|
|
448
461
|
border-radius: 0.75rem;
|
|
449
462
|
text-align: center;
|
|
@@ -679,8 +692,8 @@
|
|
|
679
692
|
}
|
|
680
693
|
|
|
681
694
|
.feature-button {
|
|
682
|
-
background: var(--onboarding-primary);
|
|
683
|
-
color:
|
|
695
|
+
background: var(--onboarding-primary-fill);
|
|
696
|
+
color: var(--onboarding-on-primary);
|
|
684
697
|
border: none;
|
|
685
698
|
padding: var(--onboarding-space-sm) var(--onboarding-space-lg);
|
|
686
699
|
border-radius: 0.5rem;
|
|
@@ -690,7 +703,7 @@
|
|
|
690
703
|
}
|
|
691
704
|
|
|
692
705
|
.feature-button:hover {
|
|
693
|
-
background: var(--onboarding-primary-hover);
|
|
706
|
+
background: var(--onboarding-primary-fill-hover);
|
|
694
707
|
transform: translateY(-1px);
|
|
695
708
|
}
|
|
696
709
|
|
|
@@ -729,9 +742,9 @@
|
|
|
729
742
|
}
|
|
730
743
|
|
|
731
744
|
.primary-action {
|
|
732
|
-
background: var(--onboarding-primary);
|
|
733
|
-
color:
|
|
734
|
-
border: 2px solid var(--onboarding-primary);
|
|
745
|
+
background: var(--onboarding-primary-fill);
|
|
746
|
+
color: var(--onboarding-on-primary);
|
|
747
|
+
border: 2px solid var(--onboarding-primary-fill);
|
|
735
748
|
padding: var(--onboarding-space-md) var(--onboarding-space-xl);
|
|
736
749
|
border-radius: 0.75rem;
|
|
737
750
|
font-weight: 600;
|
|
@@ -745,8 +758,8 @@
|
|
|
745
758
|
}
|
|
746
759
|
|
|
747
760
|
.primary-action:hover:not(:disabled) {
|
|
748
|
-
background: var(--onboarding-primary-hover);
|
|
749
|
-
border-color: var(--onboarding-primary-hover);
|
|
761
|
+
background: var(--onboarding-primary-fill-hover);
|
|
762
|
+
border-color: var(--onboarding-primary-fill-hover);
|
|
750
763
|
transform: translateY(-2px);
|
|
751
764
|
box-shadow: var(--onboarding-shadow-lg);
|
|
752
765
|
}
|
|
@@ -867,8 +880,8 @@
|
|
|
867
880
|
width: 1.25rem;
|
|
868
881
|
height: 1.25rem;
|
|
869
882
|
border-radius: 50%;
|
|
870
|
-
background: var(--onboarding-primary);
|
|
871
|
-
color:
|
|
883
|
+
background: var(--onboarding-primary-fill);
|
|
884
|
+
color: var(--onboarding-on-primary);
|
|
872
885
|
display: flex;
|
|
873
886
|
align-items: center;
|
|
874
887
|
justify-content: center;
|
|
@@ -929,8 +942,8 @@
|
|
|
929
942
|
}
|
|
930
943
|
|
|
931
944
|
.close-help {
|
|
932
|
-
background: var(--onboarding-primary);
|
|
933
|
-
color:
|
|
945
|
+
background: var(--onboarding-primary-fill);
|
|
946
|
+
color: var(--onboarding-on-primary);
|
|
934
947
|
border: none;
|
|
935
948
|
padding: var(--onboarding-space-xs) var(--onboarding-space-md);
|
|
936
949
|
border-radius: 0.375rem;
|
|
@@ -169,8 +169,8 @@
|
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
.tooltip-action {
|
|
172
|
-
background: var(--onboarding-primary);
|
|
173
|
-
color:
|
|
172
|
+
background: var(--onboarding-primary-fill);
|
|
173
|
+
color: var(--onboarding-on-primary);
|
|
174
174
|
border: none;
|
|
175
175
|
padding: var(--onboarding-space-xs) var(--onboarding-space-sm);
|
|
176
176
|
border-radius: 0.375rem;
|
|
@@ -181,7 +181,7 @@
|
|
|
181
181
|
}
|
|
182
182
|
|
|
183
183
|
.tooltip-action:hover {
|
|
184
|
-
background: var(--onboarding-primary-hover);
|
|
184
|
+
background: var(--onboarding-primary-fill-hover);
|
|
185
185
|
}
|
|
186
186
|
|
|
187
187
|
.tooltip-action.onboarding-secondary {
|
|
@@ -195,8 +195,8 @@
|
|
|
195
195
|
|
|
196
196
|
/* Feature tooltips (specific to onboarding features) */
|
|
197
197
|
.feature-tooltip {
|
|
198
|
-
background: linear-gradient(135deg, var(--onboarding-primary), var(--onboarding-success));
|
|
199
|
-
color:
|
|
198
|
+
background: linear-gradient(135deg, var(--onboarding-primary-fill), var(--onboarding-success));
|
|
199
|
+
color: var(--onboarding-on-primary);
|
|
200
200
|
padding: var(--onboarding-space-lg);
|
|
201
201
|
border-radius: 1rem;
|
|
202
202
|
max-width: 24rem;
|
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
.onboarding-bg-primary { background-color: var(--onboarding-background); }
|
|
153
153
|
.onboarding-bg-surface { background-color: var(--onboarding-surface); }
|
|
154
154
|
.onboarding-bg-elevated { background-color: var(--onboarding-surface-elevated); }
|
|
155
|
-
.onboarding-bg-brand { background-color: var(--onboarding-primary); }
|
|
155
|
+
.onboarding-bg-brand { background-color: var(--onboarding-primary-fill); }
|
|
156
156
|
.onboarding-bg-success { background-color: var(--onboarding-success); }
|
|
157
157
|
.onboarding-bg-warning { background-color: var(--onboarding-warning); }
|
|
158
158
|
.onboarding-bg-danger { background-color: var(--onboarding-danger); }
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rails_onboarding
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.8.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Lewis
|
|
@@ -282,7 +282,7 @@ licenses:
|
|
|
282
282
|
metadata:
|
|
283
283
|
allowed_push_host: https://rubygems.org
|
|
284
284
|
homepage_uri: https://github.com/bunnahabhain/rails_onboarding
|
|
285
|
-
source_code_uri: https://github.com/bunnahabhain/rails_onboarding/tree/v0.
|
|
285
|
+
source_code_uri: https://github.com/bunnahabhain/rails_onboarding/tree/v0.8.1
|
|
286
286
|
changelog_uri: https://github.com/bunnahabhain/rails_onboarding/blob/master/docs/CHANGELOG.md
|
|
287
287
|
rdoc_options: []
|
|
288
288
|
require_paths:
|