playbook_ui 7.1.0 → 7.3.0.pre.alpha1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/pb_body/body.rb +1 -1
- data/app/pb_kits/playbook/pb_caption/_caption.html.erb +7 -5
- data/app/pb_kits/playbook/pb_caption/docs/_caption_block.html.erb +11 -0
- data/app/pb_kits/playbook/pb_caption/docs/_caption_block.jsx +28 -0
- data/app/pb_kits/playbook/pb_caption/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_caption/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_date/_date.html.erb +64 -8
- data/app/pb_kits/playbook/pb_date/_date.jsx +115 -66
- data/app/pb_kits/playbook/pb_date/_date.scss +30 -0
- data/app/pb_kits/playbook/pb_date/date.rb +21 -9
- data/app/pb_kits/playbook/pb_date/docs/_date_alignment.html.erb +24 -0
- data/app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx +35 -0
- data/app/pb_kits/playbook/pb_date/docs/_date_default.html.erb +21 -6
- data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +43 -12
- data/app/pb_kits/playbook/pb_date/docs/_date_variants.html.erb +27 -0
- data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +43 -0
- data/app/pb_kits/playbook/pb_date/docs/example.yml +4 -0
- data/app/pb_kits/playbook/pb_date/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_nav/_item.html.erb +3 -0
- data/app/pb_kits/playbook/pb_nav/_item.jsx +14 -1
- data/app/pb_kits/playbook/pb_nav/_nav.jsx +3 -0
- data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +22 -3
- data/app/pb_kits/playbook/pb_nav/docs/_borderless_nav.html.erb +6 -0
- data/app/pb_kits/playbook/pb_nav/docs/_borderless_nav.jsx +29 -0
- data/app/pb_kits/playbook/pb_nav/docs/_with_img_nav.html.erb +7 -0
- data/app/pb_kits/playbook/pb_nav/docs/_with_img_nav.jsx +42 -0
- data/app/pb_kits/playbook/pb_nav/docs/_with_img_nav.md +1 -0
- data/app/pb_kits/playbook/pb_nav/docs/example.yml +5 -0
- data/app/pb_kits/playbook/pb_nav/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_nav/item.rb +1 -0
- data/app/pb_kits/playbook/pb_nav/nav.rb +6 -1
- data/app/pb_kits/playbook/pb_pill/_pill.scss +1 -0
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.jsx +1 -3
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +26 -47
- data/app/pb_kits/playbook/pb_section_separator/_section_separator_mixin.scss +32 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_line.jsx +6 -2
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.jsx +2 -1
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text_background.jsx +2 -1
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_vertical.jsx +9 -3
- data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +1 -1
- data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.html.erb +4 -4
- data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_options.html.erb +16 -0
- data/app/pb_kits/playbook/pb_selectable_card/docs/example.yml +3 -2
- data/app/pb_kits/playbook/pb_selectable_card/selectable_card.rb +16 -9
- data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.html.erb +3 -2
- data/app/pb_kits/playbook/pb_selectable_card_icon/docs/_selectable_card_icon_options.html.erb +16 -0
- data/app/pb_kits/playbook/pb_selectable_card_icon/docs/example.yml +4 -3
- data/app/pb_kits/playbook/pb_selectable_card_icon/selectable_card_icon.rb +3 -0
- data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.html.erb +3 -3
- data/app/pb_kits/playbook/pb_selectable_icon/docs/_selectable_icon_options.html.erb +15 -0
- data/app/pb_kits/playbook/pb_selectable_icon/docs/example.yml +3 -2
- data/app/pb_kits/playbook/pb_selectable_icon/selectable_icon.rb +10 -0
- data/app/pb_kits/playbook/pb_time/_time.html.erb +17 -20
- data/app/pb_kits/playbook/pb_time/_time.jsx +40 -27
- data/app/pb_kits/playbook/pb_time/_time.scss +4 -24
- data/app/pb_kits/playbook/pb_time/docs/_time_align.jsx +4 -1
- data/app/pb_kits/playbook/pb_time/docs/_time_default.html.erb +11 -11
- data/app/pb_kits/playbook/pb_time/docs/_time_default.jsx +13 -1
- data/app/pb_kits/playbook/pb_time/docs/_time_sizes.jsx +4 -1
- data/app/pb_kits/playbook/pb_time/docs/_time_timestamp.jsx +3 -1
- data/app/pb_kits/playbook/pb_time/docs/_time_timezone.jsx +7 -2
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default.html.erb +3 -2
- data/app/pb_kits/playbook/props.rb +1 -1
- data/app/pb_kits/playbook/props/base.rb +6 -4
- data/lib/playbook/version.rb +1 -1
- metadata +21 -19
- data/lib/generators/kit/USAGE +0 -5
- data/lib/generators/kit/kit_generator.rb +0 -95
- data/lib/generators/kit/templates/kit_example_rails.erb.tt +0 -1
- data/lib/generators/kit/templates/kit_example_react.erb.tt +0 -10
- data/lib/generators/kit/templates/kit_example_yml.erb.tt +0 -9
- data/lib/generators/kit/templates/kit_html.erb.tt +0 -7
- data/lib/generators/kit/templates/kit_js.erb.tt +0 -1
- data/lib/generators/kit/templates/kit_jsx.erb.tt +0 -68
- data/lib/generators/kit/templates/kit_ruby.erb.tt +0 -11
- data/lib/generators/kit/templates/kit_ruby_spec.erb.tt +0 -11
- data/lib/generators/kit/templates/kit_scss.erb +0 -3
- data/lib/tasks/changelog.rake +0 -14
- data/lib/tasks/pb_release.rake +0 -88
- data/lib/tasks/playbook_tasks.rake +0 -26
@@ -1,16 +1,19 @@
|
|
1
1
|
import React, { Fragment } from 'react'
|
2
2
|
import Time from '../_time.jsx'
|
3
3
|
|
4
|
-
const TimeSizes = () => {
|
4
|
+
const TimeSizes = (props) => {
|
5
5
|
return (
|
6
6
|
<Fragment>
|
7
7
|
<Time
|
8
8
|
date={new Date()}
|
9
|
+
{...props}
|
9
10
|
/>
|
10
11
|
<br />
|
11
12
|
<Time
|
12
13
|
date={new Date()}
|
13
14
|
size="md"
|
15
|
+
timeZone="America/New_York"
|
16
|
+
{...props}
|
14
17
|
/>
|
15
18
|
</Fragment>
|
16
19
|
)
|
@@ -1,12 +1,13 @@
|
|
1
1
|
import React from 'react'
|
2
2
|
import Time from '../_time.jsx'
|
3
3
|
|
4
|
-
const TimeStamp = () => {
|
4
|
+
const TimeStamp = (props) => {
|
5
5
|
return (
|
6
6
|
<div>
|
7
7
|
<Time
|
8
8
|
date={new Date()}
|
9
9
|
size="sm"
|
10
|
+
{...props}
|
10
11
|
/>
|
11
12
|
|
12
13
|
<br />
|
@@ -14,6 +15,7 @@ const TimeStamp = () => {
|
|
14
15
|
<Time
|
15
16
|
date={new Date().getTime()}
|
16
17
|
size="sm"
|
18
|
+
{...props}
|
17
19
|
/>
|
18
20
|
</div>
|
19
21
|
)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import React from 'react'
|
2
2
|
import Time from '../_time.jsx'
|
3
3
|
|
4
|
-
const
|
4
|
+
const TimeTimezone = (props) => {
|
5
5
|
const zones = {
|
6
6
|
east: 'America/New_York',
|
7
7
|
central: 'America/Chicago',
|
@@ -16,6 +16,7 @@ const TimeTimeZone = () => {
|
|
16
16
|
date={new Date()}
|
17
17
|
size="md"
|
18
18
|
timeZone={zones.east}
|
19
|
+
{...props}
|
19
20
|
/>
|
20
21
|
|
21
22
|
<br />
|
@@ -24,6 +25,7 @@ const TimeTimeZone = () => {
|
|
24
25
|
<Time
|
25
26
|
date={new Date()}
|
26
27
|
timeZone={zones.central}
|
28
|
+
{...props}
|
27
29
|
/>
|
28
30
|
|
29
31
|
<br />
|
@@ -32,6 +34,7 @@ const TimeTimeZone = () => {
|
|
32
34
|
<Time
|
33
35
|
date={new Date()}
|
34
36
|
timeZone={zones.mountain}
|
37
|
+
{...props}
|
35
38
|
/>
|
36
39
|
|
37
40
|
<br />
|
@@ -40,6 +43,7 @@ const TimeTimeZone = () => {
|
|
40
43
|
<Time
|
41
44
|
date={new Date()}
|
42
45
|
timeZone={zones.west}
|
46
|
+
{...props}
|
43
47
|
/>
|
44
48
|
|
45
49
|
<br />
|
@@ -48,10 +52,11 @@ const TimeTimeZone = () => {
|
|
48
52
|
<Time
|
49
53
|
date={new Date()}
|
50
54
|
timeZone={zones.asia}
|
55
|
+
{...props}
|
51
56
|
/>
|
52
57
|
|
53
58
|
</div>
|
54
59
|
)
|
55
60
|
}
|
56
61
|
|
57
|
-
export default
|
62
|
+
export default TimeTimezone
|
@@ -19,7 +19,8 @@
|
|
19
19
|
name: tag(:slot, name: "name"),
|
20
20
|
orientation: "horizontal",
|
21
21
|
align: "left",
|
22
|
-
avatar_url: "
|
22
|
+
avatar_url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR4nGP6zwAAAgcBApocMXEAAAAASUVORK5CYII=",
|
23
|
+
avatar: true
|
23
24
|
}) %>
|
24
25
|
</template>
|
25
26
|
|
@@ -35,7 +36,7 @@
|
|
35
36
|
event.detail.setResults((result.items || []).map((user) => {
|
36
37
|
const wrapper = resultOptionTemplate.content.cloneNode(true)
|
37
38
|
wrapper.querySelector('slot[name="name"]').replaceWith(user.login)
|
38
|
-
wrapper.querySelector('img').
|
39
|
+
wrapper.querySelector('img').dataset.src = user.avatar_url
|
39
40
|
return wrapper
|
40
41
|
}))
|
41
42
|
})
|
@@ -124,7 +124,7 @@ module Playbook
|
|
124
124
|
|
125
125
|
def prop(name, type: Playbook::Props::String, **options)
|
126
126
|
@props ||= {}
|
127
|
-
@props[name] = type.new(
|
127
|
+
@props[name] = type.new(options.merge(name: name, kit: self))
|
128
128
|
|
129
129
|
define_method(name) { prop(name) }
|
130
130
|
end
|
@@ -5,11 +5,13 @@ module Playbook
|
|
5
5
|
class Error < StandardError; end
|
6
6
|
|
7
7
|
class Base
|
8
|
-
attr_reader :default, :required
|
8
|
+
attr_reader :default, :required, :name, :kit
|
9
9
|
|
10
|
-
def initialize(default: nil, required: false)
|
10
|
+
def initialize(default: nil, required: false, name:, kit:)
|
11
11
|
@default = default
|
12
12
|
@required = required
|
13
|
+
@name = name
|
14
|
+
@kit = kit
|
13
15
|
end
|
14
16
|
|
15
17
|
def value(value)
|
@@ -17,10 +19,10 @@ module Playbook
|
|
17
19
|
end
|
18
20
|
|
19
21
|
def validate!(input_value)
|
20
|
-
raise(Playbook::Props::Error, "#{inspect} is
|
22
|
+
raise(Playbook::Props::Error, "#{kit} prop '#{name}' of type #{inspect.class} is required and needs a value") if required && input_value.nil?
|
21
23
|
|
22
24
|
validate(value(input_value)) ||
|
23
|
-
raise(Playbook::Props::Error, "
|
25
|
+
raise(Playbook::Props::Error, "#{kit} has invalid value of '#{input_value.inspect}' for prop '#{name}' of type #{inspect.class}")
|
24
26
|
end
|
25
27
|
|
26
28
|
def validate(_value)
|
data/lib/playbook/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playbook_ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.3.0.pre.alpha1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Power UX
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-10-
|
12
|
+
date: 2020-10-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -530,6 +530,8 @@ files:
|
|
530
530
|
- app/pb_kits/playbook/pb_caption/_caption.scss
|
531
531
|
- app/pb_kits/playbook/pb_caption/_caption_mixin.scss
|
532
532
|
- app/pb_kits/playbook/pb_caption/caption.rb
|
533
|
+
- app/pb_kits/playbook/pb_caption/docs/_caption_block.html.erb
|
534
|
+
- app/pb_kits/playbook/pb_caption/docs/_caption_block.jsx
|
533
535
|
- app/pb_kits/playbook/pb_caption/docs/_caption_light.html.erb
|
534
536
|
- app/pb_kits/playbook/pb_caption/docs/_caption_light.jsx
|
535
537
|
- app/pb_kits/playbook/pb_caption/docs/_caption_variants.html.erb
|
@@ -666,10 +668,14 @@ files:
|
|
666
668
|
- app/pb_kits/playbook/pb_date/_date.jsx
|
667
669
|
- app/pb_kits/playbook/pb_date/_date.scss
|
668
670
|
- app/pb_kits/playbook/pb_date/date.rb
|
671
|
+
- app/pb_kits/playbook/pb_date/docs/_date_alignment.html.erb
|
672
|
+
- app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx
|
669
673
|
- app/pb_kits/playbook/pb_date/docs/_date_default.html.erb
|
670
674
|
- app/pb_kits/playbook/pb_date/docs/_date_default.jsx
|
671
675
|
- app/pb_kits/playbook/pb_date/docs/_date_timezone.html.erb
|
672
676
|
- app/pb_kits/playbook/pb_date/docs/_date_timezone.md
|
677
|
+
- app/pb_kits/playbook/pb_date/docs/_date_variants.html.erb
|
678
|
+
- app/pb_kits/playbook/pb_date/docs/_date_variants.jsx
|
673
679
|
- app/pb_kits/playbook/pb_date/docs/_description.md
|
674
680
|
- app/pb_kits/playbook/pb_date/docs/example.yml
|
675
681
|
- app/pb_kits/playbook/pb_date/docs/index.js
|
@@ -1213,6 +1219,8 @@ files:
|
|
1213
1219
|
- app/pb_kits/playbook/pb_nav/docs/_block_nav.jsx
|
1214
1220
|
- app/pb_kits/playbook/pb_nav/docs/_block_no_title_nav.html.erb
|
1215
1221
|
- app/pb_kits/playbook/pb_nav/docs/_block_no_title_nav.jsx
|
1222
|
+
- app/pb_kits/playbook/pb_nav/docs/_borderless_nav.html.erb
|
1223
|
+
- app/pb_kits/playbook/pb_nav/docs/_borderless_nav.jsx
|
1216
1224
|
- app/pb_kits/playbook/pb_nav/docs/_default_nav.html.erb
|
1217
1225
|
- app/pb_kits/playbook/pb_nav/docs/_default_nav.jsx
|
1218
1226
|
- app/pb_kits/playbook/pb_nav/docs/_description.md
|
@@ -1228,6 +1236,9 @@ files:
|
|
1228
1236
|
- app/pb_kits/playbook/pb_nav/docs/_subtle_with_icons_nav.jsx
|
1229
1237
|
- app/pb_kits/playbook/pb_nav/docs/_with_icons_nav.html.erb
|
1230
1238
|
- app/pb_kits/playbook/pb_nav/docs/_with_icons_nav.jsx
|
1239
|
+
- app/pb_kits/playbook/pb_nav/docs/_with_img_nav.html.erb
|
1240
|
+
- app/pb_kits/playbook/pb_nav/docs/_with_img_nav.jsx
|
1241
|
+
- app/pb_kits/playbook/pb_nav/docs/_with_img_nav.md
|
1231
1242
|
- app/pb_kits/playbook/pb_nav/docs/example.yml
|
1232
1243
|
- app/pb_kits/playbook/pb_nav/docs/index.js
|
1233
1244
|
- app/pb_kits/playbook/pb_nav/item.rb
|
@@ -1374,6 +1385,7 @@ files:
|
|
1374
1385
|
- app/pb_kits/playbook/pb_section_separator/_section_separator.html.erb
|
1375
1386
|
- app/pb_kits/playbook/pb_section_separator/_section_separator.jsx
|
1376
1387
|
- app/pb_kits/playbook/pb_section_separator/_section_separator.scss
|
1388
|
+
- app/pb_kits/playbook/pb_section_separator/_section_separator_mixin.scss
|
1377
1389
|
- app/pb_kits/playbook/pb_section_separator/docs/_description.md
|
1378
1390
|
- app/pb_kits/playbook/pb_section_separator/docs/_footer.md
|
1379
1391
|
- app/pb_kits/playbook/pb_section_separator/docs/_section_separator_line.html.erb
|
@@ -1423,6 +1435,7 @@ files:
|
|
1423
1435
|
- app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_default.html.erb
|
1424
1436
|
- app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_default.jsx
|
1425
1437
|
- app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_default.md
|
1438
|
+
- app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_options.html.erb
|
1426
1439
|
- app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_single_select.html.erb
|
1427
1440
|
- app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_single_select.jsx
|
1428
1441
|
- app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_single_select.md
|
@@ -1436,6 +1449,7 @@ files:
|
|
1436
1449
|
- app/pb_kits/playbook/pb_selectable_card_icon/docs/_selectable_card_icon_checkmark.jsx
|
1437
1450
|
- app/pb_kits/playbook/pb_selectable_card_icon/docs/_selectable_card_icon_default.html.erb
|
1438
1451
|
- app/pb_kits/playbook/pb_selectable_card_icon/docs/_selectable_card_icon_default.jsx
|
1452
|
+
- app/pb_kits/playbook/pb_selectable_card_icon/docs/_selectable_card_icon_options.html.erb
|
1439
1453
|
- app/pb_kits/playbook/pb_selectable_card_icon/docs/_selectable_card_icon_single_select.html.erb
|
1440
1454
|
- app/pb_kits/playbook/pb_selectable_card_icon/docs/_selectable_card_icon_single_select.jsx
|
1441
1455
|
- app/pb_kits/playbook/pb_selectable_card_icon/docs/example.yml
|
@@ -1446,6 +1460,7 @@ files:
|
|
1446
1460
|
- app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.scss
|
1447
1461
|
- app/pb_kits/playbook/pb_selectable_icon/docs/_selectable_icon_default.html.erb
|
1448
1462
|
- app/pb_kits/playbook/pb_selectable_icon/docs/_selectable_icon_default.jsx
|
1463
|
+
- app/pb_kits/playbook/pb_selectable_icon/docs/_selectable_icon_options.html.erb
|
1449
1464
|
- app/pb_kits/playbook/pb_selectable_icon/docs/_selectable_icon_single_select.html.erb
|
1450
1465
|
- app/pb_kits/playbook/pb_selectable_icon/docs/_selectable_icon_single_select.jsx
|
1451
1466
|
- app/pb_kits/playbook/pb_selectable_icon/docs/example.yml
|
@@ -1836,24 +1851,10 @@ files:
|
|
1836
1851
|
- app/pb_kits/playbook/vendor.js
|
1837
1852
|
- fonts/fontawesome-min.js
|
1838
1853
|
- fonts/regular-min.js
|
1839
|
-
- lib/generators/kit/USAGE
|
1840
|
-
- lib/generators/kit/kit_generator.rb
|
1841
|
-
- lib/generators/kit/templates/kit_example_rails.erb.tt
|
1842
|
-
- lib/generators/kit/templates/kit_example_react.erb.tt
|
1843
|
-
- lib/generators/kit/templates/kit_example_yml.erb.tt
|
1844
|
-
- lib/generators/kit/templates/kit_html.erb.tt
|
1845
|
-
- lib/generators/kit/templates/kit_js.erb.tt
|
1846
|
-
- lib/generators/kit/templates/kit_jsx.erb.tt
|
1847
|
-
- lib/generators/kit/templates/kit_ruby.erb.tt
|
1848
|
-
- lib/generators/kit/templates/kit_ruby_spec.erb.tt
|
1849
|
-
- lib/generators/kit/templates/kit_scss.erb
|
1850
1854
|
- lib/playbook.rb
|
1851
1855
|
- lib/playbook/engine.rb
|
1852
1856
|
- lib/playbook/version.rb
|
1853
1857
|
- lib/playbook_ui.rb
|
1854
|
-
- lib/tasks/changelog.rake
|
1855
|
-
- lib/tasks/pb_release.rake
|
1856
|
-
- lib/tasks/playbook_tasks.rake
|
1857
1858
|
homepage: http://playbook.powerapp.cloud
|
1858
1859
|
licenses:
|
1859
1860
|
- MIT
|
@@ -1869,11 +1870,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1869
1870
|
version: '0'
|
1870
1871
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1871
1872
|
requirements:
|
1872
|
-
- - "
|
1873
|
+
- - ">"
|
1873
1874
|
- !ruby/object:Gem::Version
|
1874
|
-
version:
|
1875
|
+
version: 1.3.1
|
1875
1876
|
requirements: []
|
1876
|
-
|
1877
|
+
rubyforge_project:
|
1878
|
+
rubygems_version: 2.7.3
|
1877
1879
|
signing_key:
|
1878
1880
|
specification_version: 4
|
1879
1881
|
summary: Playbook Design System
|
data/lib/generators/kit/USAGE
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class KitGenerator < Rails::Generators::NamedBase
|
4
|
-
desc "This generator creates a new Playbook Kit"
|
5
|
-
source_root File.expand_path("templates", __dir__)
|
6
|
-
class_option :props, type: :array, default: []
|
7
|
-
|
8
|
-
def create_templates
|
9
|
-
kit_name = name.strip.downcase
|
10
|
-
@kit_name_uppercase = kit_name.upcase
|
11
|
-
@kit_name_lowercase = kit_name
|
12
|
-
@kit_name_capitalize = kit_name.capitalize
|
13
|
-
@kit_name_underscore = kit_name.parameterize.underscore
|
14
|
-
@kit_name_pascal = kit_name.titleize.gsub(/\s+/, "")
|
15
|
-
|
16
|
-
kit_props = options[:props].concat(%w[id:string classname:string data:object aria:object])
|
17
|
-
@kit_props = kit_props.map { |hash| [hash.partition(":").first, hash.partition(":").last] }.to_h
|
18
|
-
@kit_props = @kit_props.sort.to_h
|
19
|
-
@unique_props = @kit_props.symbolize_keys.without(:id, :classname, :data, :aria)
|
20
|
-
|
21
|
-
@kit_class_init = []
|
22
|
-
@kit_props.each do |key, _val|
|
23
|
-
@kit_class_init.push("#{key.parameterize.underscore}: default_configuration".to_sym)
|
24
|
-
end
|
25
|
-
|
26
|
-
@kit_class_val = []
|
27
|
-
@kit_props.each do |key, _value|
|
28
|
-
@kit_class_val.push("self.configured_#{key.parameterize.underscore} = #{key.parameterize.underscore}")
|
29
|
-
end
|
30
|
-
|
31
|
-
full_kit_directory = "app/pb_kits/playbook/pb_#{@kit_name_underscore}"
|
32
|
-
|
33
|
-
# Check if kit already exists =======================
|
34
|
-
if File.directory?(full_kit_directory)
|
35
|
-
say_status "#{@kit_name_capitalize} kit already exists.",
|
36
|
-
"Please choose another name or manually make changes to the existing kit.",
|
37
|
-
:red
|
38
|
-
return
|
39
|
-
else
|
40
|
-
# Add kit to Playbook menu ==========================
|
41
|
-
open("app/pb_kits/playbook/data/menu.yml", "a") do |f|
|
42
|
-
f.puts " - #{@kit_name_underscore}"
|
43
|
-
end
|
44
|
-
say_status "complete",
|
45
|
-
"#{@kit_name_capitalize} kit added to Playbook menu.",
|
46
|
-
:green
|
47
|
-
|
48
|
-
# Generate SCSS files ==============================
|
49
|
-
template "kit_scss.erb", "#{full_kit_directory}/_#{@kit_name_underscore}.scss"
|
50
|
-
open("app/pb_kits/playbook/_playbook.scss", "a") do |f|
|
51
|
-
f.puts "\n@" + "import " + "\'" + "pb_#{@kit_name_underscore}/#{@kit_name_underscore}" + "\';"
|
52
|
-
end
|
53
|
-
say_status "complete",
|
54
|
-
"#{@kit_name_capitalize} kit stylesheet successfully created and imported.",
|
55
|
-
:green
|
56
|
-
|
57
|
-
# Ask user if Rails version should be generated ======
|
58
|
-
if yes?("Create RAILS #{@kit_name_underscore} kit? (y/N)")
|
59
|
-
@rails_kit = true
|
60
|
-
template "kit_ruby.erb", "#{full_kit_directory}/#{@kit_name_underscore}.rb"
|
61
|
-
template "kit_html.erb", "#{full_kit_directory}/_#{@kit_name_underscore}.html.erb"
|
62
|
-
template "kit_example_rails.erb", "#{full_kit_directory}/docs/_#{@kit_name_underscore}_default.html.erb"
|
63
|
-
template "kit_ruby_spec.erb", "spec/pb_kits/playbook/kits/#{@kit_name_underscore}_spec.rb"
|
64
|
-
say_status "complete",
|
65
|
-
"#{@kit_name_capitalize} rails kit successfully created.",
|
66
|
-
:green
|
67
|
-
end
|
68
|
-
|
69
|
-
# Ask user if React version should be generated ======
|
70
|
-
if yes?("Create REACT #{@kit_name_pascal} kit? (y/N)")
|
71
|
-
@react_kit = true
|
72
|
-
template "kit_jsx.erb", "#{full_kit_directory}/_#{@kit_name_underscore}.jsx"
|
73
|
-
template "kit_example_react.erb", "#{full_kit_directory}/docs/_#{@kit_name_underscore}_default.jsx"
|
74
|
-
template "kit_js.erb", "#{full_kit_directory}/docs/index.js"
|
75
|
-
|
76
|
-
# Import kit examples ===========================
|
77
|
-
append_to_file("app/pb_kits/playbook/packs/react-examples.js") do
|
78
|
-
"import * as #{@kit_name_pascal} from 'pb_#{@kit_name_underscore}/docs'\nWebpackerReact.setup(#{@kit_name_pascal})\n"
|
79
|
-
end
|
80
|
-
append_to_file("app/pb_kits/playbook/index.js") do
|
81
|
-
"\nexport #{@kit_name_pascal} from 'pb_#{@kit_name_underscore}/_#{@kit_name_underscore}.jsx'"
|
82
|
-
end
|
83
|
-
|
84
|
-
say_status "complete",
|
85
|
-
"#{@kit_name_capitalize} react kit successfully created.",
|
86
|
-
:green
|
87
|
-
end
|
88
|
-
|
89
|
-
# Create kit example.yml
|
90
|
-
template "kit_example_yml.erb", "#{full_kit_directory}/docs/example.yml"
|
91
|
-
|
92
|
-
`rubocop --safe-auto-correct #{full_kit_directory}`
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
<%%= pb_rails("<%= @kit_name_underscore %>") %>
|
@@ -1 +0,0 @@
|
|
1
|
-
export { default as <%= @kit_name_pascal %>Default } from './_<%= @kit_name_underscore %>_default.jsx'
|
@@ -1,68 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
break_lines = lambda do |list, spaces = 2, separator = ","|
|
3
|
-
list.join("#{separator}\n#{" " * spaces}") + separator
|
4
|
-
end
|
5
|
-
|
6
|
-
type_name = "#{@kit_name_pascal}Props"
|
7
|
-
|
8
|
-
props_types = @kit_props.map do |key, val|
|
9
|
-
prop_name = key == "classname" ? "className" : key.camelize(:lower)
|
10
|
-
prop_type = case val
|
11
|
-
when "enum", "one_of" then "'option_1' | 'option_2'"
|
12
|
-
when "boolean", "bool" then "boolean"
|
13
|
-
when "object", "obj" then "object"
|
14
|
-
else "string"
|
15
|
-
end
|
16
|
-
|
17
|
-
"#{prop_name}?: #{prop_type}"
|
18
|
-
end
|
19
|
-
puts props_types.inspect
|
20
|
-
|
21
|
-
props_names = @kit_props.keys.map do |key|
|
22
|
-
case key
|
23
|
-
when "classname" || "className"
|
24
|
-
"className"
|
25
|
-
when "aria"
|
26
|
-
"aria = {}"
|
27
|
-
when "data"
|
28
|
-
"data = {}"
|
29
|
-
else
|
30
|
-
key
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
%>
|
35
|
-
|
36
|
-
/* @flow */
|
37
|
-
|
38
|
-
import React from 'react'
|
39
|
-
import classnames from 'classnames'
|
40
|
-
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
41
|
-
import { globalProps } from '../utilities/globalProps.js'
|
42
|
-
|
43
|
-
type <%= type_name %> = {
|
44
|
-
<%= break_lines.call(props_types) %>
|
45
|
-
}
|
46
|
-
|
47
|
-
const <%= @kit_name_pascal %> = (props: <%= type_name %>) => {
|
48
|
-
const {
|
49
|
-
<%= break_lines.call(props_names) %>
|
50
|
-
} = props
|
51
|
-
|
52
|
-
const ariaProps = buildAriaProps(aria)
|
53
|
-
const dataProps = buildDataProps(data)
|
54
|
-
const classes = classnames(buildCss('pb_<%= @kit_name_underscore %>'), globalProps(props), className)
|
55
|
-
|
56
|
-
return (
|
57
|
-
<div
|
58
|
-
{...ariaProps}
|
59
|
-
{...dataProps}
|
60
|
-
className={classes}
|
61
|
-
id={id}
|
62
|
-
>
|
63
|
-
{className}
|
64
|
-
</div>
|
65
|
-
)
|
66
|
-
}
|
67
|
-
|
68
|
-
export default <%= @kit_name_pascal %>
|