formstrap 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.DS_Store +0 -0
- data/.gitignore +33 -0
- data/CHANGELOG.md +1 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/Gemfile +28 -0
- data/LICENSE.txt +21 -0
- data/README.md +118 -0
- data/Rakefile +10 -0
- data/app/assets/config/headmin_manifest.js +2 -0
- data/app/assets/images/avatar.jpg +0 -0
- data/app/assets/images/document.docx +0 -0
- data/app/assets/images/document.pdf +0 -0
- data/app/assets/images/image.jpg +0 -0
- data/app/assets/images/spreadsheet.xls +0 -0
- data/app/assets/images/video.mp4 +0 -0
- data/app/assets/javascripts/formstrap/config/i18n.js +11 -0
- data/app/assets/javascripts/formstrap/controllers/autocomplete_controller.js +318 -0
- data/app/assets/javascripts/formstrap/controllers/date_range_controller.js +38 -0
- data/app/assets/javascripts/formstrap/controllers/dropzone_controller.js +31 -0
- data/app/assets/javascripts/formstrap/controllers/file_preview_controller.js +244 -0
- data/app/assets/javascripts/formstrap/controllers/flatpickr_controller.js +35 -0
- data/app/assets/javascripts/formstrap/controllers/infinite_scroller_controller.js +28 -0
- data/app/assets/javascripts/formstrap/controllers/media_controller.js +252 -0
- data/app/assets/javascripts/formstrap/controllers/media_modal_controller.js +147 -0
- data/app/assets/javascripts/formstrap/controllers/redactorx_controller.js +40 -0
- data/app/assets/javascripts/formstrap/controllers/repeater_controller.js +148 -0
- data/app/assets/javascripts/formstrap/controllers/select_controller.js +49 -0
- data/app/assets/javascripts/formstrap/controllers/textarea_controller.js +48 -0
- data/app/assets/javascripts/formstrap/index.js +32 -0
- data/app/assets/javascripts/formstrap.js +11515 -0
- data/app/assets/stylesheets/formstrap/forms/autocomplete.scss +27 -0
- data/app/assets/stylesheets/formstrap/forms/file.scss +83 -0
- data/app/assets/stylesheets/formstrap/forms/media.scss +10 -0
- data/app/assets/stylesheets/formstrap/forms/repeater.scss +62 -0
- data/app/assets/stylesheets/formstrap/forms/search.scss +12 -0
- data/app/assets/stylesheets/formstrap/forms.scss +12 -0
- data/app/assets/stylesheets/formstrap/general.scss +18 -0
- data/app/assets/stylesheets/formstrap/media/index.scss +9 -0
- data/app/assets/stylesheets/formstrap/media.scss +1 -0
- data/app/assets/stylesheets/formstrap/utilities/buttons.scss +27 -0
- data/app/assets/stylesheets/formstrap/utilities/dropzone.scss +72 -0
- data/app/assets/stylesheets/formstrap/utilities.scss +2 -0
- data/app/assets/stylesheets/formstrap/vendor/flatpickr.css +903 -0
- data/app/assets/stylesheets/formstrap/vendor/tom-select-bootstrap.scss +535 -0
- data/app/assets/stylesheets/formstrap.css +1559 -0
- data/app/assets/stylesheets/formstrap.scss +11 -0
- data/app/controllers/concerns/formstrap/pagination.rb +27 -0
- data/app/controllers/formstrap/media_controller.rb +68 -0
- data/app/controllers/formstrap_controller.rb +2 -0
- data/app/models/concerns/formstrap/autocompletable.rb +36 -0
- data/app/models/concerns/formstrap/hintable.rb +22 -0
- data/app/models/concerns/formstrap/input_groupable.rb +21 -0
- data/app/models/concerns/formstrap/labelable.rb +31 -0
- data/app/models/concerns/formstrap/listable.rb +26 -0
- data/app/models/concerns/formstrap/placeholderable.rb +11 -0
- data/app/models/concerns/formstrap/validatable.rb +38 -0
- data/app/models/concerns/formstrap/wrappable.rb +19 -0
- data/app/models/formstrap/.DS_Store +0 -0
- data/app/models/formstrap/association_view.rb +100 -0
- data/app/models/formstrap/blocks_view.rb +43 -0
- data/app/models/formstrap/checkbox_view.rb +50 -0
- data/app/models/formstrap/color_view.rb +45 -0
- data/app/models/formstrap/date_range_view.rb +23 -0
- data/app/models/formstrap/date_view.rb +43 -0
- data/app/models/formstrap/datetime_range_view.rb +23 -0
- data/app/models/formstrap/datetime_view.rb +43 -0
- data/app/models/formstrap/email_view.rb +46 -0
- data/app/models/formstrap/file_view.rb +106 -0
- data/app/models/formstrap/flatpickr_range_view.rb +89 -0
- data/app/models/formstrap/flatpickr_view.rb +27 -0
- data/app/models/formstrap/hidden_view.rb +8 -0
- data/app/models/formstrap/hint_view.rb +4 -0
- data/app/models/formstrap/input_group_view.rb +17 -0
- data/app/models/formstrap/label_view.rb +22 -0
- data/app/models/formstrap/media_item_view.rb +41 -0
- data/app/models/formstrap/media_view.rb +143 -0
- data/app/models/formstrap/number_view.rb +47 -0
- data/app/models/formstrap/password_view.rb +42 -0
- data/app/models/formstrap/redactorx_view.rb +57 -0
- data/app/models/formstrap/search_view.rb +46 -0
- data/app/models/formstrap/select_view.rb +61 -0
- data/app/models/formstrap/switch_view.rb +21 -0
- data/app/models/formstrap/text_view.rb +46 -0
- data/app/models/formstrap/textarea_view.rb +47 -0
- data/app/models/formstrap/url_view.rb +46 -0
- data/app/models/formstrap/wrapper_view.rb +17 -0
- data/app/models/formstrap/wysiwyg_view.rb +15 -0
- data/app/models/view_model.rb +62 -0
- data/app/views/formstrap/_association.html.erb +30 -0
- data/app/views/formstrap/_autocomplete.html.erb +11 -0
- data/app/views/formstrap/_blocks.html.erb +45 -0
- data/app/views/formstrap/_checkbox.html.erb +34 -0
- data/app/views/formstrap/_color.html.erb +32 -0
- data/app/views/formstrap/_datalist.html.erb +3 -0
- data/app/views/formstrap/_date.html.erb +41 -0
- data/app/views/formstrap/_date_range.html.erb +40 -0
- data/app/views/formstrap/_datetime.html.erb +41 -0
- data/app/views/formstrap/_datetime_range.html.erb +40 -0
- data/app/views/formstrap/_email.html.erb +43 -0
- data/app/views/formstrap/_errors.html.erb +19 -0
- data/app/views/formstrap/_file.html.erb +94 -0
- data/app/views/formstrap/_flatpickr.html.erb +33 -0
- data/app/views/formstrap/_flatpickr_range.html.erb +40 -0
- data/app/views/formstrap/_hidden.html.erb +23 -0
- data/app/views/formstrap/_hint.html.erb +21 -0
- data/app/views/formstrap/_input_group.html.erb +21 -0
- data/app/views/formstrap/_label.html.erb +22 -0
- data/app/views/formstrap/_media.html.erb +60 -0
- data/app/views/formstrap/_number.html.erb +41 -0
- data/app/views/formstrap/_password.html.erb +39 -0
- data/app/views/formstrap/_redactorx.html.erb +31 -0
- data/app/views/formstrap/_repeater.html.erb +128 -0
- data/app/views/formstrap/_search.html.erb +43 -0
- data/app/views/formstrap/_select.html.erb +43 -0
- data/app/views/formstrap/_switch.html.erb +29 -0
- data/app/views/formstrap/_text.html.erb +42 -0
- data/app/views/formstrap/_textarea.html.erb +39 -0
- data/app/views/formstrap/_to_ary.html.erb +0 -0
- data/app/views/formstrap/_url.html.erb +43 -0
- data/app/views/formstrap/_validation.html.erb +18 -0
- data/app/views/formstrap/_wrapper.html.erb +8 -0
- data/app/views/formstrap/_wysiwyg.html.erb +28 -0
- data/app/views/formstrap/autocomplete/_item.html.erb +3 -0
- data/app/views/formstrap/autocomplete/_list.html.erb +3 -0
- data/app/views/formstrap/blocks/_modal.html.erb +20 -0
- data/app/views/formstrap/fields/_base.html.erb +25 -0
- data/app/views/formstrap/fields/_file.html.erb +17 -0
- data/app/views/formstrap/fields/_files.html.erb +17 -0
- data/app/views/formstrap/fields/_group.html.erb +52 -0
- data/app/views/formstrap/fields/_list.html.erb +31 -0
- data/app/views/formstrap/fields/_text.html.erb +17 -0
- data/app/views/formstrap/media/_item.html.erb +38 -0
- data/app/views/formstrap/media/_media_item_modal.html.erb +77 -0
- data/app/views/formstrap/media/_modal.html.erb +40 -0
- data/app/views/formstrap/media/_thumbnail.html.erb +20 -0
- data/app/views/formstrap/media/_validation.html.erb +10 -0
- data/app/views/formstrap/media/create.turbo_stream.erb +5 -0
- data/app/views/formstrap/media/index.html.erb +3 -0
- data/app/views/formstrap/media/index.turbo_stream.erb +11 -0
- data/app/views/formstrap/media/show.html.erb +9 -0
- data/app/views/formstrap/media/thumbnail.html.erb +3 -0
- data/app/views/formstrap/media/update.turbo_stream.erb +3 -0
- data/app/views/formstrap/pagination/_infinite.html.erb +7 -0
- data/app/views/formstrap/repeater/_row.html.erb +53 -0
- data/app/views/formstrap/shared/_notifications.html.erb +20 -0
- data/app/views/formstrap/shared/_popup.html.erb +32 -0
- data/app/views/formstrap/shared/_thumbnail.html.erb +35 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/config/importmap.rb +2 -0
- data/config/locales/activerecord/en.yml +12 -0
- data/config/locales/activerecord/nl.yml +13 -0
- data/config/locales/defaults/en.yml +215 -0
- data/config/locales/defaults/nl.yml +213 -0
- data/config/locales/devise/en.yml +65 -0
- data/config/locales/devise/nl.yml +85 -0
- data/config/locales/en.yml +6 -0
- data/config/locales/formstrap/forms/en.yml +39 -0
- data/config/locales/formstrap/forms/nl.yml +39 -0
- data/config/locales/formstrap/media/en.yml +24 -0
- data/config/locales/formstrap/media/nl.yml +24 -0
- data/config/locales/formstrap/thumbnail/en.yml +4 -0
- data/config/locales/formstrap/thumbnail/nl.yml +4 -0
- data/config/locales/nl.yml +6 -0
- data/config/routes.rb +11 -0
- data/esbuild-css.js +25 -0
- data/esbuild-js.js +11 -0
- data/formstrap.gemspec +37 -0
- data/formstrap.iml +34 -0
- data/lib/formstrap/engine.rb +27 -0
- data/lib/formstrap/form_builder.rb +177 -0
- data/lib/formstrap/form_helper.rb +19 -0
- data/lib/formstrap/version.rb +3 -0
- data/lib/formstrap.rb +6 -0
- data/package.json +54 -0
- data/src/js/formstrap.js +1 -0
- data/src/scss/formstrap.scss +1 -0
- data/yarn.lock +1998 -0
- metadata +224 -0
@@ -0,0 +1,213 @@
|
|
1
|
+
---
|
2
|
+
nl:
|
3
|
+
activerecord:
|
4
|
+
errors:
|
5
|
+
messages:
|
6
|
+
record_invalid: 'Validatie mislukt: %{errors}'
|
7
|
+
restrict_dependent_destroy:
|
8
|
+
has_one: Kan item niet verwijderen omdat %{record} afhankelijk is
|
9
|
+
has_many: Kan item niet verwijderen omdat afhankelijke %{record} bestaan
|
10
|
+
date:
|
11
|
+
abbr_day_names:
|
12
|
+
- zo
|
13
|
+
- ma
|
14
|
+
- di
|
15
|
+
- wo
|
16
|
+
- do
|
17
|
+
- vr
|
18
|
+
- za
|
19
|
+
abbr_month_names:
|
20
|
+
-
|
21
|
+
- jan
|
22
|
+
- feb
|
23
|
+
- mrt
|
24
|
+
- apr
|
25
|
+
- mei
|
26
|
+
- jun
|
27
|
+
- jul
|
28
|
+
- aug
|
29
|
+
- sep
|
30
|
+
- okt
|
31
|
+
- nov
|
32
|
+
- dec
|
33
|
+
day_names:
|
34
|
+
- zondag
|
35
|
+
- maandag
|
36
|
+
- dinsdag
|
37
|
+
- woensdag
|
38
|
+
- donderdag
|
39
|
+
- vrijdag
|
40
|
+
- zaterdag
|
41
|
+
formats:
|
42
|
+
default: "%d-%m-%Y"
|
43
|
+
long: "%e %B %Y"
|
44
|
+
short: "%e %b"
|
45
|
+
month_names:
|
46
|
+
-
|
47
|
+
- januari
|
48
|
+
- februari
|
49
|
+
- maart
|
50
|
+
- april
|
51
|
+
- mei
|
52
|
+
- juni
|
53
|
+
- juli
|
54
|
+
- augustus
|
55
|
+
- september
|
56
|
+
- oktober
|
57
|
+
- november
|
58
|
+
- december
|
59
|
+
order:
|
60
|
+
- :day
|
61
|
+
- :month
|
62
|
+
- :year
|
63
|
+
datetime:
|
64
|
+
distance_in_words:
|
65
|
+
about_x_hours:
|
66
|
+
one: ongeveer een uur
|
67
|
+
other: ongeveer %{count} uur
|
68
|
+
about_x_months:
|
69
|
+
one: ongeveer een maand
|
70
|
+
other: ongeveer %{count} maanden
|
71
|
+
about_x_years:
|
72
|
+
one: ongeveer een jaar
|
73
|
+
other: ongeveer %{count} jaar
|
74
|
+
almost_x_years:
|
75
|
+
one: bijna een jaar
|
76
|
+
other: bijna %{count} jaar
|
77
|
+
half_a_minute: een halve minuut
|
78
|
+
less_than_x_seconds:
|
79
|
+
one: minder dan een seconde
|
80
|
+
other: minder dan %{count} seconden
|
81
|
+
less_than_x_minutes:
|
82
|
+
one: minder dan een minuut
|
83
|
+
other: minder dan %{count} minuten
|
84
|
+
over_x_years:
|
85
|
+
one: meer dan een jaar
|
86
|
+
other: meer dan %{count} jaar
|
87
|
+
x_seconds:
|
88
|
+
one: 1 seconde
|
89
|
+
other: "%{count} seconden"
|
90
|
+
x_minutes:
|
91
|
+
one: 1 minuut
|
92
|
+
other: "%{count} minuten"
|
93
|
+
x_days:
|
94
|
+
one: 1 dag
|
95
|
+
other: "%{count} dagen"
|
96
|
+
x_months:
|
97
|
+
one: 1 maand
|
98
|
+
other: "%{count} maanden"
|
99
|
+
x_years:
|
100
|
+
one: 1 jaar
|
101
|
+
other: "%{count} jaar"
|
102
|
+
prompts:
|
103
|
+
second: seconde
|
104
|
+
minute: minuut
|
105
|
+
hour: uur
|
106
|
+
day: dag
|
107
|
+
month: maand
|
108
|
+
year: jaar
|
109
|
+
errors:
|
110
|
+
format: "%{attribute} %{message}"
|
111
|
+
messages:
|
112
|
+
accepted: moet worden geaccepteerd
|
113
|
+
blank: moet opgegeven zijn
|
114
|
+
confirmation: komt niet overeen met %{attribute}
|
115
|
+
empty: moet opgegeven zijn
|
116
|
+
equal_to: moet gelijk zijn aan %{count}
|
117
|
+
even: moet even zijn
|
118
|
+
exclusion: is gereserveerd
|
119
|
+
greater_than: moet groter zijn dan %{count}
|
120
|
+
greater_than_or_equal_to: moet groter dan of gelijk zijn aan %{count}
|
121
|
+
inclusion: is niet in de lijst opgenomen
|
122
|
+
invalid: is ongeldig
|
123
|
+
less_than: moet minder zijn dan %{count}
|
124
|
+
less_than_or_equal_to: moet minder dan of gelijk zijn aan %{count}
|
125
|
+
model_invalid: 'Validatie mislukt: %{errors}'
|
126
|
+
not_a_number: is geen getal
|
127
|
+
not_an_integer: moet een geheel getal zijn
|
128
|
+
odd: moet oneven zijn
|
129
|
+
other_than: moet anders zijn dan %{count}
|
130
|
+
present: moet leeg zijn
|
131
|
+
required: moet bestaan
|
132
|
+
taken: is al in gebruik
|
133
|
+
too_long:
|
134
|
+
one: is te lang (maximaal %{count} teken)
|
135
|
+
other: is te lang (maximaal %{count} tekens)
|
136
|
+
too_short:
|
137
|
+
one: is te kort (minimaal %{count} teken)
|
138
|
+
other: is te kort (minimaal %{count} tekens)
|
139
|
+
wrong_length:
|
140
|
+
one: heeft onjuiste lengte (moet 1 teken lang zijn)
|
141
|
+
other: heeft onjuiste lengte (moet %{count} tekens lang zijn)
|
142
|
+
template:
|
143
|
+
body: 'Er zijn problemen met de volgende velden:'
|
144
|
+
header:
|
145
|
+
one: "%{model} niet opgeslagen: 1 fout gevonden"
|
146
|
+
other: "%{model} niet opgeslagen: %{count} fouten gevonden"
|
147
|
+
helpers:
|
148
|
+
select:
|
149
|
+
prompt: Maak een keuze
|
150
|
+
submit:
|
151
|
+
create: "%{model} toevoegen"
|
152
|
+
submit: "%{model} opslaan"
|
153
|
+
update: "%{model} bijwerken"
|
154
|
+
number:
|
155
|
+
currency:
|
156
|
+
format:
|
157
|
+
delimiter: "."
|
158
|
+
format: "%u %n"
|
159
|
+
precision: 2
|
160
|
+
separator: ","
|
161
|
+
significant: false
|
162
|
+
strip_insignificant_zeros: false
|
163
|
+
unit: "€"
|
164
|
+
format:
|
165
|
+
delimiter: "."
|
166
|
+
precision: 2
|
167
|
+
separator: ","
|
168
|
+
significant: false
|
169
|
+
strip_insignificant_zeros: false
|
170
|
+
human:
|
171
|
+
decimal_units:
|
172
|
+
format: "%n %u"
|
173
|
+
units:
|
174
|
+
billion: miljard
|
175
|
+
million: miljoen
|
176
|
+
quadrillion: biljard
|
177
|
+
thousand: duizend
|
178
|
+
trillion: biljoen
|
179
|
+
unit: ''
|
180
|
+
format:
|
181
|
+
delimiter: ''
|
182
|
+
precision: 3
|
183
|
+
significant: true
|
184
|
+
strip_insignificant_zeros: true
|
185
|
+
storage_units:
|
186
|
+
format: "%n %u"
|
187
|
+
units:
|
188
|
+
byte:
|
189
|
+
one: byte
|
190
|
+
other: bytes
|
191
|
+
gb: GB
|
192
|
+
kb: KB
|
193
|
+
mb: MB
|
194
|
+
tb: TB
|
195
|
+
percentage:
|
196
|
+
format:
|
197
|
+
delimiter: ''
|
198
|
+
format: "%n%"
|
199
|
+
precision:
|
200
|
+
format:
|
201
|
+
delimiter: ''
|
202
|
+
support:
|
203
|
+
array:
|
204
|
+
last_word_connector: " en "
|
205
|
+
two_words_connector: " en "
|
206
|
+
words_connector: ", "
|
207
|
+
time:
|
208
|
+
am: "'s ochtends"
|
209
|
+
formats:
|
210
|
+
default: "%a %d %b %Y %H:%M:%S %Z"
|
211
|
+
long: "%d %B %Y %H:%M"
|
212
|
+
short: "%d %b %H:%M"
|
213
|
+
pm: "'s middags"
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# Additional translations at https://github.com/heartcombo/devise/wiki/I18n
|
2
|
+
|
3
|
+
en:
|
4
|
+
devise:
|
5
|
+
confirmations:
|
6
|
+
confirmed: "Your email address has been successfully confirmed."
|
7
|
+
send_instructions: "You will receive an email with instructions for how to confirm your email address in a few minutes."
|
8
|
+
send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes."
|
9
|
+
failure:
|
10
|
+
already_authenticated: "You are already signed in."
|
11
|
+
inactive: "Your account is not activated yet."
|
12
|
+
invalid: "Invalid %{authentication_keys} or password."
|
13
|
+
locked: "Your account is locked."
|
14
|
+
last_attempt: "You have one more attempt before your account is locked."
|
15
|
+
not_found_in_database: "Invalid %{authentication_keys} or password."
|
16
|
+
timeout: "Your session expired. Please sign in again to continue."
|
17
|
+
unauthenticated: "You need to sign in or sign up before continuing."
|
18
|
+
unconfirmed: "You have to confirm your email address before continuing."
|
19
|
+
mailer:
|
20
|
+
confirmation_instructions:
|
21
|
+
subject: "Confirmation instructions"
|
22
|
+
reset_password_instructions:
|
23
|
+
subject: "Reset password instructions"
|
24
|
+
unlock_instructions:
|
25
|
+
subject: "Unlock instructions"
|
26
|
+
email_changed:
|
27
|
+
subject: "Email Changed"
|
28
|
+
password_change:
|
29
|
+
subject: "Password Changed"
|
30
|
+
omniauth_callbacks:
|
31
|
+
failure: "Could not authenticate you from %{kind} because \"%{reason}\"."
|
32
|
+
success: "Successfully authenticated from %{kind} account."
|
33
|
+
passwords:
|
34
|
+
no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided."
|
35
|
+
send_instructions: "You will receive an email with instructions on how to reset your password in a few minutes."
|
36
|
+
send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes."
|
37
|
+
updated: "Your password has been changed successfully. You are now signed in."
|
38
|
+
updated_not_active: "Your password has been changed successfully."
|
39
|
+
registrations:
|
40
|
+
destroyed: "Bye! Your account has been successfully cancelled. We hope to see you again soon."
|
41
|
+
signed_up: "Welcome! You have signed up successfully."
|
42
|
+
signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated."
|
43
|
+
signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked."
|
44
|
+
signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please follow the link to activate your account."
|
45
|
+
update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirmation link to confirm your new email address."
|
46
|
+
updated: "Your account has been updated successfully."
|
47
|
+
updated_but_not_signed_in: "Your account has been updated successfully, but since your password was changed, you need to sign in again."
|
48
|
+
sessions:
|
49
|
+
signed_in: "Signed in successfully."
|
50
|
+
signed_out: "Signed out successfully."
|
51
|
+
already_signed_out: "Signed out successfully."
|
52
|
+
unlocks:
|
53
|
+
send_instructions: "You will receive an email with instructions for how to unlock your account in a few minutes."
|
54
|
+
send_paranoid_instructions: "If your account exists, you will receive an email with instructions for how to unlock it in a few minutes."
|
55
|
+
unlocked: "Your account has been unlocked successfully. Please sign in to continue."
|
56
|
+
errors:
|
57
|
+
messages:
|
58
|
+
already_confirmed: "was already confirmed, please try signing in"
|
59
|
+
confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one"
|
60
|
+
expired: "has expired, please request a new one"
|
61
|
+
not_found: "not found"
|
62
|
+
not_locked: "was not locked"
|
63
|
+
not_saved:
|
64
|
+
one: "1 error prohibited this %{resource} from being saved:"
|
65
|
+
other: "%{count} errors prohibited this %{resource} from being saved:"
|
@@ -0,0 +1,85 @@
|
|
1
|
+
|
2
|
+
# The devise.en.yml file translated to Dutch
|
3
|
+
# https://github.com/plataformatec/devise/blob/master/config/locales/en.yml
|
4
|
+
#
|
5
|
+
# This includes the changes from Devise 4.5 and 4.6:
|
6
|
+
# A new key was added in Devise 4.5: `updated_but_not_signed_in:`
|
7
|
+
# In Devise 4.6, the old helper `<% devise_error_messages %>` was replaced with
|
8
|
+
# `<%= render 'devise/shared/error_messages', resource: resource %>`
|
9
|
+
|
10
|
+
# Starting points for this translation:
|
11
|
+
# * User-centered language: don't tell what the system knows, tell what the user should do or should expect
|
12
|
+
# (Except for widely used messages like 'account confirmed', 'password invalid').
|
13
|
+
# * Make the messages consistent, with proper grammar (especially with regard to verb tenses).
|
14
|
+
# * English has one definite article ('the'); Dutch has two ('het', 'de'). Sometimes rephrasing with 'je' ('your') is a better solution.
|
15
|
+
# * Use informal but polite wording.
|
16
|
+
# * Use `e-mailadres` for the email address (key: `:email`), `mail` for an email message (cf advice Taaldienst).
|
17
|
+
# * Use `update` for `update`, as it is accepted Dutch (Van Dale). But: avoid the hard to read past participle `geüpdatet`.
|
18
|
+
# * Use `account maken` for `sign up`, `inloggen` for `sign in`, consistently.
|
19
|
+
# * Avoid revealing too much information: use the same message for 'invalid' and 'not found in database' failure messages.
|
20
|
+
# * In Dutch, only complete sentences end with `.`.
|
21
|
+
|
22
|
+
|
23
|
+
nl:
|
24
|
+
devise:
|
25
|
+
confirmations:
|
26
|
+
confirmed: Je account is bevestigd.
|
27
|
+
send_instructions: Er is een mail onderweg waarmee je je account kunt bevestigen.
|
28
|
+
send_paranoid_instructions: Als je een account hebt voor dit e-mailadres, ontvang je een mail waarmee je je account kunt bevestigen.
|
29
|
+
failure:
|
30
|
+
already_authenticated: Je bent al ingelogd.
|
31
|
+
inactive: Je account is nog niet actief.
|
32
|
+
invalid: Je %{authentication_keys} of wachtwoord is ongeldig.
|
33
|
+
locked: Je account is geblokkeerd.
|
34
|
+
last_attempt: Je kan het nog één keer proberen voordat je account wordt geblokkeerd.
|
35
|
+
not_found_in_database: Je %{authentication_keys} of wachtwoord is ongeldig.
|
36
|
+
timeout: De sessie is verlopen. Log opnieuw in.
|
37
|
+
unauthenticated: Log eerst in of maak een account.
|
38
|
+
unconfirmed: Bevestig eerst je e-mailadres.
|
39
|
+
mailer:
|
40
|
+
confirmation_instructions:
|
41
|
+
subject: Bevestig je e-mailadres om je account te activeren.
|
42
|
+
reset_password_instructions:
|
43
|
+
subject: Een nieuw wachtwoord instellen.
|
44
|
+
unlock_instructions:
|
45
|
+
subject: De blokkering van je account opheffen.
|
46
|
+
email_changed:
|
47
|
+
subject: Je e-mailadres is aangepast.
|
48
|
+
password_change:
|
49
|
+
subject: Je wachtwoord is aangepast.
|
50
|
+
omniauth_callbacks:
|
51
|
+
failure: Inloggen met je %{kind} account is niet gelukt, doordat \"%{reason}\".
|
52
|
+
success: Je bent nu ingelogd met je %{kind} account.
|
53
|
+
passwords:
|
54
|
+
no_token: Je kunt je wachtwoord hier alleen veranderen vanuit de mail die je is toegestuurd. Klik op de link in de mail of kopieer de hele link in de adresbalk."
|
55
|
+
send_instructions: Er is een mail onderweg met uitleg hoe je je wachtwoord kunt updaten.
|
56
|
+
send_paranoid_instructions: Als je een account hebt voor dit e-mailadres, krijg je een mail waarmee je je wachtwoord kunt updaten."
|
57
|
+
updated: Het updaten van je wachtwoord is gelukt en je bent nu ingelogd.
|
58
|
+
updated_not_active: Het updaten van je wachtwoord is gelukt.
|
59
|
+
registrations:
|
60
|
+
destroyed: Je account is verwijderd. Dag!
|
61
|
+
signed_up: Je account is aangemaakt. Welkom!
|
62
|
+
signed_up_but_inactive: Je account is aangemaakt. Je account is nog niet actief en daarom ben je niet automatisch ingelogd.
|
63
|
+
signed_up_but_locked: Je account is aangemaakt, maar het is geblokkeerd.
|
64
|
+
signed_up_but_unconfirmed: Er is een bevestigingsmail onderweg. Klik op de link in de mail om je e-mailadres te bevestigen.
|
65
|
+
update_needs_confirmation: "Het updaten van je account is gelukt. Je hoeft alleen nog je e-mailadres te bevestigen: klik op de link in de bevestigingsmail."
|
66
|
+
updated: Het updaten van je account is gelukt.
|
67
|
+
updated_but_not_signed_in: Het updaten van je account is gelukt. Je kunt nu inloggen met je nieuwe wachtwoord.
|
68
|
+
sessions:
|
69
|
+
signed_in: Je bent nu ingelogd.
|
70
|
+
signed_out: Je bent nu uitgelogd.
|
71
|
+
already_signed_out: Je was al uitgelogd.
|
72
|
+
unlocks:
|
73
|
+
send_instructions: Er is een mail onderweg waarmee je de blokkering van je account kunt opheffen.
|
74
|
+
send_paranoid_instructions: Als je een account hebt voor dit e-mailadres, krijg je een mail waarmee je de blokkering van je account kunt opheffen.
|
75
|
+
unlocked: Je account werkt weer. Je kunt nu inloggen.
|
76
|
+
errors:
|
77
|
+
messages:
|
78
|
+
already_confirmed: was al bevestigd. Je kunt meteen inloggen.
|
79
|
+
confirmation_period_expired: is niet binnen de vereiste %{period} bevestigd. Vraag een nieuwe bevestigingsmail aan.
|
80
|
+
expired: is niet op tijd bevestigd.
|
81
|
+
not_found: bestaat niet.
|
82
|
+
not_locked: is niet geblokkeerd.
|
83
|
+
not_saved:
|
84
|
+
one: "De %{resource} kon niet worden opgeslagen vanwege een fout:"
|
85
|
+
other: "De %{resource} kon niet worden opgeslagen vanwege %{count} fouten:"
|
@@ -0,0 +1,39 @@
|
|
1
|
+
en:
|
2
|
+
formstrap:
|
3
|
+
file:
|
4
|
+
not_found: Not available
|
5
|
+
placeholder:
|
6
|
+
one: Browse file or drag & drop it here
|
7
|
+
other: Browse files or drag & drop them here
|
8
|
+
group:
|
9
|
+
save: Save
|
10
|
+
blocks:
|
11
|
+
add: "Add %{name}"
|
12
|
+
empty:
|
13
|
+
title: No blocks are added yet.
|
14
|
+
add: Add block
|
15
|
+
block:
|
16
|
+
add: Add
|
17
|
+
remove:
|
18
|
+
title: Delete
|
19
|
+
confirm: Are you sure you want to delete this?
|
20
|
+
modal:
|
21
|
+
close: Close
|
22
|
+
title: "Edit block '%{name}'"
|
23
|
+
media:
|
24
|
+
validation:
|
25
|
+
min:
|
26
|
+
one: Please select at least 1 item
|
27
|
+
other: "Please select at least %{count} items"
|
28
|
+
max:
|
29
|
+
one: Please limit your selection to maximum 1 item
|
30
|
+
other: "Please limit your selection to maximum %{count} items"
|
31
|
+
|
32
|
+
select:
|
33
|
+
blank: Make a choice
|
34
|
+
repeater:
|
35
|
+
add: "Add %{name}"
|
36
|
+
empty: Start by adding your first block
|
37
|
+
row:
|
38
|
+
add: Add row
|
39
|
+
remove: Remove row
|
@@ -0,0 +1,39 @@
|
|
1
|
+
nl:
|
2
|
+
formstrap:
|
3
|
+
file:
|
4
|
+
not_found: Niet beschikbaar
|
5
|
+
placeholder:
|
6
|
+
one: Kies bestand of sleep het hierheen
|
7
|
+
other: Kies bestanden of sleep ze hierheen
|
8
|
+
group:
|
9
|
+
save: Opslaan
|
10
|
+
blocks:
|
11
|
+
add: "%{name} toevoegen"
|
12
|
+
empty:
|
13
|
+
title: Er zijn nog geen blokken toegevoegd.
|
14
|
+
add: Blok toevoegen
|
15
|
+
block:
|
16
|
+
add: Toevoegen
|
17
|
+
remove:
|
18
|
+
title: Verwijderen
|
19
|
+
confirm: Ben je zeker dat je dit wil verwijderen?
|
20
|
+
modal:
|
21
|
+
close: Sluiten
|
22
|
+
title: "Wijzig blok '%{name}'"
|
23
|
+
media:
|
24
|
+
validation:
|
25
|
+
min:
|
26
|
+
one: Gelieve minstens 1 item te selecteren
|
27
|
+
other: "Gelieve minstens %{count} items te selecteren"
|
28
|
+
max:
|
29
|
+
one: Gelieve maximum 1 item te selecteren
|
30
|
+
other: "Gelieve maximum %{count} items te selecteren"
|
31
|
+
|
32
|
+
select:
|
33
|
+
blank: Maak een keuze
|
34
|
+
repeater:
|
35
|
+
add: "%{name} toevoegen"
|
36
|
+
empty: Voeg je eerste blok toe om te beginnen
|
37
|
+
row:
|
38
|
+
add: Rij toevoegen
|
39
|
+
remove: Rij verwijderen
|
@@ -0,0 +1,24 @@
|
|
1
|
+
en:
|
2
|
+
formstrap:
|
3
|
+
media:
|
4
|
+
modal:
|
5
|
+
close: Close
|
6
|
+
limits: "minimum: %{min} en maximum: %{max}"
|
7
|
+
maximum: " of %{count}"
|
8
|
+
placeholder: Upload your first file to the media library
|
9
|
+
select: Select
|
10
|
+
title:
|
11
|
+
one: Select at least 1 file
|
12
|
+
other: Select at least %{count} files
|
13
|
+
unlimited: unlimited
|
14
|
+
upload: Upload new files
|
15
|
+
media_item_modal:
|
16
|
+
attachment_used_by: Used by
|
17
|
+
close: Close
|
18
|
+
dimensions: Dimensions
|
19
|
+
edit: Edit Media item
|
20
|
+
not_analysed: Not yet analysed
|
21
|
+
size: Size
|
22
|
+
type: File type
|
23
|
+
update: Update
|
24
|
+
uploaded_at: Uploaded at
|
@@ -0,0 +1,24 @@
|
|
1
|
+
nl:
|
2
|
+
formstrap:
|
3
|
+
media:
|
4
|
+
modal:
|
5
|
+
close: Sluiten
|
6
|
+
limits: "minimum: %{min} and maximum: %{max}"
|
7
|
+
maximum: " van %{count}"
|
8
|
+
placeholder: Upload je eerste bestand naar de mediabibliotheek
|
9
|
+
select: Selecteer
|
10
|
+
title:
|
11
|
+
one: Selecteer bestand
|
12
|
+
other: Selecteer bestanden
|
13
|
+
unlimited: onbeperkt
|
14
|
+
upload: Nieuwe bestanden uploaden
|
15
|
+
media_item_modal:
|
16
|
+
attachment_used_by: Gebruikt door
|
17
|
+
close: Sluiten
|
18
|
+
dimensions: Afmetingen
|
19
|
+
edit: Media item wijzigen
|
20
|
+
not_analysed: Nog niet geanalyseerd
|
21
|
+
size: Grootte
|
22
|
+
type: Bestandstype
|
23
|
+
update: Update
|
24
|
+
uploaded_at: Geüpload op
|
data/config/routes.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Rails.application.routes.draw do
|
4
|
+
namespace(:formstrap) do
|
5
|
+
get "media", to: "media#index", as: :media
|
6
|
+
post "media", to: "media#create", as: :new_media
|
7
|
+
get "media/:id", to: "media#show", as: :media_item
|
8
|
+
patch "media/:id", to: "media#update"
|
9
|
+
get "media/thumbnail/:id", to: "media#thumbnail", as: :media_item_thumbnail
|
10
|
+
end
|
11
|
+
end
|
data/esbuild-css.js
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
const esbuild = require('esbuild')
|
2
|
+
const sassPlugin = require('esbuild-sass-plugin').sassPlugin
|
3
|
+
const watch = process.argv.includes('-w')
|
4
|
+
|
5
|
+
// Used to skip external URLs in scss files
|
6
|
+
const externalUrlPlugin = {
|
7
|
+
name: 'custom-resolver',
|
8
|
+
setup (build) {
|
9
|
+
build.onResolve({ filter: /^https?:\/\// }, ({ path }) => {
|
10
|
+
return { path, external: true, namespace: 'provided' }
|
11
|
+
})
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
esbuild.build({
|
16
|
+
entryPoints: ['src/scss/formstrap.scss'],
|
17
|
+
outfile: 'app/assets/stylesheets/formstrap.css',
|
18
|
+
bundle: true,
|
19
|
+
watch: watch,
|
20
|
+
allowOverwrite: true,
|
21
|
+
plugins: [
|
22
|
+
externalUrlPlugin,
|
23
|
+
sassPlugin()
|
24
|
+
]
|
25
|
+
}).catch((e) => console.error(e.message))
|
data/esbuild-js.js
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
const esbuild = require('esbuild')
|
2
|
+
const watch = process.argv.includes('-w')
|
3
|
+
|
4
|
+
esbuild.build({
|
5
|
+
entryPoints: ['src/js/formstrap.js'],
|
6
|
+
outfile: 'app/assets/javascripts/formstrap.js',
|
7
|
+
bundle: true,
|
8
|
+
allowOverwrite: true,
|
9
|
+
format: 'esm',
|
10
|
+
watch: watch
|
11
|
+
}).catch((e) => console.error(e.message))
|
data/formstrap.gemspec
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative "lib/formstrap/version"
|
2
|
+
|
3
|
+
Gem::Specification.new do |spec|
|
4
|
+
spec.name = "formstrap"
|
5
|
+
spec.version = Formstrap::VERSION
|
6
|
+
spec.authors = ["Jef Vlamings"]
|
7
|
+
spec.email = ["vlamingsjef@gmail.com"]
|
8
|
+
|
9
|
+
spec.summary = "Bootstrap-powered Form Helpers"
|
10
|
+
spec.description = "An extensive Bootstrap form library to power your Ruby On Rails application."
|
11
|
+
spec.homepage = "https://github.com/frontierdotbe/formstrap"
|
12
|
+
spec.license = "MIT"
|
13
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 3.0.0")
|
14
|
+
|
15
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
16
|
+
spec.metadata["source_code_uri"] = "https://github.com/frontierdotbe/formstrap"
|
17
|
+
spec.metadata["changelog_uri"] = "https://github.com/frontierdotbe/formstrap/releases"
|
18
|
+
|
19
|
+
# Specify which files should be added to the gem when it is released.
|
20
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
21
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
22
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
|
23
|
+
end
|
24
|
+
spec.bindir = "exe"
|
25
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
26
|
+
spec.require_paths = ["lib"]
|
27
|
+
|
28
|
+
# Uncomment to register a new dependency of your gem
|
29
|
+
# spec.add_dependency "example-gem", "~> 1.0"
|
30
|
+
# spec.add_runtime_dependency "closure_tree", "~> 7.4"
|
31
|
+
# spec.add_runtime_dependency "inline_svg", "~> 1.7"
|
32
|
+
# spec.add_runtime_dependency "redcarpet", "~> 3.5"
|
33
|
+
# spec.add_runtime_dependency "rouge", "~> 3.28"
|
34
|
+
|
35
|
+
# For more information and examples about making a new gem, checkout our
|
36
|
+
# guide at: https://bundler.io/guides/creating_gem.html
|
37
|
+
end
|
data/formstrap.iml
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<module type="RUBY_MODULE" version="4">
|
3
|
+
<component name="FacetManager">
|
4
|
+
<facet type="RailsFacetType" name="Ruby on Rails">
|
5
|
+
<configuration>
|
6
|
+
<RAILS_FACET_CONFIG_ID NAME="RAILS_FACET_SUPPORT_REMOVED" VALUE="false" />
|
7
|
+
<RAILS_FACET_CONFIG_ID NAME="RAILS_TESTS_SOURCES_PATCHED" VALUE="true" />
|
8
|
+
<RAILS_FACET_CONFIG_ID NAME="RAILS_FACET_APPLICATION_ROOT" VALUE="$MODULE_DIR$/test/dummy" />
|
9
|
+
</configuration>
|
10
|
+
</facet>
|
11
|
+
</component>
|
12
|
+
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
13
|
+
<exclude-output />
|
14
|
+
<content url="file://$MODULE_DIR$">
|
15
|
+
<sourceFolder url="file://$MODULE_DIR$/test/dummy/features" isTestSource="true" />
|
16
|
+
<sourceFolder url="file://$MODULE_DIR$/test/dummy/spec" isTestSource="true" />
|
17
|
+
<sourceFolder url="file://$MODULE_DIR$/test/dummy/test" isTestSource="true" />
|
18
|
+
<excludeFolder url="file://$MODULE_DIR$/test/dummy/.bundle" />
|
19
|
+
<excludeFolder url="file://$MODULE_DIR$/test/dummy/public/packs" />
|
20
|
+
<excludeFolder url="file://$MODULE_DIR$/test/dummy/vendor/bundle" />
|
21
|
+
<excludeFolder url="file://$MODULE_DIR$/test/dummy/vendor/cache" />
|
22
|
+
<excludeFolder url="file://$MODULE_DIR$/test/dummy/log" />
|
23
|
+
<excludeFolder url="file://$MODULE_DIR$/test/dummy/tmp" />
|
24
|
+
<excludeFolder url="file://$MODULE_DIR$/test/dummy/public/system" />
|
25
|
+
<excludeFolder url="file://$MODULE_DIR$/test/dummy/components" />
|
26
|
+
</content>
|
27
|
+
<orderEntry type="inheritedJdk" />
|
28
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
29
|
+
</component>
|
30
|
+
<component name="RModuleSettingsStorage">
|
31
|
+
<LOAD_PATH number="0" />
|
32
|
+
<I18N_FOLDERS number="1" string0="$MODULE_DIR$/test/dummy/config/locales" />
|
33
|
+
</component>
|
34
|
+
</module>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Formstrap
|
2
|
+
class Engine < Rails::Engine
|
3
|
+
engine_name "formstrap"
|
4
|
+
|
5
|
+
# require "closure_tree"
|
6
|
+
# require "redcarpet"
|
7
|
+
# require "rouge"
|
8
|
+
|
9
|
+
# Add translations to main app
|
10
|
+
config.before_configuration do
|
11
|
+
config.i18n.load_path += Dir["#{config.root}/config/locales/**/*.yml"]
|
12
|
+
end
|
13
|
+
|
14
|
+
# Add assets to precompilation list
|
15
|
+
initializer "formstrap.assets" do |app|
|
16
|
+
next unless app.config.respond_to?(:assets)
|
17
|
+
app.config.assets.precompile += %w[formstrap.js formstrap.css formstrap.scss]
|
18
|
+
end
|
19
|
+
|
20
|
+
# Add importmap to main app
|
21
|
+
initializer "headmin.importmap", before: "importmap" do |app|
|
22
|
+
next unless app.config.respond_to?(:importmap)
|
23
|
+
app.config.importmap.paths << Engine.root.join("config/importmap.rb")
|
24
|
+
app.config.importmap.cache_sweepers << Engine.root.join("app/assets/javascripts")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|