primer_view_components 0.0.61 → 0.0.62

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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +44 -2
  3. data/app/components/primer/alpha/border_box/header.rb +1 -2
  4. data/app/components/primer/alpha/button_marketing.rb +4 -4
  5. data/app/components/primer/alpha/tab_nav.rb +1 -1
  6. data/app/components/primer/alpha/tab_panels.rb +2 -2
  7. data/app/components/primer/alpha/underline_nav.rb +2 -1
  8. data/app/components/primer/alpha/underline_panels.rb +2 -2
  9. data/app/components/primer/base_component.rb +8 -36
  10. data/app/components/primer/beta/auto_complete/item.rb +1 -1
  11. data/app/components/primer/beta/auto_complete.rb +4 -2
  12. data/app/components/primer/beta/avatar.rb +1 -1
  13. data/app/components/primer/beta/blankslate.html.erb +2 -2
  14. data/app/components/primer/beta/blankslate.rb +6 -3
  15. data/app/components/primer/beta/breadcrumbs.rb +2 -2
  16. data/app/components/primer/beta/text.rb +1 -1
  17. data/app/components/primer/border_box_component.rb +1 -1
  18. data/app/components/primer/box_component.rb +3 -2
  19. data/app/components/primer/button_component.html.erb +3 -9
  20. data/app/components/primer/button_component.rb +21 -2
  21. data/app/components/primer/button_group.rb +1 -1
  22. data/app/components/primer/clipboard_copy.rb +1 -1
  23. data/app/components/primer/close_button.rb +1 -1
  24. data/app/components/primer/component.rb +71 -0
  25. data/app/components/primer/counter_component.rb +1 -1
  26. data/app/components/primer/details_component.rb +1 -1
  27. data/app/components/primer/dropdown/menu.rb +1 -1
  28. data/app/components/primer/dropdown.html.erb +0 -1
  29. data/app/components/primer/dropdown.rb +1 -0
  30. data/app/components/primer/dropdown_menu_component.rb +1 -1
  31. data/app/components/primer/flash_component.rb +2 -1
  32. data/app/components/primer/flex_component.rb +16 -16
  33. data/app/components/primer/flex_item_component.rb +1 -1
  34. data/app/components/primer/hellip_button.rb +1 -1
  35. data/app/components/primer/hidden_text_expander.rb +1 -1
  36. data/app/components/primer/image.rb +1 -1
  37. data/app/components/primer/image_crop.rb +2 -1
  38. data/app/components/primer/layout_component.rb +1 -0
  39. data/app/components/primer/local_time.rb +1 -1
  40. data/app/components/primer/markdown.rb +1 -1
  41. data/app/components/primer/menu_component.rb +2 -1
  42. data/app/components/primer/navigation/tab_component.rb +1 -0
  43. data/app/components/primer/octicon_symbols_component.rb +2 -2
  44. data/app/components/primer/popover_component.rb +1 -1
  45. data/app/components/primer/progress_bar_component.rb +7 -6
  46. data/app/components/primer/spinner_component.rb +1 -1
  47. data/app/components/primer/subhead_component.rb +3 -1
  48. data/app/components/primer/tab_container_component.rb +1 -1
  49. data/app/components/primer/time_ago_component.rb +1 -1
  50. data/app/components/primer/timeline_item_component.rb +4 -3
  51. data/app/components/primer/tooltip.rb +1 -0
  52. data/lib/primer/classify/utilities.rb +26 -23
  53. data/lib/primer/classify/utilities.yml +192 -68
  54. data/lib/primer/classify.rb +92 -178
  55. data/lib/primer/view_components/linters/blankslate_api_migration.rb +11 -5
  56. data/lib/primer/view_components/version.rb +1 -1
  57. data/lib/rubocop/cop/primer/deprecated_layout_component.rb +30 -0
  58. data/lib/rubocop/cop/primer/primer_octicon.rb +1 -3
  59. data/lib/tasks/custom_utilities.yml +192 -0
  60. data/lib/tasks/docs.rake +1 -1
  61. data/lib/tasks/utilities.rake +6 -2
  62. data/static/classes.yml +14 -14
  63. data/static/constants.json +3 -3
  64. metadata +4 -4
  65. data/lib/primer/classify/cache.rb +0 -109
  66. data/lib/primer/classify/flex.rb +0 -111
