trestle 0.8.4 → 0.8.11

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 (164) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +4 -0
  3. data/.travis.yml +14 -1
  4. data/Gemfile +6 -0
  5. data/README.md +15 -9
  6. data/app/assets/javascripts/trestle/admin.js +11 -10
  7. data/app/assets/javascripts/trestle/components/_confirmation.js +40 -0
  8. data/app/assets/javascripts/trestle/components/_datepicker.js +37 -0
  9. data/app/assets/javascripts/trestle/components/_dialog.js +136 -0
  10. data/app/assets/javascripts/trestle/{_errors.js → components/_errors.js} +2 -2
  11. data/app/assets/javascripts/trestle/components/_form.js +75 -0
  12. data/app/assets/javascripts/trestle/{_gallery.js → components/_gallery.js} +3 -3
  13. data/app/assets/javascripts/trestle/{_select.js → components/_select.js} +2 -2
  14. data/app/assets/javascripts/trestle/components/_sidebar.js +77 -0
  15. data/app/assets/javascripts/trestle/{_table.js → components/_table.js} +1 -1
  16. data/app/assets/javascripts/trestle/components/_tabs.js +25 -0
  17. data/app/assets/javascripts/trestle/components/_tooltips.js +19 -0
  18. data/app/assets/javascripts/trestle/core/_contexts.js +13 -0
  19. data/app/assets/javascripts/trestle/core/_cookies.js +24 -0
  20. data/app/assets/javascripts/trestle/core/_events.js +39 -0
  21. data/app/assets/javascripts/trestle/core/_l10n.js +23 -0
  22. data/app/assets/javascripts/trestle/core/_visit.js +10 -0
  23. data/app/assets/stylesheets/trestle/components/_alerts.scss +28 -0
  24. data/app/assets/stylesheets/trestle/components/_avatar.scss +23 -1
  25. data/app/assets/stylesheets/trestle/components/_breadcrumbs.scss +12 -0
  26. data/app/assets/stylesheets/trestle/components/_buttons.scss +111 -1
  27. data/app/assets/stylesheets/trestle/components/_content.scss +53 -21
  28. data/app/assets/stylesheets/trestle/components/_datepicker.scss +28 -0
  29. data/app/assets/stylesheets/trestle/components/_fields.scss +17 -0
  30. data/app/assets/stylesheets/trestle/components/_input-group.scss +26 -1
  31. data/app/assets/stylesheets/trestle/components/_modal.scss +108 -0
  32. data/app/assets/stylesheets/trestle/components/_navigation.scss +104 -14
  33. data/app/assets/stylesheets/trestle/components/_pagination.scss +3 -3
  34. data/app/assets/stylesheets/trestle/components/_scopes.scss +11 -2
  35. data/app/assets/stylesheets/trestle/components/_sidebar.scss +3 -2
  36. data/app/assets/stylesheets/trestle/components/_table.scss +34 -10
  37. data/app/assets/stylesheets/trestle/components/_tags.scss +9 -0
  38. data/app/assets/stylesheets/trestle/components/_timestamp.scss +4 -1
  39. data/app/assets/stylesheets/trestle/components/_toolbars.scss +55 -0
  40. data/app/assets/stylesheets/trestle/components/_wells.scss +9 -1
  41. data/app/assets/stylesheets/trestle/core/_defaults.scss +21 -6
  42. data/app/assets/stylesheets/trestle/core/_layout.scss +8 -0
  43. data/app/assets/stylesheets/trestle/core/_mixins.scss +11 -0
  44. data/app/assets/stylesheets/trestle/core/_typography.scss +39 -0
  45. data/app/controllers/concerns/trestle/controller/breadcrumbs.rb +21 -0
  46. data/app/controllers/concerns/trestle/controller/callbacks.rb +21 -0
  47. data/app/controllers/concerns/trestle/controller/dialog.rb +16 -0
  48. data/app/controllers/concerns/trestle/controller/helpers.rb +18 -0
  49. data/app/controllers/concerns/trestle/controller/layout.rb +16 -0
  50. data/app/controllers/concerns/trestle/controller/location.rb +15 -0
  51. data/app/controllers/trestle/application_controller.rb +6 -30
  52. data/app/helpers/trestle/avatar_helper.rb +9 -2
  53. data/app/helpers/trestle/flash_helper.rb +15 -0
  54. data/app/helpers/trestle/form_helper.rb +8 -5
  55. data/app/helpers/trestle/format_helper.rb +7 -3
  56. data/app/helpers/trestle/headings_helper.rb +27 -0
  57. data/app/helpers/trestle/hook_helper.rb +13 -4
  58. data/app/helpers/trestle/i18n_helper.rb +14 -0
  59. data/app/helpers/trestle/panel_helper.rb +24 -0
  60. data/app/helpers/trestle/tab_helper.rb +2 -2
  61. data/app/helpers/trestle/table_helper.rb +41 -2
  62. data/app/helpers/trestle/timestamp_helper.rb +49 -7
  63. data/app/helpers/trestle/toolbars_helper.rb +34 -0
  64. data/app/helpers/trestle/url_helper.rb +72 -8
  65. data/app/views/layouts/trestle/admin.html.erb +3 -5
  66. data/app/views/trestle/application/_dialog.html.erb +34 -0
  67. data/app/views/trestle/application/_header.html.erb +22 -20
  68. data/app/views/trestle/application/_layout.html.erb +1 -1
  69. data/app/views/trestle/application/_tabs.html.erb +8 -2
  70. data/app/views/trestle/{application → flash}/_alert.html.erb +7 -2
  71. data/app/views/trestle/flash/_debug.html.erb +8 -0
  72. data/app/views/trestle/flash/_flash.html.erb +7 -0
  73. data/app/views/trestle/resource/_scopes.html.erb +1 -1
  74. data/app/views/trestle/resource/edit.html.erb +8 -10
  75. data/app/views/trestle/resource/index.html.erb +16 -4
  76. data/app/views/trestle/resource/new.html.erb +6 -6
  77. data/app/views/trestle/resource/show.html.erb +8 -10
  78. data/app/views/trestle/shared/_sidebar.html.erb +10 -7
  79. data/app/views/trestle/shared/_title.html.erb +14 -0
  80. data/app/views/trestle/table/_table.html.erb +4 -6
  81. data/bower.json +1 -1
  82. data/config/locales/cs.rb +18 -0
  83. data/config/locales/cs.yml +95 -0
  84. data/config/locales/en.yml +65 -36
  85. data/config/locales/es-MX.yml +94 -0
  86. data/config/locales/es.yml +94 -0
  87. data/config/locales/fr.rb +18 -0
  88. data/config/locales/fr.yml +84 -0
  89. data/config/locales/lv.rb +18 -0
  90. data/config/locales/lv.yml +94 -0
  91. data/config/locales/nl.rb +18 -0
  92. data/config/locales/nl.yml +82 -0
  93. data/config/locales/pl.rb +18 -0
  94. data/config/locales/pl.yml +85 -0
  95. data/config/locales/pt-BR.rb +18 -0
  96. data/config/locales/pt-BR.yml +84 -0
  97. data/config/locales/zh-CN.rb +18 -0
  98. data/config/locales/zh-CN.yml +94 -0
  99. data/gemfiles/rails-4.2.gemfile +16 -0
  100. data/gemfiles/rails-5.0.gemfile +16 -0
  101. data/gemfiles/rails-5.1.gemfile +16 -0
  102. data/gemfiles/rails-5.2.gemfile +16 -0
  103. data/gemfiles/rails-edge.gemfile +17 -0
  104. data/lib/generators/trestle/install/templates/trestle.rb.erb +18 -2
  105. data/lib/generators/trestle/resource/templates/admin.rb.erb +2 -2
  106. data/lib/trestle/adapters/active_record_adapter.rb +2 -6
  107. data/lib/trestle/adapters/adapter.rb +40 -15
  108. data/lib/trestle/adapters/sequel_adapter.rb +2 -6
  109. data/lib/trestle/admin/builder.rb +42 -12
  110. data/lib/trestle/admin/controller.rb +3 -1
  111. data/lib/trestle/admin.rb +84 -3
  112. data/lib/trestle/breadcrumb.rb +16 -1
  113. data/lib/trestle/configurable.rb +6 -0
  114. data/lib/trestle/configuration.rb +28 -5
  115. data/lib/trestle/display.rb +1 -1
  116. data/lib/trestle/engine.rb +10 -4
  117. data/lib/trestle/form/automatic.rb +6 -3
  118. data/lib/trestle/form/builder.rb +5 -1
  119. data/lib/trestle/form/field.rb +1 -1
  120. data/lib/trestle/form/fields/date_picker.rb +2 -2
  121. data/lib/trestle/form/fields/form_control.rb +14 -4
  122. data/lib/trestle/form/fields/form_group.rb +14 -3
  123. data/lib/trestle/form/fields/select.rb +5 -1
  124. data/lib/trestle/form/fields/tag_select.rb +1 -1
  125. data/lib/trestle/form/renderer.rb +2 -2
  126. data/lib/trestle/form.rb +7 -3
  127. data/lib/trestle/hook.rb +27 -0
  128. data/lib/trestle/model_name.rb +64 -0
  129. data/lib/trestle/navigation/group.rb +16 -0
  130. data/lib/trestle/navigation/item.rb +11 -1
  131. data/lib/trestle/navigation.rb +24 -6
  132. data/lib/trestle/options.rb +7 -5
  133. data/lib/trestle/reloader.rb +1 -1
  134. data/lib/trestle/resource/adapter_methods.rb +62 -0
  135. data/lib/trestle/resource/builder.rb +43 -17
  136. data/lib/trestle/resource/collection.rb +68 -0
  137. data/lib/trestle/resource/controller.rb +70 -33
  138. data/lib/trestle/resource.rb +97 -105
  139. data/lib/trestle/scope.rb +13 -3
  140. data/lib/trestle/tab.rb +4 -0
  141. data/lib/trestle/table/actions_column.rb +41 -31
  142. data/lib/trestle/table/automatic.rb +1 -2
  143. data/lib/trestle/table/builder.rb +2 -2
  144. data/lib/trestle/table/column.rb +40 -9
  145. data/lib/trestle/table/row.rb +18 -2
  146. data/lib/trestle/table.rb +18 -2
  147. data/lib/trestle/toolbar/builder.rb +52 -0
  148. data/lib/trestle/toolbar/context.rb +39 -0
  149. data/lib/trestle/toolbar.rb +43 -0
  150. data/lib/trestle/version.rb +1 -1
  151. data/lib/trestle.rb +9 -4
  152. data/trestle.gemspec +5 -3
  153. data/vendor/assets/bower_components/trestle/select2/dist/js/select2.full.js +90 -69
  154. data/vendor/assets/javascripts/trestle/flatpickr.js.erb +2 -0
  155. data/vendor/assets/stylesheets/trestle/magnific-popup.scss +13 -1
  156. metadata +99 -22
  157. data/app/assets/javascripts/trestle/_confirmation.js +0 -23
  158. data/app/assets/javascripts/trestle/_datepicker.js +0 -22
  159. data/app/assets/javascripts/trestle/_form.js +0 -6
  160. data/app/assets/javascripts/trestle/_sidebar.js +0 -52
  161. data/app/assets/javascripts/trestle/_tabs.js +0 -13
  162. data/app/assets/javascripts/trestle/_tooltips.js +0 -3
  163. data/app/helpers/trestle/title_helper.rb +0 -26
  164. data/app/views/trestle/application/_flash.html.erb +0 -11
