hot-glue 0.2.6 → 0.3.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +1 -2
- data/Gemfile.lock +3 -23
- data/LICENCE +11 -4
- data/README.md +0 -642
- data/app/helpers/hot_glue/controller_helper.rb +2 -1
- data/lib/generators/hot_glue/install_generator.rb +121 -33
- data/lib/generators/hot_glue/markup_templates/erb.rb +53 -27
- data/lib/generators/hot_glue/markup_templates/haml.rb +5 -3
- data/lib/generators/hot_glue/scaffold_generator.rb +224 -58
- data/lib/generators/hot_glue/templates/controller.rb.erb +39 -32
- data/lib/generators/hot_glue/templates/erb/_form.erb +1 -1
- data/lib/generators/hot_glue/templates/erb/_line.erb +3 -2
- data/lib/generators/hot_glue/templates/erb/_list.erb +24 -8
- data/lib/generators/hot_glue/templates/erb/_show.erb +27 -4
- data/lib/generators/hot_glue/templates/erb/create.turbo_stream.erb +4 -4
- data/lib/generators/hot_glue/templates/erb/destroy.turbo_stream.erb +2 -2
- data/lib/generators/hot_glue/templates/erb/edit.erb +2 -5
- data/lib/generators/hot_glue/templates/erb/index.erb +11 -9
- data/lib/generators/hot_glue/templates/erb/update.turbo_stream.erb +5 -2
- data/lib/generators/hot_glue/templates/haml/_line.haml +1 -1
- data/lib/generators/hot_glue/templates/haml/_list.haml +6 -2
- data/lib/generators/hot_glue/templates/haml/create.turbo_stream.haml +3 -3
- data/lib/generators/hot_glue/templates/haml/destroy.turbo_stream.haml +1 -1
- data/lib/generators/hot_glue/templates/haml/edit.haml +0 -2
- data/lib/generators/hot_glue/templates/haml/index.haml +2 -3
- data/lib/generators/hot_glue/templates/system_spec.rb.erb +19 -8
- data/lib/generators/hot_glue/templates/themes/hotglue_scaffold_dark_knight.scss +158 -0
- data/lib/generators/hot_glue/templates/themes/hotglue_scaffold_like_bootstrap.scss +154 -0
- data/lib/generators/hot_glue/templates/themes/hotglue_scaffold_like_los_gatos.scss +182 -0
- data/lib/generators/hot_glue/templates/themes/hotglue_scaffold_like_mountain_view.scss +179 -0
- data/lib/hot-glue.rb +1 -2
- data/lib/hotglue/version.rb +1 -1
- metadata +13 -33
@@ -1,19 +1,35 @@
|
|
1
|
-
<\%= turbo_frame_tag "<%= plural %>-list" do %>
|
2
|
-
<div class="
|
3
|
-
|
1
|
+
<\%= turbo_frame_tag "<%= plural %>-list" <%= nested_for_turbo_id_list_constructor %> do %>
|
2
|
+
<div class="<%= @container_name %> scaffold-list">
|
3
|
+
<% unless @nested_args.any? %><h4><%= plural.gsub("_", " ").upcase %></h4><% end %>
|
4
|
+
|
5
|
+
<% unless @no_create %><%= '<%= render partial: "' + ((@namespace+"/" if @namespace) || "") + plural + '/new_button", locals: {' + nested_assignments + '}' + '%\>'.gsub('\\',"") %><% end %>
|
6
|
+
|
7
|
+
<div class="row scaffold-row">
|
4
8
|
<%= list_column_headings %>
|
5
|
-
|
9
|
+
<% if @downnest_children.any? %>
|
10
|
+
<% each_downnest_width = @downnest_children.count == 1 ? 40 : (60/@downnest_children.count).floor %>
|
11
|
+
<% @downnest_children.each do |downnest| %>
|
12
|
+
<div class="col scaffold-col-heading" style="flex-basis: <%= each_downnest_width %>%;">
|
13
|
+
<h4>
|
14
|
+
<%= downnest.titleize %>
|
15
|
+
</h4>
|
16
|
+
</div>
|
17
|
+
<% end %>
|
18
|
+
<% end %>
|
19
|
+
|
20
|
+
<div class='col scaffold-col-heading scaffold-col-heading-buttons' style="flex-basis: 150px"></div>
|
6
21
|
</div>
|
7
22
|
|
8
23
|
<\% if <%= plural %>.empty? %>
|
9
|
-
|
10
|
-
|
11
|
-
|
24
|
+
<div>
|
25
|
+
None
|
26
|
+
</div>
|
12
27
|
<\% end %>
|
13
28
|
<\% <%= plural %>.each do |<%= singular %>| %>
|
14
|
-
<\%= render partial: '<%= line_path_partial %>', locals: {<%= singular %>: <%= singular
|
29
|
+
<\%= render partial: '<%= line_path_partial %>', locals: {<%= singular %>: <%= singular %><%= nested_assignments_with_leading_comma if @nestable %><%= ", nested_for: nested_for" if @nestable %> } %>
|
15
30
|
<\% end %>
|
16
31
|
|
17
32
|
<%= @no_paginate ? "" : paginate %>
|
33
|
+
</div>
|
18
34
|
</div>
|
19
35
|
<\% end %>
|
@@ -1,8 +1,31 @@
|
|
1
1
|
<%= all_line_fields %>
|
2
|
-
|
2
|
+
|
3
|
+
<% if @downnest_children.any? %>
|
4
|
+
<% each_downnest_width = @downnest_children.count == 1 ? 33 : (53/@downnest_children.count).floor %>
|
5
|
+
|
6
|
+
<% @downnest_children.each do |downnest| %>
|
7
|
+
<% downnest_style = @layout == "hotglue" ? 'style="flex-basis: ' + each_downnest_width + '%"' : "" %>
|
8
|
+
<div class="<%= @col_identifier %> scaffold-downnest" <%= downnest_style %> >
|
9
|
+
<\%= render partial: "<%= namespace_with_trailing_dash %><%= downnest %>/list", locals: {
|
10
|
+
nested_for: "<% if @nested_args.any? %>#{nested_for + "__" if nested_for}<% end %><%= @singular %>-#{<%= @singular %>.id}",
|
11
|
+
<%= @singular %>: <%= @singular %><%= nest_assignments_operator(false, true) %>,
|
12
|
+
<%= downnest %>: <%= @singular %>.<%= downnest %>} %>
|
13
|
+
</div>
|
14
|
+
<% end %>
|
15
|
+
<% end %>
|
16
|
+
|
17
|
+
<% button_style = @layout == "hotglue" ? 'style="flex-basis: ' + (100 - (column_width * @columns.count)).floor + '%;' : "" %>
|
18
|
+
<div class="<%= @col_identifier %> scaffold-line-buttons" <%= button_style %>>
|
3
19
|
<% if destroy_action %>
|
4
|
-
<\%=
|
20
|
+
<\%= form_with url: <%= path_helper_singular %>(<%= path_helper_args %>), html: {style: "display: inline-block;"}, method: :delete do |f| %>
|
21
|
+
<\%= f.submit "Delete".html_safe, data: <%= delete_confirmation_syntax %>, class: "delete-<%= singular %>-button btn btn-primary btn-sm" %>
|
22
|
+
<\% end %>
|
23
|
+
<% end %>
|
24
|
+
|
25
|
+
|
26
|
+
<%= magic_button_output %>
|
27
|
+
|
28
|
+
<% unless @no_edit %>
|
29
|
+
<\%= link_to "Edit <i class='fa fa-1x fa-list-alt'></i>".html_safe, edit_<%= path_helper_singular %>(<%= path_helper_args %>), <% if @big_edit %>'data-turbo' => 'false', <% end %>disable_with: "Loading...", class: "edit-<%= singular %>-button btn btn-primary btn-sm" %>
|
5
30
|
<% end %>
|
6
|
-
|
7
|
-
<\%= link_to "Edit <i class='fa fa-1x fa-list-alt'></i>".html_safe, edit_<%= path_helper_singular %>(<%= path_helper_args %>), <% if @big_edit %>'data-turbo' => 'false', <% end %>disable_with: "Loading...", class: "edit-<%= singular %>-button btn btn-primary " %>
|
8
31
|
</div>
|
@@ -1,13 +1,13 @@
|
|
1
1
|
<\% if @<%= singular %>.errors.none? %>
|
2
|
-
<\%= turbo_stream.replace "<%= plural %>-list" do %>
|
3
|
-
<\%= render partial: "list", locals: {<%= plural %>: @<%= plural %>} %>
|
2
|
+
<\%= turbo_stream.replace "<%= plural %>-list<%= nested_for_turbo_nested_constructor %>" do %>
|
3
|
+
<\%= render partial: "list", locals: {<%= plural %>: @<%= plural %><%= nested_for_assignments_constructor %><%= nest_assignments_operator(true, true) %>} %>
|
4
4
|
<\% end %>
|
5
5
|
<\% end %>
|
6
6
|
<\%= turbo_stream.replace "<%= singular %>-new" do %>
|
7
7
|
<\% if @<%= singular %>.errors.none? %>
|
8
|
-
<\%= render partial: "new_button" %>
|
8
|
+
<\%= render partial: "new_button", locals: {<%= nest_assignments_operator(true, false) %>} %>
|
9
9
|
<\% else %>
|
10
|
-
<\%= render partial: "new_form", locals: {<%= singular %>: @<%= singular %>} %>
|
10
|
+
<\%= render partial: "new_form", locals: {<%= singular %>: @<%= singular %> <%= nest_assignments_operator(true, true) %> } %>
|
11
11
|
<\% end %>
|
12
12
|
<\% end %>
|
13
13
|
<\%= turbo_stream.replace "flash_notices" do %>
|
@@ -1,3 +1,3 @@
|
|
1
|
-
<\%= turbo_stream.replace "<%=plural%>-list" do %>
|
2
|
-
<\%= render partial: "list", locals: {<%=plural%>: @<%=plural%>} %>
|
1
|
+
<\%= turbo_stream.replace "<%= plural %>-list<%= nested_for_turbo_nested_constructor %>" do %>
|
2
|
+
<\%= render partial: "list", locals: {<%=plural%>: @<%=plural%> <%= nested_for_assignments_constructor %> <%= nest_assignments_operator(true, true) %>} %>
|
3
3
|
<\% end %>
|
@@ -5,17 +5,14 @@
|
|
5
5
|
<div class="cell editable" style="position: relative;">
|
6
6
|
|
7
7
|
<\% if @<%= singular %>.errors.any? %>
|
8
|
-
<\%= render(partial: "
|
8
|
+
<\%= render(partial: "<%= namespace_with_trailing_dash %>errors", locals: {resource: @<%= singular %> }) %>
|
9
9
|
<\% end %>
|
10
10
|
|
11
11
|
<h2>Editing <\%= @<%= @singular %>.<%= display_class %> %></h2>
|
12
12
|
<\%= form_with model: <%= "@" + singular%>, url: <%= path_helper_singular %>(<%= path_arity %>) do |f| %>
|
13
13
|
<\%= render partial: "form", locals: {:<%= singular %> => <%= "@" + singular%>, f: f} %>
|
14
14
|
<\% end %>
|
15
|
-
|
16
|
-
data-name='close-<%= singular %>__<\% <%= "@" + singular %>.id %> }'
|
17
|
-
data-row-id=<%= "@" + singular %>.id,
|
18
|
-
data-role='close-button'></i>
|
15
|
+
|
19
16
|
</div>
|
20
17
|
|
21
18
|
<\% end %>
|
@@ -1,10 +1,12 @@
|
|
1
|
-
<div class="
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
1
|
+
<div class="<%= @container_name %>">
|
2
|
+
<% if @layout == "bootstrap" %><div class="row"> <div class="col-md-12">
|
3
|
+
<% else %>
|
4
|
+
<div class=' scaffold-index-<%= plural %>'>
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
<div class="clearfix"></div>
|
8
|
+
<\%= render partial: '<%= list_path_partial %>',
|
9
|
+
locals: {<%= plural %>: @<%= plural %><%= nested_for_assignments_constructor %><%= nest_assignments_operator(true, true) if @nestable %> } \%>
|
10
|
+
|
11
|
+
<% if @layout == "bootstrap" %></div></div><% else %></div><% end %>
|
10
12
|
</div>
|
@@ -1,6 +1,9 @@
|
|
1
|
-
|
2
|
-
<\%= render partial: 'line', locals: {<%= singular %>: @<%= singular %> <%=
|
1
|
+
<% if !@display_list_after_update %><\%= turbo_stream.replace "<%= singular%>__#{@<%= singular %>.id}" do %>
|
2
|
+
<\%= render partial: 'line', locals: {<%= singular %>: @<%= singular %> <%= nest_assignments_operator(true,true) %> } %>
|
3
|
+
<\% end %><% else %><\%= turbo_stream.replace "<%= plural %>-list" do %>
|
4
|
+
<\%= render partial: '<%= list_path_partial %>', locals: {<%= plural %>: @<%= plural %><%= nest_assignments_operator(true, true) if @nestable %><%= nested_for_assignments_constructor %> } \%>
|
3
5
|
<\% end %>
|
6
|
+
<% end %>
|
4
7
|
|
5
8
|
<\%= turbo_stream.replace "flash_notices" do %>
|
6
9
|
<\%= render partial: "layouts/flash_notices" %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
= turbo_frame_tag "<%= singular %>__#{<%= singular %>.id}" do
|
2
2
|
.row{'data-id': <%= singular %>.id, 'data-edit': 'false'}
|
3
|
-
= render partial: "<%= show_path_partial %>", locals: {<%= singular %>: <%= singular %>}
|
3
|
+
= render partial: "<%= show_path_partial %>", locals: {<%= singular %>: <%= singular %> <%= nest_assignments_operator(false, true) %>}
|
4
4
|
|
5
5
|
|
6
6
|
|
@@ -1,5 +1,9 @@
|
|
1
1
|
= turbo_frame_tag "<%= plural %>-list" do
|
2
|
-
|
2
|
+
%div{class: "<%= @container_name %> <%= singular %>-table"}
|
3
|
+
.row
|
4
|
+
.col-md-12
|
5
|
+
<%= '= render partial: "' + (@namespace+"/" if @namespace) + plural + '/new_button", locals: {' + nested_assignments + '}' unless @no_create %>
|
6
|
+
|
3
7
|
.row
|
4
8
|
<%= list_column_headings %>
|
5
9
|
.col
|
@@ -7,5 +11,5 @@
|
|
7
11
|
- if <%= plural %>.empty?
|
8
12
|
None
|
9
13
|
- <%= plural %>.each do |<%= singular %>|
|
10
|
-
= render partial: '<%= line_path_partial %>', locals: {<%= singular %>: <%= singular
|
14
|
+
= render partial: '<%= line_path_partial %>', locals: {<%= singular %>: <%= singular %><%= nested_assignments_with_leading_comma if @nest %> }
|
11
15
|
<%= @no_paginate ? "" : paginate %>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
- if @<%= singular %>.errors.none?
|
2
2
|
= turbo_stream.replace "<%= plural %>-list" do
|
3
|
-
= render partial: "list", locals: {<%= plural %>: @<%= plural %>}
|
3
|
+
= render partial: "list", locals: {<%= plural %>: @<%= plural %> <%= nest_assignments_operator(true, true) %>}
|
4
4
|
|
5
5
|
= turbo_stream.replace "<%= singular %>-new" do
|
6
6
|
- if @<%= singular %>.errors.none?
|
7
|
-
= render partial: "new_button"
|
7
|
+
= render partial: "new_button", locals: {<%= nest_assignments_operator(true, false) %> }
|
8
8
|
- else
|
9
|
-
= render partial: "new_form", locals: {<%= singular %>: @<%= singular %>}
|
9
|
+
= render partial: "new_form", locals: {<%= singular %>: @<%= singular %> <%= nest_assignments_operator(true, true) %>}
|
10
10
|
|
11
11
|
= turbo_stream.replace "flash_notices" do
|
12
12
|
= render partial: "layouts/flash_notices"
|
@@ -1,2 +1,2 @@
|
|
1
1
|
= turbo_stream.replace "<%=plural%>-list" do
|
2
|
-
= render partial: "list", locals: {<%=plural%>: @<%=plural%>}
|
2
|
+
= render partial: "list", locals: {<%=plural%>: @<%=plural%> <%= nest_assignments_operator(true, true) %>}
|
@@ -17,5 +17,3 @@
|
|
17
17
|
= form_with model: <%= "@" + singular%>, url: <%= path_helper_singular %>(<%= path_arity %>) do |f|
|
18
18
|
= render partial: "form", locals: {:<%= singular %> => <%= "@" + singular%>, f: f}
|
19
19
|
|
20
|
-
%i.fa.fa-times-circle.fa-2x{ 'data-name' => 'close-invoice__#{@invoice.id}', 'data-row-id' => <%= "@" + singular %>.id, 'data-role' => 'close-button'}
|
21
|
-
|
@@ -1,9 +1,8 @@
|
|
1
|
-
|
1
|
+
%div{class: "#{@container_name }"}
|
2
2
|
.row
|
3
3
|
.col-md-12
|
4
|
-
= render partial: "new_button"
|
5
4
|
.clearfix
|
6
|
-
= render partial: "<%= list_path_partial %>", locals: {<%= plural %>: @<%= plural %>}
|
5
|
+
= render partial: "<%= list_path_partial %>", locals: {<%= plural %>: @<%= plural %> <%= nest_assignments_operator(true, true) %>}
|
7
6
|
|
8
7
|
|
9
8
|
|
@@ -72,7 +72,7 @@ describe "interaction for <%= controller_class_name %>", type: :feature do
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
-
describe "new & create" do
|
75
|
+
<% unless @no_create %> describe "new & create" do
|
76
76
|
it "should create a new <%= singular.titlecase %>" do
|
77
77
|
visit <%= path_helper_plural %>
|
78
78
|
click_link "New <%= singular.titlecase %>"
|
@@ -97,6 +97,12 @@ describe "interaction for <%= controller_class_name %>", type: :feature do
|
|
97
97
|
" find(\"[name='#{singular}[#{ col.to_s }]']\").fill_in(with: new_#{col.to_s})"
|
98
98
|
|
99
99
|
end
|
100
|
+
|
101
|
+
when :enum
|
102
|
+
" list_of_#{col.to_s} = #{singular_class}.defined_enums['#{col.to_s}'].keys \n" +
|
103
|
+
" " + "new_#{col.to_s} = list_of_#{col.to_s}[rand(list_of_#{col.to_s}.length)].to_s \n" +
|
104
|
+
' find("select[name=\'' + singular + '[' + col.to_s + ']\'] option[value=\'#{new_' + col.to_s + '}\']").select_option'
|
105
|
+
|
100
106
|
when :boolean
|
101
107
|
" new_#{col} = rand(2).floor \n" +
|
102
108
|
" find(\"[name='#{singular}[#{col}]'][value='\#{new_" + col.to_s + "}']\").choose"
|
@@ -135,7 +141,7 @@ describe "interaction for <%= controller_class_name %>", type: :feature do
|
|
135
141
|
%>
|
136
142
|
|
137
143
|
end
|
138
|
-
end
|
144
|
+
end<% end %>
|
139
145
|
|
140
146
|
|
141
147
|
describe "edit & update" do
|
@@ -185,6 +191,11 @@ describe "interaction for <%= controller_class_name %>", type: :feature do
|
|
185
191
|
when :time
|
186
192
|
" new_#{col} = Time.current + rand(144).hours \n" +
|
187
193
|
" find(\"[name='#{singular}[#{col}]']\").fill_in(with: new_#{col.to_s })"
|
194
|
+
when :enum
|
195
|
+
" list_of_#{col.to_s} = #{singular_class}.defined_enums['#{col.to_s}'].keys \n" +
|
196
|
+
" " + "new_#{col.to_s} = list_of_#{col.to_s}[rand(list_of_#{col.to_s}.length)].to_s \n" +
|
197
|
+
' find("select[name=\'' + singular + '[' + col.to_s + ']\'] option[value=\'#{new_' + col.to_s + '}\']").select_option'
|
198
|
+
|
188
199
|
else
|
189
200
|
" " + "new_#{col.to_s} = FFaker::Name.name \n" +
|
190
201
|
' find("input[name=\'' + singular + '[' + col.to_s + ']\']").fill_in(with: new_' + col.to_s + ')'
|
@@ -220,17 +231,17 @@ describe "interaction for <%= controller_class_name %>", type: :feature do
|
|
220
231
|
end
|
221
232
|
end
|
222
233
|
|
223
|
-
describe "destroy" do
|
234
|
+
<% unless @no_delete %> describe "destroy" do
|
224
235
|
it "should destroy" do
|
225
236
|
visit <%= path_helper_plural %>
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
find("form[action='<%= namespace_with_dash %>/<%= plural %>/#{<%= singular %>1.id}'] >
|
237
|
+
accept_alert do
|
238
|
+
find("form[action='<%= namespace_with_dash %>/<%= plural %>/#{<%= singular %>1.id}'] > input.delete-<%= singular %>-button").click
|
239
|
+
end
|
240
|
+
# find("form[action='<%= namespace_with_dash %>/<%= plural %>/#{<%= singular %>1.id}'] > input.delete-<%= singular %>-button").click
|
230
241
|
|
231
242
|
expect(page).to_not have_content(<%= singular %>1.<%= @display_class %>)
|
232
243
|
expect(<%= singular_class %>.where(id: <%= singular %>1.id).count).to eq(0)
|
233
244
|
end
|
234
|
-
end
|
245
|
+
end<% end %>
|
235
246
|
end
|
236
247
|
|
@@ -0,0 +1,158 @@
|
|
1
|
+
body {
|
2
|
+
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
3
|
+
background-color: black;
|
4
|
+
color: white;
|
5
|
+
|
6
|
+
.alert.alert-danger {
|
7
|
+
padding: 1em;
|
8
|
+
border: solid 1px crimson;
|
9
|
+
background-color: #ffd9d9;
|
10
|
+
color: black;
|
11
|
+
font-weight: bold;
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
.scaffold-container {
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
.cell input {
|
21
|
+
-webkit-writing-mode: horizontal-tb !important;
|
22
|
+
text-rendering: auto;
|
23
|
+
letter-spacing: normal;
|
24
|
+
word-spacing: normal;
|
25
|
+
line-height: normal;
|
26
|
+
text-transform: none;
|
27
|
+
text-indent: 0px;
|
28
|
+
text-shadow: none;
|
29
|
+
display: inline-block;
|
30
|
+
text-align: start;
|
31
|
+
appearance: auto;
|
32
|
+
-webkit-rtl-ordering: logical;
|
33
|
+
margin: 0em;
|
34
|
+
border-image: initial;
|
35
|
+
|
36
|
+
display: block;
|
37
|
+
padding: 0.375rem 0.75rem;
|
38
|
+
font-size: 1rem;
|
39
|
+
font-weight: 400;
|
40
|
+
line-height: 1.5;
|
41
|
+
|
42
|
+
background-clip: padding-box;
|
43
|
+
border: 1px solid #ced4da;
|
44
|
+
-webkit-appearance: none;
|
45
|
+
-moz-appearance: none;
|
46
|
+
appearance: none;
|
47
|
+
border-radius: 0.25rem;
|
48
|
+
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
49
|
+
color: #212529;
|
50
|
+
background-clip: padding-box;
|
51
|
+
border: 1px solid #ced4da;
|
52
|
+
}
|
53
|
+
|
54
|
+
.scaffold-row {
|
55
|
+
.scaffold-col-heading {
|
56
|
+
}
|
57
|
+
.scaffold-col, .scaffold-col-heading {
|
58
|
+
|
59
|
+
}
|
60
|
+
|
61
|
+
.scaffold-cell {
|
62
|
+
}
|
63
|
+
|
64
|
+
.scaffold-list {
|
65
|
+
flex: 0 0 auto;
|
66
|
+
width: 100%;
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
.container-fluid, .scaffold-container {
|
71
|
+
width: 100%;
|
72
|
+
|
73
|
+
margin-right: auto;
|
74
|
+
margin-left: auto;
|
75
|
+
}
|
76
|
+
|
77
|
+
.row {
|
78
|
+
display: flex;
|
79
|
+
--bs-gutter-x: 1.5rem;
|
80
|
+
--bs-gutter-y: 0;
|
81
|
+
display: flex;
|
82
|
+
flex-wrap: wrap;
|
83
|
+
|
84
|
+
margin-top: calc(-1 * var(--bs-gutter-y));
|
85
|
+
}
|
86
|
+
|
87
|
+
.btn-primary {
|
88
|
+
color: #212529;
|
89
|
+
|
90
|
+
background-color: #4D889E;
|
91
|
+
&:hover {
|
92
|
+
color: #fff;
|
93
|
+
border-color: #4D889E;
|
94
|
+
}
|
95
|
+
}
|
96
|
+
|
97
|
+
.btn-secondary {
|
98
|
+
color: white;
|
99
|
+
|
100
|
+
background-color: darkgrey;
|
101
|
+
&:hover {
|
102
|
+
color: lightgrey;
|
103
|
+
border-color: black;
|
104
|
+
}
|
105
|
+
}
|
106
|
+
|
107
|
+
.scaffold-list {
|
108
|
+
input, .btn {
|
109
|
+
font-size: 0.8rem;
|
110
|
+
font-weight: 400;
|
111
|
+
line-height: 1.4;
|
112
|
+
}
|
113
|
+
|
114
|
+
|
115
|
+
.scaffold-list {
|
116
|
+
input, .btn {
|
117
|
+
font-size: 0.8rem;
|
118
|
+
line-height: 1.2;
|
119
|
+
}
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
.scaffold-list {
|
124
|
+
input, .btn {
|
125
|
+
font-size: 0.55rem;
|
126
|
+
line-height: 1.0;
|
127
|
+
}
|
128
|
+
}
|
129
|
+
}
|
130
|
+
}
|
131
|
+
|
132
|
+
|
133
|
+
.btn {
|
134
|
+
display: inline-block;
|
135
|
+
font-weight: 400;
|
136
|
+
line-height: 1.5;
|
137
|
+
color: #212529;
|
138
|
+
text-align: center;
|
139
|
+
text-decoration: none;
|
140
|
+
vertical-align: middle;
|
141
|
+
cursor: pointer;
|
142
|
+
-webkit-user-select: none;
|
143
|
+
-moz-user-select: none;
|
144
|
+
-ms-user-select: none;
|
145
|
+
user-select: none;
|
146
|
+
border: 1px solid transparent;
|
147
|
+
padding: 0.375rem 0.75rem;
|
148
|
+
font-size: 1rem;
|
149
|
+
border-radius: 6px;
|
150
|
+
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
151
|
+
|
152
|
+
box-shadow: 0px 0px 12px 2px whitesmoke;
|
153
|
+
margin-right: 0.6em;
|
154
|
+
}
|
155
|
+
|
156
|
+
|
157
|
+
|
158
|
+
}
|
@@ -0,0 +1,154 @@
|
|
1
|
+
body {
|
2
|
+
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
3
|
+
background-color: white;
|
4
|
+
color: darkslategrey;
|
5
|
+
|
6
|
+
.alert.alert-danger {
|
7
|
+
padding: 1em;
|
8
|
+
border: 1px solid transparent;
|
9
|
+
color: #721c24;
|
10
|
+
background-color: #f8d7da;
|
11
|
+
border-color: #f5c6cb;
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
|
16
|
+
.scaffold-container {
|
17
|
+
.cell input {
|
18
|
+
-webkit-writing-mode: horizontal-tb !important;
|
19
|
+
text-rendering: auto;
|
20
|
+
letter-spacing: normal;
|
21
|
+
word-spacing: normal;
|
22
|
+
line-height: normal;
|
23
|
+
text-transform: none;
|
24
|
+
text-indent: 0px;
|
25
|
+
text-shadow: none;
|
26
|
+
display: inline-block;
|
27
|
+
text-align: start;
|
28
|
+
appearance: auto;
|
29
|
+
-webkit-rtl-ordering: logical;
|
30
|
+
margin: 0em;
|
31
|
+
border-image: initial;
|
32
|
+
|
33
|
+
display: block;
|
34
|
+
padding: 0.375rem 0.75rem;
|
35
|
+
font-size: 1rem;
|
36
|
+
font-weight: 400;
|
37
|
+
line-height: 1.5;
|
38
|
+
|
39
|
+
background-color: #fff;
|
40
|
+
background-clip: padding-box;
|
41
|
+
border: 1px solid #ced4da;
|
42
|
+
-webkit-appearance: none;
|
43
|
+
-moz-appearance: none;
|
44
|
+
appearance: none;
|
45
|
+
border-radius: 0.25rem;
|
46
|
+
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
47
|
+
color: #212529;
|
48
|
+
background-color: #fff;
|
49
|
+
background-clip: padding-box;
|
50
|
+
border: 1px solid #ced4da;
|
51
|
+
}
|
52
|
+
|
53
|
+
.scaffold-row {
|
54
|
+
.scaffold-col-heading {
|
55
|
+
}
|
56
|
+
.scaffold-col, .scaffold-col-heading {
|
57
|
+
|
58
|
+
}
|
59
|
+
|
60
|
+
.scaffold-cell {
|
61
|
+
}
|
62
|
+
|
63
|
+
.scaffold-list {
|
64
|
+
flex: 0 0 auto;
|
65
|
+
width: 100%;
|
66
|
+
}
|
67
|
+
}
|
68
|
+
|
69
|
+
.container-fluid, .scaffold-container {
|
70
|
+
width: 100%;
|
71
|
+
|
72
|
+
margin-right: auto;
|
73
|
+
margin-left: auto;
|
74
|
+
}
|
75
|
+
|
76
|
+
.row {
|
77
|
+
display: flex;
|
78
|
+
--bs-gutter-x: 1.5rem;
|
79
|
+
--bs-gutter-y: 0;
|
80
|
+
display: flex;
|
81
|
+
flex-wrap: wrap;
|
82
|
+
|
83
|
+
margin-top: calc(-1 * var(--bs-gutter-y));
|
84
|
+
}
|
85
|
+
|
86
|
+
.btn-primary {
|
87
|
+
color: #212529;
|
88
|
+
|
89
|
+
background-color: #0d6efd;
|
90
|
+
&:hover {
|
91
|
+
color: #fff;
|
92
|
+
border-color: #0a58ca;
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
.btn-secondary {
|
97
|
+
color: white;
|
98
|
+
|
99
|
+
background-color: darkgrey;
|
100
|
+
&:hover {
|
101
|
+
color: lightgrey;
|
102
|
+
border-color: black;
|
103
|
+
}
|
104
|
+
}
|
105
|
+
|
106
|
+
.scaffold-list {
|
107
|
+
input, .btn {
|
108
|
+
font-size: 0.8rem;
|
109
|
+
font-weight: 400;
|
110
|
+
line-height: 1.4;
|
111
|
+
}
|
112
|
+
|
113
|
+
|
114
|
+
.scaffold-list {
|
115
|
+
input, .btn {
|
116
|
+
font-size: 0.8rem;
|
117
|
+
line-height: 1.2;
|
118
|
+
}
|
119
|
+
|
120
|
+
|
121
|
+
|
122
|
+
.scaffold-list {
|
123
|
+
input, .btn {
|
124
|
+
font-size: 0.55rem;
|
125
|
+
line-height: 1.0;
|
126
|
+
}
|
127
|
+
}
|
128
|
+
}
|
129
|
+
}
|
130
|
+
|
131
|
+
|
132
|
+
.btn {
|
133
|
+
display: inline-block;
|
134
|
+
font-weight: 400;
|
135
|
+
line-height: 1.5;
|
136
|
+
color: #212529;
|
137
|
+
text-align: center;
|
138
|
+
text-decoration: none;
|
139
|
+
vertical-align: middle;
|
140
|
+
cursor: pointer;
|
141
|
+
-webkit-user-select: none;
|
142
|
+
-moz-user-select: none;
|
143
|
+
-ms-user-select: none;
|
144
|
+
user-select: none;
|
145
|
+
border: 1px solid transparent;
|
146
|
+
padding: 0.375rem 0.75rem;
|
147
|
+
font-size: 1rem;
|
148
|
+
border-radius: 0.25rem;
|
149
|
+
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
150
|
+
}
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
}
|