From 74c474a652d32294394ef7b329d1bcddb64cc2e0 Mon Sep 17 00:00:00 2001
From: Sebastian Morr <sebastian@morr.cc>
Date: Fri, 21 Apr 2017 18:17:21 +0200
Subject: [PATCH] Display remaining characters when editing display name and
 bio (#2219)

---
 app/assets/javascripts/extras.jsx          | 8 ++++++++
 app/views/settings/profiles/show.html.haml | 4 ++--
 config/locales/simple_form.en.yml          | 4 ++--
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/app/assets/javascripts/extras.jsx b/app/assets/javascripts/extras.jsx
index c13feceffe..29c37b9e1a 100644
--- a/app/assets/javascripts/extras.jsx
+++ b/app/assets/javascripts/extras.jsx
@@ -37,4 +37,12 @@ $(() => {
       $(e.target).parent().attr('style', null);
     }
   });
+
+  // used on /settings/profile
+  $('.account_display_name').on('input', e => {
+    $('.name-counter').text(30 - $(e.target).val().length)
+  });
+  $('.account_note').on('input', e => {
+    $('.note-counter').text(160 - $(e.target).val().length)
+  });
 });
diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml
index b946853b11..52373a9595 100644
--- a/app/views/settings/profiles/show.html.haml
+++ b/app/views/settings/profiles/show.html.haml
@@ -5,8 +5,8 @@
   = render 'shared/error_messages', object: @account
 
   .fields-group
-    = f.input :display_name, placeholder: t('simple_form.labels.defaults.display_name')
-    = f.input :note, placeholder: t('simple_form.labels.defaults.note')
+    = f.input :display_name, placeholder: t('simple_form.labels.defaults.display_name'), hint: t('simple_form.hints.defaults.display_name', counter: "<span class=\"name-counter\">#{30-@account.display_name.size}</span>").html_safe
+    = f.input :note, placeholder: t('simple_form.labels.defaults.note'), hint: t('simple_form.hints.defaults.note', counter: "<span class=\"note-counter\">#{160-@account.note.size}</span>").html_safe
     = f.input :avatar, wrapper: :with_label, hint: t('simple_form.hints.defaults.avatar')
     = f.input :header, wrapper: :with_label, hint: t('simple_form.hints.defaults.header')
 
diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml
index 5335b0927c..790d564521 100644
--- a/config/locales/simple_form.en.yml
+++ b/config/locales/simple_form.en.yml
@@ -4,10 +4,10 @@ en:
     hints:
       defaults:
         avatar: PNG, GIF or JPG. At most 2MB. Will be downscaled to 120x120px
-        display_name: At most 30 characters
+        display_name: '%{counter} characters left'
         header: PNG, GIF or JPG. At most 2MB. Will be downscaled to 700x335px
         locked: Requires you to manually approve followers and defaults post privacy to followers-only
-        note: At most 160 characters
+        note: '%{counter} characters left'
       imports:
         data: CSV file exported from another Mastodon instance
       sessions:
-- 
GitLab