mirror of
https://github.com/System-End/identity-vault.git
synced 2026-04-19 15:18:23 +00:00
Address autocomplete! (#115)
* first shot * it works! * fix addr portal start action * fix add address button * pass in country * that should do it! * wew! * lint
This commit is contained in:
parent
224b9ae42c
commit
3e456b98aa
14 changed files with 237 additions and 28 deletions
|
|
@ -1,5 +1,7 @@
|
|||
---
|
||||
EnableDefaultLinters: true
|
||||
exclude:
|
||||
- 'app/views/addresses/_address_list.html.erb'
|
||||
linters:
|
||||
AllowedScriptType:
|
||||
enabled: no
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ module PortalFlow
|
|||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
before_action :validate_portal_return_url, only: [ :start, :portal ]
|
||||
before_action :store_return_url, only: [ :start, :portal ]
|
||||
before_action :validate_portal_return_url, only: [ :portal ]
|
||||
before_action :store_return_url, only: [ :portal ]
|
||||
helper_method :portal_onboarding_scenario
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
class Portal::VerificationsController < Portal::BaseController
|
||||
include VerificationFlow
|
||||
|
||||
before_action :validate_portal_return_url, only: [ :start ]
|
||||
before_action :store_return_url, only: [ :start ]
|
||||
|
||||
def start
|
||||
@identity = current_identity
|
||||
status = @identity.verification_status
|
||||
|
|
|
|||
171
app/frontend/entrypoints/address-autocomplete.js
Normal file
171
app/frontend/entrypoints/address-autocomplete.js
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
// Google Maps callback - fired when the API is fully loaded
|
||||
window.onGoogleMapsLoaded = function() {
|
||||
window.googleMapsReady = true
|
||||
window.dispatchEvent(new CustomEvent('google-maps-loaded'))
|
||||
}
|
||||
|
||||
// Override attachShadow to inject custom styles into gmp-place-autocomplete
|
||||
const originalAttachShadow = Element.prototype.attachShadow;
|
||||
Element.prototype.attachShadow = function(init) {
|
||||
if (this.localName === 'gmp-place-autocomplete') {
|
||||
const shadow = originalAttachShadow.call(this, { ...init, mode: 'open' });
|
||||
|
||||
const style = document.createElement('style');
|
||||
style.textContent = `
|
||||
:host {
|
||||
background: var(--theme-background-input);
|
||||
border: none;
|
||||
box-shadow: inset 0 0 0 1px var(--theme-border);
|
||||
color: var(--theme-text);
|
||||
display: block;
|
||||
}
|
||||
:host:focus-within {
|
||||
outline: none;
|
||||
box-shadow: inset 0 0 0 2px var(--theme-focused-foreground);
|
||||
}
|
||||
.widget-container {
|
||||
border: none !important;
|
||||
background: transparent !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
.input-container {
|
||||
padding: 0 !important;
|
||||
background: transparent !important;
|
||||
}
|
||||
.focus-ring {
|
||||
display: none !important;
|
||||
}
|
||||
input {
|
||||
background: transparent !important;
|
||||
border: none !important;
|
||||
box-shadow: none !important;
|
||||
color: var(--theme-text);
|
||||
font-family: var(--font-family-mono);
|
||||
font-size: var(--font-size);
|
||||
line-height: calc(var(--theme-line-height-base) * 1rem);
|
||||
padding: 0 1ch;
|
||||
}
|
||||
input::placeholder {
|
||||
color: var(--theme-border);
|
||||
}
|
||||
`;
|
||||
shadow.appendChild(style);
|
||||
return shadow;
|
||||
}
|
||||
return originalAttachShadow.call(this, init);
|
||||
};
|
||||
|
||||
function createAddressAutocomplete() {
|
||||
return {
|
||||
callingCodes: {},
|
||||
callingCode: '1',
|
||||
selectedCountry: 'US',
|
||||
|
||||
init() {
|
||||
if (window.googleMapsReady) {
|
||||
this.initAutocomplete()
|
||||
} else {
|
||||
window.addEventListener('google-maps-loaded', () => this.initAutocomplete(), { once: true })
|
||||
}
|
||||
},
|
||||
|
||||
updateCallingCode(countrySelect) {
|
||||
const code = this.callingCodes[countrySelect.value];
|
||||
if (code) this.callingCode = code;
|
||||
this.updateAutocompleteCountry(countrySelect.value);
|
||||
},
|
||||
|
||||
updateAutocompleteCountry(country) {
|
||||
this.selectedCountry = country;
|
||||
if (country && this.$refs.autocomplete) {
|
||||
this.$refs.autocomplete.includedRegionCodes = [country];
|
||||
}
|
||||
},
|
||||
|
||||
async initAutocomplete() {
|
||||
await customElements.whenDefined('gmp-place-autocomplete')
|
||||
|
||||
const autocomplete = this.$refs.autocomplete
|
||||
if (!autocomplete) return
|
||||
|
||||
autocomplete.addEventListener('gmp-select', async ({ placePrediction }) => {
|
||||
await this.fillAddress(placePrediction)
|
||||
})
|
||||
|
||||
// Wait for shadow DOM input to be created
|
||||
const input = await this.waitForInput(autocomplete)
|
||||
if (input) {
|
||||
input.placeholder = 'Address line 1'
|
||||
input.focus()
|
||||
}
|
||||
},
|
||||
|
||||
waitForInput(autocomplete) {
|
||||
return new Promise(resolve => {
|
||||
const check = () => {
|
||||
const input = autocomplete.shadowRoot?.querySelector('input')
|
||||
if (input) {
|
||||
resolve(input)
|
||||
} else {
|
||||
requestAnimationFrame(check)
|
||||
}
|
||||
}
|
||||
check()
|
||||
})
|
||||
},
|
||||
|
||||
async fillAddress(placePrediction) {
|
||||
const place = placePrediction.toPlace()
|
||||
await place.fetchFields({ fields: ['addressComponents'] })
|
||||
|
||||
if (!place.addressComponents) return
|
||||
|
||||
let streetNumber = ''
|
||||
let route = ''
|
||||
let postalCode = ''
|
||||
|
||||
for (const component of place.addressComponents) {
|
||||
const types = component.types
|
||||
|
||||
if (types.includes('street_number')) {
|
||||
streetNumber = component.longText
|
||||
}
|
||||
if (types.includes('route')) {
|
||||
route = component.shortText
|
||||
}
|
||||
if (types.includes('postal_code')) {
|
||||
postalCode = component.longText
|
||||
}
|
||||
if (types.includes('postal_code_suffix')) {
|
||||
postalCode = `${postalCode}-${component.longText}`
|
||||
}
|
||||
if (types.includes('locality') || types.includes('sublocality_level_1') || types.includes('postal_town')) {
|
||||
if (this.$refs.city) this.$refs.city.value = component.longText
|
||||
}
|
||||
if (types.includes('administrative_area_level_1')) {
|
||||
if (this.$refs.state) this.$refs.state.value = component.shortText
|
||||
}
|
||||
if (types.includes('country')) {
|
||||
if (this.$refs.country) {
|
||||
this.$refs.country.value = component.shortText
|
||||
this.$refs.country.dispatchEvent(new Event('change', { bubbles: true }))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const line1 = [streetNumber, route].filter(Boolean).join(' ')
|
||||
if (this.$refs.line1) this.$refs.line1.value = line1
|
||||
if (this.$refs.postalCode && postalCode) this.$refs.postalCode.value = postalCode
|
||||
|
||||
if (this.$refs.line2) this.$refs.line2.focus()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('alpine:init', () => {
|
||||
Alpine.data('addressAutocomplete', createAddressAutocomplete)
|
||||
})
|
||||
|
||||
if (window.Alpine) {
|
||||
window.Alpine.data('addressAutocomplete', createAddressAutocomplete)
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ import "../js/alpine.js";
|
|||
import "../js/lightswitch.js";
|
||||
import "../js/click-to-copy";
|
||||
import "../js/otp-input.js";
|
||||
|
||||
import htmx from "htmx.org"
|
||||
window.htmx = htmx
|
||||
|
||||
|
|
|
|||
|
|
@ -169,3 +169,24 @@
|
|||
button, input[type="submit"] { font-weight: 500; border-radius: $radius-md; }
|
||||
}
|
||||
}
|
||||
|
||||
// Google Places Autocomplete styling
|
||||
gmp-place-autocomplete {
|
||||
display: block;
|
||||
width: 100%;
|
||||
margin-bottom: $space-3;
|
||||
background-color: var(--pico-form-element-background-color);
|
||||
border: 1px solid var(--pico-form-element-border-color);
|
||||
border-radius: 10px;
|
||||
color-scheme: light;
|
||||
}
|
||||
|
||||
[data-theme="dark"] gmp-place-autocomplete {
|
||||
color-scheme: dark;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root:not([data-theme]) gmp-place-autocomplete {
|
||||
color-scheme: dark;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,4 +61,11 @@ module ApplicationHelper
|
|||
def emoji_image(name, alt: name)
|
||||
vite_image_tag("images/emoji/#{name}", alt: alt, style: "height: 1em; vertical-align: baseline;")
|
||||
end
|
||||
|
||||
def google_places_api_script_tag
|
||||
api_key = Rails.application.credentials.dig(:google, :places_api_key)
|
||||
return unless api_key.present?
|
||||
|
||||
tag.script(src: "https://maps.googleapis.com/maps/api/js?key=#{api_key}&loading=async&libraries=places&callback=onGoogleMapsLoaded", async: true, defer: true)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -116,9 +116,9 @@ class Program < ApplicationRecord
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# Prefer programs with onboarding scenarios set
|
||||
return matching_programs.find { |p| p.onboarding_scenario.present? } || matching_programs.first
|
||||
matching_programs.find { |p| p.onboarding_scenario.present? } || matching_programs.first
|
||||
rescue URI::InvalidURIError
|
||||
nil
|
||||
end
|
||||
|
|
|
|||
|
|
@ -77,8 +77,9 @@
|
|||
|
||||
<section class="section-card add-address-card" x-data="{ showForm: false }">
|
||||
<template x-if="!showForm">
|
||||
<button
|
||||
<%= local_assigns[:portal] ? t("portal.addresses.manage.add_new") : t("addresses.add_new") %>>
|
||||
<button @click="showForm = true" class="primary">
|
||||
<%= local_assigns[:portal] ? t("portal.addresses.manage.add_new") : t("addresses.add_new") %>
|
||||
</button>
|
||||
</template>
|
||||
<template x-if="showForm">
|
||||
<div class="address-form" x-init="htmx.process($el)">
|
||||
|
|
|
|||
|
|
@ -14,6 +14,11 @@
|
|||
end
|
||||
%>
|
||||
|
||||
<% content_for :head do %>
|
||||
<%= vite_javascript_tag 'address-autocomplete' %>
|
||||
<%= google_places_api_script_tag %>
|
||||
<% end %>
|
||||
|
||||
<%
|
||||
if local_assigns[:htmx_target]
|
||||
htmx_method_key = address.persisted? ? "hx-patch" : "hx-post"
|
||||
|
|
@ -22,7 +27,7 @@
|
|||
form_html_attrs = {}
|
||||
end
|
||||
%>
|
||||
<%= form_with model: address, url: local_assigns[:url], local: true, html: form_html_attrs do |f| %>
|
||||
<%= form_with model: address, url: local_assigns[:url], local: true, html: form_html_attrs.merge("x-data": "addressAutocomplete", "@alpine:init": "Object.assign($data, { callingCodes: #{country_calling_codes.to_json}, callingCode: '#{initial_calling_code}', selectedCountry: '#{initial_country}' })") do |f| %>
|
||||
<% if local_assigns[:from_program] %>
|
||||
<%= f.hidden_field :from_program, value: true %>
|
||||
<% end %>
|
||||
|
|
@ -43,28 +48,24 @@
|
|||
<%= f.text_field :last_name, placeholder: t("addresses.last_name"), required: true %>
|
||||
</div>
|
||||
|
||||
<%= f.text_field :line_1, placeholder: t("addresses.line_1"), required: true %>
|
||||
<%= f.text_field :line_2, placeholder: "#{t("addresses.line_2")} (optional)" %>
|
||||
<div>
|
||||
<gmp-place-autocomplete placeholder="Address line 1" x-ref="autocomplete" style="width: 100%;"></gmp-place-autocomplete>
|
||||
</div>
|
||||
<%= f.hidden_field :line_1, "x-ref": "line1" %>
|
||||
<%= f.text_field :line_2, placeholder: "#{t("addresses.line_2")} (optional)", "x-ref": "line2" %>
|
||||
|
||||
<div class="grid">
|
||||
<%= f.text_field :city, placeholder: t("addresses.city"), required: true %>
|
||||
<%= f.text_field :state, placeholder: t("addresses.state"), required: true %>
|
||||
<%= f.text_field :city, placeholder: t("addresses.city"), required: true, "x-ref": "city" %>
|
||||
<%= f.text_field :state, placeholder: t("addresses.state"), required: true, "x-ref": "state" %>
|
||||
</div>
|
||||
|
||||
<div x-data="{
|
||||
callingCodes: <%= country_calling_codes.to_json %>,
|
||||
callingCode: '<%= initial_calling_code %>',
|
||||
updateCallingCode(countrySelect) {
|
||||
const code = this.callingCodes[countrySelect.value];
|
||||
if (code) this.callingCode = code;
|
||||
}
|
||||
}">
|
||||
<div class="grid">
|
||||
<%= f.text_field :postal_code, placeholder: t("addresses.postal_code"), required: true %>
|
||||
<div>
|
||||
<div class="grid">
|
||||
<%= f.text_field :postal_code, placeholder: t("addresses.postal_code"), required: true, "x-ref": "postalCode" %>
|
||||
<%= f.collection_select :country, Address.countries_for_select,
|
||||
:first, :last,
|
||||
{ include_blank: "Country" },
|
||||
{ required: true, "@change": "updateCallingCode($event.target)" } %>
|
||||
{ required: true, "@change": "updateCallingCode($el)", "x-ref": "country" } %>
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns: auto 1fr; margin-top: 1rem;">
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
<div class="page-header-centered">
|
||||
<h1><%= t("portal.addresses.title") %></h1>
|
||||
<p><%= t("portal.addresses.subtitle") %></p>
|
||||
<p class="text-muted"><small><%= t("portal.addresses.note_html") %></small></p>
|
||||
</div>
|
||||
|
||||
<div class="page-sections">
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
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--IwkSZOE+TqALC7OO--S1lf5Jlep74OEhcwgHLpog==
|
||||
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--hACg0v5xHRPbQ8GT--9/AlSv/2pD10hdKejUrVSg==
|
||||
|
|
@ -1 +1 @@
|
|||
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--EUJCgvkFSVOxWRS3--EIKzEOPTtn0P14Iy+5Lkkg==
|
||||
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--1Y2VNPLoT/9Afzoz--Y+isY3FVfcs2JUjNCgjxNw==
|
||||
|
|
@ -547,10 +547,11 @@ en:
|
|||
check_back: We'll email you once the review is complete. You can close this window.
|
||||
return_button: Return to app
|
||||
addresses:
|
||||
title: We'll need your address...
|
||||
subtitle: Please use a real address — we're going to send you something here!
|
||||
submit: Continue →
|
||||
manage:
|
||||
title: We'll need your address...
|
||||
subtitle: Please use a real address — we're going to send you something here!
|
||||
note_html: "Write your address exactly as it would appear on a letter or package addressed to you.<br>Don't forget to include your apartment number if you have one!"
|
||||
submit: Continue →
|
||||
manage:
|
||||
title: Your addresses
|
||||
subtitle: Select or add an address for shipping
|
||||
make_primary: Set as primary
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue