add textarea emails autocomplete
This commit is contained in:
@@ -19,21 +19,32 @@ export default class extends HTMLElement {
|
|||||||
|
|
||||||
fields.forEach((field) => {
|
fields.forEach((field) => {
|
||||||
const input = submitterItemEl.querySelector(`submitters-autocomplete[data-field="${field}"] input`)
|
const input = submitterItemEl.querySelector(`submitters-autocomplete[data-field="${field}"] input`)
|
||||||
|
const textarea = submitterItemEl.querySelector(`submitters-autocomplete[data-field="${field}"] textarea`)
|
||||||
|
|
||||||
if (input && item[field]) {
|
if (input && item[field]) {
|
||||||
input.value = item[field]
|
input.value = item[field]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (textarea && item[field]) {
|
||||||
|
textarea.value = textarea.value.replace(/[^;,\s]+$/, item[field] + ' ')
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fetch = (text, resolve) => {
|
fetch = (text, resolve) => {
|
||||||
if (text) {
|
const q = text.split(/[;,\s]+/).pop().trim()
|
||||||
const queryParams = new URLSearchParams({ q: text, field: this.dataset.field })
|
|
||||||
|
if (q) {
|
||||||
|
const queryParams = new URLSearchParams({ q, field: this.dataset.field })
|
||||||
|
|
||||||
fetch('/api/submitters_autocomplete?' + queryParams).then(async (resp) => {
|
fetch('/api/submitters_autocomplete?' + queryParams).then(async (resp) => {
|
||||||
const items = await resp.json()
|
const items = await resp.json()
|
||||||
|
|
||||||
resolve(items)
|
if (q.length < 3) {
|
||||||
|
resolve(items.filter((e) => e[this.dataset.field].startsWith(q)))
|
||||||
|
} else {
|
||||||
|
resolve(items)
|
||||||
|
}
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
resolve([])
|
resolve([])
|
||||||
})
|
})
|
||||||
@@ -51,6 +62,6 @@ export default class extends HTMLElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get input () {
|
get input () {
|
||||||
return this.querySelector('input')
|
return this.querySelector('input') || this.querySelector('textarea')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
<%= form_for '', url: template_submissions_path(template), html: { class: 'space-y-4', autocomplete: 'off' }, data: { turbo_frame: :_top } do |f| %>
|
<%= form_for '', url: template_submissions_path(template), html: { class: 'space-y-4', autocomplete: 'off' }, data: { turbo_frame: :_top } do |f| %>
|
||||||
<% if template.submitters.size == 1 %>
|
<% if template.submitters.size == 1 %>
|
||||||
<div class="form-control">
|
<submitter-item class="form-control">
|
||||||
<autoresize-textarea>
|
<submitters-autocomplete data-field="email">
|
||||||
<%= f.text_area :emails, required: true, class: 'base-textarea w-full', placeholder: 'Type emails here...' %>
|
<autoresize-textarea>
|
||||||
</autoresize-textarea>
|
<%= f.text_area :emails, required: true, class: 'base-textarea w-full', placeholder: 'Type emails here...' %>
|
||||||
</div>
|
</autoresize-textarea>
|
||||||
|
</submitters-autocomplete>
|
||||||
|
</submitter-item>
|
||||||
<% else %>
|
<% else %>
|
||||||
<dynamic-list class="space-y-4">
|
<dynamic-list class="space-y-4">
|
||||||
<div class="space-y-4">
|
<div class="space-y-4">
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ module Submissions
|
|||||||
def create_from_emails(template:, user:, emails:, source:, mark_as_sent: false)
|
def create_from_emails(template:, user:, emails:, source:, mark_as_sent: false)
|
||||||
emails = emails.to_s.scan(User::EMAIL_REGEXP) unless emails.is_a?(Array)
|
emails = emails.to_s.scan(User::EMAIL_REGEXP) unless emails.is_a?(Array)
|
||||||
|
|
||||||
emails.map do |email|
|
emails.uniq.map do |email|
|
||||||
submission = template.submissions.new(created_by_user: user, source:, template_submitters: template.submitters)
|
submission = template.submissions.new(created_by_user: user, source:, template_submitters: template.submitters)
|
||||||
submission.submitters.new(email: normalize_email(email),
|
submission.submitters.new(email: normalize_email(email),
|
||||||
uuid: template.submitters.first['uuid'],
|
uuid: template.submitters.first['uuid'],
|
||||||
|
|||||||
Reference in New Issue
Block a user