govuk_publishing_components 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8d43e35a9844347fc38d31fb12f475b0be26b372
4
- data.tar.gz: 0d3154251f00f63cd52014ed06eb5e32bd52bebb
3
+ metadata.gz: af16bdb3cf4e7f4353eb49094b958b1ad1eab6f6
4
+ data.tar.gz: 211f3d355a205409e8217c7bdb088ddda67a0a08
5
5
  SHA512:
6
- metadata.gz: 8d8a58d1ddb55175f7b022d761628548d40d21c6f3b1594f74c50cf45e93235066f84a467b3ec3bbed9ea77884999fda624bcf09667c10f08081efbd98d5c27a
7
- data.tar.gz: b07655daa7c670a14be31a56926ec12a7819cca49fe7c06410614e5bea24397758bf252c6b199f45082df2007ba5054e7452e472d3e26d7d6e645a7d37f7ecfc
6
+ metadata.gz: 48333dcb9f5ca4f68cce6b8ef536a8c01640450cf27892b784f455900cb6fbb58cfa072e785a8b816be068c0f1db1e07d35562b25fa1925523f465daf868fd65
7
+ data.tar.gz: cc2659ab75afb0723c95c6f100c8dbb49be917cf6b849e478e4fb8d812306dbcc1a011c0bb52f8f6693bea134d91aa518a70755bb8aa52d5ac925024952d3e17
@@ -4,4 +4,176 @@
4
4
  @import "typography";
5
5
  @import "colours";
6
6
 
7
- @import "component_guide";
7
+ $prism-background: #f5f2f0;
8
+ $border-color: #ccc;
9
+
10
+ .govuk-component-guide-wrapper {
11
+ padding-bottom: $gutter * 1.5;
12
+ }
13
+
14
+ .component-list {
15
+ li {
16
+ @include core-19;
17
+ margin-bottom: $gutter-half;
18
+ }
19
+ }
20
+
21
+ .component-description {
22
+ @include core-24;
23
+ max-width: 30em;
24
+ margin-bottom: $gutter * 1.5;
25
+ }
26
+
27
+ .component-body {
28
+ margin-bottom: $gutter * 1.5;
29
+ }
30
+
31
+ .component-doc {
32
+ @include core-16;
33
+
34
+ .component-doc-h2:first-child {
35
+ margin-top: 0;
36
+ }
37
+
38
+ p {
39
+ margin: $gutter-half 0;
40
+ }
41
+
42
+ ol,
43
+ ul {
44
+ margin: 0 0 0 $gutter;
45
+ }
46
+ }
47
+
48
+ .component-doc-h2 {
49
+ @include bold-27;
50
+ margin: ($gutter * 1.5) 0 $gutter;
51
+
52
+ small {
53
+ @include bold-16;
54
+ }
55
+ }
56
+
57
+ .component-doc-h3 {
58
+ margin: $gutter 0 $gutter-half;
59
+ @include bold-19;
60
+ }
61
+
62
+ .component-guide-preview {
63
+ padding: 30px 0;
64
+
65
+ .preview-title {
66
+ margin-bottom: 1em;
67
+ @include bold-16;
68
+
69
+ a {
70
+ color: $black;
71
+ }
72
+ }
73
+ }
74
+
75
+ .code-block {
76
+ margin: 30px 0;
77
+ @extend %outdent-to-full-width;
78
+
79
+ // Match Prism styles to avoid a flash as it renders
80
+ background: $prism-background;
81
+ font-family: Consolas, Monaco, 'Andale Mono', monospace;
82
+ font-size: 16px;
83
+ line-height: 1.5;
84
+
85
+ &[contenteditable]:hover {
86
+ cursor: text;
87
+ }
88
+
89
+ &[contenteditable]:focus {
90
+ outline: 3px solid $focus-colour;
91
+ }
92
+
93
+ pre[class*=language-] {
94
+ padding: $gutter;
95
+ max-height: 300px;
96
+ }
97
+
98
+ code {
99
+ display: block;
100
+ }
101
+
102
+ .token.operator {
103
+ background: none;
104
+ }
105
+ }
106
+
107
+ .component-guide-preview {
108
+ &.direction-rtl {
109
+ direction: rtl;
110
+ text-align: start;
111
+ }
112
+
113
+ padding: ($gutter * 1.5) $gutter $gutter;
114
+ border: 1px solid $border-colour;
115
+ position: relative;
116
+
117
+ &:before {
118
+ @include core-14;
119
+ content: "EXAMPLE";
120
+ position: absolute;
121
+ top: 0;
122
+ left: 0;
123
+ padding: 0.21053em 0.78947em;
124
+ background: $border-colour;
125
+ color: $white;
126
+ }
127
+
128
+ div[class^="govuk-"] {
129
+ &:hover {
130
+ outline: 1px solid $border-color;
131
+ box-shadow: 0 0 10px $border-color;
132
+ }
133
+ }
134
+ }
135
+
136
+ .examples {
137
+ .component-example {
138
+ margin: 0 0 $gutter * 1.5;
139
+
140
+ .example-title {
141
+ @include bold-24;
142
+ margin: $gutter-half 0;
143
+
144
+ small {
145
+ @include bold-16;
146
+ }
147
+ }
148
+ }
149
+ }
150
+
151
+ // Preview Page Styling
152
+ html {
153
+ background: $white;
154
+ }
155
+
156
+ .hide-header-and-footer {
157
+ // scss-lint:disable IdSelector
158
+ #global-header,
159
+ #global-header-bar,
160
+ #global-breadcrumb,
161
+ #footer {
162
+ display: none;
163
+ }
164
+ // scss-lint:enable IdSelector
165
+ }
166
+
167
+ .component-guide-preview-page {
168
+ padding: ($gutter * 1.5) 0;
169
+ position: relative;
170
+
171
+ .preview-title {
172
+ margin-bottom: 1em;
173
+ @include bold-16;
174
+
175
+ a {
176
+ color: $black;
177
+ }
178
+ }
179
+ }
@@ -1,6 +1,6 @@
1
1
  module GovukPublishingComponents