@@ -38,7 +38,8 @@
38
38
  vertical-align: 0;
39
39
  }
40
40
 
41
- .nav-header {
41
+ .nav-header a {
42
+ position: relative;
42
43
  color: rgba(white, 0.25);
43
44
 
44
45
  text-transform: uppercase;
@@ -46,6 +47,24 @@
46
47
  font-size: 11px;
47
48
 
48
49
  padding: 5px 20px;
50
+
51
+ &::after {
52
+ @extend .ion;
53
+ content: $ionicon-var-arrow-down-b;
54
+
55
+ float: right;
56
+ margin-top: 2px;
57
+
58
+ opacity: 0.75;
59
+ }
60
+
61
+ &:hover, &:focus {
62
+ background: none;
63
+
64
+ &::before, &::after {
65
+ opacity: 1 !important;
66
+ }
67
+ }
49
68
  }
50
69
 
51
70
  .active a {
@@ -62,50 +81,121 @@
62
81
  position: relative;
63
82
  top: 1px;
64
83
  }
84
+
85
+ .collapsed {
86
+ li {
87
+ display: none;
88
+
89
+ &.nav-header {
90
+ display: block;
91
+ }
92
+ }
93
+ }
94
+ }
95
+
96
+ .nav-tooltip {
97
+ display: none !important;
65
98
  }
