binda 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +83 -25
  3. data/app/assets/javascripts/binda/application.js +3 -3
  4. data/app/assets/javascripts/binda/components/bootstrap.js +3 -4
  5. data/app/assets/javascripts/binda/components/field_group_editor.js +10 -10
  6. data/app/assets/javascripts/binda/components/field_setting_choices.js +61 -49
  7. data/app/assets/javascripts/binda/components/fileupload.js +135 -118
  8. data/app/assets/javascripts/binda/components/form_item.js +65 -65
  9. data/app/assets/javascripts/binda/components/form_item_editor.js +19 -19
  10. data/app/assets/javascripts/binda/components/form_item_image.js +11 -13
  11. data/app/assets/javascripts/binda/components/form_item_repeater.js +77 -71
  12. data/app/assets/javascripts/binda/components/login-shader.js +171 -164
  13. data/app/assets/javascripts/binda/components/login_form.js +65 -73
  14. data/app/assets/javascripts/binda/components/radio-toggle.js +8 -12
  15. data/app/assets/javascripts/binda/components/select2.js +19 -14
  16. data/app/assets/javascripts/binda/components/sortable.js +76 -71
  17. data/app/assets/javascripts/binda/dist/binda.bundle.js +735 -727
  18. data/app/assets/javascripts/binda/index.js +49 -35
  19. data/app/assets/stylesheets/binda/components/assets_manager.scss +13 -22
  20. data/app/assets/stylesheets/binda/components/b-alert.scss +18 -14
  21. data/app/assets/stylesheets/binda/components/b-btn.scss +24 -43
  22. data/app/assets/stylesheets/binda/components/field_setting_choices.scss +16 -31
  23. data/app/assets/stylesheets/binda/components/fileupload.scss +25 -42
  24. data/app/assets/stylesheets/binda/components/form_item.scss +51 -93
  25. data/app/assets/stylesheets/binda/components/form_item_choices.scss +7 -10
  26. data/app/assets/stylesheets/binda/components/login.scss +2 -2
  27. data/app/assets/stylesheets/binda/components/main_header.scss +5 -10
  28. data/app/assets/stylesheets/binda/components/main_sidebar.scss +42 -46
  29. data/app/assets/stylesheets/binda/components/main_sortable_table.scss +12 -21
  30. data/app/assets/stylesheets/binda/components/main_table.scss +18 -35
  31. data/app/assets/stylesheets/binda/components/popup_warning.scss +14 -27
  32. data/app/assets/stylesheets/binda/components/select2.scss +46 -48
  33. data/app/assets/stylesheets/binda/components/sortable.scss +25 -45
  34. data/app/assets/stylesheets/binda/components/standard-form.scss +43 -73
  35. data/app/assets/stylesheets/binda/controllers/users_sessions_new.scss +52 -89
  36. data/app/assets/stylesheets/binda/index.scss +0 -1
  37. data/app/assets/stylesheets/binda/settings/buttons.scss +9 -10
  38. data/app/assets/stylesheets/binda/settings/common.scss +17 -22
  39. data/app/assets/stylesheets/binda/settings/fonts.scss +112 -67
  40. data/app/assets/stylesheets/binda/settings/tiny_mce_overrides.scss +20 -36
  41. data/app/assets/stylesheets/binda/settings/variables.scss +38 -43
  42. data/app/controllers/binda/choices_controller.rb +14 -11
  43. data/app/controllers/binda/components_controller.rb +6 -4
  44. data/app/controllers/binda/structures_controller.rb +7 -3
  45. data/app/helpers/binda/components_helper.rb +69 -3
  46. data/app/helpers/binda/field_groups_helper.rb +16 -6
  47. data/app/helpers/binda/structures_helper.rb +1 -4
  48. data/app/models/binda/application_record.rb +4 -1
  49. data/app/models/binda/asset.rb +3 -1
  50. data/app/models/binda/b.rb +1 -0
  51. data/app/models/binda/category.rb +1 -0
  52. data/app/models/binda/checkbox.rb +2 -0
  53. data/app/models/binda/choice.rb +74 -41
  54. data/app/models/binda/component.rb +1 -1
  55. data/app/models/binda/date.rb +4 -0
  56. data/app/models/binda/deprecation.rb +7 -0
  57. data/app/models/binda/field_group.rb +16 -3
  58. data/app/models/binda/field_setting.rb +168 -41
  59. data/app/models/binda/image.rb +1 -0
  60. data/app/models/binda/radio.rb +2 -0
  61. data/app/models/binda/relation.rb +3 -0
  62. data/app/models/binda/repeater.rb +3 -0
  63. data/app/models/binda/selection.rb +237 -0
  64. data/app/models/binda/string.rb +4 -0
  65. data/app/models/binda/structure.rb +25 -14
  66. data/app/models/binda/text.rb +9 -0
  67. data/app/models/binda/video.rb +1 -0
  68. data/app/models/concerns/binda/default_helpers.rb +40 -31
  69. data/app/models/concerns/binda/deprecations.rb +6 -0
  70. data/app/models/concerns/binda/fieldable_association_helpers.rb +366 -0
  71. data/app/models/concerns/binda/fieldable_associations.rb +32 -369
  72. data/app/views/binda/boards/edit.html.erb +15 -2
  73. data/app/views/binda/categories/_form.html.erb +24 -51
  74. data/app/views/binda/categories/edit.html.erb +23 -3
  75. data/app/views/binda/categories/index.html.erb +49 -25
  76. data/app/views/binda/categories/new.html.erb +21 -2
  77. data/app/views/binda/components/edit.html.erb +27 -4
  78. data/app/views/binda/components/index.html.erb +47 -50
  79. data/app/views/binda/components/new.html.erb +12 -2
  80. data/app/views/binda/components/sort_index.html.erb +28 -13
  81. data/app/views/binda/field_groups/_form_body.html.erb +43 -82
  82. data/app/views/binda/field_groups/_form_item.html.erb +3 -120
  83. data/app/views/binda/field_groups/_form_section.html.erb +11 -16
  84. data/app/views/binda/field_groups/_form_section_repeater.html.erb +7 -15
  85. data/app/views/binda/field_groups/edit.html.erb +14 -2
  86. data/app/views/binda/field_groups/form_item/_form_item_choice_editor.html.erb +11 -0
  87. data/app/views/binda/field_groups/form_item/_form_item_editor.html.erb +14 -0
  88. data/app/views/binda/field_groups/form_item/_form_item_header.html.erb +25 -0
  89. data/app/views/binda/field_groups/form_item/_form_item_new_editor.html.erb +8 -0
  90. data/app/views/binda/field_groups/form_item/_form_item_persisted_editor.html.erb +27 -0
  91. data/app/views/binda/field_groups/form_item/form_item_choice/_form_item_allow_null_choice.html.erb +11 -0
  92. data/app/views/binda/field_groups/form_item/form_item_choice/_form_item_choice_header.html.erb +11 -0
  93. data/app/views/binda/field_groups/form_item/form_item_choice/_form_item_default_choice.html.erb +11 -0
  94. data/app/views/binda/field_groups/form_item/form_item_choice/_form_item_new_choice.html.erb +16 -0
  95. data/app/views/binda/field_groups/form_item/form_item_choice/_form_item_persisted_choices.html.erb +16 -0
  96. data/app/views/binda/field_groups/new.html.erb +14 -2
  97. data/app/views/binda/field_settings/_form_body.html.erb +1 -3
  98. data/app/views/binda/field_settings/edit.html.erb +1 -1
  99. data/app/views/binda/field_settings/new.html.erb +1 -1
  100. data/app/views/binda/fieldable/_form_body.html.erb +24 -72
  101. data/app/views/binda/fieldable/_form_item_date.html.erb +1 -4
  102. data/app/views/binda/fieldable/_form_item_image.html.erb +3 -7
  103. data/app/views/binda/fieldable/_form_item_new_repeater.html.erb +0 -13
  104. data/app/views/binda/fieldable/_form_item_selections.html.erb +20 -112
  105. data/app/views/binda/fieldable/form_item_selections/_form_item_checkbox.html.erb +34 -0
  106. data/app/views/binda/fieldable/form_item_selections/_form_item_radio.html.erb +28 -0
  107. data/app/views/binda/fieldable/form_item_selections/_form_item_selection.html.erb +30 -0
  108. data/app/views/binda/manage/users/_form_body.html.erb +1 -31
  109. data/app/views/binda/manage/users/edit.html.erb +12 -2
  110. data/app/views/binda/manage/users/index.html.erb +36 -19
  111. data/app/views/binda/manage/users/new.html.erb +14 -3
  112. data/app/views/binda/structures/_form_body.html.erb +2 -25
  113. data/app/views/binda/structures/_form_section.html.erb +43 -65
  114. data/app/views/binda/structures/_form_sidebar.html.erb +19 -12
  115. data/app/views/binda/structures/edit.html.erb +20 -3
  116. data/app/views/binda/structures/index.html.erb +46 -26
  117. data/app/views/binda/structures/new.html.erb +13 -2
  118. data/app/views/binda/structures/sort_index.html.erb +37 -17
  119. data/app/views/binda/users/sessions/new.html.erb +25 -20
  120. data/app/views/layouts/binda/_form_errors.html.erb +10 -0
  121. data/app/views/layouts/binda/_sidebar.html.erb +6 -6
  122. data/app/views/layouts/binda/application.html.erb +1 -1
  123. data/config/initializers/carrierwave.rb +3 -2
  124. data/config/locales/en.yml +56 -12
  125. data/config/tinymce.yml +2 -2
  126. data/db/migrate/1_create_binda_tables.rb +1 -1
  127. data/lib/binda/version.rb +1 -1
  128. data/lib/generators/binda/setup/setup_generator.rb +2 -2
  129. data/lib/tasks/add_default_choice_to_all_selections_with_no_choices_task.rake +6 -0
  130. metadata +58 -8
  131. data/app/assets/stylesheets/binda/components/form_item_image.scss +0 -0
  132. data/app/views/binda/field_groups/_form_item_choice.erb +0 -104