@@ -0,0 +1,192 @@
1
+ :font_size:
2
+ "00":
3
+ - f00
4
+ 1:
5
+ - f1
6
+ 2:
7
+ - f2
8
+ 3:
9
+ - f3
10
+ 4:
11
+ - f4
12
+ 5:
13
+ - f5
14
+ 6:
15
+ - f6
16
+ :small:
17
+ - text-small
18
+ :normal:
19
+ - text-normal
20
+ :top:
21
+ false:
22
+ - top-0
23
+ :bottom:
24
+ false:
25
+ - bottom-0
26
+ :left:
27
+ false:
28
+ - left-0
29
+ :right:
30
+ false:
31
+ - right-0
32
+ :underline:
33
+ true:
34
+ - text-underline
35
+ false:
36
+ - no-underline
37
+ :font_family:
38
+ :mono:
39
+ - text-mono
40
+ :font_style:
41
+ :italic:
42
+ - text-italic
43
+ :text_transform:
44
+ :uppercase:
45
+ - text-uppercase
46
+ :text_align:
47
+ :right:
48
+ - text-right
49
+ :left:
50
+ - text-left
51
+ :center:
52
+ - text-center
53
+ :font_weight:
54
+ :light:
55
+ - text-light
56
+ :normal:
57
+ - text-normal
58
+ :bold:
59
+ - text-bold
60
+ :semibold:
61
+ - text-semibold
62
+ :emphasized:
63
+ - text-emphasized
64
+ :box_shadow:
65
+ true:
66
+ - color-shadow-small
67
+ :small:
68
+ - color-shadow-small
69
+ :medium:
70
+ - color-shadow-medium
71
+ :large:
72
+ - color-shadow-large
73
+ :extra_large:
74
+ - color-shadow-extra-large
75
+ :none:
76
+ - box-shadow-none
77
+ false:
78
+ - box-shadow-none
79
+ :border:
80
+ :left:
81
+ - border-left
82
+ :top:
83
+ - border-top
84
+ :bottom:
85
+ - border-bottom
86
+ :right:
87
+ - border-right
88
+ :y:
89
+ - border-y
90
+ :x:
91
+ - border-x
92
+ true:
93
+ - border
94
+ :border_top:
95
+ 0:
96
+ - border-top-0
97
+ :border_bottom:
98
+ 0:
99
+ - border-bottom-0
100
+ :border_left:
101
+ 0:
102
+ - border-left-0
103
+ :border_right:
104
+ 0:
105
+ - border-right-0
106
+ :border_radius:
107
+ 0:
108
+ - rounded-0
109
+ 1:
110
+ - rounded-1
111
+ 2:
112
+ - rounded-2
113
+ 3:
114
+ - rounded-3
115
+ :justify_content:
116
+ :flex_start:
117
+ - flex-justify-start
118
+ :flex_end:
119
+ - flex-justify-end
120
+ :center:
121
+ - flex-justify-center
122
+ :space_between:
123
+ - flex-justify-between
124
+ :space_around:
125
+ - flex-justify-around
126
+ :align_items:
127
+ :flex_start:
128
+ - flex-items-start
129
+ :flex_end:
130
+ - flex-items-end
131
+ :center:
132
+ - flex-items-center
133
+ :baseline:
134
+ - flex-items-baseline
135
+ :stretch:
136
+ - flex-items-stretch
137
+ :flex_wrap:
138
+ :wrap:
139
+ - flex-wrap
140
+ :nowrap:
141
+ - flex-nowrap
142
+ :reverse:
143
+ - flex-wrap-reverse
144
+ :direction:
145
+ :column:
146
+ - flex-column
147
+ - flex-sm-column
148
+ - flex-md-column
149
+ - flex-lg-column
150
+ - flex-xl-column
151
+ :column_reverse:
152
+ - flex-column-reverse
153
+ - flex-sm-column-reverse
154
+ - flex-md-column-reverse
155
+ - flex-lg-column-reverse
156
+ - flex-xl-column-reverse
157
+ :row:
158
+ - flex-row
159
+ - flex-sm-row
160
+ - flex-md-row
161
+ - flex-lg-row
162
+ - flex-xl-row
163
+ :row_reverse:
164
+ - flex-row-reverse
165
+ - flex-sm-row-reverse
166
+ - flex-md-row-reverse
167
+ - flex-lg-row-reverse
168
+ - flex-xl-row-reverse
169
+ :flex:
170
+ 1:
171
+ - flex-1
172
+ :auto:
173
+ - flex-auto
174
+ :align_self:
175
+ :auto:
176
+ - flex-self-auto
177
+ :start:
178
+ - flex-self-start
179
+ :end:
180
+ - flex-self-end
181
+ :center:
182
+ - flex-self-center
183
+ :baseline:
184
+ - flex-self-baseline
185
+ :stretch:
186
+ - flex-self-stretch
187
+ :flex_grow:
188
+ 0:
189
+ - flex-grow-0
190
+ :flex_shrink:
191
+ 0:
192
+ - flex-shrink-0
data/lib/tasks/docs.rake CHANGED
@@ -312,7 +312,7 @@ namespace :docs do
312
312
  FileUtils.rm_rf(File.join(adr_content_dir))