66
99
 
67
100
  @mixin collapsed-nav-header {
68
- border-bottom: 1px solid rgba(white, 0.1);
69
101
  height: 0;
70
- margin: 0 15px 14px;
71
- padding: 5px 0;
102
+ padding: 10px 15px 15px;
72
103
  text-indent: -99999px;
104
+
105
+ &::after {
106
+ display: none;
107
+
108
+ position: absolute;
109
+ top: 4px;
110
+ left: 50%;
111
+ margin-left: -3px;
112
+
113
+ text-indent: 0;
114
+ }
115
+
116
+ &::before {
117
+ content: "";
118
+
119
+ position: absolute;
120
+ left: 15px;
121
+ right: 15px;
122
+ top: 50%;
123
+ margin-top: -4px;
124
+
125
+ border-bottom: 1px solid rgba(white, 0.1);
126
+ opacity: 0.75;
127
+ }
73
128
  }
74
129
 
75
130
  @include tablet {
131
+ .nav-tooltip {
132
+ display: block !important;
133
+ }
134
+
76
135
  .app-nav {
77
136
  .nav-label, .nav-badge {
78
137
  display: none;
79
138
  }
80
139
 
81
- .nav-header {
140
+ .nav-header a {
82
141
  @include collapsed-nav-header;
83
142
  }
84
143
 
85
- .expanded & {
86
- .nav-header {
144
+ .collapsed .nav-header a {
145
+ &::after {
87
146
  display: block;
88
- border-bottom: none;
147
+ }
148
+ }
149
+ }
150
+
151
+ .sidebar-expanded {
152
+ .app-nav {
153
+ .nav-header a {
89
154
  height: auto;
90
- margin: 0;
91
155
  padding: 5px 20px;
92
156
  text-indent: 0;
157
+
158
+ &::before {
159
+ display: none;
160
+ }
161
+
162
+ &::after {
163
+ display: block;
164
+ position: static;
165
+ margin-left: 0;
166
+ }
93
167
  }
94
168
 
95
169
  .nav-label { display: inline; }
96
170
  .nav-badge { display: block; }
97
171
  }
172
+
173
+ .nav-tooltip {
174
+ display: none !important;
175
+ }
98
176
  }
99
177
  }
100
178
 
101
179
  @include desktop {
102
- .collapsed .app-nav {
103
- .nav-label, .nav-badge {
104
- display: none;
180
+ .sidebar-collapsed {
181
+ .app-nav {
182
+ .nav-label, .nav-badge {
183
+ display: none;
184
+ }
185
+
186
+ .nav-header a {
187
+ @include collapsed-nav-header;
188
+ }
189
+
190
+ .collapsed .nav-header a {
191
+ &::after {
192
+ display: block;
193
+ }
194
+ }
105
195
  }
106
196
 
107
- .nav-header {
108
- @include collapsed-nav-header;
197
+ .nav-tooltip {
198
+ display: block !important;
109
199
  }
110
200
  }
111
201
  }
@@ -1,6 +1,5 @@
1
1
  .pagination-container {
2
- margin-top: 20px;
3
- margin-bottom: 20px;
2
+ margin-left: auto;
4
3
  text-align: right;
5
4
 
6
5
  p {
@@ -26,7 +25,8 @@
26
25
 
27
26
  @include mobile {
28
27
  .pagination-container {
29
- margin-top: 10px;
28
+ margin-right: auto;
29
+
30
30
  text-align: center;
31
31
 
32
32
  display: flex;
@@ -3,9 +3,17 @@
3
3
  @extend .nav-pills;
4
4
 
5
5
  display: flex;
6
+ flex-wrap: wrap;
6
7
 
7
- > li + li {
8
- margin-left: 4px;
8
+ margin-top: -4px;
9
+
10
+ > li {
11
+ margin-top: 4px;
12
+ margin-right: 4px;
13
+
14
+ &:last-child {
15
+ margin-right: 0;
16
+ }
9
17
  }
10
18
 
11
19
  > li > a {
@@ -14,6 +22,7 @@
14
22
 
15
23
  font-size: 11px;
16
24
  font-weight: normal;
25
+ white-space: nowrap;
17
26
 
18
27
  border-radius: 15px;
19
28
  padding: 2px 8px;
@@ -15,6 +15,7 @@
15
15
  display: flex;
16
16
  flex-direction: column;
17
17
 
18
+ overflow-x: hidden;
18
19
  overflow-y: auto;
19
20
 
20
21
  &::-webkit-scrollbar {
@@ -170,7 +171,7 @@
170
171
  content: $fa-var-angle-double-right;
171
172
  }
172
173
 
173
- &.expanded {
174
+ .sidebar-expanded & {
174
175
  width: $sidebar-width;
175
176
 
176
177
  .app-sidebar-header {
@@ -203,7 +204,7 @@
203
204
 
204
205
  @include desktop {
205
206
  .app-sidebar {
206
- &.collapsed {
207
+ .sidebar-collapsed & {
207
208
  width: $sidebar-width-collapsed;
208
209
 
209
210
  .app-sidebar-header {
@@ -1,3 +1,17 @@
1
+ @mixin table-container-background($background) {
2
+ background-image: linear-gradient(to right, $background 30%, rgba($background, 0)),
3
+ linear-gradient(to left, $background 30%, rgba($background, 0)),
4
+ radial-gradient(at 0 50%, rgba(black, 0.2), rgba(black, 0) 70%),
5
+ radial-gradient(at 100% 50%, rgba(black, 0.2), rgba(black, 0) 70%);
6
+
7
+ background-color: $background;
8
+
9
+ background-position: 0 0, 100% 0, 0 0, 100% 0;
10
+ background-repeat: no-repeat;
11
+ background-size: 50px 100%, 50px 100%, 15px 100%, 15px 100%;
12
+ background-attachment: local, local, scroll, scroll;
13
+ }
14
+
1
15
  .table-container {
2
16
  overflow-x: auto;
3
17
 
@@ -5,15 +19,11 @@
5
19
  // scrolling background hints. Must be disabled explicitly.
6
20
  -webkit-overflow-scrolling: auto;
7
21
 
8
- background-image: linear-gradient(to right, white 30%, rgba(white, 0)),
9
- linear-gradient(to left, white 30%, rgba(white, 0)),
10
- radial-gradient(at 0 50%, rgba(black, 0.2), rgba(black, 0) 70%),
11
- radial-gradient(at 100% 50%, rgba(black, 0.2), rgba(black, 0) 70%);
12
- background-position: 0 0, 100% 0, 0 0, 100% 0;
13
- background-repeat: no-repeat;
14
- background-color: white;
15
- background-size: 50px 100%, 50px 100%, 15px 100%, 15px 100%;
16
- background-attachment: local, local, scroll, scroll;
22
+ @include table-container-background(white);
23
+
24
+ .main-content-sidebar & {
25
+ @include table-container-background($content-sidebar-background);
26
+ }
17
27
  }
18
28
 
19
29
  .trestle-table {
@@ -66,10 +76,24 @@
66
76
  text-align: center;
67
77
  }
68
78
 
69
- & + .btn {
79
+ &.has-icon .btn-label {
80
+ @include sr-only;
81
+ }
82
+ }
83
+
84
+ .btn,
85
+ .btn-group {
86
+ + .btn,
87
+ + .btn-group {
70
88
  margin-left: 4px;
71
89
  }
72
90
  }
91
+
92
+ .btn-group {
93
+ .btn + .btn {
94
+ margin-left: -1px;
95
+ }
96
+ }
73
97
  }
74
98
 
75
99
  .avatar {
@@ -14,6 +14,15 @@
14
14
  }
15
15
  }
16
16
 
17
+ a.tag {
18
+ &:hover, &:focus {
19
+ text-decoration: none;
20
+ color: white;
21
+ background: $brand-primary;
22
+ border-left-color: darken($brand-primary, 10%);
23
+ }
24
+ }
25
+
17
26
  .tag-select {
18
27
  &.select2-selection--multiple {
19
28
  .select2-selection__choice {
@@ -5,8 +5,11 @@
5
5
  small {
6
6
  display: block;
7
7
  color: #666;
8
+ }
8
9
 
9
- .inline & {
10
+ &.timestamp-inline,
11
+ &.inline, {
12
+ small {
10
13
  display: inline;
11
14
  }
12
15
  }
@@ -0,0 +1,55 @@
1
+ .btn-toolbar {
2
+ .btn,
3
+ .btn-group,
4
+ .input-group {
5
+ float: none;
6
+ }
7
+
8
+ > .btn,
9
+ > .btn-group,
10
+ > .input-group {
11
+ margin-left: 1px;
12
+ }
13
+
14
+ .btn-group {
15
+ .btn + .btn,
16
+ .btn + .btn-group,
17
+ .btn-group + .btn,
18
+ .btn-group + .btn-group {
19
+ margin-left: -4px;
20
+ }
21
+ }
22
+ }
23
+
24
+ .primary-toolbar {
25
+ .btn {
26
+ @extend .btn-lg;
27
+ font-size: 20px;
28
+ padding: 8px 16px;
29
+ border-radius: $border-radius-base;
30
+
31
+ @include mobile {
32
+ font-size: 18px;
33
+ padding: 7px 12px;
34
+ }
35
+ }
36
+ }
37
+
38
+ .secondary-toolbar {
39
+ .btn {
40
+ font-size: 12px;
41
+ padding: 4px 10px;
42
+
43
+ i {
44
+ font-size: 11px;
45
+ }
46
+
47
+ @include mobile {
48
+ font-size: 11px;
49
+
50
+ i {
51
+ font-size: 10px;
52
+ }
53
+ }
54
+ }
55
+ }
@@ -1,5 +1,5 @@
1
1
  .well {
2
- padding: 20px;
2
+ padding: 15px;
3
3
 
4
4
  box-shadow: none;
5
5
  border-radius: 0;
@@ -13,6 +13,14 @@
13
13
  }
14
14
  }
15
15
 
16
+ .well-lg {
17
+ padding: 24px;
18
+ }
19
+
20
+ .well-sm {
21
+ padding: 9px;
22
+ }
23
+
16
24
  .main-content-sidebar .well {
17
25
  margin: 0 -20px;
18
26
  background: darken($well-bg, 3%);
@@ -11,6 +11,7 @@ $theme-bg-gradient: linear-gradient(rgba(white, $theme-bg-gradient-stre
11
11
  $theme-bg-color: darken($brand-primary, 15%) !default;
12
12
 
13
13
  $theme-bg: $theme-bg-texture-url, $theme-bg-gradient, $theme-bg-color !default;
14
+ $error-bg: $theme-bg-texture-url, $theme-bg-gradient, $brand-danger !default;
14
15
 
15
16
  $body-bg: #f3f3f3 !default;
16
17
 
@@ -30,8 +31,16 @@ $sidebar-toggle-color: rgba(white, 0.5) !default;
30
31
 
31
32
  $content-header-background: rgba(white, 0.6) !default;
32
33
 
33
- $content-sidebar-width: 275px !default;
34
- $content-sidebar-background: rgba(black, 0.025);
34
+ $content-sidebar-width: 285px !default;
35
+ $content-sidebar-background: #f9f9f9 !default;
36
+
37
+ $main-content-header-background: $content-sidebar-background !default;
38
+ $main-content-header-padding: 12px 20px !default;
39
+ $main-content-header-border: 1px solid rgba(black, 0.1) !default;
40
+
41
+ $main-content-footer-background: $content-sidebar-background !default;
42
+ $main-content-footer-padding: 12px 20px !default;
43
+ $main-content-footer-border: 1px solid rgba(black, 0.1) !default;
35
44
 
36
45
  $sidebar-transition-duration: 250ms !default;
37
46
 
@@ -40,12 +49,12 @@ $footer-text: #888 !default;
40
49
 
41
50
  $headings-font-weight: 400 !default;
42
51
 
43
- $btn-default-bg: #dbdbdb !default;
52
+ $btn-default-bg: #bbb !default;
44
53
  $btn-default-color: white !default;
45
54
 
46
55
  $state-success-bg: lighten(#dff0d8, 5%) !default;
47
56
  $state-info-bg: lighten(#d9edf7, 5%) !default;
48
- $state-warning-bg: lighten(#fcf8e3, 5%) !default;
57
+ $state-warning-bg: lighten(#fcf8e3, 2.5%) !default;
49
58
  $state-danger-bg: lighten(#f2dede, 5%) !default;
50
59
 
51
60
  $alert-padding: 20px !default;
@@ -64,9 +73,9 @@ $table-bg-accent: rgba(black, 0.02) !default;
64
73
  $table-bg-hover: rgba(black, 0.04) !default;
65
74
  $table-border-color: rgba(black, 0.13) !default;
66
75
 
67
- $well-border: transparent;
76
+ $well-border: transparent !default;
68
77
 
69
- $panel-border-radius: 0;
78
+ $panel-border-radius: 0 !default;
70
79
 
71
80
  $popover-shadow: 0 3px 6px rgba(black, .175) !default;
72
81
  $dropdown-shadow: $popover-shadow !default;
@@ -79,4 +88,10 @@ $input-border: #ccc !default;
79
88
  $input-border-focus: mix($brand-primary, $input-border) !default;
80
89
  $input-bg-disabled: #fafafa !default;
81
90
 
91
+ $modal-inner-padding: 20px !default;
92
+ $modal-title-padding: 15px 20px !default;
93
+
94
+ $modal-footer-background: $content-sidebar-background !default;
95
+ $modal-footer-border-color: rgba(black, 0.1) !default;
96
+
82
97
  $s2bs-btn-default-bg: #eee !default;
@@ -41,6 +41,9 @@ img {
41
41
 
42
42
  .app-main {
43
43
  flex: 1 0 auto;
44
+
45
+ display: flex;
46
+ flex-direction: column;
44
47
  }
45
48
 
46
49
  .app-footer {
@@ -57,6 +60,11 @@ img {
57
60
  }
58
61
  }
59
62
 
63
+ .error-iframe {
64
+ border: 0;
65
+ flex: 1;
66
+ }
67
+
60
68
  @include mobile {
61
69
  body {
62
70
  height: auto;
@@ -24,6 +24,17 @@
24
24
  right: 0;
25
25
  }
26
26
 
27
+ @mixin sr-only {
28
+ position: absolute;
29
+ width: 1px;
30
+ height: 1px;
31
+ margin: -1px;
32
+ padding: 0;
33
+ overflow: hidden;
34
+ clip: rect(0, 0, 0, 0);
35
+ border: 0;
36
+ }
37
+
27
38
  @mixin mobile {
28
39
  @media (max-width: $screen-xs-max) {
29
40
  @content;
@@ -19,6 +19,45 @@ a {
19
19
  border-radius: 10em !important;
20
20
  }
21
21
 
22
+ .main-content-sidebar {
23
+ font-size: 13px;
24
+
25
+ h1, h2, h3, h4, h5, h6 {
26
+ color: #666;
27
+ border-bottom: 1px solid #ddd;
28
+
29
+ padding-top: 5px;
30
+ padding-bottom: 0.5em;
31
+
32
+ margin-top: 20px;
33
+ margin-bottom: 15px;
34
+ }
35
+
36
+ h1 {
37
+ font-size: 28px;
38
+ }
39
+
40
+ h2 {
41
+ font-size: 24px;
42
+ }
43
+
44
+ h3 {
45
+ font-size: 21px;
46
+ }
47
+
48
+ h4 {
49
+ font-size: 17px;
50
+ }
51
+
52
+ h5 {
53
+ font-size: 14px;
54
+ }
55
+
56
+ h6 {
57
+ font-size: 12px;
58
+ }
59
+ }
60
+
22
61
  @include mobile {
23
62
  h1 {
24
63
  font-size: $font-size-h1 - 6px;
@@ -0,0 +1,21 @@
1
+ module Trestle
2
+ module Controller
3
+ module Breadcrumbs
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ helper_method :breadcrumbs
8
+ helper_method :breadcrumb
9
+ end
10
+
11
+ protected
12
+ def breadcrumbs
13
+ @breadcrumbs ||= Trestle::Breadcrumb::Trail.new(Trestle.config.root_breadcrumbs)
14
+ end
15
+
16
+ def breadcrumb(label, path=nil)
17
+ breadcrumbs.append(label, path)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module Trestle
2
+ module Controller
3
+ module Callbacks
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ Trestle.config.before_actions.each do |action|
8
+ before_action(action.options, &action.block)
9
+ end
10
+
11
+ Trestle.config.after_actions.each do |action|
12
+ after_action(action.options, &action.block)
13
+ end
14
+
15
+ Trestle.config.around_actions.each do |action|
16
+ around_action(action.options, &action.block)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,16 @@
1
+ module Trestle
2
+ module Controller
3
+ module Dialog
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ helper_method :dialog_request?
8
+ end
9
+
10
+ protected
11
+ def dialog_request?
12
+ request.headers["X-Trestle-Dialog"]
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+ module Trestle
2
+ module Controller
3
+ module Helpers
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ # Allow inclusion of helpers from Rails application
8
+ self.helpers_path += Rails.application.helpers_paths
9
+
10
+ # Add helpers declared from configuration as blocks
11
+ helper Trestle.config.helper_module
12
+
13
+ # Add helpers declared from configuration as module references
14
+ helper *Trestle.config.helpers
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ module Trestle
2
+ module Controller
3
+ module Layout
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ layout :choose_layout
8
+ end
9
+
10
+ protected
11
+ def choose_layout
12
+ request.xhr? ? false : "trestle/admin"
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,15 @@
1
+ module Trestle
2
+ module Controller
3
+ module Location
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ after_action :set_trestle_location_header, unless: :dialog_request?
8
+ end
9
+
10
+ def set_trestle_location_header
11
+ headers["X-Trestle-Location"] = request.path
12
+ end
13
+ end
14
+ end
15
+ end