2
2
  class ComponentGuideController < GovukPublishingComponents::ApplicationController
3
- append_view_path File.join(Rails.root, "app", "views", "components")
3
+ append_view_path File.join(Rails.root, "app", "views", GovukPublishingComponents::Config.component_directory_name)
4
4
 
5
5
  def index
6
6
  @component_docs = component_documentation_resolver.all
@@ -33,7 +33,7 @@ module GovukPublishingComponents
33
33
  end
34
34
 
35
35
  def partial_path
36
- "components/#{id}"
36
+ "#{GovukPublishingComponents::Config.component_directory_name}/#{id}"
37
37
  end
38
38
 
39
39
  private
@@ -26,17 +26,21 @@ module GovukPublishingComponents
26
26
  end
27
27
 
28
28
  def fetch_component_docs
29
- doc_files = Rails.root.join("app", "views", "components", "docs", "*.yml")
29
+ doc_files = Rails.root.join(documentation_directory, "*.yml")
30
30
  Dir[doc_files].sort.map { |file| parse_documentation(file) }
31
31
  end
32
32
 
33
33
  def fetch_component_doc(id)
34
- file = Rails.root.join("app", "views", "components", "docs", "#{id}.yml")
34
+ file = Rails.root.join(documentation_directory, "#{id}.yml")
35
35
  parse_documentation(file)
36
36
  end
37
37
 
38
38
  def parse_documentation(file)
39
39
  { id: File.basename(file, ".yml") }.merge(YAML::load_file(file)).with_indifferent_access
40
40
  end
41
+
42
+ def documentation_directory
43
+ Rails.root.join("app", "views", GovukPublishingComponents::Config.component_directory_name, "docs")
44
+ end
41
45
  end
42
46
  end
@@ -6,18 +6,28 @@ module GovukPublishingComponents
6
6
  source_root File.expand_path('../templates', __FILE__)
7
7
 
8
8
  def copy_component_files
9
+ static = GovukPublishingComponents::Config.static
10
+
9
11
  @public_name = file_name.dasherize
12
+ @component_prefix = static ? 'pub-c-' : 'app-c-'
13
+ component_directory_name = GovukPublishingComponents::Config.component_directory_name
10
14
 