313
313
  FileUtils.mkdir(adr_content_dir)
314
314
 
315
- nav_entries = Dir[File.join(*%w[adr *.md])].map do |orig_path|
315
+ nav_entries = Dir[File.join(*%w[adr *.md])].sort.map do |orig_path|
316
316
  orig_file_name = File.basename(orig_path)
317
317
  url_name = orig_file_name.chomp(".md")
318
318
  title = ActiveSupport::Inflector.titleize(url_name.sub(/\A\d+-/, ""))
@@ -13,8 +13,6 @@ namespace :utilities do
13
13
  /^anim\b/,
14
14
  /^color-bg\b/,
15
15
  /^color-border\b/,
16
- /^color-icon\b/,
17
- /^color-text\b/,
18
16
  /^color-fg\b/,
19
17
  /^col\b/,
20
18
  /^container\b/,
@@ -41,6 +39,10 @@ namespace :utilities do
41
39
  )
42
40
  )["selectors"]["values"]
43
41
 
42
+ custom_utility_data = YAML.load_file(
43
+ File.join(__dir__, "custom_utilities.yml")
44
+ )
45
+
44
46
  layout_data =
45
47
  JSON.parse(
46
48
  File.read(
@@ -112,6 +114,8 @@ namespace :utilities do
112
114
  x.transform_values { |y| y.reverse.drop_while(&:nil?).reverse }
113
115
  end
114
116
 
117
+ output.merge!(custom_utility_data)
118
+
115
119
  File.open("lib/primer/classify/utilities.yml", "w") do |f|
116
120
  f.puts YAML.dump(output)
117
121
  end
data/static/classes.yml CHANGED
@@ -100,31 +100,29 @@
100
100
  - ".btn-large-mktg"
101
101
  - ".btn-link"
102
102
  - ".btn-mktg"
103
+ - ".btn-muted-mktg"
103
104
  - ".btn-octicon"
104
105
  - ".btn-octicon-danger"
105
106
  - ".btn-outline"
106
- - ".btn-outline-mktg"
107
107
  - ".btn-primary"
108
- - ".btn-primary-mktg"
108
+ - ".btn-signup-mktg"
109
109
  - ".btn-sm"
110
- - ".btn-transparent"
110
+ - ".btn-subtle-mktg"
111
111
  - ".circle"
112
112
  - ".close-button"
113
113
  - ".col-2"
114
114
  - ".col-3"
115
115
  - ".col-9"
116
- - ".color-bg-canvas-inverse"
117
- - ".color-bg-danger-inverse"
118
- - ".color-bg-info-inverse"
119
- - ".color-bg-secondary"
120
- - ".color-bg-success-inverse"
121
- - ".color-bg-tertiary"
122
- - ".color-border-info"
116
+ - ".color-bg-accent-emphasis"
117
+ - ".color-bg-danger-emphasis"
118
+ - ".color-bg-emphasis"
119
+ - ".color-bg-subtle"
120
+ - ".color-bg-success-emphasis"
121
+ - ".color-border-accent-emphasis"
122
+ - ".color-fg-danger"
123
+ - ".color-fg-on-emphasis"
123
124
  - ".color-fg-success"
124
- - ".color-icon-success"
125
125
  - ".color-shadow-large"
126
- - ".color-text-danger"
127
- - ".color-text-white"
128
126
  - ".container-lg"
129
127
  - ".container-md"
130
128
  - ".container-xl"
@@ -138,7 +136,6 @@
138
136
  - ".details-overlay"
139
137
  - ".details-reset"
140
138
  - ".dropdown"
141
- - ".dropdown-caret"
142
139
  - ".dropdown-divider"
143
140
  - ".dropdown-header"
144
141
  - ".dropdown-item"
@@ -178,8 +175,11 @@
178
175
  - ".menu"
179
176
  - ".menu-heading"
180
177
  - ".menu-item"
178
+ - ".ml-2"
181
179
  - ".mr-2"
180
+ - ".mr-n1"
182
181
  - ".mt-2"
182
+ - ".mt-3"
183
183
  - ".mt-5"
184
184
  - ".mx-auto"
185
185
  - ".no-underline"
@@ -17,9 +17,9 @@
17
17
  "DEFAULT_VARIANT": "default",
18
18
  "SCHEME_MAPPINGS": {
19
19
  "default": "",
20
- "primary": "btn-primary-mktg",
21
- "outline": "btn-outline-mktg",
22
- "transparent": "btn-transparent"
20
+ "primary": "btn-signup-mktg",
21
+ "outline": "btn-muted-mktg",
22
+ "transparent": "btn-subtle-mktg"
23
23
  },
24
24
  "SCHEME_OPTIONS": [
25
25
  "default",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: primer_view_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.61
4
+ version: 0.0.62
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub Open Source
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-17 00:00:00.000000000 Z
11
+ date: 2021-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -511,8 +511,6 @@ files:
511
511
  - app/lib/primer/underline_nav_helper.rb
512
512
  - app/lib/primer/view_helper.rb
513
513
  - lib/primer/classify.rb
514
- - lib/primer/classify/cache.rb
515
- - lib/primer/classify/flex.rb
516
514
  - lib/primer/classify/utilities.rb
517
515
  - lib/primer/classify/utilities.yml
518
516
  - lib/primer/classify/validation.rb
@@ -549,10 +547,12 @@ files:
549
547
  - lib/rubocop/cop/primer.rb
550
548
  - lib/rubocop/cop/primer/base_cop.rb
551
549
  - lib/rubocop/cop/primer/deprecated_arguments.rb
550
+ - lib/rubocop/cop/primer/deprecated_layout_component.rb
552
551
  - lib/rubocop/cop/primer/no_tag_memoize.rb
553
552
  - lib/rubocop/cop/primer/primer_octicon.rb
554
553
  - lib/rubocop/cop/primer/system_argument_instead_of_class.rb
555
554
  - lib/tasks/coverage.rake
555
+ - lib/tasks/custom_utilities.yml
556
556
  - lib/tasks/docs.rake
557
557
  - lib/tasks/helpers/ast_processor.rb
558
558
  - lib/tasks/helpers/ast_traverser.rb
@@ -1,109 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "flex"
4
-
5
- module Primer
6
- class Classify
7
- # :nodoc:
8
- class Cache
9
- include Singleton
10
-
11
- def initialize
12
- @cache_enabled = true
13
- @lookup = {}
14
- end
15
-
16
- private :initialize
17
-
18
- def fetch(breakpoint, key, val)
19
- found = @lookup.dig(breakpoint, key, val)
20
- return found if found
21
-
22
- yield.tap do |result|
23
- set(result, breakpoint, key, val) if @cache_enabled
24
- end
25
- end
26
-
27
- def disable
28
- @cache_enabled = false
29
- yield
30
- @cache_enabled = true
31
- end
32
-
33
- def clear!
34
- @lookup.clear
35
- end
36
-
37
- def preload!
38
- preload(
39
- keys: Primer::Classify::Flex::DIRECTION_KEY,
40
- values: Primer::Classify::Flex::DIRECTION_VALUES
41
- )
42
-
43
- preload(
44
- keys: Primer::Classify::Flex::JUSTIFY_CONTENT_KEY,
45
- values: Primer::Classify::Flex::JUSTIFY_CONTENT_VALUES
46
- )
47
-
48
- preload(
49
- keys: Primer::Classify::Flex::ALIGN_ITEMS_KEY,
50
- values: Primer::Classify::Flex::ALIGN_ITEMS_VALUES
51
- )
52
-
53
- preload(
54
- keys: :text_align,
55
- values: [:left, :center, :right]
56
- )
57
-
58
- preload(
59
- keys: :font_weight,
60
- values: [:bold, :light, :normal]
61
- )
62
-
63
- preload(
64
- keys: Primer::Classify::Flex::FLEX_KEY,
65
- values: Primer::Classify::Flex::FLEX_VALUES
66
- )
67
-
68
- preload(
69
- keys: Primer::Classify::Flex::GROW_KEY,
70
- values: Primer::Classify::Flex::GROW_VALUES
71
- )
72
-
73
- preload(
74
- keys: Primer::Classify::Flex::SHRINK_KEY,
75
- values: Primer::Classify::Flex::SHRINK_VALUES
76
- )
77
-
78
- preload(
79
- keys: Primer::Classify::Flex::ALIGN_SELF_KEY,
80
- values: Primer::Classify::Flex::ALIGN_SELF_VALUES
81
- )
82
-
83
- preload(
84
- keys: Primer::Classify::BOX_SHADOW_KEY,
85
- values: [true, :small, :medium, :large, :extra_large, :none]
86
- )
87
- end
88
-
89
- private
90
-
91
- def preload(keys:, values:)
92
- BREAKPOINTS.each do |breakpoint|
93
- Array(keys).each do |key|
94
- values.each do |value|
95
- classes = Primer::Classify.send(:classes_from, key, value, breakpoint)
96
- set(classes, breakpoint, key, value)
97
- end
98
- end
99
- end
100
- end
101
-
102
- def set(item, breakpoint, key, val)
103
- @lookup[breakpoint] ||= {}
104
- @lookup[breakpoint][key] ||= {}
105
- @lookup[breakpoint][key][val] = item
106
- end
107
- end
108
- end
109
- end
@@ -1,111 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Primer
4
- class Classify
5
- # Handler for PrimerCSS flex classes.
6
- class Flex
7
- extend Primer::FetchOrFallbackHelper
8
-
9
- FLEX_KEY = :flex
10
- FLEX_VALUES = [1, :auto].freeze
11
-
12
- WRAP_KEY = :flex_wrap
13
- WRAP_MAPPINGS = {
14
- wrap: "flex-wrap",
15
- nowrap: "flex-nowrap",
16
- reverse: "flex-wrap-reverse"
17
- }.freeze
18
-
19
- SHRINK_KEY = :flex_shrink
20
- SHRINK_VALUES = [0].freeze
21
-
22
- GROW_KEY = :flex_grow
23
- GROW_VALUES = [0].freeze
24
-
25
- ALIGN_SELF_KEY = :align_self
26
- ALIGN_SELF_VALUES = [:auto, :start, :end, :center, :baseline, :stretch].freeze
27
-
28
- DIRECTION_KEY = :direction
29
- DIRECTION_VALUES = [:column, :column_reverse, :row, :row_reverse].freeze
30
-
31
- JUSTIFY_CONTENT_KEY = :justify_content
32
- JUSTIFY_CONTENT_VALUES = [:flex_start, :flex_end, :center, :space_between, :space_around].freeze
33
-
34
- ALIGN_ITEMS_KEY = :align_items
35
- ALIGN_ITEMS_VALUES = [:flex_start, :flex_end, :center, :baseline, :stretch].freeze
36
-
37
- KEYS = [FLEX_KEY, WRAP_KEY, SHRINK_KEY, GROW_KEY, ALIGN_SELF_KEY, DIRECTION_KEY, JUSTIFY_CONTENT_KEY, ALIGN_ITEMS_KEY].freeze
38
- RESPONSIVE_KEYS = [DIRECTION_KEY, JUSTIFY_CONTENT_KEY, ALIGN_ITEMS_KEY].freeze
39
-
40
- class << self
41
- def classes(key, value, breakpoint)
42
- send(key, value, breakpoint)
43
- end
44
-
45
- private
46
-
47
- def flex(value, _breakpoint)
48
- generate(
49
- value: value,
50
- allowed_values: FLEX_VALUES,
51
- prefix: "flex"
52
- )
53
- end
54
-
55
- def flex_shrink(value, _breakpoint)
56
- generate(
57
- value: value,
58
- allowed_values: SHRINK_VALUES,
59
- prefix: "flex-shrink"
60
- )
61
- end
62
-
63
- def flex_grow(value, _breakpoint)
64
- generate(
65
- value: value,
66
- allowed_values: GROW_VALUES,
67
- prefix: "flex-grow"
68
- )
69
- end
70
-
71
- def align_self(value, _breakpoint)
72
- generate(
73
- value: value,
74
- allowed_values: ALIGN_SELF_VALUES,
75
- prefix: "flex-self"
76
- )
77
- end
78
-
79
- def flex_wrap(value, _breakpoint)
80
- WRAP_MAPPINGS[fetch_or_fallback(WRAP_MAPPINGS.keys, value)]
81
- end
82
-
83
- def direction(value, breakpoint)
84
- val = fetch_or_fallback(DIRECTION_VALUES, value)
85
-
86
- "flex#{breakpoint}-#{val.to_s.dasherize}"
87
- end
88
-
89
- def justify_content(value, breakpoint)
90
- val = fetch_or_fallback(JUSTIFY_CONTENT_VALUES, value)
91
-
92
- formatted_value = val.to_s.gsub(/(flex_|space_)/, "")
93
- "flex#{breakpoint}-justify-#{formatted_value}"
94
- end
95
-
96
- def align_items(value, breakpoint)
97
- val = fetch_or_fallback(ALIGN_ITEMS_VALUES, value)
98
-
99
- formatted_value = val.to_s.gsub("flex_", "")
100
- "flex#{breakpoint}-items-#{formatted_value}"
101
- end
102
-
103
- def generate(value:, allowed_values:, prefix:)
104
- val = fetch_or_fallback(allowed_values, value)
105
-
106
- "#{prefix}-#{val}"
107
- end
108
- end
109
- end
110
- end
111
- end