playbook_ui 7.1.0.pre.alpha1 → 7.1.0.pre.alpha2
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/app/pb_kits/playbook/pb_bar_graph/bar_graph.rb +1 -0
- 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_line_graph/line_graph.rb +1 -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/lib/generators/kit/USAGE +5 -0
- data/lib/generators/kit/kit_generator.rb +95 -0
- data/lib/generators/kit/templates/kit_example_rails.erb.tt +1 -0
- data/lib/generators/kit/templates/kit_example_react.erb.tt +10 -0
- data/lib/generators/kit/templates/kit_example_yml.erb.tt +9 -0
- data/lib/generators/kit/templates/kit_html.erb.tt +7 -0
- data/lib/generators/kit/templates/kit_js.erb.tt +1 -0
- data/lib/generators/kit/templates/kit_jsx.erb.tt +68 -0
- data/lib/generators/kit/templates/kit_ruby.erb.tt +11 -0
- data/lib/generators/kit/templates/kit_ruby_spec.erb.tt +11 -0
- data/lib/generators/kit/templates/kit_scss.erb +3 -0
- data/lib/playbook/version.rb +1 -1
- data/lib/tasks/changelog.rake +14 -0
- data/lib/tasks/pb_release.rake +88 -0
- data/lib/tasks/playbook_tasks.rake +26 -0
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d793fb38923075c62383c618585aebba3516a5573d81ed4a7b7da05bc6ec0e1
|
4
|
+
data.tar.gz: 4918ac3b820aedf79c9873f6efcceebf0c555879aefb97ce649c1329af089b43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: efc9b1216f6970e79c45d992a67c481af899364ab851acf3953d6cf9b5152d69648f562c1086dc8c0fb4b2b20f1249a7a3b5d543d9d495b70d977c49b85caa8a
|
7
|
+
data.tar.gz: 9c0d61bc682f99cb0d49265a33aa79d736905d3e62798456e99d2f540f03875d39d788746be370fd8fec7d6a917cec615ccca1b1de17d9e30f5ba58845097efa
|
@@ -1,5 +1,7 @@
|
|
1
|
-
<%= content_tag(object.tag,
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
<%= content_tag(object.tag,
|
2
|
+
aria: object.aria,
|
3
|
+
id: object.id,
|
4
|
+
data: object.data,
|
5
|
+
class: object.classname) do %>
|
6
|
+
<%= object.children.present? ? capture(&object.children) : object.text %>
|
7
|
+
<% end %>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { Caption } from '../../'
|
3
|
+
|
4
|
+
const CaptionBlock = (props) => {
|
5
|
+
return (
|
6
|
+
<div>
|
7
|
+
<Caption {...props}>
|
8
|
+
{'Block'}
|
9
|
+
</Caption>
|
10
|
+
|
11
|
+
<Caption
|
12
|
+
{...props}
|
13
|
+
size="lg"
|
14
|
+
>
|
15
|
+
{'Large Block'}
|
16
|
+
</Caption>
|
17
|
+
|
18
|
+
<Caption
|
19
|
+
{...props}
|
20
|
+
size="xs"
|
21
|
+
>
|
22
|
+
{'Subcaption Block'}
|
23
|
+
</Caption>
|
24
|
+
</div>
|
25
|
+
)
|
26
|
+
}
|
27
|
+
|
28
|
+
export default CaptionBlock
|
@@ -2,39 +2,36 @@
|
|
2
2
|
id: object.id,
|
3
3
|
data: object.data,
|
4
4
|
class: object.classname) do %>
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
<%
|
6
|
+
# convert deprecated prop values
|
7
|
+
size = object.size
|
8
|
+
size = "sm" if object.size == "xs"
|
9
|
+
size = "md" if object.size == "lg"
|
10
|
+
%>
|
11
11
|
<% if size == "md" %>
|
12
12
|
<% if object.show_icon %>
|
13
13
|
<%= pb_rails("body", props: { color: "light", tag: "span"}) do %>
|
14
|
-
<%= pb_rails("icon", props: { icon: "clock", fixed_width: true
|
14
|
+
<%= pb_rails("icon", props: { icon: "clock", fixed_width: true }) %>
|
15
15
|
<% end %>
|
16
16
|
<% end %>
|
17
|
-
<%= pb_rails("
|
17
|
+
<%= pb_rails("body", props: { tag: "span", text: object.format_time_string, classname: "pb_time" }) %>
|
18
18
|
<% if object.show_timezone %>
|
19
|
-
<%=
|
20
|
-
<%= object.pb_date_time.to_timezone.upcase %>
|
21
|
-
<% end %>
|
19
|
+
<%= pb_rails("body", props: { color: "light", tag: "span", text: object.pb_date_time.to_timezone.upcase }) %>
|
22
20
|
<% end %>
|
23
21
|
<% else %>
|
24
22
|
<% if object.show_icon %>
|
25
23
|
<%= pb_rails("body", props: { color: "light", tag: "span"}) do %>
|
26
|
-
<%= pb_rails("icon", props: { icon: "clock", fixed_width: true }) %>
|
24
|
+
<%= pb_rails("icon", props: { icon: "clock", fixed_width: true, size: "sm" }) %>
|
27
25
|
<% end %>
|
28
26
|
<% end %>
|
29
|
-
|
27
|
+
|
28
|
+
<%= pb_rails("caption", props: { color: "light", tag: "span", text: object.format_time_string }) do %>
|
30
29
|
<%= content_tag(:time, datetime: object.pb_date_time.to_iso) do %>
|
31
|
-
<%=
|
32
|
-
|
33
|
-
|
34
|
-
<%=
|
35
|
-
|
36
|
-
<% end %>
|
37
|
-
<% end %>
|
30
|
+
<%= object.format_time_string %>
|
31
|
+
<% if object.show_timezone %>
|
32
|
+
<span class="pb_time_timezone">
|
33
|
+
<%= object.pb_date_time.to_timezone.upcase %>
|
34
|
+
</span>
|
38
35
|
<% end %>
|
39
36
|
<% end %>
|
40
37
|
<% end %>
|
@@ -18,11 +18,12 @@ type TimeProps = {
|
|
18
18
|
id?: string,
|
19
19
|
showIcon?: boolean,
|
20
20
|
size?: 'md' | 'sm',
|
21
|
+
showTimezone?: boolean,
|
21
22
|
timeZone?: string,
|
22
23
|
}
|
23
24
|
|
24
25
|
const Time = (props: TimeProps) => {
|
25
|
-
const { align, className, date, showIcon, size, timeZone } = props
|
26
|
+
const { align, className, date, showIcon, size, timeZone, showTimezone = true } = props
|
26
27
|
const classes = classnames(
|
27
28
|
buildCss('pb_time_kit', align, size),
|
28
29
|
globalProps(props),
|
@@ -33,41 +34,53 @@ const Time = (props: TimeProps) => {
|
|
33
34
|
|
34
35
|
return (
|
35
36
|
<div className={classes}>
|
36
|
-
<
|
37
|
-
<
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
37
|
+
<If condition={showIcon}>
|
38
|
+
<Body
|
39
|
+
color="light"
|
40
|
+
tag="span"
|
41
|
+
>
|
42
|
+
<Icon
|
43
|
+
fixedWidth
|
44
|
+
icon="clock"
|
45
|
+
size={size === 'md' ? '' : 'sm'}
|
46
|
+
/>
|
47
|
+
</Body>
|
48
|
+
{' '}
|
49
|
+
</If>
|
50
|
+
|
51
|
+
<time dateTime={date}>
|
52
|
+
<span>
|
53
|
+
<If condition={size === 'md'}>
|
54
|
+
<Body
|
55
|
+
className="pb_time"
|
56
|
+
tag="span"
|
57
|
+
text={dateTimestamp.toTimeWithMeridian()}
|
46
58
|
/>
|
47
|
-
|
48
|
-
|
49
|
-
</If>
|
50
|
-
<time dateTime={date}>
|
51
|
-
<span>
|
52
|
-
<If condition={size !== 'md'}>
|
59
|
+
{' '}
|
60
|
+
<If condition={showTimezone}>
|
53
61
|
<Body
|
54
62
|
color="light"
|
55
63
|
tag="span"
|
56
|
-
text={dateTimestamp.
|
64
|
+
text={dateTimestamp.toTimezone()}
|
57
65
|
/>
|
58
|
-
|
66
|
+
</If>
|
67
|
+
<Else />
|
68
|
+
<Caption
|
69
|
+
color="light"
|
70
|
+
tag="span"
|
71
|
+
text={dateTimestamp.toTimeWithMeridian()}
|
72
|
+
/>
|
73
|
+
{' '}
|
74
|
+
<If condition={showTimezone}>
|
59
75
|
<Caption
|
60
|
-
|
76
|
+
color="light"
|
61
77
|
tag="span"
|
62
|
-
text={dateTimestamp.
|
78
|
+
text={dateTimestamp.toTimezone()}
|
63
79
|
/>
|
64
80
|
</If>
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
</span>
|
69
|
-
</time>
|
70
|
-
</span>
|
81
|
+
</If>
|
82
|
+
</span>
|
83
|
+
</time>
|
71
84
|
</div>
|
72
85
|
)
|
73
86
|
}
|
@@ -5,8 +5,6 @@
|
|
5
5
|
@import "../pb_caption/caption";
|
6
6
|
|
7
7
|
[class^=pb_time_kit] {
|
8
|
-
letter-spacing: $lspace_looser;
|
9
|
-
text-transform: uppercase;
|
10
8
|
&[class*=_center] {
|
11
9
|
text-align: center;
|
12
10
|
}
|
@@ -15,10 +13,6 @@
|
|
15
13
|
text-align: right;
|
16
14
|
}
|
17
15
|
|
18
|
-
[class^=pb_body] {
|
19
|
-
font-weight: $bold !important;
|
20
|
-
}
|
21
|
-
|
22
16
|
[class^=pb_time_timezone] {
|
23
17
|
color: $text_lt_light;
|
24
18
|
font-weight: $bold;
|
@@ -28,26 +22,12 @@
|
|
28
22
|
}
|
29
23
|
}
|
30
24
|
|
31
|
-
&[class*=
|
32
|
-
|
33
|
-
|
34
|
-
letter-spacing: $lspace_tight;
|
35
|
-
text-transform: capitalize;
|
36
|
-
}
|
37
|
-
[class^=pb_time_timezone] {
|
38
|
-
color: $text_lt_light;
|
39
|
-
font-size: $font-large !important;
|
40
|
-
font-weight: $regular;
|
41
|
-
letter-spacing: $lspace_tight;
|
25
|
+
&[class*=dark] {
|
26
|
+
& * {
|
27
|
+
@include caption_dark;
|
42
28
|
}
|
43
|
-
|
44
|
-
|
45
|
-
&.dark {
|
46
|
-
[class^=pb_caption_kit] {
|
29
|
+
.pb_time {
|
47
30
|
color: $text_dk_default;
|
48
31
|
}
|
49
|
-
[class^=pb_body_kit] {
|
50
|
-
color: $text_dk_light;
|
51
|
-
}
|
52
32
|
}
|
53
33
|
}
|
@@ -1,24 +1,27 @@
|
|
1
1
|
import React from 'react'
|
2
2
|
import Time from '../_time.jsx'
|
3
3
|
|
4
|
-
const TimeAlign = () => {
|
4
|
+
const TimeAlign = (props) => {
|
5
5
|
return (
|
6
6
|
<div>
|
7
7
|
<Time
|
8
8
|
date={new Date()}
|
9
9
|
size="md"
|
10
|
+
{...props}
|
10
11
|
/>
|
11
12
|
<br />
|
12
13
|
<Time
|
13
14
|
align="center"
|
14
15
|
date={new Date()}
|
15
16
|
size="md"
|
17
|
+
{...props}
|
16
18
|
/>
|
17
19
|
<br />
|
18
20
|
<Time
|
19
21
|
align="right"
|
20
22
|
date={new Date()}
|
21
23
|
size="md"
|
24
|
+
{...props}
|
22
25
|
/>
|
23
26
|
</div>
|
24
27
|
)
|
@@ -1,38 +1,38 @@
|
|
1
1
|
<%= pb_rails("time", props: {
|
2
2
|
show_timezone: false,
|
3
|
-
time: Time.now
|
3
|
+
time: Time.now
|
4
4
|
}) %>
|
5
5
|
|
6
6
|
<br>
|
7
7
|
|
8
8
|
<%= pb_rails("time", props: {
|
9
9
|
time: DateTime.now,
|
10
|
-
timezone: "America/
|
10
|
+
timezone: "America/New_York"
|
11
11
|
}) %>
|
12
12
|
|
13
13
|
<br>
|
14
14
|
|
15
15
|
<%= pb_rails("time", props: {
|
16
|
-
time: "2012-08-02T15:49:29Z",
|
17
16
|
show_icon: true,
|
18
17
|
show_timezone: false,
|
18
|
+
time: "2012-08-02T15:49:29Z",
|
19
19
|
}) %>
|
20
20
|
|
21
21
|
<br>
|
22
22
|
|
23
23
|
<%= pb_rails("time", props: {
|
24
|
-
time: "2012-08-02T15:49:29Z",
|
25
24
|
show_icon: true,
|
26
|
-
|
25
|
+
time: "2012-08-02T15:49:29Z",
|
26
|
+
timezone: "America/New_York"
|
27
27
|
}) %>
|
28
28
|
|
29
|
-
|
30
|
-
|
29
|
+
<br>
|
30
|
+
<br>
|
31
31
|
|
32
|
-
|
33
|
-
time: Time.now,
|
34
|
-
size: "md",
|
32
|
+
<%= pb_rails("time", props: {
|
35
33
|
show_timezone: false,
|
34
|
+
size: "md",
|
35
|
+
time: Time.now,
|
36
36
|
}) %>
|
37
37
|
|
38
38
|
<br>
|
@@ -47,8 +47,8 @@
|
|
47
47
|
|
48
48
|
<%= pb_rails("time", props: {
|
49
49
|
show_icon: true,
|
50
|
-
size: "md",
|
51
50
|
show_timezone: false,
|
51
|
+
size: "md",
|
52
52
|
time: "2012-08-02T15:49:29Z",
|
53
53
|
}) %>
|
54
54
|
|
@@ -1,45 +1,56 @@
|
|
1
1
|
import React from 'react'
|
2
2
|
import Time from '../_time.jsx'
|
3
3
|
|
4
|
-
const TimeDefault = () => {
|
4
|
+
const TimeDefault = (props) => {
|
5
5
|
return (
|
6
6
|
<div>
|
7
7
|
<Time
|
8
8
|
date={new Date().getTime()}
|
9
|
+
showTimezone={false}
|
10
|
+
{...props}
|
9
11
|
/>
|
10
12
|
<br />
|
11
13
|
<Time
|
12
14
|
date={new Date()}
|
13
15
|
timeZone="America/New_York"
|
16
|
+
{...props}
|
14
17
|
/>
|
15
18
|
<br />
|
16
19
|
<Time
|
17
20
|
date={new Date().getTime()}
|
18
21
|
showIcon
|
22
|
+
showTimezone={false}
|
23
|
+
{...props}
|
19
24
|
/>
|
20
25
|
<br />
|
21
26
|
<Time
|
22
27
|
date={new Date()}
|
23
28
|
showIcon
|
24
29
|
timeZone="America/New_York"
|
30
|
+
{...props}
|
25
31
|
/>
|
26
32
|
<br />
|
27
33
|
<br />
|
28
34
|
<Time
|
29
35
|
date={new Date()}
|
36
|
+
showTimezone={false}
|
30
37
|
size="md"
|
38
|
+
{...props}
|
31
39
|
/>
|
32
40
|
<br />
|
33
41
|
<Time
|
34
42
|
date={new Date()}
|
35
43
|
size="md"
|
36
44
|
timeZone="America/New_York"
|
45
|
+
{...props}
|
37
46
|
/>
|
38
47
|
<br />
|
39
48
|
<Time
|
40
49
|
date={new Date()}
|
41
50
|
showIcon
|
51
|
+
showTimezone={false}
|
42
52
|
size="md"
|
53
|
+
{...props}
|
43
54
|
/>
|
44
55
|
<br />
|
45
56
|
<Time
|
@@ -47,6 +58,7 @@ const TimeDefault = () => {
|
|
47
58
|
showIcon
|
48
59
|
size="md"
|
49
60
|
timeZone="America/New_York"
|
61
|
+
{...props}
|
50
62
|
/>
|
51
63
|
</div>
|
52
64
|
)
|
@@ -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
|
@@ -0,0 +1,95 @@
|
|
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
|
@@ -0,0 +1 @@
|
|
1
|
+
<%%= pb_rails("<%= @kit_name_underscore %>") %>
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default as <%= @kit_name_pascal %>Default } from './_<%= @kit_name_underscore %>_default.jsx'
|
@@ -0,0 +1,68 @@
|
|
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 %>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../../../../app/pb_kits/playbook/pb_<%= @kit_name_underscore %>/<%= @kit_name_underscore %>"
|
4
|
+
|
5
|
+
RSpec.describe Playbook::Pb<%= @kit_name_capitalize %>::<%= @kit_name_capitalize %> do
|
6
|
+
subject { Playbook::Pb<%= @kit_name_capitalize %>::<%= @kit_name_capitalize %> }
|
7
|
+
|
8
|
+
it { is_expected.to define_partial }
|
9
|
+
|
10
|
+
# Do not leave this file blank. Use other spec files for example tests.
|
11
|
+
end
|
data/lib/playbook/version.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'github_changelog_generator/task'
|
2
|
+
|
3
|
+
GitHubChangelogGenerator::RakeTask.new :changelog do |config|
|
4
|
+
config.user = 'powerhome'
|
5
|
+
config.project = 'playbook'
|
6
|
+
config.since_tag = Playbook::VERSION
|
7
|
+
config.header = ''
|
8
|
+
config.issues = false
|
9
|
+
config.base = 'CHANGELOG.md'
|
10
|
+
config.enhancement_prefix = '**Kit Enhancements:**'
|
11
|
+
config.bug_prefix = '**Fixed Bugs:**'
|
12
|
+
config.max_issues = 75
|
13
|
+
config.add_sections = {"New Kits":{"prefix":"**New Kits:**","labels":["new kit"]},"Improvements": {"prefix":"**Improvements:**","labels":["improvement"]},"Breaking": {"prefix":"**Breaking Changes:**","labels":["breaking"]}}
|
14
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
namespace :pb_release do
|
4
|
+
desc "Update the version number in preparation to release"
|
5
|
+
task version: :environment do
|
6
|
+
puts "\n"
|
7
|
+
puts "*" * 20 + " Create New Playbook Release " + "*" * 20
|
8
|
+
ack = "\nFirst, before creating a new version please make sure you are familiar with SemVer guidlines: "
|
9
|
+
ack += "\nhttps://semver.org/#semantic-versioning-specification-semver. "
|
10
|
+
ack += "\n\nDoing so will ensure the proper version is selected for the release. "
|
11
|
+
ack += "\nSee also: https://github.com/powerhome/playbook/wiki/Releasing-a-New-Version#determining-the-version."
|
12
|
+
ack += "\n\nReady to start? y/N"
|
13
|
+
STDOUT.puts ack
|
14
|
+
agreed = STDIN.gets.chomp.downcase
|
15
|
+
|
16
|
+
if agreed == "y"
|
17
|
+
old_version = Playbook::VERSION
|
18
|
+
STDOUT.puts "What would you like the next release number to be? Currently #{old_version}"
|
19
|
+
new_version = STDIN.gets.chomp
|
20
|
+
puts "Ok great, let's make version #{new_version}"
|
21
|
+
puts "\n\n"
|
22
|
+
|
23
|
+
# Update package.json
|
24
|
+
package = File.read("package.json")
|
25
|
+
new_package = package.gsub(/"version": "#{old_version}",/, "\"version\": \"#{new_version}\",")
|
26
|
+
File.open("package.json", "w") { |file| file.puts new_package }
|
27
|
+
puts "Updated package.json"
|
28
|
+
|
29
|
+
# Update version.rb
|
30
|
+
version_rb = File.read("lib/playbook/version.rb")
|
31
|
+
new_version_rb = version_rb.gsub(/VERSION = "#{old_version}".freeze/, "VERSION = \"#{new_version}\".freeze")
|
32
|
+
File.open("lib/playbook/version.rb", "w") { |file| file.puts new_version_rb }
|
33
|
+
puts "Updated lib/playbook/version.rb"
|
34
|
+
|
35
|
+
# Update gemfile.lock
|
36
|
+
gemfile = File.read("Gemfile.lock")
|
37
|
+
new_gemfile = gemfile.gsub(/playbook_ui \(#{Regexp.escape(old_version)}\)/, "playbook_ui (#{new_version})")
|
38
|
+
File.open("Gemfile.lock", "w") { |file| file.puts new_gemfile }
|
39
|
+
puts "Updated Gemfile.lock"
|
40
|
+
puts "\n\n"
|
41
|
+
|
42
|
+
puts "\nCreating dist files"
|
43
|
+
`yarn release`
|
44
|
+
|
45
|
+
puts "Commit your changes and create a PR to merge to master"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
desc "Publish to RubyGems, NPM, and Create a Tag"
|
50
|
+
task push: :environment do
|
51
|
+
version = Playbook::VERSION
|
52
|
+
puts "You about to release version #{version}. Is that correct? (y/N)"
|
53
|
+
input = STDIN.gets.chomp
|
54
|
+
raise Nope unless input.downcase == "y"
|
55
|
+
|
56
|
+
# RubyGems
|
57
|
+
puts "\nCreating Gem..."
|
58
|
+
`gem build playbook_ui.gemspec`
|
59
|
+
puts "\nPushing to RubyGems..."
|
60
|
+
`gem push playbook_ui-#{version}.gem`
|
61
|
+
puts "\nPushed to RubyGems. Now lets clean up..."
|
62
|
+
`rm -rf playbook_ui-*.gem`
|
63
|
+
|
64
|
+
# NPM
|
65
|
+
puts "\nGenerating distribution files"
|
66
|
+
`docker-compose run web yarn release`
|
67
|
+
puts "\nOrganizing distribution files"
|
68
|
+
`rm dist/playbook-rails.css && mv dist/playbook-react.css dist/playbook.css`
|
69
|
+
puts "\nCreating NPM package..."
|
70
|
+
`npm pack`
|
71
|
+
puts "\nPublishing to NPM..."
|
72
|
+
`npm publish playbook-ui-#{version}.tgz`
|
73
|
+
puts "\nPublished to NPM. Now lets clean up..."
|
74
|
+
`rm -rf playbook-ui-*.tgz`
|
75
|
+
|
76
|
+
# Tags
|
77
|
+
puts "\nPushed to NPM. Now lets create a tag..."
|
78
|
+
puts "\nWrite a brief tag release description. You can edit this later on GitHub."
|
79
|
+
description = STDIN.gets.chomp
|
80
|
+
puts "\nCreating Tag..."
|
81
|
+
`git tag -a #{version} -m "#{description}"`
|
82
|
+
puts "\nPushing Tag to GitHub..."
|
83
|
+
`git push origin #{version}`
|
84
|
+
|
85
|
+
puts "\n\n"
|
86
|
+
puts "Complete! Don't forget to add your release notes https://github.com/powerhome/playbook/releases/tag/#{version}"
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "webpacker"
|
4
|
+
|
5
|
+
namespace :playbook do
|
6
|
+
namespace :webpacker do
|
7
|
+
desc "Install deps with yarn"
|
8
|
+
task :yarn_install do
|
9
|
+
Dir.chdir(File.join(__dir__, "../..")) do
|
10
|
+
system "yarn install --no-progress --production"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "Compile JavaScript packs using webpack for production with digests"
|
15
|
+
task compile: %i[yarn_install environment] do
|
16
|
+
::Webpacker.with_node_env("production") do
|
17
|
+
if Playbook.webpacker.commands.compile
|
18
|
+
# Successful compilation!
|
19
|
+
else
|
20
|
+
# Failed compilation
|
21
|
+
exit!
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
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.1.0.pre.
|
4
|
+
version: 7.1.0.pre.alpha2
|
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-14 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
|
@@ -1836,10 +1838,24 @@ files:
|
|
1836
1838
|
- app/pb_kits/playbook/vendor.js
|
1837
1839
|
- fonts/fontawesome-min.js
|
1838
1840
|
- fonts/regular-min.js
|
1841
|
+
- lib/generators/kit/USAGE
|
1842
|
+
- lib/generators/kit/kit_generator.rb
|
1843
|
+
- lib/generators/kit/templates/kit_example_rails.erb.tt
|
1844
|
+
- lib/generators/kit/templates/kit_example_react.erb.tt
|
1845
|
+
- lib/generators/kit/templates/kit_example_yml.erb.tt
|
1846
|
+
- lib/generators/kit/templates/kit_html.erb.tt
|
1847
|
+
- lib/generators/kit/templates/kit_js.erb.tt
|
1848
|
+
- lib/generators/kit/templates/kit_jsx.erb.tt
|
1849
|
+
- lib/generators/kit/templates/kit_ruby.erb.tt
|
1850
|
+
- lib/generators/kit/templates/kit_ruby_spec.erb.tt
|
1851
|
+
- lib/generators/kit/templates/kit_scss.erb
|
1839
1852
|
- lib/playbook.rb
|
1840
1853
|
- lib/playbook/engine.rb
|
1841
1854
|
- lib/playbook/version.rb
|
1842
1855
|
- lib/playbook_ui.rb
|
1856
|
+
- lib/tasks/changelog.rake
|
1857
|
+
- lib/tasks/pb_release.rake
|
1858
|
+
- lib/tasks/playbook_tasks.rake
|
1843
1859
|
homepage: http://playbook.powerapp.cloud
|
1844
1860
|
licenses:
|
1845
1861
|
- MIT
|