showcase-rails 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/app/assets/builds/showcase.css +81 -36
- data/app/models/showcase/sample.rb +8 -2
- data/app/views/showcase/engine/_preview.html.erb +3 -1
- data/app/views/showcase/engine/_sample.html.erb +10 -1
- data/lib/showcase/version.rb +1 -1
- data/lib/tasks/showcase_tasks.rake +3 -14
- metadata +2 -3
- data/app/controllers/showcase/pages_controller.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24a9dbd46ccbe35d34075383efeb99bedb2825c56976b7b5ce2bb5fba294ffcc
|
4
|
+
data.tar.gz: 28dc05bf705b386845aa630a188d87295ba6069445583af781478e10052d5ae8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e62b4977a6c7f8cb53fe74373e17de88870cf245ddcb449be791afb5cab22197a03aabe263aa543bde5d86bbd683e8914002ba133178825542abfe455bdbbda9
|
7
|
+
data.tar.gz: 77213dbf5e976b366ec64947b0e0a0efcf50eb8b0360a7d6698e72ea452512c5d8a37f91e838c9546a98c5b6f3d6b54cca4215bb8f301ad80e31029103de068c
|
data/README.md
CHANGED
@@ -29,7 +29,7 @@ Which will then render the following:
|
|
29
29
|
|
30
30
|
![](/readme/example.png?raw=true "Showcase showing a button component")
|
31
31
|
|
32
|
-
## Automatic
|
32
|
+
## Automatic integration testing
|
33
33
|
|
34
34
|
Showcase automatically runs integration tests for all your Showcases by rendering them and asserting they respond with `200 OK`. As long as `gem "showcase-rails"` is in the `:test` group you're set.
|
35
35
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
! tailwindcss v3.2.
|
2
|
+
! tailwindcss v3.2.6 | MIT License | https://tailwindcss.com
|
3
3
|
*/
|
4
4
|
|
5
5
|
/*
|
@@ -691,6 +691,10 @@ select {
|
|
691
691
|
grid-column: span 9 / span 9;
|
692
692
|
}
|
693
693
|
|
694
|
+
.sc-m-2 {
|
695
|
+
margin: 0.5rem;
|
696
|
+
}
|
697
|
+
|
694
698
|
.sc-mb-2 {
|
695
699
|
margin-bottom: 0.5rem;
|
696
700
|
}
|
@@ -699,6 +703,10 @@ select {
|
|
699
703
|
margin-bottom: 1rem;
|
700
704
|
}
|
701
705
|
|
706
|
+
.sc-mt-1 {
|
707
|
+
margin-top: 0.25rem;
|
708
|
+
}
|
709
|
+
|
702
710
|
.sc-inline-block {
|
703
711
|
display: inline-block;
|
704
712
|
}
|
@@ -765,10 +773,13 @@ select {
|
|
765
773
|
align-items: center;
|
766
774
|
}
|
767
775
|
|
768
|
-
.sc-
|
769
|
-
|
770
|
-
|
771
|
-
|
776
|
+
.sc-justify-between {
|
777
|
+
justify-content: space-between;
|
778
|
+
}
|
779
|
+
|
780
|
+
.sc-gap-x-2 {
|
781
|
+
-moz-column-gap: 0.5rem;
|
782
|
+
column-gap: 0.5rem;
|
772
783
|
}
|
773
784
|
|
774
785
|
.sc-space-x-2 > :not([hidden]) ~ :not([hidden]) {
|
@@ -783,6 +794,12 @@ select {
|
|
783
794
|
margin-bottom: calc(1rem * var(--tw-space-y-reverse));
|
784
795
|
}
|
785
796
|
|
797
|
+
.sc-space-y-8 > :not([hidden]) ~ :not([hidden]) {
|
798
|
+
--tw-space-y-reverse: 0;
|
799
|
+
margin-top: calc(2rem * calc(1 - var(--tw-space-y-reverse)));
|
800
|
+
margin-bottom: calc(2rem * var(--tw-space-y-reverse));
|
801
|
+
}
|
802
|
+
|
786
803
|
.sc-overflow-scroll {
|
787
804
|
overflow: scroll;
|
788
805
|
}
|
@@ -801,6 +818,10 @@ select {
|
|
801
818
|
white-space: nowrap;
|
802
819
|
}
|
803
820
|
|
821
|
+
.sc-rounded-full {
|
822
|
+
border-radius: 9999px;
|
823
|
+
}
|
824
|
+
|
804
825
|
.sc-rounded-md {
|
805
826
|
border-radius: 0.375rem;
|
806
827
|
}
|
@@ -813,16 +834,20 @@ select {
|
|
813
834
|
border-width: 0px;
|
814
835
|
}
|
815
836
|
|
816
|
-
.sc-border-
|
817
|
-
border-
|
837
|
+
.sc-border-2 {
|
838
|
+
border-width: 2px;
|
839
|
+
}
|
840
|
+
|
841
|
+
.sc-border-b {
|
842
|
+
border-bottom-width: 1px;
|
818
843
|
}
|
819
844
|
|
820
845
|
.sc-border-r {
|
821
846
|
border-right-width: 1px;
|
822
847
|
}
|
823
848
|
|
824
|
-
.sc-border-
|
825
|
-
border-
|
849
|
+
.sc-border-t {
|
850
|
+
border-top-width: 1px;
|
826
851
|
}
|
827
852
|
|
828
853
|
.sc-border-gray-200 {
|
@@ -830,26 +855,36 @@ select {
|
|
830
855
|
border-color: rgb(229 231 235 / var(--tw-border-opacity));
|
831
856
|
}
|
832
857
|
|
833
|
-
.sc-
|
858
|
+
.sc-border-indigo-300 {
|
859
|
+
--tw-border-opacity: 1;
|
860
|
+
border-color: rgb(165 180 252 / var(--tw-border-opacity));
|
861
|
+
}
|
862
|
+
|
863
|
+
.sc-bg-indigo-50 {
|
834
864
|
--tw-bg-opacity: 1;
|
835
|
-
background-color: rgb(
|
865
|
+
background-color: rgb(238 242 255 / var(--tw-bg-opacity));
|
836
866
|
}
|
837
867
|
|
838
868
|
.sc-bg-slate-100\/50 {
|
839
869
|
background-color: rgb(241 245 249 / 0.5);
|
840
870
|
}
|
841
871
|
|
842
|
-
.sc-bg-
|
872
|
+
.sc-bg-slate-50 {
|
843
873
|
--tw-bg-opacity: 1;
|
844
|
-
background-color: rgb(
|
874
|
+
background-color: rgb(248 250 252 / var(--tw-bg-opacity));
|
875
|
+
}
|
876
|
+
|
877
|
+
.sc-p-12 {
|
878
|
+
padding: 3rem;
|
845
879
|
}
|
846
880
|
|
847
881
|
.sc-p-4 {
|
848
882
|
padding: 1rem;
|
849
883
|
}
|
850
884
|
|
851
|
-
.sc-
|
852
|
-
padding:
|
885
|
+
.sc-px-2 {
|
886
|
+
padding-left: 0.5rem;
|
887
|
+
padding-right: 0.5rem;
|
853
888
|
}
|
854
889
|
|
855
890
|
.sc-px-4 {
|
@@ -857,6 +892,11 @@ select {
|
|
857
892
|
padding-right: 1rem;
|
858
893
|
}
|
859
894
|
|
895
|
+
.sc-px-8 {
|
896
|
+
padding-left: 2rem;
|
897
|
+
padding-right: 2rem;
|
898
|
+
}
|
899
|
+
|
860
900
|
.sc-py-2 {
|
861
901
|
padding-top: 0.5rem;
|
862
902
|
padding-bottom: 0.5rem;
|
@@ -867,11 +907,6 @@ select {
|
|
867
907
|
padding-bottom: 1.25rem;
|
868
908
|
}
|
869
909
|
|
870
|
-
.sc-px-8 {
|
871
|
-
padding-left: 2rem;
|
872
|
-
padding-right: 2rem;
|
873
|
-
}
|
874
|
-
|
875
910
|
.sc-pl-4 {
|
876
911
|
padding-left: 1rem;
|
877
912
|
}
|
@@ -880,9 +915,9 @@ select {
|
|
880
915
|
padding-top: 1.75rem;
|
881
916
|
}
|
882
917
|
|
883
|
-
.sc-text-
|
884
|
-
font-size: 1.
|
885
|
-
line-height:
|
918
|
+
.sc-text-2xl {
|
919
|
+
font-size: 1.5rem;
|
920
|
+
line-height: 2rem;
|
886
921
|
}
|
887
922
|
|
888
923
|
.sc-text-3xl {
|
@@ -895,17 +930,14 @@ select {
|
|
895
930
|
line-height: 1.5rem;
|
896
931
|
}
|
897
932
|
|
898
|
-
.sc-text-
|
899
|
-
font-size: 1.
|
900
|
-
line-height:
|
901
|
-
}
|
902
|
-
|
903
|
-
.sc-font-semibold {
|
904
|
-
font-weight: 600;
|
933
|
+
.sc-text-xl {
|
934
|
+
font-size: 1.25rem;
|
935
|
+
line-height: 1.75rem;
|
905
936
|
}
|
906
937
|
|
907
|
-
.sc-
|
908
|
-
font-
|
938
|
+
.sc-text-xs {
|
939
|
+
font-size: 0.75rem;
|
940
|
+
line-height: 1rem;
|
909
941
|
}
|
910
942
|
|
911
943
|
.sc-font-black {
|
@@ -916,6 +948,14 @@ select {
|
|
916
948
|
font-weight: 500;
|
917
949
|
}
|
918
950
|
|
951
|
+
.sc-font-normal {
|
952
|
+
font-weight: 400;
|
953
|
+
}
|
954
|
+
|
955
|
+
.sc-font-semibold {
|
956
|
+
font-weight: 600;
|
957
|
+
}
|
958
|
+
|
919
959
|
.sc-italic {
|
920
960
|
font-style: italic;
|
921
961
|
}
|
@@ -929,6 +969,11 @@ select {
|
|
929
969
|
color: rgb(0 0 0 / var(--tw-text-opacity));
|
930
970
|
}
|
931
971
|
|
972
|
+
.sc-text-slate-500 {
|
973
|
+
--tw-text-opacity: 1;
|
974
|
+
color: rgb(100 116 139 / var(--tw-text-opacity));
|
975
|
+
}
|
976
|
+
|
932
977
|
.hover\:sc-select-all:hover {
|
933
978
|
-webkit-user-select: all;
|
934
979
|
-moz-user-select: all;
|
@@ -948,11 +993,11 @@ select {
|
|
948
993
|
}
|
949
994
|
|
950
995
|
@media (min-width: 1280px) {
|
951
|
-
.xl\:sc-col-span-2 {
|
952
|
-
grid-column: span 2 / span 2;
|
953
|
-
}
|
954
|
-
|
955
996
|
.xl\:sc-col-span-10 {
|
956
997
|
grid-column: span 10 / span 10;
|
957
998
|
}
|
999
|
+
|
1000
|
+
.xl\:sc-col-span-2 {
|
1001
|
+
grid-column: span 2 / span 2;
|
1002
|
+
}
|
958
1003
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class Showcase::Sample
|
2
2
|
attr_reader :name, :id, :events, :details
|
3
|
-
attr_reader :source
|
3
|
+
attr_reader :source, :instrumented
|
4
4
|
|
5
5
|
def initialize(view_context, name, description: nil, id: name.parameterize, events: nil, **details)
|
6
6
|
@view_context = view_context
|
@@ -24,7 +24,13 @@ class Showcase::Sample
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def preview(&block)
|
27
|
-
|
27
|
+
return @preview unless block_given?
|
28
|
+
|
29
|
+
# TODO: Remove `is_a?` check when Rails 6.1 support is dropped.
|
30
|
+
assigns = proc { @instrumented = _1 if _1.is_a?(ActiveSupport::Notifications::Event) }
|
31
|
+
ActiveSupport::Notifications.subscribed(assigns, "render_partial.action_view") do
|
32
|
+
@preview = @view_context.capture(&block)
|
33
|
+
end
|
28
34
|
end
|
29
35
|
|
30
36
|
def extract(&block)
|
@@ -4,7 +4,9 @@
|
|
4
4
|
<div class="sc-flex sc-items-center sc-space-x-2 sc-mb-2">
|
5
5
|
<h2 class="sc-font-semibold sc-text-3xl"><%= preview.title %></h2>
|
6
6
|
|
7
|
-
|
7
|
+
<% preview.badges.each do |badge| %>
|
8
|
+
<span class="sc-border-2 sc-border-indigo-300 sc-rounded-full sc-px-2 sc-mt-1"><%= badge.to_s.titleize %></span>
|
9
|
+
<% end %>
|
8
10
|
</div>
|
9
11
|
<% end %>
|
10
12
|
|
@@ -1,7 +1,16 @@
|
|
1
1
|
<section class="sc-mb-4 sc-border sc-border-gray-200 sc-rounded-md" aria-labelledby="showcase_<%= sample.id %>_title">
|
2
2
|
<showcase-sample id="<%= sample.id %>" events="<%= sample.events %>">
|
3
3
|
<header class="sc-bg-slate-100/50">
|
4
|
-
<
|
4
|
+
<div class="sc-flex sc-justify-between">
|
5
|
+
<h3 id="showcase_<%= sample.id %>_title" class="sc-px-4 sc-py-2 sc-font-medium sc-text-base md:sc-text-lg sc-leading-snug sc-truncate"><%= link_to sample.name, "##{sample.id}" %></h3>
|
6
|
+
|
7
|
+
<% if event = sample.instrumented %>
|
8
|
+
<div class="sc-text-xs sc-grid sc-gap-x-2 sc-m-2 sc-italic sc-text-slate-500">
|
9
|
+
<span><%= event.duration.round(1) %>ms</span>
|
10
|
+
<span><%= event.allocations %> allocs</span>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
</div>
|
5
14
|
|
6
15
|
<% if sample.description %>
|
7
16
|
<p class="sc-px-4 sc-py-2 sc-text-base"><%= sample.description %></p>
|
data/lib/showcase/version.rb
CHANGED
@@ -2,9 +2,9 @@ namespace :showcase do
|
|
2
2
|
namespace :install do
|
3
3
|
INTEGRATION_TEST_PATH = "test/integration/showcase_test.rb"
|
4
4
|
|
5
|
-
desc "Install Showcase
|
6
|
-
task :
|
7
|
-
mkdir_p INTEGRATION_TEST_PATH
|
5
|
+
desc "Install Showcase integration testing in #{INTEGRATION_TEST_PATH}"
|
6
|
+
task :integration_test do
|
7
|
+
mkdir_p File.dirname(INTEGRATION_TEST_PATH)
|
8
8
|
File.write INTEGRATION_TEST_PATH, <<~RUBY
|
9
9
|
require "test_helper"
|
10
10
|
|
@@ -16,15 +16,4 @@ namespace :showcase do
|
|
16
16
|
RUBY
|
17
17
|
end
|
18
18
|
end
|
19
|
-
|
20
|
-
# desc "Pass a directory relative to app/views to copy over"
|
21
|
-
# task :copy do |t, directory|
|
22
|
-
# prefix = "app/views/#{directory}"
|
23
|
-
#
|
24
|
-
# Dir.glob(File.join(Dir.pwd, prefix, "**/*.*")).each do |filename|
|
25
|
-
# new_filename = filename.sub(directory, Showcase.templates_path).sub(/\/_/, "/")
|
26
|
-
# mkdir_p File.dirname(new_filename)
|
27
|
-
# copy_file filename, new_filename
|
28
|
-
# end
|
29
|
-
# end
|
30
19
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: showcase-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Pence
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-02-
|
12
|
+
date: 2023-02-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -53,7 +53,6 @@ files:
|
|
53
53
|
- app/assets/config/showcase_manifest.js
|
54
54
|
- app/assets/javascripts/showcase.js
|
55
55
|
- app/controllers/showcase/engine_controller.rb
|
56
|
-
- app/controllers/showcase/pages_controller.rb
|
57
56
|
- app/controllers/showcase/previews_controller.rb
|
58
57
|
- app/models/showcase/options.rb
|
59
58
|
- app/models/showcase/path.rb
|