Skip to content

Commit 02e29bc

Browse files
committed
feature/Add basic login modal flow
1 parent 93a4fcf commit 02e29bc

File tree

11 files changed

+115
-42
lines changed

11 files changed

+115
-42
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Users::ModalsController < ApplicationController
2+
def sign_in_sign_up
3+
render layout: false
4+
end
5+
6+
def sign_in
7+
render layout: false
8+
end
9+
10+
def sign_up
11+
render layout: false
12+
end
13+
end

app/javascript/controllers/modal_controller.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ export default class extends Controller {
88
this.element[this.identifier] = this
99
}
1010

11-
present(url) {
11+
present(url, header) {
1212
axios.get(url)
1313
.then(res => {
14+
this.close()
1415
this.bodyTarget.insertAdjacentHTML('afterbegin', res.data);
1516
this.modalTarget.classList.remove('hidden')
1617
})
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { Controller } from 'stimulus';
2+
import axios from 'axios';
3+
4+
export default class extends Controller {
5+
static targets = [];
6+
7+
initialize() {
8+
const csrfToken = document.querySelector("meta[name=csrf-token]").content
9+
axios.defaults.headers.common['X-CSRF-Token'] = csrfToken
10+
}
11+
12+
presentModal(event) {
13+
14+
const target = event.currentTarget || event.target
15+
console.log('e', target.dataset)
16+
this.modal.present(target.dataset.modalUrl)
17+
}
18+
19+
get modal() {
20+
return document.getElementById('modal').modal
21+
}
22+
}

app/models/snippet.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class Snippet < ApplicationRecord
1111
attr_accessor :folder_id
1212

1313
def folder_for_user(user)
14-
folders.find_by(user_id: user.id)
14+
folders.find_by(user_id: user&.id)
1515
end
1616

1717
# TODO: Don't call serializers from model - just instantiate in controller
Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,34 @@
1-
<card>
2-
<h2 style="margin-top: 0px;">Sign up</h2>
1+
<h2 style="margin-top: 0px;">Sign ds</h2>
32

4-
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
5-
<%= render "devise/shared/error_messages", resource: resource %>
3+
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
4+
<%= render "devise/shared/error_messages", resource: resource %>
65

7-
<div class="field">
8-
<%= f.label :name %><br />
9-
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
10-
</div>
6+
<div class="field">
7+
<%= f.label :name %><br />
8+
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
9+
</div>
1110

12-
<div class="field">
13-
<%= f.label :email %><br />
14-
<%= f.email_field :email, autocomplete: "email" %>
15-
</div>
11+
<div class="field">
12+
<%= f.label :email %><br />
13+
<%= f.email_field :email, autocomplete: "email" %>
14+
</div>
1615

17-
<div class="field">
18-
<%= f.label :password %>
19-
<% if @minimum_password_length %>
20-
<em>(<%= @minimum_password_length %> characters minimum)</em>
21-
<% end %><br />
22-
<%= f.password_field :password, autocomplete: "new-password" %>
23-
</div>
16+
<div class="field">
17+
<%= f.label :password %>
18+
<% if @minimum_password_length %>
19+
<em>(<%= @minimum_password_length %> characters minimum)</em>
20+
<% end %><br />
21+
<%= f.password_field :password, autocomplete: "new-password" %>
22+
</div>
2423

25-
<div class="field">
26-
<%= f.label :password_confirmation %><br />
27-
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
28-
</div>
24+
<div class="field">
25+
<%= f.label :password_confirmation %><br />
26+
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
27+
</div>
2928

30-
<div class="actions">
31-
<%= f.submit "Sign up" %>
32-
</div>
33-
<% end %>
29+
<div class="actions">
30+
<%= f.submit "Sign up" %>
31+
</div>
32+
<% end %>
3433

35-
<%= render "devise/shared/links" %>
36-
</card>
34+
<%= render "devise/shared/links" %>
Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,23 @@
1-
<%# rename to more ubtton or something %>
2-
<div
3-
data-controller="popover"
4-
data-action="click->popover#display click@window->popover#hide"
5-
data-popover-url="<%= popover_path %>"
6-
class="position-<%= defined?(position) ? position : 'relative' %>"
7-
>
8-
<div class="more-button">
9-
<%= image_tag "/icons/more.svg", width: 12 %>
1+
<% if user_signed_in? %>
2+
<div
3+
data-controller="popover"
4+
data-action="click->popover#display click@window->popover#hide"
5+
data-popover-url="<%= popover_path %>"
6+
class="position-<%= defined?(position) ? position : 'relative' %>"
7+
>
8+
<div class="more-button">
9+
<%= image_tag "/icons/more.svg", width: 12 %>
10+
</div>
1011
</div>
11-
</div>
12+
<% else %>
13+
<div
14+
data-controller="users"
15+
data-modal-url="<%= users_modals_sign_in_sign_up_path %>"
16+
data-action="click->users#presentModal"
17+
class="position-<%= defined?(position) ? position : 'relative' %>"
18+
>
19+
<div class="more-button">
20+
<%= image_tag "/icons/more.svg", width: 12 %>
21+
</div>
22+
</div>
23+
<% end %>

app/views/snippets/show.html.erb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,6 @@
2020
<% end %>
2121
</div>
2222

23-
<%= render partial: 'comments/new', locals: { snippet: @snippet, comment: @comment } %>
23+
<% if user_signed_in? %>
24+
<%= render partial: 'comments/new', locals: { snippet: @snippet, comment: @comment } %>
25+
<% end %>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<div >
2+
<h2 class="text-center">Sign in to your account</h2>
3+
</div>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<div >
2+
<h2 class="text-center">You need to sign in to do that</h2>
3+
<p class="text-center">Create an account to stay in the loop!</p>
4+
5+
<div class="flex h-center">
6+
<div style="width: 50%;" data-controller="users">
7+
<button data-modal-url="<%= users_modals_sign_in_path %>" data-action="click->users#presentModal" style="width: 100%;" class="button--cta-blue">Log In</button>
8+
<button data-modal-url="<%= users_modals_sign_up_path %>" data-action="click->users#presentModal" style="width: 100%;" class="button--cta-transparent margin-top">Sign Up</button>
9+
</div>
10+
</div>
11+
</div>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<div >
2+
<h2 class="text-center">Create an Account</h2>
3+
</div>

0 commit comments

Comments
 (0)