11
- template_dir = "app/views/components/"
12
- docs_dir = "app/views/components/docs/"
13
- scss_dir = "app/assets/stylesheets/components/"
15
+ template_dir = "app/views/#{component_directory_name}/"
16
+ docs_dir = "app/views/#{component_directory_name}/docs/"
17
+ scss_dir = "app/assets/stylesheets/#{component_directory_name.dasherize}/"
14
18
 
15
19
  create_directory_if_not_exists(template_dir)
16
20
  create_directory_if_not_exists(docs_dir)
17
21
  create_directory_if_not_exists(scss_dir)
18
22
 
19
- template '_component.html.erb', "#{template_dir}_#{@public_name}.html.erb"
20
- template 'component.yml.erb', "#{docs_dir}#{@public_name}.yml"
23
+ if static
24
+ template '_component.html.erb', "#{template_dir}#{@public_name.underscore}.raw.html.erb"
25
+ template 'component.yml.erb', "#{docs_dir}#{@public_name.underscore}.yml"
26
+ else
27
+ template '_component.html.erb', "#{template_dir}_#{@public_name}.html.erb"
28
+ template 'component.yml.erb', "#{docs_dir}#{@public_name}.yml"
29
+ end
30
+
21
31
  template '_component.scss', "#{scss_dir}_#{@public_name}.scss"
22
32
  end
23
33
 
@@ -1,3 +1,3 @@
1
- <div class="app-c-<%= @public_name %>">
1
+ <div class="<%= @component_prefix %><%= @public_name %>">
2
2
  <h2><a href="https://github.com/alphagov/govuk_publishing_components/blob/master/docs/component_conventions.md">How to build a component</a></h2>
3
3
  </div>