@@ -1,79 +1,66 @@
1
- .form-item
2
- {
1
+ .form-item {
3
2
  display: block;
4
3
  overflow-y: hidden;
5
- transition: max-height .6s ease-out;
4
+ transition: max-height 0.6s ease-out;
6
5
 
7
6
  @extend .clearfix;
8
7
  }
9
8
 
10
- .form-item > p
11
- {
9
+ .form-item > p {
12
10
  padding: 12px;
13
11
  }
14
12
 
15
- .form-item--half-size
16
- {
13
+ .form-item--half-size {
17
14
  position: relative;
18
15
  float: left;
19
16
  width: 50%;
20
17
 
21
- .form-group
22
- {
18
+ .form-group {
23
19
  border-top: none !important;
24
20
  }
25
21
  }
26
22
 
27
- .form-item--full-size
28
- {
23
+ .form-item--full-size {
29
24
  position: relative;
30
25
  clear: both;
31
26
  width: 100%;
32
27
  }
33
28
 
34
- .form-item--main-actions
35
- {
36
- a
37
- {
29
+ .form-item--main-actions {
30
+ a {
38
31
  float: right;
39
32
  margin-left: 8px;
40
33
  }
41
34
  }
42
35
 
43
- .form-item--new
44
- {
36
+ .form-item--new {
45
37
  position: absolute;
46
38
  top: 101%;
47
39
  max-height: 0;
48
40
  }
49
41
 
50
- .form-item--select-input
51
- {
42
+ .form-item--select-input {
52
43
  display: inline-block;
53
44
  width: 240px;
54
45
  margin-left: 5%;
55
46
  }
56
47
 
57
- .form-item--textarea
58
- {
48
+ .form-item--textarea {
59
49
  display: inline-block;
60
50
  width: 70%;
61
51
  margin-left: 5%;
62
52
  }
63
53
 
64
- .form-item--category
65
- {
54
+ .form-item--category {
66
55
  margin-bottom: 20px;
67
56
  padding-bottom: 20px;
68
57
 
69
- input[type=submit]
70
- {
58
+ input[type="submit"] {
71
59
  float: left;
72
60
  width: 20%;
73
61
  }
74
62
 
75
- .form-group
76
- {
63
+ .form-group {
77
64
  float: left;
78
65
  width: 70%;
79
66
  margin: 0;
@@ -81,123 +68,103 @@
81
68
  }
82
69
  }
83
70
 
84
- .form-item--toggle-button
85
- {
71
+ .form-item--toggle-button {
86
72
  cursor: pointer;
87
- transition: transform .3s ease;
73
+ transition: transform 0.3s ease;
88
74
  transform: rotate(0deg);
89
75
  }
90
76
 
91
- .form-item--toggle-button-closed
92
- {
77
+ .form-item--toggle-button-closed {
93
78
  transform: rotate(180deg);
94
79
  }
95
80
 
96
- .form-item--editor
97
- {
81
+ .form-item--editor {
98
82
  overflow-y: hidden;
99
83
  // max-height: is set via javascript in app/assets/javscripts/components/form_item_editor.js;
100
84
  // default is 0
101
85
  max-height: 0;
102
- transition: max-height .6s ease-out;
86
+ transition: max-height 0.6s ease-out;
103
87
  }
104
88
 
105
- .form-item--repeater
106
- {
89
+ .form-item--repeater {
107
90
  overflow-y: hidden;
108
91
  // inherit transitions from sortable and add max-height
109
- transition: box-shadow .3s ease, transform .3s ease, max-height .6s ease-out !important;
92
+ transition: box-shadow 0.3s ease, transform 0.3s ease,
93
+ max-height 0.6s ease-out !important;
110
94
  }
111
95
 
112
- .standard-form--container .form-item--repeater .control-label
113
- {
96
+ .standard-form--container .form-item--repeater .control-label {
114
97
  @extend .p;
115
98
  }
116
99
 
117
- .form-item--repeater-fields
118
- {
100
+ .form-item--repeater-fields {
119
101
  overflow-y: hidden;
120
- transition: all .6s ease;
102
+ transition: all 0.6s ease;
121
103
  }
122
104
 
123
- .font-item--collapsed .form-item--repeater-fields
124
- {
105
+ .font-item--collapsed .form-item--repeater-fields {
125
106
  margin-bottom: 8px;
126
107
  }
127
108
 
128
- .form-item--repeater-section
129
- {
109
+ .form-item--repeater-section {
130
110
  overflow-x: hidden; // This ensure that the div doesn't become wider when draggin sortable items to the right
131
111
  margin-bottom: 0;
132
112
 
133
- ul.sortable > li
134
- {
113
+ ul.sortable > li {
135
114
  margin-top: -1px; // this solve the issue of a 2px border between 2 repeaters
136
115
  border: 1px solid $color-gray-lighter;
137
116
  }
138
117
 
139
- ul.sortable > li > *
140
- {
118
+ ul.sortable > li > * {
141
119
  display: block;
142
120
  }
143
121
 
144
- ul.sortable
145
- {
122
+ ul.sortable {
146
123
  margin-bottom: 0;
147
124
  }
148
125
 
149
- .ui-sortable-handle:hover
150
- {
126
+ .ui-sortable-handle:hover {
151
127
  background-color: transparent;
152
128
  }
153
129
 
154
- .sortable--toggle-text:first-child
155
- {
130
+ .sortable--toggle-text:first-child {
156
131
  display: none;
157
132
  }
158
133
 
159
- .sortable--toggle
160
- {
134
+ .sortable--toggle {
161
135
  float: right;
162
136
  margin: 0;
163
137
  }
164
138
 
165
- .sortable--enabled
166
- {
167
- .form-item--repeater-fields
168
- {
139
+ .sortable--enabled {
140
+ .form-item--repeater-fields {
169
141
  margin: 0;
170
142
  padding: 0;
171
143
  }
172
144
  }
173
145
 
174
- .form-item--new
175
- {
146
+ .form-item--new {
176
147
  position: absolute;
177
148
  top: 101%;
178
149
  max-height: 0;
179
150
  }
180
151
  }
181
152
 
182
- .form-item--repeater-section--add-new
183
- {
153
+ .form-item--repeater-section--add-new {
184
154
  float: right;
185
155
  margin-right: 8px;
186
156
  }
187
157
 
188
- .form-item--repeater-title
189
- {
158
+ .form-item--repeater-title {
190
159
  display: block;
191
160
  margin-bottom: 20px;
192
161
  }
193
162
 
194
- .form-item--header
195
- {
163
+ .form-item--header {
196
164
  padding: 4px;
197
165
  background-color: $color-gray-lightest !important;
198
166
 
199
- p
200
- {
167
+ p {
201
168
  margin-top: 8px;
202
169
  margin-left: 8px;
203
170
  }
@@ -205,45 +172,36 @@
205
172
 
206
173
  .form-item--collapse-btn,
207
174
  .form-item--delete-repeater-item,
208
- .form-item--edit-item
209
- {
175
+ .form-item--edit-item {
210
176
  float: right;
211
177
  margin-top: 8px;
212
178
  margin-right: 8px;
213
179
  }
214
180
 
215
- a.form-item--delete-repeater-item
216
- {
181
+ a.form-item--delete-repeater-item {
217
182
  cursor: pointer;
218
- transition: color .2s ease;
183
+ transition: color 0.2s ease;
219
184
  color: $color-danger;
220
185
 
221
- &:hover
222
- {
186
+ &:hover {
223
187
  color: $color-danger-hover;
224
188
  }
225
189
  }
226
190
 
227
- .form-item--collapse-btn
228
- {
229
- span:first-child
230
- {
191
+ .form-item--collapse-btn {
192
+ span:first-child {
231
193
  display: block;
232
194
  }
233
- span:last-child
234
- {
195
+ span:last-child {
235
196
  display: none;
236
197
  }
237
198
  }
238
199
 
239
- .form-item--collapsed .form-item--collapse-btn
240
- {
241
- span:first-child
242
- {
200
+ .form-item--collapsed .form-item--collapse-btn {
201
+ span:first-child {
243
202
  display: none;
244
203
  }
245
- span:last-child
246
- {
204
+ span:last-child {
247
205
  display: block;
248
206
  }
249
- }
207
+ }
@@ -1,14 +1,11 @@
1
1
  .form-item--full-size {
2
-
3
- input[type="checkbox"] {
4
-
5
- margin-left: 0px;
6
- }
2
+ input[type="checkbox"] {
3
+ margin-left: 0px;
4
+ }
7
5
  }
8
6
 
9
7
  .field_group_field_settings_allow_null {
10
-
11
- border-top: none !important;
12
- padding-bottom: 10px !important;
13
- padding-top: 10px !important;
14
- }
8
+ border-top: none !important;
9
+ padding-bottom: 10px !important;
10
+ padding-top: 10px !important;
11
+ }
@@ -1,6 +1,6 @@
1
- .login {
1
+ .login {
2
2
  h2 {
3
3
  margin-top: 0;
4
4
  margin-bottom: $font-size-base * 2;
5
5
  }
6
- }
6
+ }
@@ -1,26 +1,21 @@
1
- #main-header
2
- {
1
+ #main-header {
3
2
  width: 100%;
4
3
  padding: 32px 24px;
5
4
  }
6
- .main-header--title
7
- {
5
+ .main-header--title {
8
6
  @extend .b-h3;
9
7
  display: block;
10
8
  }
11
9
 
12
- .main-header--buttons
13
- {
10
+ .main-header--buttons {
14
11
  float: right;
15
12
  }
16
13
 
17
- a.main-header--back
18
- {
14
+ a.main-header--back {
19
15
  font-weight: 300;
20
16
  color: $color-gray-light;
21
17
 
22
- &:hover
23
- {
18
+ &:hover {
24
19
  color: $color-gray;
25
20
  }
26
21
  }
@@ -1,5 +1,4 @@
1
- #main-sidebar
2
- {
1
+ #main-sidebar {
3
2
  position: fixed;
4
3
  z-index: 1000;
5
4
  top: 0;
@@ -7,63 +6,58 @@
7
6
  overflow-y: auto;
8
7
  width: 200px;
9
8
  height: 100%;
10
- background-image: linear-gradient( to bottom, $color-gray-darkest, $color-gray-darker);
9
+ background-image: linear-gradient(
10
+ to bottom,
11
+ $color-gray-darkest,
12
+ $color-gray-darker
13
+ );
11
14
  }
12
15
 
13
- .main-sidebar--brand
14
- {
16
+ .main-sidebar--brand {
15
17
  position: relative;
16
18
  overflow-x: hidden;
17
19
  height: 124px;
18
- transition: background-color .3s ease;
20
+ transition: background-color 0.3s ease;
19
21
 
20
- a
21
- {
22
+ a {
22
23
  width: 100%;
23
24
  height: 100%;
24
25
  }
25
26
 
26
- &:hover
27
- {
28
- .main-sidebar--view-website
29
- {
30
- transform: translateX( 0px );
27
+ &:hover {
28
+ .main-sidebar--view-website {
29
+ transform: translateX(0px);
31
30
  }
32
- .main-sidebar--website-name
33
- {
34
- transform: translateX( -200px );
31
+ .main-sidebar--website-name {
32
+ transform: translateX(-200px);
35
33
  }
36
34
  }
37
35
  }
38
36
 
39
- .main-sidebar--website-name
40
- {
37
+ .main-sidebar--website-name {
41
38
  position: absolute;
42
39
  bottom: 0;
43
40
  left: 0;
44
41
  width: 100%;
45
42
  padding: 0 15px;
46
- transition: transform .3s ease;
43
+ transition: transform 0.3s ease;
47
44
  }
48
45
 
49
- .main-sidebar--view-website
50
- {
46
+ .main-sidebar--view-website {
51
47
  position: absolute;
52
48
  bottom: 0;
53
49
  left: 0;
54
50
  width: 100%;
55
51
  padding: 0 15px;
56
- transition: transform .3s ease;
52
+ transition: transform 0.3s ease;
57
53
  transform: translateX(200px);
58
54
 
59
- i
60
- {
55
+ i {
61
56
  padding-right: 6px;
62
57
  }
63
58
  }
64
59
 
65
- .main-sidebar--nav
66
- {
60
+ .main-sidebar--nav {
67
61
  position: fixed;
68
62
  width: 200px;
69
63
  margin: 0;
@@ -72,55 +66,57 @@
72
66
  top: 0;
73
67
  left: 0;
74
68
  margin-bottom: 48px; // create space for sideba-footer
69
+ overflow-y: auto;
70
+ height: 100vh;
75
71
 
76
- li
77
- {
78
- > a
79
- {
72
+ li {
73
+ &:last-child {
74
+ margin-bottom: 64px;
75
+ }
76
+
77
+ > a {
80
78
  font-weight: 300;
81
79
  display: block;
82
80
  padding: 12px;
83
- transition: all .3s ease;
81
+ transition: all 0.3s ease;
84
82
  text-decoration: none;
85
83
  color: $color-gray;
86
84
 
87
- &:hover
88
- {
85
+ &:hover {
89
86
  padding-left: 16px;
90
87
  text-decoration: none;
91
88
  color: $color-white;
92
89
  border-bottom: none;
93
- background-image: linear-gradient( to right, lighten( $color-gray-darker, 2% ), $color-gray-darker );
90
+ background-image: linear-gradient(
91
+ to right,
92
+ lighten($color-gray-darker, 2%),
93
+ $color-gray-darker
94
+ );
94
95
  }
95
96
 
96
97
  &:active,
97
- &:focus
98
- {
98
+ &:focus {
99
99
  text-decoration: none;
100
100
  }
101
101
  }
102
102
  }
103
103
  }
104
104
 
105
- .main-sidebar--nav .glyphicon
106
- {
105
+ .main-sidebar--nav i {
107
106
  padding-right: 8px;
108
107
  text-indent: 0;
109
108
  }
110
109
 
111
- .main-sidebar--nav li a.main-sidebar--logout p
112
- {
110
+ .main-sidebar--nav li a.main-sidebar--logout p {
113
111
  color: $color-danger;
114
112
  }
115
113
 
116
114
  .main-sidebar--structure,
117
- .main-sidebar--nav li:last-child
118
- {
115
+ .main-sidebar--nav li:last-child {
119
116
  border-bottom: 1px solid $color-gray-darker;
120
117
  }
121
118
 
122
- .main-sidebar--first-structure
123
- {
119
+ .main-sidebar--first-structure {
124
120
  border-top: 1px solid $color-gray-darker;
125
121
  }
126
122
 
@@ -133,9 +129,9 @@
133
129
 
134
130
  a {
135
131
  color: $color-gray;
136
- transition: color .3s;
132
+ transition: color 0.3s;
137
133
  }
138
134
  a:hover {
139
135
  color: $color-gray-lighter;
140
136
  }
141
- }
137
+ }