abraham 2.0.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c8a61048b60ffe74990a86c146886551d315f2da86eb70ce31f5b28dcdb4fe5e
4
- data.tar.gz: 8dc414098b445450cf739cec4b5b43b4b15c0322bacbc2d5dc4b2ba3f2e3aa45
3
+ metadata.gz: d6094c0e5929d5da7e61f12bd1e60a11e450a05e2c3b99afc349b0b7d847edca
4
+ data.tar.gz: 2b6df2f7d73f7b0c312b13ca3bc5adf16452437f1fd97faea90468093193f5fa
5
5
  SHA512:
6
- metadata.gz: 17a96b08513bd5adda880abe973557c685b8c4b4d0aba48475ec6c1dcf5fcda2192f72a3536ab5fa01f7740353dcc38e24e9a2a8236a3e3684c17050b679f486
7
- data.tar.gz: 57d9abd011c6168fabfba830288f0855a9a24e40a634254264d453efb3d2c556d7ef685b751729bcd9e69ba460cf0652415d20ab82f03244a2e85775d869eebd
6
+ metadata.gz: 978175580bd5132ea570ea0c14421f6ac0def8ca523ce5dfea730c3934c49180c6f9909fd35f161190afddf02aade22c9d447cb74546c419d8cd143e77129d3e
7
+ data.tar.gz: 9c46128409adfc46ed76abe7f07601d4e5035c63641c13e50b747e51a2e532910326ed77f63f7b2406feb4f5930feb8dbdbe10e5b660f858409f1ce7cf8f186c
data/README.md CHANGED
@@ -15,7 +15,8 @@ Abraham injects dynamically-generated [Shepherd](https://shepherdjs.dev/) JavaSc
15
15
 
16
16
  ## Requirements
17
17
 
18
- Abraham needs to know the current user to track tour views, e.g. `current_user` from Devise.
18
+ * Abraham needs to know the current user to track tour views, e.g. `current_user` from Devise.
19
+ * Abraham is tested on Rails 5.2, 6.0, and 6.1
19
20
 
20
21
  ## Installation
21
22
 
@@ -95,7 +96,7 @@ NB: You must specify a locale in the filename, even if you're only supporting on
95
96
 
96
97
  ### Tour content
97
98
 
98
- A tour is composed of a series of steps. A step may have a title and must have a description. You may attach a step to a particular element on the page, and place the callout to the left, right, top, or bottom.
99
+ A tour is composed of a series of steps. A step may have a title and must have a description. You may attach a step to a particular element on the page, and place the callout in a particular position (see below).
99
100
 
100
101
  ```yaml
101
102
  intro:
@@ -122,6 +123,23 @@ Abraham takes care of which buttons should appear with each step:
122
123
  * "Exit" and "Next" buttons on intermediate steps
123
124
  * "Done" button on the last step
124
125
 
126
+ When you specify an `attachTo` element, use the `placement` option to choose where the callout should appear relative to that element:
127
+
128
+ * `bottom` / `bottom center`
129
+ * `bottom left`
130
+ * `bottom right`
131
+ * `center` / `middle` / `middle center`
132
+ * `left` / `middle left'
133
+ * `right` / `middle right`
134
+ * `top` / `top center`
135
+ * `top left`
136
+ * `top right`
137
+
138
+ Abraham tries to be helpful when your tour steps attach to page elements that are missing:
139
+
140
+ * If your first step is attached to a particular element, and that element is not present on the page, the tour won't start. ([#28](https://github.com/actmd/abraham/issues/28))
141
+ * If your tour has an intermediate step attached to a missing element, Abraham will skip that step and automatically show the next. ([#6](https://github.com/actmd/abraham/issues/6))
142
+
125
143
  ### Testing your tours
126
144
 
127
145
  Abraham loads tour definitions once when you start your server. Restart your server to see tour changes.
@@ -134,6 +152,10 @@ Rails.application.configure do
134
152
  end
135
153
  ```
136
154
 
155
+ ## Full example
156
+
157
+ We provide a [small example app](https://github.com/actmd/abraham-example) that implements abraham, so you can see it in action.
158
+
137
159
  ## Upgrading from version 1
138
160
 
139
161
  Abraham v1 was built using Shepherd 1.8, v2 now uses Shepherd 6 -- quite a jump, yes.
@@ -144,11 +166,7 @@ If you were using Abraham v1, you'll want to take the following steps to upgrade
144
166
  1. Fix your yarn dependencies to use the right versions
145
167
  1. Shepherd no longer provides a set of themes. Abraham maintains two of the legacy themes: default and dark. You'll want to choose one of those or migrate your theme to the new Shepherd structure.
146
168
  1. Abraham now exposes the entire Shepherd configuration object, so your `abraham.yml` file should now fully define the `tour_options` value instead of `default_theme`
147
- 1. There's been a slight change to `initializers/abraham.rb`. You can just change line 22 to:
148
-
149
- ```rb
150
- config.abraham.tour_options = abraham_config[:tour_options]
151
- ```
169
+ 1. There's been a slight change to `initializers/abraham.rb`. Replace yours with [the latest](https://github.com/actmd/abraham/blob/master/lib/generators/abraham/templates/initializer.rb).
152
170
 
153
171
  If you have any trouble at all, please [submit an issue](https://github.com/actmd/abraham/issues) for assistance!
154
172
 
@@ -156,10 +174,26 @@ If you have any trouble at all, please [submit an issue](https://github.com/actm
156
174
 
157
175
  Contributions are welcome!
158
176
 
159
- Create a feature branch (using git-flow) and submit as a pull request.
177
+ Create a feature branch (using git-flow) and submit as a pull request (with a base branch of `develop`).
160
178
 
161
179
  Everyone interacting in Abraham's codebase, issue tracker, etc. is expected to follow the [Contributor Covenent Code of Conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct).
162
180
 
181
+ ### Getting started with the source code
182
+
183
+ Abraham uses `rvm` with a gemset to ensure the appropriate version of Ruby and its dependencies. Make sure that's installed before you get started.
184
+
185
+ ```
186
+ ~ git clone git@github.com:actmd/abraham.git
187
+ Cloning into 'abraham'...
188
+ ~ cd abraham
189
+ ruby-2.5.3 - #gemset created /Users/jon/.rvm/gems/ruby-2.5.3@abraham
190
+ ruby-2.5.3 - #generating abraham wrappers - please wait
191
+ ~ bundle install
192
+ Bundle complete! 13 Gemfile dependencies, 73 gems now installed.
193
+ Use `bundle info [gemname]` to see where a bundled gem is installed.
194
+ ~ yarn install
195
+ ```
196
+
163
197
  ### Testing
164
198
 
165
199
  #### Testing locally
@@ -178,7 +212,7 @@ gem 'abraham', path: '~/Workspace/abraham'
178
212
 
179
213
  #### Automated testing
180
214
 
181
- We use TravisCI to automatically test this engine with Rails 5.1, 5.2, and 6.0. For test history, venture over to [TravisCI](https://travis-ci.com/actmd/abraham).
215
+ We use TravisCI to automatically test this engine with Rails 5.2, 6.0, and 6.1. For test history, venture over to [TravisCI](https://travis-ci.com/actmd/abraham).
182
216
 
183
217
  ### Releasing
184
218
 
data/Rakefile CHANGED
@@ -26,10 +26,10 @@ require "bundler/gem_tasks"
26
26
  require "rake/testtask"
27
27
 
28
28
  Rake::TestTask.new(:test) do |t|
29
- t.libs << "lib"
30
29
  t.libs << "test"
31
30
  t.pattern = "test/**/*_test.rb"
32
31
  t.verbose = false
32
+ t.warning = false
33
33
  end
34
34
 
35
35
  task default: :test
@@ -1,8 +1,7 @@
1
- //= require jquery
2
1
  //= require js-cookie/src/js.cookie
3
2
  //= require shepherd.js/dist/js/shepherd
4
3
 
5
- $(document).on('turbolinks:before-cache', function() {
6
- // Remove visible product tours
7
- $(".shepherd-step").remove();
4
+ document.addEventListener('turbolinks:before-cache', function() {
5
+ // Remove visible product tours
6
+ document.querySelectorAll(".shepherd-element").forEach(function(el) { el.remove() });
8
7
  });
@@ -15,7 +15,6 @@ class AbrahamHistoriesController < ApplicationController
15
15
 
16
16
  private
17
17
 
18
- # Never trust parameters from the scary internet, only allow the white list through.
19
18
  def abraham_history_params
20
19
  params.require(:abraham_history).permit(:controller_name, :action_name, :tour_name)
21
20
  end
@@ -25,9 +25,18 @@ module AbrahamHelper
25
25
  end
26
26
 
27
27
  def abraham_cookie_prefix
28
- "abraham-#{Rails.application.class.parent.to_s.underscore}-#{current_user.id}-#{controller_name}-#{action_name}"
28
+ "abraham-#{fetch_application_name.to_s.underscore}-#{current_user.id}-#{controller_name}-#{action_name}"
29
29
  end
30
30
 
31
+ def fetch_application_name
32
+ if Module.method_defined?(:module_parent)
33
+ Rails.application.class.module_parent
34
+ else
35
+ Rails.application.class.parent
36
+ end
37
+ end
38
+
39
+
31
40
  def abraham_domain
32
41
  request.host
33
42
  end
@@ -1,14 +1,12 @@
1
1
  <script>
2
- const tour = new Shepherd.Tour(<%= Rails.configuration.abraham.tour_options.html_safe unless Rails.configuration.abraham.tour_options.nil? %>);
2
+ var tour = new Shepherd.Tour(<%= Rails.configuration.abraham.tour_options.html_safe unless Rails.configuration.abraham.tour_options.nil? %>);
3
3
 
4
4
  tour.on("complete", function() {
5
- // ajax
6
- return $.ajax({
7
- url: "/abraham_histories/",
8
- type: "POST",
9
- dataType: "json",
10
- contentType: "application/json",
11
- data: JSON.stringify({
5
+ // Make AJAX call to save history of tour completion
6
+ return fetch("/abraham_histories/", {
7
+ method: "POST",
8
+ headers: { 'Content-Type': 'application/json' },
9
+ body: JSON.stringify({
12
10
  authenticity_token: '<%= form_authenticity_token %>',
13
11
  controller_name: '<%= controller_name %>',
14
12
  action_name: '<%= action_name %>',
@@ -51,8 +49,20 @@
51
49
  });
52
50
  <% end %>
53
51
 
54
- // Don't start the tour if the user dismissed it once this session
55
- if (!Cookies.get('<%= abraham_cookie_prefix %>-<%= tour_name %>', { domain: '<%= abraham_domain %>' })) {
56
- tour.start();
57
- }
52
+ tour.start = function (start) {
53
+ return function () {
54
+ // Don't start the tour if the user dismissed it once this session
55
+ var tourMayStart = !Cookies.get('<%= abraham_cookie_prefix %>-<%= tour_name %>', {domain: '<%= abraham_domain %>'});
56
+ <% if steps.first[1]['attachTo'] %>
57
+ // Don't start the tour if the first step's element is missing
58
+ tourMayStart = tourMayStart && document.querySelector("<%= steps.first[1]['attachTo']['element'] %>");
59
+ <% end %>
60
+
61
+ if (tourMayStart) {
62
+ start();
63
+ }
64
+ }
65
+ }(tour.start)
66
+
67
+ tour.start()
58
68
  </script>
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Abraham
4
- VERSION = "2.0.0"
4
+ VERSION = "2.2.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abraham
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Abbett
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-17 00:00:00.000000000 Z
11
+ date: 2021-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sassc-rails
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: web-console
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description: Trackable application tours for Rails with i18n support, based on Shepherd.js.
70
84
  email:
71
85
  - jonathan@act.md
@@ -101,7 +115,7 @@ homepage: https://github.com/actmd/abraham
101
115
  licenses:
102
116
  - MIT
103
117
  metadata: {}
104
- post_install_message:
118
+ post_install_message:
105
119
  rdoc_options: []
106
120
  require_paths:
107
121
  - lib
@@ -116,8 +130,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
130
  - !ruby/object:Gem::Version
117
131
  version: '0'
118
132
  requirements: []
119
- rubygems_version: 3.0.2
120
- signing_key:
133
+ rubygems_version: 3.0.8
134
+ signing_key:
121
135
  specification_version: 4
122
136
  summary: Trackable application tours for Rails with i18n support, based on Shepherd.js.
123
137
  test_files: []