design_system 0.13.2 → 0.15.0
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.
- checksums.yaml +4 -4
- data/README.md +36 -3
- data/app/assets/stylesheets/design_system/_hljs.scss +131 -0
- data/app/assets/stylesheets/design_system/govuk.scss +43 -0
- data/app/assets/stylesheets/design_system/nhsuk.scss +55 -0
- data/app/components/design_system/base_component.rb +21 -0
- data/app/components/design_system/generic/action_link_component.rb +17 -0
- data/app/components/design_system/generic/alert_component.rb +25 -0
- data/app/components/design_system/generic/breadcrumbs_component.rb +18 -0
- data/app/components/design_system/generic/button_component.rb +51 -0
- data/app/components/design_system/generic/callout_component.html.erb +8 -0
- data/app/components/design_system/generic/callout_component.rb +15 -0
- data/app/components/design_system/generic/details_component.html.erb +4 -0
- data/app/components/design_system/generic/details_component.rb +13 -0
- data/app/components/design_system/generic/grid_component.html.erb +5 -0
- data/app/components/design_system/generic/grid_component.rb +31 -0
- data/app/components/design_system/generic/heading_component.rb +41 -0
- data/app/components/design_system/generic/inset_text_component.html.erb +1 -0
- data/app/components/design_system/generic/inset_text_component.rb +24 -0
- data/app/components/design_system/generic/link_component.rb +51 -0
- data/app/components/design_system/generic/list_component.html.erb +7 -0
- data/app/components/design_system/generic/list_component.rb +26 -0
- data/app/components/design_system/generic/notification_component.html.erb +15 -0
- data/app/components/design_system/generic/notification_component.rb +39 -0
- data/app/components/design_system/generic/panel_component.html.erb +4 -0
- data/app/components/design_system/generic/panel_component.rb +18 -0
- data/app/components/design_system/generic/paragraph_component.rb +46 -0
- data/app/components/design_system/generic/start_button_component.html.erb +4 -0
- data/app/components/design_system/generic/start_button_component.rb +17 -0
- data/app/components/design_system/generic/summary_card_component.html.erb +15 -0
- data/app/components/design_system/generic/summary_card_component.rb +40 -0
- data/app/components/design_system/generic/summary_list_component.html.erb +21 -0
- data/app/components/design_system/generic/summary_list_component.rb +59 -0
- data/app/components/design_system/generic/tab_component.html.erb +21 -0
- data/app/components/design_system/generic/tab_component.rb +14 -0
- data/app/components/design_system/generic/table_component.rb +46 -0
- data/app/components/design_system/govuk/action_link_component.html.erb +1 -0
- data/app/components/design_system/govuk/action_link_component.rb +8 -0
- data/app/components/design_system/govuk/alert_component.rb +6 -0
- data/app/components/design_system/govuk/breadcrumbs_component.html.erb +11 -0
- data/app/components/design_system/govuk/breadcrumbs_component.rb +7 -0
- data/app/components/design_system/govuk/button_component.rb +6 -0
- data/app/components/design_system/govuk/callout_component.html.erb +6 -0
- data/app/components/design_system/govuk/callout_component.rb +6 -0
- data/app/components/design_system/govuk/details_component.rb +6 -0
- data/app/components/design_system/govuk/grid_component.rb +6 -0
- data/app/components/design_system/govuk/heading_component.rb +6 -0
- data/app/components/design_system/govuk/inset_text_component.rb +6 -0
- data/app/components/design_system/govuk/link_component.rb +17 -0
- data/app/components/design_system/govuk/list_component.rb +6 -0
- data/app/components/design_system/govuk/notification_component.rb +6 -0
- data/app/components/design_system/govuk/panel_component.rb +10 -0
- data/app/components/design_system/govuk/paragraph_component.rb +6 -0
- data/app/components/design_system/govuk/start_button_component.rb +6 -0
- data/app/components/design_system/govuk/summary_card_component.html.erb +15 -0
- data/app/components/design_system/govuk/summary_card_component.rb +13 -0
- data/app/components/design_system/govuk/summary_list_component.rb +6 -0
- data/app/components/design_system/govuk/tab_component.rb +6 -0
- data/app/components/design_system/govuk/table_component.html.erb +30 -0
- data/app/components/design_system/govuk/table_component.rb +6 -0
- data/app/components/design_system/nhsuk/action_link_component.html.erb +7 -0
- data/app/components/design_system/nhsuk/action_link_component.rb +7 -0
- data/app/components/design_system/nhsuk/alert_component.rb +6 -0
- data/app/components/design_system/nhsuk/breadcrumbs_component.html.erb +16 -0
- data/app/components/design_system/nhsuk/breadcrumbs_component.rb +7 -0
- data/app/components/design_system/nhsuk/button_component.rb +6 -0
- data/app/components/design_system/nhsuk/callout_component.rb +6 -0
- data/app/components/design_system/nhsuk/details_component.rb +6 -0
- data/app/components/design_system/nhsuk/grid_component.rb +6 -0
- data/app/components/design_system/nhsuk/heading_component.rb +6 -0
- data/app/components/design_system/nhsuk/inset_text_component.html.erb +4 -0
- data/app/components/design_system/nhsuk/inset_text_component.rb +6 -0
- data/app/components/design_system/nhsuk/link_component.rb +17 -0
- data/app/components/design_system/nhsuk/list_component.rb +6 -0
- data/app/components/design_system/nhsuk/notification_component.rb +6 -0
- data/app/components/design_system/nhsuk/panel_component.rb +6 -0
- data/app/components/design_system/nhsuk/paragraph_component.rb +6 -0
- data/app/components/design_system/nhsuk/start_button_component.rb +6 -0
- data/app/components/design_system/nhsuk/summary_card_component.rb +6 -0
- data/app/components/design_system/nhsuk/summary_list_component.rb +19 -0
- data/app/components/design_system/nhsuk/tab_component.rb +6 -0
- data/app/components/design_system/nhsuk/table_component.html.erb +43 -0
- data/app/components/design_system/nhsuk/table_component.rb +6 -0
- data/app/controllers/concerns/design_system/branded.rb +6 -0
- data/app/helpers/design_system_helper.rb +65 -27
- data/app/javascript/design_system/controllers/clipboard_controller.js +41 -0
- data/app/javascript/design_system/controllers/code_highlight_controller.js +9 -0
- data/app/javascript/design_system/controllers/hello_world_controller.js +6 -0
- data/app/javascript/design_system/index.js +4 -0
- data/app/views/layouts/govuk/application.html.erb +20 -7
- data/app/views/layouts/nhsuk/application.html.erb +10 -7
- data/lib/design_system/brand_derivable.rb +9 -0
- data/lib/design_system/engine.rb +1 -0
- data/lib/design_system/generic/builders/base.rb +1 -1
- data/lib/design_system/generic/builders/code.rb +23 -0
- data/lib/design_system/generic/builders/elements/breadcrumbs.rb +4 -24
- data/lib/design_system/generic/builders/elements/headings.rb +3 -2
- data/lib/design_system/generic/builders/pagination_renderer.rb +5 -4
- data/lib/design_system/generic.rb +1 -14
- data/lib/design_system/govuk/builders/code.rb +11 -0
- data/lib/design_system/govuk/builders/fixed_elements.rb +0 -1
- data/lib/design_system/govuk.rb +1 -12
- data/lib/design_system/nhsuk/builders/code.rb +11 -0
- data/lib/design_system/nhsuk/builders/fixed_elements.rb +0 -1
- data/lib/design_system/nhsuk.rb +1 -12
- data/lib/design_system/registry.rb +19 -1
- data/lib/design_system/version.rb +1 -1
- data/public/design_system/static/design_system-0.15.0/design_system.js +53150 -0
- metadata +101 -50
- data/lib/design_system/generic/builders/action_link.rb +0 -17
- data/lib/design_system/generic/builders/button.rb +0 -33
- data/lib/design_system/generic/builders/callout.rb +0 -28
- data/lib/design_system/generic/builders/concerns/brand_derivable.rb +0 -14
- data/lib/design_system/generic/builders/details.rb +0 -30
- data/lib/design_system/generic/builders/grid.rb +0 -44
- data/lib/design_system/generic/builders/heading.rb +0 -38
- data/lib/design_system/generic/builders/inset_text.rb +0 -18
- data/lib/design_system/generic/builders/link.rb +0 -44
- data/lib/design_system/generic/builders/list.rb +0 -41
- data/lib/design_system/generic/builders/notification.rb +0 -68
- data/lib/design_system/generic/builders/panel.rb +0 -18
- data/lib/design_system/generic/builders/paragraph.rb +0 -28
- data/lib/design_system/generic/builders/summary_list.rb +0 -89
- data/lib/design_system/generic/builders/tab.rb +0 -14
- data/lib/design_system/generic/builders/table.rb +0 -73
- data/lib/design_system/govuk/builders/action_link.rb +0 -17
- data/lib/design_system/govuk/builders/button.rb +0 -55
- data/lib/design_system/govuk/builders/callout.rb +0 -26
- data/lib/design_system/govuk/builders/details.rb +0 -10
- data/lib/design_system/govuk/builders/elements/breadcrumbs.rb +0 -33
- data/lib/design_system/govuk/builders/grid.rb +0 -12
- data/lib/design_system/govuk/builders/heading.rb +0 -11
- data/lib/design_system/govuk/builders/inset_text.rb +0 -11
- data/lib/design_system/govuk/builders/link.rb +0 -21
- data/lib/design_system/govuk/builders/list.rb +0 -11
- data/lib/design_system/govuk/builders/notification.rb +0 -11
- data/lib/design_system/govuk/builders/panel.rb +0 -18
- data/lib/design_system/govuk/builders/paragraph.rb +0 -11
- data/lib/design_system/govuk/builders/summary_list.rb +0 -32
- data/lib/design_system/govuk/builders/tab.rb +0 -54
- data/lib/design_system/govuk/builders/table.rb +0 -77
- data/lib/design_system/nhsuk/builders/action_link.rb +0 -30
- data/lib/design_system/nhsuk/builders/button.rb +0 -11
- data/lib/design_system/nhsuk/builders/callout.rb +0 -11
- data/lib/design_system/nhsuk/builders/details.rb +0 -10
- data/lib/design_system/nhsuk/builders/elements/breadcrumbs.rb +0 -43
- data/lib/design_system/nhsuk/builders/grid.rb +0 -12
- data/lib/design_system/nhsuk/builders/heading.rb +0 -11
- data/lib/design_system/nhsuk/builders/inset_text.rb +0 -23
- data/lib/design_system/nhsuk/builders/link.rb +0 -21
- data/lib/design_system/nhsuk/builders/list.rb +0 -11
- data/lib/design_system/nhsuk/builders/notification.rb +0 -11
- data/lib/design_system/nhsuk/builders/panel.rb +0 -11
- data/lib/design_system/nhsuk/builders/paragraph.rb +0 -11
- data/lib/design_system/nhsuk/builders/summary_list.rb +0 -18
- data/lib/design_system/nhsuk/builders/tab.rb +0 -11
- data/lib/design_system/nhsuk/builders/table.rb +0 -68
- data/public/design_system/static/design_system-0.13.2/design_system.js +0 -1309
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DesignSystem
|
|
4
|
+
module Generic
|
|
5
|
+
module Builders
|
|
6
|
+
# Renders a code block with copy button.
|
|
7
|
+
class Code < Base
|
|
8
|
+
def render_code(code, language)
|
|
9
|
+
content_tag(:div, class: 'app-example__code', data: { controller: 'ds--clipboard' }) do
|
|
10
|
+
content_tag(:button, 'Copy', class: 'app-example__copy-button',
|
|
11
|
+
data: { action: 'click->ds--clipboard#copy', 'ds--clipboard-target': 'buttonText' }) +
|
|
12
|
+
content_tag(:div, class: 'app-example__scroll', tabindex: 0) do
|
|
13
|
+
content_tag(:pre, data: { 'ds--clipboard-target': 'source' }) do
|
|
14
|
+
content_tag(:code, code, data: { controller: 'ds--code-highlight' },
|
|
15
|
+
class: "hljs language-#{language}")
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -2,7 +2,8 @@ module DesignSystem
|
|
|
2
2
|
module Generic
|
|
3
3
|
module Builders
|
|
4
4
|
module Elements
|
|
5
|
-
# This mixin
|
|
5
|
+
# This mixin accumulates breadcrumbs and renders them into the
|
|
6
|
+
# :breadcrumbs content_for slot via the per-brand BreadcrumbsComponent.
|
|
6
7
|
module Breadcrumbs
|
|
7
8
|
def breadcrumb(label, path)
|
|
8
9
|
@breadcrumbs ||= []
|
|
@@ -13,31 +14,10 @@ module DesignSystem
|
|
|
13
14
|
|
|
14
15
|
def content_for_breadcrumbs
|
|
15
16
|
content_for(:breadcrumbs) do
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
@breadcrumbs.each do |breadcrumb|
|
|
19
|
-
safe_buffer.concat(render_breadcrumb(breadcrumb))
|
|
20
|
-
safe_buffer.concat(' > ') unless @breadcrumbs.last == breadcrumb
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
safe_buffer
|
|
17
|
+
component = ::DesignSystem::Registry.component(brand, :breadcrumbs).new(breadcrumbs: @breadcrumbs)
|
|
18
|
+
@context.render(component)
|
|
24
19
|
end
|
|
25
20
|
end
|
|
26
|
-
|
|
27
|
-
def home_path?(path)
|
|
28
|
-
root_hash = Rails.application.routes.recognize_path(@context.root_path)
|
|
29
|
-
path_hash = Rails.application.routes.recognize_path(path)
|
|
30
|
-
|
|
31
|
-
%i[controller action].each do |key|
|
|
32
|
-
return false if root_hash[key] != path_hash[key]
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
true
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def render_breadcrumb(breadcrumb)
|
|
39
|
-
link_to_unless_current(breadcrumb[:label], breadcrumb[:path])
|
|
40
|
-
end
|
|
41
21
|
end
|
|
42
22
|
end
|
|
43
23
|
end
|
|
@@ -15,8 +15,9 @@ module DesignSystem
|
|
|
15
15
|
safe_buffer = ActiveSupport::SafeBuffer.new
|
|
16
16
|
|
|
17
17
|
safe_buffer.concat(render_caption) if @caption
|
|
18
|
-
safe_buffer.concat(
|
|
19
|
-
|
|
18
|
+
safe_buffer.concat(
|
|
19
|
+
DesignSystem::Registry.component(brand, :heading).new(@main_heading, level: 1).render_in(@context)
|
|
20
|
+
)
|
|
20
21
|
|
|
21
22
|
safe_buffer
|
|
22
23
|
end
|
|
@@ -7,7 +7,7 @@ module DesignSystem
|
|
|
7
7
|
module Builders
|
|
8
8
|
# This class is used to provide will_paginate renderer.
|
|
9
9
|
class PaginationRenderer < WillPaginate::ActionView::LinkRenderer
|
|
10
|
-
include DesignSystem::
|
|
10
|
+
include DesignSystem::BrandDerivable
|
|
11
11
|
|
|
12
12
|
def initialize(context)
|
|
13
13
|
@context = context
|
|
@@ -49,12 +49,13 @@ module DesignSystem
|
|
|
49
49
|
'aria-label': aria_label)
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
-
def disabled_link_with_title(text, title,
|
|
52
|
+
def disabled_link_with_title(text, title, _aria_label = nil)
|
|
53
|
+
# No aria-label here: it is prohibited on a role-less <span>. The visible
|
|
54
|
+
# title plus the visually-hidden text already provide an accessible name.
|
|
53
55
|
tag(:span,
|
|
54
56
|
tag(:span, title, class: "#{brand}-pagination__title") +
|
|
55
57
|
tag(:span, text, class: "#{brand}-u-visually-hidden"),
|
|
56
|
-
class: "#{brand}-pagination__link disabled"
|
|
57
|
-
'aria-label': aria_label)
|
|
58
|
+
class: "#{brand}-pagination__link disabled")
|
|
58
59
|
end
|
|
59
60
|
|
|
60
61
|
# SVG for the "Previous" icon
|
|
@@ -2,19 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
# This is the generic (unbranded) adapter for design system
|
|
4
4
|
|
|
5
|
-
require_relative 'generic/builders/
|
|
6
|
-
require_relative 'generic/builders/button'
|
|
7
|
-
require_relative 'generic/builders/callout'
|
|
8
|
-
require_relative 'generic/builders/details'
|
|
5
|
+
require_relative 'generic/builders/code'
|
|
9
6
|
require_relative 'generic/builders/fixed_elements'
|
|
10
|
-
require_relative 'generic/builders/grid'
|
|
11
|
-
require_relative 'generic/builders/heading'
|
|
12
|
-
require_relative 'generic/builders/inset_text'
|
|
13
|
-
require_relative 'generic/builders/link'
|
|
14
|
-
require_relative 'generic/builders/list'
|
|
15
|
-
require_relative 'generic/builders/notification'
|
|
16
7
|
require_relative 'generic/builders/pagination_renderer'
|
|
17
|
-
require_relative 'generic/builders/panel'
|
|
18
|
-
require_relative 'generic/builders/paragraph'
|
|
19
|
-
require_relative 'generic/builders/tab'
|
|
20
|
-
require_relative 'generic/builders/table'
|
data/lib/design_system/govuk.rb
CHANGED
|
@@ -2,20 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# This is the GOV.UK adapter for the design system
|
|
4
4
|
|
|
5
|
-
require_relative 'govuk/builders/
|
|
6
|
-
require_relative 'govuk/builders/callout'
|
|
7
|
-
require_relative 'govuk/builders/details'
|
|
5
|
+
require_relative 'govuk/builders/code'
|
|
8
6
|
require_relative 'govuk/builders/fixed_elements'
|
|
9
|
-
require_relative 'govuk/builders/heading'
|
|
10
|
-
require_relative 'govuk/builders/link'
|
|
11
|
-
require_relative 'govuk/builders/list'
|
|
12
|
-
require_relative 'govuk/builders/notification'
|
|
13
7
|
require_relative 'govuk/builders/pagination_renderer'
|
|
14
|
-
require_relative 'govuk/builders/panel'
|
|
15
|
-
require_relative 'govuk/builders/paragraph'
|
|
16
|
-
require_relative 'govuk/builders/summary_list'
|
|
17
|
-
require_relative 'govuk/builders/tab'
|
|
18
|
-
require_relative 'govuk/builders/table'
|
|
19
8
|
|
|
20
9
|
require_relative 'govuk/form_builder'
|
|
21
10
|
|
data/lib/design_system/nhsuk.rb
CHANGED
|
@@ -1,19 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative 'nhsuk/builders/
|
|
4
|
-
require_relative 'nhsuk/builders/callout'
|
|
3
|
+
require_relative 'nhsuk/builders/code'
|
|
5
4
|
require_relative 'nhsuk/builders/fixed_elements'
|
|
6
|
-
require_relative 'nhsuk/builders/details'
|
|
7
|
-
require_relative 'nhsuk/builders/heading'
|
|
8
|
-
require_relative 'nhsuk/builders/link'
|
|
9
|
-
require_relative 'nhsuk/builders/list'
|
|
10
|
-
require_relative 'nhsuk/builders/notification'
|
|
11
5
|
require_relative 'nhsuk/builders/pagination_renderer'
|
|
12
|
-
require_relative 'nhsuk/builders/panel'
|
|
13
|
-
require_relative 'nhsuk/builders/paragraph'
|
|
14
|
-
require_relative 'nhsuk/builders/summary_list'
|
|
15
|
-
require_relative 'nhsuk/builders/tab'
|
|
16
|
-
require_relative 'nhsuk/builders/table'
|
|
17
6
|
|
|
18
7
|
require_relative 'nhsuk/form_builder'
|
|
19
8
|
|
|
@@ -22,14 +22,32 @@ module DesignSystem
|
|
|
22
22
|
klass.new(context)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
+
# Resolves a per-brand component class. The component is responsible for
|
|
26
|
+
# rendering — call `render(component(brand, :panel).new(...))` from a
|
|
27
|
+
# helper. Coexists with `builder` during the gradual migration from
|
|
28
|
+
# PORO builders to ViewComponents.
|
|
29
|
+
def component(brand, name)
|
|
30
|
+
raise ArgumentError, "Unknown brand: #{brand}" unless registered?(brand)
|
|
31
|
+
|
|
32
|
+
klass_name = "DesignSystem::#{brand.camelize}::#{name.to_s.camelize}Component"
|
|
33
|
+
klass_name.safe_constantize ||
|
|
34
|
+
raise(ArgumentError, "Unknown component: #{name} for brand #{brand}")
|
|
35
|
+
end
|
|
36
|
+
|
|
25
37
|
def form_builder(brand)
|
|
38
|
+
raise ArgumentError, "Unknown brand: #{brand}" unless registered?(brand)
|
|
39
|
+
|
|
26
40
|
"DesignSystem::#{brand.camelcase}::FormBuilder".constantize
|
|
27
41
|
end
|
|
28
42
|
|
|
43
|
+
def registered?(brand)
|
|
44
|
+
Array(design_systems).include?(brand)
|
|
45
|
+
end
|
|
46
|
+
|
|
29
47
|
private
|
|
30
48
|
|
|
31
49
|
def namespaced_builder_klass(brand, klass_name)
|
|
32
|
-
raise ArgumentError, "Unknown brand: #{brand}" unless
|
|
50
|
+
raise ArgumentError, "Unknown brand: #{brand}" unless registered?(brand)
|
|
33
51
|
|
|
34
52
|
"DesignSystem::#{brand.camelize}::Builders::#{klass_name.camelize}".constantize
|
|
35
53
|
end
|