@@ -1,3 +1,3 @@
1
- .app-c-<%= @public_name %> {
1
+ .<%= @component_prefix %><%= @public_name %> {
2
2
 
3
3
  }
@@ -1,6 +1,5 @@
1
- require "govuk_publishing_components/engine"
2
1
  require "govuk_publishing_components/config"
2
+ require "govuk_publishing_components/engine"
3
3
 
4
4
  module GovukPublishingComponents
5
- # Your code goes here...
6
5
  end
@@ -4,6 +4,9 @@ module GovukPublishingComponents
4
4
  end
5
5
 
6
6
  module Config
7
+ STATIC_COMPONENT_DIRECTORY = "govuk_component".freeze
8
+ APP_COMPONENT_DIRECTORY = "components".freeze
9
+
7
10
  mattr_accessor :component_guide_title
8
11
  self.component_guide_title = "GOV.UK Component Guide"
9
12
 
@@ -15,5 +18,12 @@ module GovukPublishingComponents
15
18
 
16
19
  mattr_accessor :application_javascript
17
20
  self.application_javascript = "application"
21
+
22
+ mattr_accessor :static
23
+ self.static = false
24
+
25
+ def self.component_directory_name
26
+ static ? STATIC_COMPONENT_DIRECTORY : APP_COMPONENT_DIRECTORY
27
+ end
18
28
  end
19
29
  end
@@ -2,6 +2,7 @@ module GovukPublishingComponents
2
2
  class Engine < ::Rails::Engine
3
3
  isolate_namespace GovukPublishingComponents
4
4
  require 'govuk_frontend_toolkit'
5
+ require 'slimmer'
5
6
  require 'govspeak'
6
7
  end
7
8
  end
@@ -1,3 +1,3 @@
1
1
  module GovukPublishingComponents
2
- VERSION = '1.0.1'.freeze
2
+ VERSION = '1.1.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_publishing_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-29 00:00:00.000000000 Z
11
+ date: 2017-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -180,7 +180,6 @@ files:
180
180
  - app/assets/javascripts/govuk_publishing_components/application.js
181
181
  - app/assets/javascripts/govuk_publishing_components/vendor/axe.min.js
182
182
  - app/assets/stylesheets/govuk_publishing_components/application.scss
183
- - app/assets/stylesheets/govuk_publishing_components/component_guide.scss
184
183
  - app/controllers/govuk_publishing_components/application_controller.rb
185
184
  - app/controllers/govuk_publishing_components/component_guide_controller.rb
186
185
  - app/helpers/govuk_publishing_components/application_helper.rb
@@ -1,173 +0,0 @@
1
- $prism-background: #f5f2f0;
2
- $border-color: #ccc;
3
-
4
- .govuk-component-guide-wrapper {
5
- padding-bottom: $gutter * 1.5;
6
- }
7
-
8
- .component-list {
9
- li {
10
- @include core-19;
11
- margin-bottom: $gutter-half;
12
- }
13
- }
14
-
15
- .component-description {
16
- @include core-24;
17
- max-width: 30em;
18
- margin-bottom: $gutter * 1.5;
19
- }
20
-
21
- .component-body {
22
- margin-bottom: $gutter * 1.5;
23
- }
24
-
25
- .component-doc {
26
- @include core-16;
27
-
28
- .component-doc-h2:first-child {
29
- margin-top: 0;
30
- }
31
-
32
- p {
33
- margin: $gutter-half 0;
34
- }
35
-
36
- ol,
37
- ul {
38
- margin: 0 0 0 $gutter;
39
- }
40
- }
41
-
42
- .component-doc-h2 {
43
- @include bold-27;
44
- margin: ($gutter * 1.5) 0 $gutter;
45
-
46
- small {
47
- @include bold-16;
48
- }
49
- }
50
-
51
- .component-doc-h3 {
52
- margin: $gutter 0 $gutter-half;
53
- @include bold-19;
54
- }
55
-
56
- .component-guide-preview {
57
- padding: 30px 0;
58
-
59
- .preview-title {
60
- margin-bottom: 1em;
61
- @include bold-16;
62
-
63
- a {
64
- color: $black;
65
- }
66
- }
67
- }
68
-
69
- .code-block {
70
- margin: 30px 0;
71
- @extend %outdent-to-full-width;
72
-
73
- // Match Prism styles to avoid a flash as it renders
74
- background: $prism-background;
75
- font-family: Consolas, Monaco, 'Andale Mono', monospace;
76
- font-size: 16px;
77
- line-height: 1.5;
78
-
79
- &[contenteditable]:hover {
80
- cursor: text;
81
- }
82
-
83
- &[contenteditable]:focus {
84
- outline: 3px solid $focus-colour;
85
- }
86
-
87
- pre[class*=language-] {
88
- padding: $gutter;
89
- max-height: 300px;
90
- }
91
-
92
- code {
93
- display: block;
94
- }
95
-
96
- .token.operator {
97
- background: none;
98
- }
99
- }
100
-
101
- .component-guide-preview {
102
- &.direction-rtl {
103
- direction: rtl;
104
- text-align: start;
105
- }
106
-
107
- padding: ($gutter * 1.5) $gutter $gutter;
108
- border: 1px solid $border-colour;
109
- position: relative;
110
-
111
- &:before {
112
- @include core-14;
113
- content: "EXAMPLE";
114
- position: absolute;
115
- top: 0;
116
- left: 0;
117
- padding: 0.21053em 0.78947em;
118
- background: $border-colour;
119
- color: $white;
120
- }
121
-
122
- div[class^="govuk-"] {
123
- &:hover {
124
- outline: 1px solid $border-color;
125
- box-shadow: 0 0 10px $border-color;
126
- }
127
- }
128
- }
129
-
130
- .examples {
131
- .component-example {
132
- margin: 0 0 $gutter * 1.5;
133
-
134
- .example-title {
135
- @include bold-24;
136
- margin: $gutter-half 0;
137
-
138
- small {
139
- @include bold-16;
140
- }
141
- }
142
- }
143
- }
144
-
145
- // Preview Page Styling
146
- html {
147
- background: $white;
148
- }
149
-
150
- .hide-header-and-footer {
151
- // scss-lint:disable IdSelector
152
- #global-header,
153
- #global-header-bar,
154
- #global-breadcrumb,
155
- #footer {
156
- display: none;
157
- }
158
- // scss-lint:enable IdSelector
159
- }
160
-
161
- .component-guide-preview-page {
162
- padding: ($gutter * 1.5) 0;
163
- position: relative;
164
-
165
- .preview-title {
166
- margin-bottom: 1em;
167
- @include bold-16;
168
-
169
- a {
170
- color: $black;
171
- }
172
- }
173
- }