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.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -2
  3. data/Gemfile.lock +3 -23
  4. data/LICENCE +11 -4
  5. data/README.md +0 -642
  6. data/app/helpers/hot_glue/controller_helper.rb +2 -1
  7. data/lib/generators/hot_glue/install_generator.rb +121 -33
  8. data/lib/generators/hot_glue/markup_templates/erb.rb +53 -27
  9. data/lib/generators/hot_glue/markup_templates/haml.rb +5 -3
  10. data/lib/generators/hot_glue/scaffold_generator.rb +224 -58
  11. data/lib/generators/hot_glue/templates/controller.rb.erb +39 -32
  12. data/lib/generators/hot_glue/templates/erb/_form.erb +1 -1
  13. data/lib/generators/hot_glue/templates/erb/_line.erb +3 -2
  14. data/lib/generators/hot_glue/templates/erb/_list.erb +24 -8
  15. data/lib/generators/hot_glue/templates/erb/_show.erb +27 -4
  16. data/lib/generators/hot_glue/templates/erb/create.turbo_stream.erb +4 -4
  17. data/lib/generators/hot_glue/templates/erb/destroy.turbo_stream.erb +2 -2
  18. data/lib/generators/hot_glue/templates/erb/edit.erb +2 -5
  19. data/lib/generators/hot_glue/templates/erb/index.erb +11 -9
  20. data/lib/generators/hot_glue/templates/erb/update.turbo_stream.erb +5 -2
  21. data/lib/generators/hot_glue/templates/haml/_line.haml +1 -1
  22. data/lib/generators/hot_glue/templates/haml/_list.haml +6 -2
  23. data/lib/generators/hot_glue/templates/haml/create.turbo_stream.haml +3 -3
  24. data/lib/generators/hot_glue/templates/haml/destroy.turbo_stream.haml +1 -1
  25. data/lib/generators/hot_glue/templates/haml/edit.haml +0 -2
  26. data/lib/generators/hot_glue/templates/haml/index.haml +2 -3
  27. data/lib/generators/hot_glue/templates/system_spec.rb.erb +19 -8
  28. data/lib/generators/hot_glue/templates/themes/hotglue_scaffold_dark_knight.scss +158 -0
  29. data/lib/generators/hot_glue/templates/themes/hotglue_scaffold_like_bootstrap.scss +154 -0
  30. data/lib/generators/hot_glue/templates/themes/hotglue_scaffold_like_los_gatos.scss +182 -0
  31. data/lib/generators/hot_glue/templates/themes/hotglue_scaffold_like_mountain_view.scss +179 -0
  32. data/lib/hot-glue.rb +1 -2
  33. data/lib/hotglue/version.rb +1 -1
  34. metadata +13 -33
@@ -1,19 +1,35 @@
1
- <\%= turbo_frame_tag "<%= plural %>-list" do %>
2
- <div class="container-fluid "><%= singular %>-table
3
- <div class="row">
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
- <div class='col buttons-col'></div>
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
- <div>
10
- None
11
- </div>
24
+ <div>
25
+ None
26
+ </div>
12
27
  <\% end %>
13
28
  <\% <%= plural %>.each do |<%= singular %>| %>
14
- <\%= render partial: '<%= line_path_partial %>', locals: {<%= singular %>: <%= singular %> <%= nested_assignments_with_leading_comma %> } %>
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
- <div class="col">
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
- <\%= button_to "Delete".html_safe, <%= path_helper_singular %>(<%= path_helper_args %>), method: :delete, data: <%= delete_confirmation_syntax %>, disable_with: "Loading...", class: "delete-<%= singular %>-button btn btn-primary " %>
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
- &nbsp;
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: "#{controller.namespace}errors", locals: {resource: @<%= singular%> }) %>
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
- <i class='fa fa-times-circle fa-2x'
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="container-fluid">
2
- <div class="row">
3
- <div class="col-md-12">
4
- <\%= render partial: "new_button" %>
5
- <div class="clearfix"></div>
6
- <\%= render partial: '<%= list_path_partial %>',
7
- locals: {<%= plural %>: @<%= plural %>} \%>
8
- </div>
9
- </div>
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
- <\%= turbo_stream.replace "<%= singular%>__#{@<%= singular %>.id}" do %>
2
- <\%= render partial: 'line', locals: {<%= singular %>: @<%= singular %> <%= nested_assignments_with_leading_comma %> } %>
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
- .container-fluid.<%= singular %>-table
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 %> <%= nested_assignments_with_leading_comma %> }
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
- .container-fluid
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
- #accept_alert do
227
- # find("form[action='<%= namespace_with_dash %>/<%= plural %>/#{<%= singular %>1.id}'] > button.delete-<%= singular %>-button").click
228
- #end
229
- find("form[action='<%= namespace_with_dash %>/<%= plural %>/#{<%= singular %>1.id}'] > button.delete-<%= singular %>-button").click
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
+ }