openproject-primer_view_components 0.49.2 → 0.50.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/CHANGELOG.md +18 -0
- data/app/assets/javascripts/primer_view_components.js +1 -1
- data/app/assets/javascripts/primer_view_components.js.map +1 -1
- data/app/assets/styles/primer_view_components.css +1 -1
- data/app/assets/styles/primer_view_components.css.map +1 -1
- data/app/components/primer/alpha/action_bar.rb +2 -2
- data/app/components/primer/alpha/action_bar_element.js +0 -7
- data/app/components/primer/alpha/action_bar_element.ts +0 -8
- data/app/components/primer/base_component.rb +4 -1
- data/app/components/primer/beta/auto_complete.rb +1 -0
- data/app/components/primer/beta/button.rb +0 -11
- data/app/components/primer/beta/link.css +1 -1
- data/app/components/primer/beta/link.css.json +2 -1
- data/app/components/primer/beta/link.css.map +1 -1
- data/app/components/primer/beta/link.html.erb +18 -0
- data/app/components/primer/beta/link.pcss +9 -0
- data/app/components/primer/beta/link.rb +26 -14
- data/app/components/primer/button_component.rb +0 -11
- data/app/components/primer/component.rb +7 -0
- data/app/components/primer/conditional_wrapper.rb +5 -2
- data/app/forms/horizontal_form.rb +2 -0
- data/app/lib/primer/forms/auto_complete.rb +2 -1
- data/app/lib/primer/forms/dsl/hidden_input.rb +4 -0
- data/app/lib/primer/forms/group.rb +4 -1
- data/lib/primer/classify/utilities.yml +63 -0
- data/lib/primer/classify.rb +1 -26
- data/lib/primer/forms/primer_multi_input.d.ts +10 -0
- data/lib/primer/forms/primer_multi_input.js +44 -0
- data/lib/primer/forms/primer_text_field.d.ts +28 -0
- data/lib/primer/forms/primer_text_field.js +119 -0
- data/lib/primer/forms/toggle_switch_input.d.ts +5 -0
- data/lib/primer/forms/toggle_switch_input.js +34 -0
- data/lib/primer/static/generate_form_previews.rb +44 -0
- data/lib/primer/static.rb +8 -0
- data/lib/primer/view_components/version.rb +2 -2
- data/lib/tasks/custom_utilities.yml +63 -0
- data/previews/primer/beta/link_preview.rb +24 -2
- data/previews/primer/forms_preview.rb +21 -0
- data/static/classes.json +3 -0
- data/static/form_previews.json +113 -0
- metadata +11 -2
@@ -0,0 +1,34 @@
|
|
1
|
+
/* eslint-disable custom-elements/expose-class-on-global */
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
import { controller, target } from '@github/catalyst';
|
9
|
+
let ToggleSwitchInputElement = class ToggleSwitchInputElement extends HTMLElement {
|
10
|
+
connectedCallback() {
|
11
|
+
this.addEventListener('toggleSwitchError', (event) => {
|
12
|
+
this.validationMessageElement.textContent = event.detail;
|
13
|
+
this.validationElement.removeAttribute('hidden');
|
14
|
+
});
|
15
|
+
this.addEventListener('toggleSwitchSuccess', () => {
|
16
|
+
this.validationMessageElement.textContent = '';
|
17
|
+
this.validationElement.setAttribute('hidden', 'hidden');
|
18
|
+
});
|
19
|
+
this.addEventListener('toggleSwitchLoading', () => {
|
20
|
+
this.validationMessageElement.textContent = '';
|
21
|
+
this.validationElement.setAttribute('hidden', 'hidden');
|
22
|
+
});
|
23
|
+
}
|
24
|
+
};
|
25
|
+
__decorate([
|
26
|
+
target
|
27
|
+
], ToggleSwitchInputElement.prototype, "validationElement", void 0);
|
28
|
+
__decorate([
|
29
|
+
target
|
30
|
+
], ToggleSwitchInputElement.prototype, "validationMessageElement", void 0);
|
31
|
+
ToggleSwitchInputElement = __decorate([
|
32
|
+
controller
|
33
|
+
], ToggleSwitchInputElement);
|
34
|
+
export { ToggleSwitchInputElement };
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :nocov:
|
4
|
+
|
5
|
+
require "json"
|
6
|
+
|
7
|
+
module Primer
|
8
|
+
module Static
|
9
|
+
# :nodoc:
|
10
|
+
module GenerateFormPreviews
|
11
|
+
class << self
|
12
|
+
def call
|
13
|
+
Lookbook.previews.filter_map do |preview|
|
14
|
+
next unless preview.preview_class == Primer::FormsPreview
|
15
|
+
|
16
|
+
{
|
17
|
+
name: preview.name,
|
18
|
+
lookup_path: preview.lookup_path,
|
19
|
+
examples: preview.scenarios.flat_map do |parent_scenario|
|
20
|
+
scenarios = parent_scenario.type == :scenario_group ? parent_scenario.scenarios : [parent_scenario]
|
21
|
+
|
22
|
+
scenarios.map do |scenario|
|
23
|
+
snapshot_tag = scenario.tags.find { |tag| tag.tag_name == "snapshot" }
|
24
|
+
snapshot = if snapshot_tag.nil?
|
25
|
+
"false"
|
26
|
+
elsif snapshot_tag.text.blank?
|
27
|
+
"true"
|
28
|
+
else
|
29
|
+
snapshot_tag.text
|
30
|
+
end
|
31
|
+
{
|
32
|
+
preview_path: scenario.lookup_path,
|
33
|
+
name: scenario.name,
|
34
|
+
snapshot: snapshot
|
35
|
+
}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/lib/primer/static.rb
CHANGED
@@ -15,6 +15,7 @@ module Primer
|
|
15
15
|
audited_at: "audited_at.json",
|
16
16
|
arguments: "arguments.json",
|
17
17
|
previews: "previews.json",
|
18
|
+
form_previews: "form_previews.json",
|
18
19
|
info_arch: "info_arch.json"
|
19
20
|
}.freeze
|
20
21
|
|
@@ -50,6 +51,13 @@ module Primer
|
|
50
51
|
Static::GeneratePreviews.call
|
51
52
|
end
|
52
53
|
|
54
|
+
# Returns an array of hashes, one per example form, that contains some metadata and
|
55
|
+
# an array of all the form's previews. The preview data contains the Lookbook URL
|
56
|
+
# to each preview and its name.
|
57
|
+
def self.generate_form_previews
|
58
|
+
Static::GenerateFormPreviews.call
|
59
|
+
end
|
60
|
+
|
53
61
|
# Returns an array of hashes, one per Primer component, that contains all the data needed
|
54
62
|
# for the new primer.style docsite.
|
55
63
|
def self.generate_info_arch
|
@@ -370,3 +370,66 @@
|
|
370
370
|
- flex-md-shrink-0
|
371
371
|
- flex-lg-shrink-0
|
372
372
|
- flex-xl-shrink-0
|
373
|
+
:overflow:
|
374
|
+
:auto:
|
375
|
+
- overflow-auto
|
376
|
+
- overflow-sm-auto
|
377
|
+
- overflow-lg-auto
|
378
|
+
- overflow-xl-auto
|
379
|
+
:hidden:
|
380
|
+
- overflow-hidden
|
381
|
+
- overflow-sm-hidden
|
382
|
+
- overflow-lg-hidden
|
383
|
+
- overflow-xl-hidden
|
384
|
+
:scroll:
|
385
|
+
- overflow-scroll
|
386
|
+
- overflow-sm-scroll
|
387
|
+
- overflow-lg-scroll
|
388
|
+
- overflow-xl-scroll
|
389
|
+
:visible:
|
390
|
+
- overflow-visible
|
391
|
+
- overflow-sm-visible
|
392
|
+
- overflow-lg-visible
|
393
|
+
- overflow-xl-visible
|
394
|
+
:overflow_x:
|
395
|
+
:auto:
|
396
|
+
- overflow-x-auto
|
397
|
+
- overflow-sm-x-auto
|
398
|
+
- overflow-lg-x-auto
|
399
|
+
- overflow-xl-x-auto
|
400
|
+
:hidden:
|
401
|
+
- overflow-x-hidden
|
402
|
+
- overflow-sm-x-hidden
|
403
|
+
- overflow-lg-x-hidden
|
404
|
+
- overflow-xl-x-hidden
|
405
|
+
:scroll:
|
406
|
+
- overflow-x-scroll
|
407
|
+
- overflow-sm-x-scroll
|
408
|
+
- overflow-lg-x-scroll
|
409
|
+
- overflow-xl-x-scroll
|
410
|
+
:visible:
|
411
|
+
- overflow-x-visible
|
412
|
+
- overflow-sm-x-visible
|
413
|
+
- overflow-lg-x-visible
|
414
|
+
- overflow-xl-x-visible
|
415
|
+
:overflow_y:
|
416
|
+
:auto:
|
417
|
+
- overflow-y-auto
|
418
|
+
- overflow-sm-y-auto
|
419
|
+
- overflow-lg-y-auto
|
420
|
+
- overflow-xl-y-auto
|
421
|
+
:hidden:
|
422
|
+
- overflow-y-hidden
|
423
|
+
- overflow-sm-y-hidden
|
424
|
+
- overflow-lg-y-hidden
|
425
|
+
- overflow-xl-y-hidden
|
426
|
+
:scroll:
|
427
|
+
- overflow-y-scroll
|
428
|
+
- overflow-sm-y-scroll
|
429
|
+
- overflow-lg-y-scroll
|
430
|
+
- overflow-xl-y-scroll
|
431
|
+
:visible:
|
432
|
+
- overflow-y-visible
|
433
|
+
- overflow-sm-y-visible
|
434
|
+
- overflow-lg-y-visible
|
435
|
+
- overflow-xl-y-visible
|
@@ -9,8 +9,14 @@ module Primer
|
|
9
9
|
# @param underline [Boolean]
|
10
10
|
# @param muted [Boolean]
|
11
11
|
# @param scheme [Symbol] select [default, primary, secondary]
|
12
|
-
|
13
|
-
|
12
|
+
# @param leading_visual_icon [Symbol] octicon
|
13
|
+
# @param trailing_visual_icon [Symbol] octicon
|
14
|
+
def playground(scheme: :default, muted: false, underline: true, leading_visual_icon: nil, trailing_visual_icon: nil)
|
15
|
+
render(Primer::Beta::Link.new(href: "#", scheme: scheme, muted: muted, underline: underline)) do |link|
|
16
|
+
link.with_leading_visual_icon(icon: leading_visual_icon) if leading_visual_icon && leading_visual_icon != :none
|
17
|
+
link.with_trailing_visual_icon(icon: trailing_visual_icon) if trailing_visual_icon && trailing_visual_icon != :none
|
18
|
+
"This is a link!"
|
19
|
+
end
|
14
20
|
end
|
15
21
|
|
16
22
|
# @label Default Options
|
@@ -66,6 +72,22 @@ module Primer
|
|
66
72
|
render(Primer::Beta::Link.new(href: "#", scheme: :secondary, muted: true)) { "This is a muted secondary link color." }
|
67
73
|
end
|
68
74
|
# @!endgroup
|
75
|
+
|
76
|
+
# @label With leading icon
|
77
|
+
def with_leading_icon
|
78
|
+
render(Primer::Beta::Link.new(href: "#")) do |component|
|
79
|
+
component.with_leading_visual_icon(icon: :"mark-github")
|
80
|
+
"Link with leading icon"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# @label With trailing icon
|
85
|
+
def with_trailing_icon
|
86
|
+
render(Primer::Beta::Link.new(href: "#")) do |component|
|
87
|
+
component.with_trailing_visual_icon(icon: :"link-external")
|
88
|
+
"Link with trailing icon"
|
89
|
+
end
|
90
|
+
end
|
69
91
|
end
|
70
92
|
end
|
71
93
|
end
|
@@ -3,50 +3,71 @@
|
|
3
3
|
module Primer
|
4
4
|
# :nodoc:
|
5
5
|
class FormsPreview < ViewComponent::Preview
|
6
|
+
# @snapshot
|
6
7
|
def single_text_field_form; end
|
7
8
|
|
9
|
+
# @snapshot
|
8
10
|
def multi_text_field_form; end
|
9
11
|
|
10
12
|
def custom_width_fields_form; end
|
11
13
|
|
14
|
+
# @snapshot
|
12
15
|
def text_field_and_checkbox_form; end
|
13
16
|
|
17
|
+
# @snapshot
|
14
18
|
def horizontal_form; end
|
15
19
|
|
20
|
+
# @snapshot
|
16
21
|
def composed_form; end
|
17
22
|
|
23
|
+
# @snapshot
|
18
24
|
def submit_button_form; end
|
19
25
|
|
26
|
+
# @snapshot
|
20
27
|
def radio_button_group_form; end
|
21
28
|
|
29
|
+
# @snapshot
|
22
30
|
def check_box_group_form; end
|
23
31
|
|
32
|
+
# @snapshot
|
24
33
|
def array_check_box_group_form; end
|
25
34
|
|
35
|
+
# @snapshot
|
26
36
|
def select_form; end
|
27
37
|
|
38
|
+
# @snapshot
|
28
39
|
def action_menu_form(route_format: :html)
|
29
40
|
render_with_template(locals: { route_format: route_format })
|
30
41
|
end
|
31
42
|
|
43
|
+
# @snapshot
|
32
44
|
def radio_button_with_nested_form; end
|
33
45
|
|
46
|
+
# @snapshot
|
34
47
|
def check_box_with_nested_form; end
|
35
48
|
|
49
|
+
# @snapshot
|
36
50
|
def caption_template_form; end
|
37
51
|
|
52
|
+
# @snapshot
|
38
53
|
def after_content_form; end
|
39
54
|
|
55
|
+
# @snapshot
|
40
56
|
def invalid_form; end
|
41
57
|
|
58
|
+
# @snapshot
|
42
59
|
def multi_input_form; end
|
43
60
|
|
61
|
+
# @snapshot
|
44
62
|
def name_with_question_mark_form; end
|
45
63
|
|
64
|
+
# @snapshot
|
46
65
|
def immediate_validation_form; end
|
47
66
|
|
67
|
+
# @snapshot
|
48
68
|
def example_toggle_switch_form; end
|
49
69
|
|
70
|
+
# @snapshot
|
50
71
|
def auto_complete_form; end
|
51
72
|
end
|
52
73
|
end
|
data/static/classes.json
CHANGED
@@ -0,0 +1,113 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"name": "forms",
|
4
|
+
"lookup_path": "primer/forms",
|
5
|
+
"examples": [
|
6
|
+
{
|
7
|
+
"preview_path": "primer/forms/single_text_field_form",
|
8
|
+
"name": "single_text_field_form",
|
9
|
+
"snapshot": "true"
|
10
|
+
},
|
11
|
+
{
|
12
|
+
"preview_path": "primer/forms/multi_text_field_form",
|
13
|
+
"name": "multi_text_field_form",
|
14
|
+
"snapshot": "true"
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"preview_path": "primer/forms/text_field_and_checkbox_form",
|
18
|
+
"name": "text_field_and_checkbox_form",
|
19
|
+
"snapshot": "true"
|
20
|
+
},
|
21
|
+
{
|
22
|
+
"preview_path": "primer/forms/horizontal_form",
|
23
|
+
"name": "horizontal_form",
|
24
|
+
"snapshot": "true"
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"preview_path": "primer/forms/composed_form",
|
28
|
+
"name": "composed_form",
|
29
|
+
"snapshot": "true"
|
30
|
+
},
|
31
|
+
{
|
32
|
+
"preview_path": "primer/forms/submit_button_form",
|
33
|
+
"name": "submit_button_form",
|
34
|
+
"snapshot": "true"
|
35
|
+
},
|
36
|
+
{
|
37
|
+
"preview_path": "primer/forms/radio_button_group_form",
|
38
|
+
"name": "radio_button_group_form",
|
39
|
+
"snapshot": "true"
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"preview_path": "primer/forms/check_box_group_form",
|
43
|
+
"name": "check_box_group_form",
|
44
|
+
"snapshot": "true"
|
45
|
+
},
|
46
|
+
{
|
47
|
+
"preview_path": "primer/forms/array_check_box_group_form",
|
48
|
+
"name": "array_check_box_group_form",
|
49
|
+
"snapshot": "true"
|
50
|
+
},
|
51
|
+
{
|
52
|
+
"preview_path": "primer/forms/select_form",
|
53
|
+
"name": "select_form",
|
54
|
+
"snapshot": "true"
|
55
|
+
},
|
56
|
+
{
|
57
|
+
"preview_path": "primer/forms/action_menu_form",
|
58
|
+
"name": "action_menu_form",
|
59
|
+
"snapshot": "true"
|
60
|
+
},
|
61
|
+
{
|
62
|
+
"preview_path": "primer/forms/radio_button_with_nested_form",
|
63
|
+
"name": "radio_button_with_nested_form",
|
64
|
+
"snapshot": "true"
|
65
|
+
},
|
66
|
+
{
|
67
|
+
"preview_path": "primer/forms/check_box_with_nested_form",
|
68
|
+
"name": "check_box_with_nested_form",
|
69
|
+
"snapshot": "true"
|
70
|
+
},
|
71
|
+
{
|
72
|
+
"preview_path": "primer/forms/caption_template_form",
|
73
|
+
"name": "caption_template_form",
|
74
|
+
"snapshot": "true"
|
75
|
+
},
|
76
|
+
{
|
77
|
+
"preview_path": "primer/forms/after_content_form",
|
78
|
+
"name": "after_content_form",
|
79
|
+
"snapshot": "true"
|
80
|
+
},
|
81
|
+
{
|
82
|
+
"preview_path": "primer/forms/invalid_form",
|
83
|
+
"name": "invalid_form",
|
84
|
+
"snapshot": "true"
|
85
|
+
},
|
86
|
+
{
|
87
|
+
"preview_path": "primer/forms/multi_input_form",
|
88
|
+
"name": "multi_input_form",
|
89
|
+
"snapshot": "true"
|
90
|
+
},
|
91
|
+
{
|
92
|
+
"preview_path": "primer/forms/name_with_question_mark_form",
|
93
|
+
"name": "name_with_question_mark_form",
|
94
|
+
"snapshot": "true"
|
95
|
+
},
|
96
|
+
{
|
97
|
+
"preview_path": "primer/forms/immediate_validation_form",
|
98
|
+
"name": "immediate_validation_form",
|
99
|
+
"snapshot": "true"
|
100
|
+
},
|
101
|
+
{
|
102
|
+
"preview_path": "primer/forms/example_toggle_switch_form",
|
103
|
+
"name": "example_toggle_switch_form",
|
104
|
+
"snapshot": "true"
|
105
|
+
},
|
106
|
+
{
|
107
|
+
"preview_path": "primer/forms/auto_complete_form",
|
108
|
+
"name": "auto_complete_form",
|
109
|
+
"snapshot": "true"
|
110
|
+
}
|
111
|
+
]
|
112
|
+
}
|
113
|
+
]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openproject-primer_view_components
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.50.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub Open Source
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-
|
12
|
+
date: 2024-12-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionview
|
@@ -402,6 +402,7 @@ files:
|
|
402
402
|
- app/components/primer/beta/link.css
|
403
403
|
- app/components/primer/beta/link.css.json
|
404
404
|
- app/components/primer/beta/link.css.map
|
405
|
+
- app/components/primer/beta/link.html.erb
|
405
406
|
- app/components/primer/beta/link.pcss
|
406
407
|
- app/components/primer/beta/link.rb
|
407
408
|
- app/components/primer/beta/markdown.rb
|
@@ -718,10 +719,17 @@ files:
|
|
718
719
|
- lib/primer/deprecations.yml
|
719
720
|
- lib/primer/example_image.rb
|
720
721
|
- lib/primer/form_components.rb
|
722
|
+
- lib/primer/forms/primer_multi_input.d.ts
|
723
|
+
- lib/primer/forms/primer_multi_input.js
|
724
|
+
- lib/primer/forms/primer_text_field.d.ts
|
725
|
+
- lib/primer/forms/primer_text_field.js
|
726
|
+
- lib/primer/forms/toggle_switch_input.d.ts
|
727
|
+
- lib/primer/forms/toggle_switch_input.js
|
721
728
|
- lib/primer/static.rb
|
722
729
|
- lib/primer/static/generate_arguments.rb
|
723
730
|
- lib/primer/static/generate_audited_at.rb
|
724
731
|
- lib/primer/static/generate_constants.rb
|
732
|
+
- lib/primer/static/generate_form_previews.rb
|
725
733
|
- lib/primer/static/generate_info_arch.rb
|
726
734
|
- lib/primer/static/generate_previews.rb
|
727
735
|
- lib/primer/static/generate_statuses.rb
|
@@ -1037,6 +1045,7 @@ files:
|
|
1037
1045
|
- static/audited_at.json
|
1038
1046
|
- static/classes.json
|
1039
1047
|
- static/constants.json
|
1048
|
+
- static/form_previews.json
|
1040
1049
|
- static/info_arch.json
|
1041
1050
|
- static/previews.json
|
1042
1051
|
- static/statuses.json
|