playbook_ui 9.4.0.alpha.user.kit.bug → 9.4.0.pre.alpha1
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_checkbox/_checkbox.jsx +1 -2
- data/app/pb_kits/playbook/pb_checkbox/_checkbox.scss +2 -3
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate.jsx +9 -67
- data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.jsx +45 -11
- data/app/pb_kits/playbook/pb_date_stacked/date_stacked.html.erb +17 -6
- data/app/pb_kits/playbook/pb_date_stacked/date_stacked.rb +12 -5
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_bold.html.erb +5 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_bold.jsx +38 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/example.yml +3 -1
- data/app/pb_kits/playbook/pb_date_stacked/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.jsx +32 -16
- data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss +23 -4
- data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.html.erb +12 -8
- data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.rb +9 -2
- data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.test.js +35 -0
- data/app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_default.html.erb +8 -1
- data/app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_default.jsx +19 -1
- data/app/pb_kits/playbook/pb_dialog/dialog.test.jsx +1 -1
- data/app/pb_kits/playbook/pb_flex/_flex.jsx +6 -1
- data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +1 -1
- data/app/pb_kits/playbook/pb_nav/docs/_block_nav.html.erb +5 -41
- data/app/pb_kits/playbook/pb_nav/docs/_block_nav.jsx +6 -44
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.jsx +7 -3
- data/app/pb_kits/playbook/pb_time_stacked/time_stacked.html.erb +2 -2
- data/lib/playbook/version.rb +1 -1
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 296e300fbad4165862a5e90a0c0547bac04ce6f8c751e855df8ce1c66922a7b0
|
4
|
+
data.tar.gz: c9cb628349bda60acc99bb903a45d54166b8f56b46793e8933c02c7b003fa1bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 189cb41e0c3d0b1bc98b9c533eb2f3600486adcbdc32b57e891e1ee00ded94f8b4476a2f773da06f29cf2711c8f4379692938d973449309fa0e39ffbe465b736
|
7
|
+
data.tar.gz: 6e4f0849cf6d2ec1e93e074d1c2a06ef3ad92f3599911395cd3b73a27c82399afc146e969721dc28836f56f67e2e9357dd59da9295247fd446dd32bc0e8ce5d7
|
@@ -53,10 +53,9 @@ const Checkbox = (props: CheckboxProps) => {
|
|
53
53
|
|
54
54
|
useEffect(() => {
|
55
55
|
if (checkRef.current) {
|
56
|
-
checkRef.current.checked = checked
|
57
56
|
checkRef.current.indeterminate = indeterminate
|
58
57
|
}
|
59
|
-
}, [indeterminate
|
58
|
+
}, [indeterminate])
|
60
59
|
|
61
60
|
return (
|
62
61
|
<label
|
@@ -4,13 +4,12 @@
|
|
4
4
|
$transition: $transition_cubic;
|
5
5
|
|
6
6
|
[class^=pb_checkbox_kit] {
|
7
|
-
cursor: pointer;
|
8
7
|
display: inline-flex;
|
9
|
-
|
8
|
+
cursor: pointer;
|
10
9
|
.pb_checkbox_label {
|
10
|
+
padding-left: $space_xs;
|
11
11
|
cursor: pointer;
|
12
12
|
font-size: $text_lt_default;
|
13
|
-
padding-left: $space_xs;
|
14
13
|
user-select: none;
|
15
14
|
}
|
16
15
|
|
@@ -1,73 +1,15 @@
|
|
1
|
-
import React
|
2
|
-
import { Checkbox
|
1
|
+
import React from 'react'
|
2
|
+
import { Checkbox } from '../..'
|
3
3
|
|
4
4
|
const CheckboxIndeterminate = (props) => {
|
5
|
-
const [checkboxes, setCheckboxes] = useState([
|
6
|
-
{ name: 'Coffee', checked: false },
|
7
|
-
{ name: 'Ice Cream', checked: false },
|
8
|
-
{ name: 'Chocolate', checked: true },
|
9
|
-
])
|
10
|
-
|
11
|
-
const isAllChecked = !checkboxes.find((checkbox) => !checkbox.checked)
|
12
|
-
const isNoneChecked = !checkboxes.find((checkbox) => checkbox.checked)
|
13
|
-
|
14
|
-
const processCheckboxes = (checked) =>
|
15
|
-
checkboxes.slice(0).map((checkbox) => {
|
16
|
-
checkbox.checked = checked
|
17
|
-
return checkbox
|
18
|
-
})
|
19
|
-
|
20
|
-
const onToggleAll = () => {
|
21
|
-
setCheckboxes(
|
22
|
-
isNoneChecked ? processCheckboxes(true) : processCheckboxes(false)
|
23
|
-
)
|
24
|
-
}
|
25
|
-
|
26
|
-
const updateCheckboxes = (checkbox, index) => {
|
27
|
-
const newCheckboxes = checkboxes.slice(0)
|
28
|
-
newCheckboxes[index].checked = !checkbox.checked
|
29
|
-
setCheckboxes(newCheckboxes)
|
30
|
-
}
|
31
|
-
|
32
5
|
return (
|
33
|
-
<
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
<Checkbox
|
41
|
-
checked={isAllChecked}
|
42
|
-
indeterminate={!isAllChecked && !isNoneChecked}
|
43
|
-
name="checkbox-name"
|
44
|
-
onChange={onToggleAll}
|
45
|
-
text={isNoneChecked ? 'Check All' : 'Uncheck All'}
|
46
|
-
value="check-box value"
|
47
|
-
{...props}
|
48
|
-
/>
|
49
|
-
</th>
|
50
|
-
</tr>
|
51
|
-
</thead>
|
52
|
-
<tbody>
|
53
|
-
{checkboxes.map((checkbox, index) => (
|
54
|
-
<tr key={index}>
|
55
|
-
<td>
|
56
|
-
<Checkbox
|
57
|
-
checked={checkbox.checked}
|
58
|
-
name={checkbox.name}
|
59
|
-
onChange={() => {
|
60
|
-
updateCheckboxes(checkbox, index)
|
61
|
-
}}
|
62
|
-
text={checkbox.name}
|
63
|
-
value="check-box value"
|
64
|
-
{...props}
|
65
|
-
/>
|
66
|
-
</td>
|
67
|
-
</tr>
|
68
|
-
))}
|
69
|
-
</tbody>
|
70
|
-
</Table>
|
6
|
+
<Checkbox
|
7
|
+
indeterminate
|
8
|
+
name="checkbox-name"
|
9
|
+
text="Indeterminate State"
|
10
|
+
value="check-box value"
|
11
|
+
{...props}
|
12
|
+
/>
|
71
13
|
)
|
72
14
|
}
|
73
15
|
|
@@ -9,6 +9,7 @@ import { globalProps } from '../utilities/globalProps.js'
|
|
9
9
|
|
10
10
|
type DateStackedProps = {
|
11
11
|
align?: "left" | "center" | "right",
|
12
|
+
bold?: boolean,
|
12
13
|
className?: string | array<string>,
|
13
14
|
dark?: boolean,
|
14
15
|
data?: string,
|
@@ -26,6 +27,7 @@ const sizes = {
|
|
26
27
|
const DateStacked = (props: DateStackedProps) => {
|
27
28
|
const {
|
28
29
|
align = 'left',
|
30
|
+
bold = false,
|
29
31
|
reverse = false,
|
30
32
|
className,
|
31
33
|
dark = false,
|
@@ -46,19 +48,51 @@ const DateStacked = (props: DateStackedProps) => {
|
|
46
48
|
const inputYear = dateTimestamp.toYear().toString()
|
47
49
|
|
48
50
|
return (
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
text={dateTimestamp.
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
51
|
+
|
52
|
+
<div>
|
53
|
+
<If condition={bold == false}>
|
54
|
+
|
55
|
+
<div className={classes}>
|
56
|
+
<div className="pb_date_stacked_day_month">
|
57
|
+
<Caption text={dateTimestamp.toMonth().toUpperCase()} />
|
58
|
+
<Title
|
59
|
+
dark={dark}
|
60
|
+
size={sizes[size]}
|
61
|
+
text={dateTimestamp.toDay()}
|
62
|
+
/>
|
63
|
+
</div>
|
64
|
+
<If condition={currentYear != inputYear}>
|
65
|
+
<Caption size="xs">{inputYear}</Caption>
|
66
|
+
</If>
|
67
|
+
</div>
|
68
|
+
<Else />
|
69
|
+
<>
|
70
|
+
<div className={classes}>
|
71
|
+
<div className="pb_date_stacked_day_month">
|
72
|
+
|
73
|
+
<Title
|
74
|
+
bold
|
75
|
+
dark={dark}
|
76
|
+
size="4"
|
77
|
+
text={dateTimestamp.toMonth()}
|
78
|
+
/>
|
79
|
+
<Title
|
80
|
+
bold
|
81
|
+
dark={dark}
|
82
|
+
size="4"
|
83
|
+
text={dateTimestamp.toDay()}
|
84
|
+
/>
|
85
|
+
<If condition={currentYear != inputYear}>
|
86
|
+
<Title size="4">{inputYear}</Title>
|
87
|
+
</If>
|
88
|
+
</div>
|
89
|
+
|
90
|
+
</div>
|
91
|
+
|
92
|
+
</>
|
60
93
|
</If>
|
61
94
|
</div>
|
95
|
+
|
62
96
|
)
|
63
97
|
}
|
64
98
|
|
@@ -3,11 +3,22 @@
|
|
3
3
|
data: object.data,
|
4
4
|
class: object.classname) do %>
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
<% if object.bold == false %>
|
7
|
+
|
8
|
+
<div class="pb_date_stacked_day_month">
|
9
|
+
<%= pb_rails("caption", props: { text: object.month }) %>
|
10
|
+
<%= pb_rails("title", props: { text: object.day , size: object.title_size }) do %><% end %>
|
11
|
+
<%= pb_rails("caption", props: { text: object.year, size:"xs" }) %>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<% else %>
|
15
|
+
<div class="pb_date_stacked_day_month">
|
16
|
+
<%= pb_rails("title", props: { text: object.month, size: 4 }) %>
|
17
|
+
<%= pb_rails("title", props: { text: object.day, size: 4 }) do %><% end %>
|
18
|
+
<%= pb_rails("title", props: { text: object.year, size:4 }) %>
|
19
|
+
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<% end %>
|
12
23
|
|
13
24
|
<% end %>
|
@@ -14,9 +14,11 @@ module Playbook
|
|
14
14
|
default: false
|
15
15
|
prop :dark, type: Playbook::Props::Boolean,
|
16
16
|
default: false
|
17
|
+
prop :bold, type: Playbook::Props::Boolean,
|
18
|
+
default: false
|
17
19
|
|
18
20
|
def classname
|
19
|
-
generate_classname("pb_date_stacked_kit", align, size, reverse_class, dark_class)
|
21
|
+
generate_classname("pb_date_stacked_kit", align, size, bold, reverse_class, dark_class)
|
20
22
|
end
|
21
23
|
|
22
24
|
def title_size
|
@@ -31,10 +33,7 @@ module Playbook
|
|
31
33
|
end
|
32
34
|
|
33
35
|
def month
|
34
|
-
|
35
|
-
content_tag(:time, datetime: month.to_iso) do
|
36
|
-
"#{month.to_month}"
|
37
|
-
end
|
36
|
+
pb_date_time.to_month.capitalize
|
38
37
|
end
|
39
38
|
|
40
39
|
def year
|
@@ -48,8 +47,16 @@ module Playbook
|
|
48
47
|
end
|
49
48
|
end
|
50
49
|
|
50
|
+
def bold_class
|
51
|
+
bold ? "bold" : nil
|
52
|
+
end
|
53
|
+
|
51
54
|
private
|
52
55
|
|
56
|
+
def pb_date_time
|
57
|
+
Playbook::PbKit::PbDateTime.new(date)
|
58
|
+
end
|
59
|
+
|
53
60
|
def reverse_class
|
54
61
|
reverse ? "reverse" : nil
|
55
62
|
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<%= pb_rails("date_stacked", props: { date: DateTime.now, align: "left", bold: true }) %>
|
2
|
+
<br>
|
3
|
+
<%= pb_rails("date_stacked", props: { date: Date.new(2018, 03, 20), align: "center", bold: true }) %>
|
4
|
+
<br>
|
5
|
+
<%= pb_rails("date_stacked", props: { date: DateTime.now, align: "right", bold: true }) %>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import DateStacked from '../_date_stacked.jsx'
|
3
|
+
|
4
|
+
const DateStackedBold = (props) => {
|
5
|
+
return (
|
6
|
+
<div>
|
7
|
+
<DateStacked
|
8
|
+
align="left"
|
9
|
+
bold
|
10
|
+
date={new Date()}
|
11
|
+
{...props}
|
12
|
+
/>
|
13
|
+
|
14
|
+
<br />
|
15
|
+
|
16
|
+
<DateStacked
|
17
|
+
align="center"
|
18
|
+
bold
|
19
|
+
date={new Date('20 Mar 2018')}
|
20
|
+
{...props}
|
21
|
+
/>
|
22
|
+
|
23
|
+
<br />
|
24
|
+
|
25
|
+
<DateStacked
|
26
|
+
align="right"
|
27
|
+
bold
|
28
|
+
date={new Date()}
|
29
|
+
{...props}
|
30
|
+
/>
|
31
|
+
|
32
|
+
<br />
|
33
|
+
|
34
|
+
</div>
|
35
|
+
)
|
36
|
+
}
|
37
|
+
|
38
|
+
export default DateStackedBold
|
@@ -6,10 +6,12 @@ examples:
|
|
6
6
|
- date_stacked_reverse: Day & Month Reverse
|
7
7
|
- date_stacked_sizes: Sizes
|
8
8
|
- date_stacked_align: Alignment
|
9
|
+
- date_stacked_bold: Bold
|
10
|
+
|
9
11
|
|
10
12
|
react:
|
11
13
|
- date_stacked_default: Default
|
12
14
|
- date_stacked_not_current_year: Not Current Year
|
13
15
|
- date_stacked_reverse: Day & Month Reverse
|
14
16
|
- date_stacked_sizes: Sizes
|
15
|
-
-
|
17
|
+
- date_stacked_bold: Bold
|
@@ -1,3 +1,4 @@
|
|
1
|
+
export { default as DateStackedBold } from './_date_stacked_bold.jsx'
|
1
2
|
export { default as DateStackedDefault } from './_date_stacked_default.jsx'
|
2
3
|
export { default as DateStackedNotCurrentYear } from './_date_stacked_not_current_year.jsx'
|
3
4
|
export { default as DateStackedReverse } from './_date_stacked_reverse.jsx'
|
@@ -1,43 +1,59 @@
|
|
1
|
+
|
1
2
|
/* @flow */
|
2
3
|
|
3
4
|
import React from 'react'
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
|
5
|
+
import { buildCss } from '../utilities/props'
|
6
|
+
import { deprecatedProps, globalProps } from '../utilities/globalProps.js'
|
7
|
+
|
8
|
+
import { DateStacked, Flex, FlexItem, SectionSeparator, TimeStacked } from '../'
|
7
9
|
|
8
10
|
type DateTimeStackedProps = {
|
9
|
-
data?: string,
|
10
11
|
id?: string,
|
11
|
-
date:
|
12
|
+
date: string,
|
13
|
+
datetime: string,
|
12
14
|
dark: boolean,
|
15
|
+
timeZone?: string,
|
13
16
|
}
|
14
17
|
|
15
18
|
const DateTimeStacked = (props: DateTimeStackedProps) => {
|
16
|
-
|
17
|
-
|
19
|
+
if (props.date) deprecatedProps('Date Time Stacked', ['date'])
|
20
|
+
|
21
|
+
const {
|
22
|
+
date,
|
23
|
+
datetime,
|
24
|
+
dark,
|
25
|
+
timeZone = 'America/New_York',
|
26
|
+
} = props
|
27
|
+
|
28
|
+
const classes = buildCss('pb_date_time_stacked_kit', globalProps(props))
|
18
29
|
|
19
30
|
return (
|
20
31
|
<Flex
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
{...dataProps}
|
32
|
+
inline="flex-container"
|
33
|
+
vertical="stretch"
|
34
|
+
{...props}
|
25
35
|
>
|
26
36
|
<FlexItem>
|
27
37
|
<DateStacked
|
28
38
|
align="right"
|
39
|
+
bold
|
29
40
|
dark={dark}
|
30
|
-
date={date}
|
31
|
-
|
32
|
-
size="sm"
|
41
|
+
date={date || datetime}
|
42
|
+
timeZone={timeZone}
|
33
43
|
/>
|
34
44
|
</FlexItem>
|
45
|
+
|
46
|
+
<SectionSeparator
|
47
|
+
className="date-time-padding"
|
48
|
+
orientation="vertical"
|
49
|
+
/>
|
35
50
|
<FlexItem>
|
36
51
|
<TimeStacked
|
37
|
-
className=
|
52
|
+
className={classes}
|
38
53
|
dark={dark}
|
54
|
+
date={date || datetime}
|
39
55
|
tag="caption"
|
40
|
-
|
56
|
+
timeZone={timeZone}
|
41
57
|
/>
|
42
58
|
</FlexItem>
|
43
59
|
</Flex>
|
@@ -1,6 +1,25 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
[class^=pb_date_time_stacked] {
|
2
|
+
|
3
|
+
[class^=padding_month] {
|
4
|
+
padding-bottom: ($space_xs + 2) !important;
|
5
|
+
}
|
6
|
+
|
7
|
+
[class^=padding_day] {
|
8
|
+
padding-bottom: ($space_xs + 2) !important;
|
9
|
+
}
|
10
|
+
|
11
|
+
&[class*=_dark] {
|
12
|
+
& > * [class^=pb_title_kit] {
|
13
|
+
color: $text_dk_default;
|
14
|
+
}
|
15
|
+
& > * [class^=pb_caption_kit] {
|
16
|
+
color: $text_dk_light;
|
17
|
+
}
|
18
|
+
}
|
3
19
|
|
4
|
-
.pb_date_time_stacked_kit {
|
5
|
-
padding-left: $space-xs;
|
6
20
|
}
|
21
|
+
.date-time-padding {
|
22
|
+
padding-right: ($space_xs / 2);
|
23
|
+
padding-left: ($space_xs / 2);
|
24
|
+
}
|
25
|
+
|
@@ -1,13 +1,17 @@
|
|
1
1
|
<%= content_tag(:div,
|
2
2
|
id: object.id,
|
3
3
|
data: object.data,
|
4
|
-
class: object.classname
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
class: object.classname,
|
5
|
+
aria: object.aria) do %>
|
6
|
+
|
7
|
+
<%= pb_rails("flex", props: {classname: "flex-container", vertical: "stretch"}) do %>
|
8
|
+
<%= pb_rails("body", props: {classname: "flex-item"}) do %>
|
9
|
+
<%= pb_rails("date_stacked", props: { date: object.date_time_value, size: "sm", align: "right", bold: true, dark: object.dark }) %>
|
8
10
|
<% end %>
|
9
|
-
<%= pb_rails("
|
10
|
-
|
11
|
+
<%= pb_rails("section_separator", props: { orientation: "vertical", classname: "date-time-padding" }) %>
|
12
|
+
<%= pb_rails("body", props: {classname: "flex-item"}) do %>
|
13
|
+
<%= pb_rails("time_stacked", props: { time: object.date_time_value, dark: object.dark, timezone: object.timezone }) %>
|
11
14
|
<% end %>
|
12
|
-
|
13
|
-
|
15
|
+
<% end %>
|
16
|
+
|
17
|
+
<% end %>
|
@@ -3,10 +3,17 @@
|
|
3
3
|
module Playbook
|
4
4
|
module PbDateTimeStacked
|
5
5
|
class DateTimeStacked < Playbook::KitBase
|
6
|
-
prop :date,
|
6
|
+
prop :date, deprecated: true
|
7
|
+
prop :date_time, type: Playbook::Props::Date,
|
7
8
|
default: ::DateTime.current
|
8
9
|
prop :dark, type: Playbook::Props::Boolean,
|
9
10
|
default: false
|
11
|
+
prop :timezone, type: Playbook::Props::String,
|
12
|
+
default: "America/New_York"
|
13
|
+
|
14
|
+
def date_time_value
|
15
|
+
date || date_time
|
16
|
+
end
|
10
17
|
end
|
11
18
|
end
|
12
|
-
end
|
19
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { ensureAccessible, renderKit } from '../utilities/test-utils'
|
2
|
+
import { DateTimeStacked } from '../'
|
3
|
+
|
4
|
+
/* eslint-disable jsx-control-statements/jsx-jcs-no-undef */
|
5
|
+
|
6
|
+
const props = {
|
7
|
+
data: { testid: 'datetimestacked' },
|
8
|
+
datetime: new Date('Wed Mar 31 2021 12:00:00 GMT-0500'),
|
9
|
+
}
|
10
|
+
|
11
|
+
test('Kit renders date time', () => {
|
12
|
+
const kit = renderKit(DateTimeStacked, props)
|
13
|
+
expect(kit).toBeInTheDocument()
|
14
|
+
})
|
15
|
+
|
16
|
+
it('Should be accessible', async () => {
|
17
|
+
ensureAccessible(DateTimeStacked, props)
|
18
|
+
})
|
19
|
+
|
20
|
+
test('renders time in default timezone', () => {
|
21
|
+
const kit = renderKit(DateTimeStacked, props)
|
22
|
+
expect(kit).toHaveTextContent(/Mar311:00pEDT/i)
|
23
|
+
})
|
24
|
+
|
25
|
+
test('renders time in timezone', () => {
|
26
|
+
props.timeZone = 'Asia/Tokyo'
|
27
|
+
const kit = renderKit(DateTimeStacked, props)
|
28
|
+
expect(kit).toHaveTextContent(/Mar312:00aJST/i)
|
29
|
+
})
|
30
|
+
|
31
|
+
test('renders time in timezone', () => {
|
32
|
+
props.timeZone = 'America/Denver'
|
33
|
+
const kit = renderKit(DateTimeStacked, props)
|
34
|
+
expect(kit).toHaveTextContent(/Mar3111:00aMDT/i)
|
35
|
+
})
|
@@ -1 +1,8 @@
|
|
1
|
-
<%= pb_rails("date_time_stacked") %>
|
1
|
+
<%= pb_rails("date_time_stacked", props: { date_time: DateTime.now }) %>
|
2
|
+
<br>
|
3
|
+
<%= pb_rails("date_time_stacked", props: { date_time: Date.new(2018, 03, 20) }) %>
|
4
|
+
<br>
|
5
|
+
<%= pb_rails("date_time_stacked", props: { date_time: DateTime.now, timezone: "Asia/Tokyo" }) %>
|
6
|
+
<br>
|
7
|
+
<%= pb_rails("date_time_stacked", props: { date_time: DateTime.now, timezone: "America/Denver" }) %>
|
8
|
+
|
@@ -4,10 +4,28 @@ import { DateTimeStacked } from '../../'
|
|
4
4
|
const DateTimeStackedDefault = (props) => (
|
5
5
|
<div>
|
6
6
|
<DateTimeStacked
|
7
|
-
|
7
|
+
datetime={new Date()}
|
8
8
|
{...props}
|
9
9
|
/>
|
10
|
+
<br />
|
11
|
+
<DateTimeStacked
|
12
|
+
datetime={new Date()}
|
13
|
+
timeZone="Asia/Tokyo"
|
14
|
+
|
15
|
+
{...props}
|
16
|
+
/>
|
17
|
+
<br />
|
18
|
+
<DateTimeStacked
|
19
|
+
datetime={new Date()}
|
20
|
+
timeZone="America/Denver"
|
21
|
+
|
22
|
+
{...props}
|
23
|
+
/>
|
24
|
+
|
10
25
|
</div>
|
11
26
|
)
|
12
27
|
|
13
28
|
export default DateTimeStackedDefault
|
29
|
+
|
30
|
+
// *Development Note* - We are reviewing this kit for a potential name change due to naming collisions when `new Date()` is used.
|
31
|
+
// To avoid this bug, please use name spacing as shown in the code examples. ie `import { Date as AliasedComponentName } from '../../'
|
@@ -2,11 +2,12 @@
|
|
2
2
|
|
3
3
|
import React from 'react'
|
4
4
|
import classnames from 'classnames'
|
5
|
-
import { buildCss } from '../utilities/props'
|
5
|
+
import { buildCss, buildDataProps } from '../utilities/props'
|
6
6
|
import { globalProps } from '../utilities/globalProps.js'
|
7
7
|
type FlexProps = {
|
8
8
|
children: array<React.ReactNode> | React.ReactNode,
|
9
9
|
className?: string,
|
10
|
+
data?: object,
|
10
11
|
horizontal?: "left" | "center" | "right" | "stretch" | "none",
|
11
12
|
justify?: "start" | "center" | "end" | "around" | "between" | "evenly" | "none",
|
12
13
|
id?: string,
|
@@ -27,6 +28,7 @@ const Flex = (props: FlexProps) => {
|
|
27
28
|
align = 'none',
|
28
29
|
children,
|
29
30
|
className,
|
31
|
+
data = {},
|
30
32
|
inline = false,
|
31
33
|
horizontal = 'left',
|
32
34
|
justify = 'none',
|
@@ -51,6 +53,8 @@ const Flex = (props: FlexProps) => {
|
|
51
53
|
const columnGapClass = columnGap !== 'none' ? `columnGap_${columnGap}` : ''
|
52
54
|
const wrapClass = wrap === true ? 'wrap' : ''
|
53
55
|
const reverseClass = reverse === true ? 'reverse' : ''
|
56
|
+
const dataProps = buildDataProps(data)
|
57
|
+
|
54
58
|
return (
|
55
59
|
<div
|
56
60
|
className={classnames(
|
@@ -70,6 +74,7 @@ const Flex = (props: FlexProps) => {
|
|
70
74
|
globalProps(props),
|
71
75
|
className
|
72
76
|
)}
|
77
|
+
{...dataProps}
|
73
78
|
>
|
74
79
|
{children}
|
75
80
|
</div>
|
@@ -1,42 +1,6 @@
|
|
1
|
-
<%= pb_rails("nav", props: {title: "
|
2
|
-
<%= pb_rails("nav/item", props: { link: "#", active: true }) do%>
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
title: "Remodeling Consultant",
|
7
|
-
orientation: "horizontal",
|
8
|
-
align: "left",
|
9
|
-
avatar_url: "https://randomuser.me/api/portraits/women/44.jpg"
|
10
|
-
}) %>
|
11
|
-
<% end %>
|
12
|
-
<%= pb_rails("nav/item", props: { link: "#" }) do%>
|
13
|
-
<%= pb_rails("user", props: {
|
14
|
-
name: "Julie Hamilton",
|
15
|
-
territory: "PHL",
|
16
|
-
title: "Inside Sales Agent",
|
17
|
-
orientation: "horizontal",
|
18
|
-
align: "left",
|
19
|
-
avatar_url: "https://randomuser.me/api/portraits/women/45.jpg"
|
20
|
-
}) %>
|
21
|
-
<% end %>
|
22
|
-
<%= pb_rails("nav/item", props: { link: "#" }) do%>
|
23
|
-
<%= pb_rails("user", props: {
|
24
|
-
name: "Dennis Wilks",
|
25
|
-
territory: "PHL",
|
26
|
-
title: "Senior Remodeling Consultant",
|
27
|
-
orientation: "horizontal",
|
28
|
-
align: "left",
|
29
|
-
avatar_url: "https://randomuser.me/api/portraits/men/44.jpg"
|
30
|
-
}) %>
|
31
|
-
<% end %>
|
32
|
-
<%= pb_rails("nav/item", props: { link: "#" }) do%>
|
33
|
-
<%= pb_rails("user", props: {
|
34
|
-
name: "Ronnie Martin",
|
35
|
-
territory: "PHL",
|
36
|
-
title: "Customer Development Representative",
|
37
|
-
orientation: "horizontal",
|
38
|
-
align: "left",
|
39
|
-
avatar_url: "https://randomuser.me/api/portraits/men/46.jpg"
|
40
|
-
}) %>
|
41
|
-
<% end %>
|
1
|
+
<%= pb_rails("nav", props: {title: "Menu", link: "#"}) do %>
|
2
|
+
<%= pb_rails("nav/item", props: { link: "#", active: true }) do%>Photos<% end %>
|
3
|
+
<%= pb_rails("nav/item", props: { link: "#" }) do%>Music<% end %>
|
4
|
+
<%= pb_rails("nav/item", props: { link: "#" }) do%>Video<% end %>
|
5
|
+
<%= pb_rails("nav/item", props: { link: "#" }) do%>Files<% end %>
|
42
6
|
<% end %>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import React from 'react'
|
2
|
-
import { Nav
|
2
|
+
import { Nav } from '../../'
|
3
3
|
import NavItem from '../_item.jsx'
|
4
4
|
|
5
5
|
const BlockNav = (props) => {
|
6
6
|
return (
|
7
7
|
<Nav
|
8
8
|
link="#"
|
9
|
-
title="
|
9
|
+
title="Menu"
|
10
10
|
{...props}
|
11
11
|
>
|
12
12
|
<NavItem
|
@@ -14,49 +14,11 @@ const BlockNav = (props) => {
|
|
14
14
|
link="#"
|
15
15
|
{...props}
|
16
16
|
>
|
17
|
-
|
18
|
-
align="left"
|
19
|
-
avatarUrl="https://randomuser.me/api/portraits/women/44.jpg"
|
20
|
-
name="Anna Black"
|
21
|
-
orientation="horizontal"
|
22
|
-
territory="PHL"
|
23
|
-
title="Remodeling Consultant"
|
24
|
-
{...props}
|
25
|
-
/>
|
26
|
-
</NavItem>
|
27
|
-
<NavItem link="#">
|
28
|
-
<User
|
29
|
-
align="left"
|
30
|
-
avatarUrl="https://randomuser.me/api/portraits/women/45.jpg"
|
31
|
-
name="Julie Hamilton"
|
32
|
-
orientation="horizontal"
|
33
|
-
territory="PHL"
|
34
|
-
title="Inside Sales Agent"
|
35
|
-
{...props}
|
36
|
-
/>
|
37
|
-
</NavItem>
|
38
|
-
<NavItem link="#">
|
39
|
-
<User
|
40
|
-
align="left"
|
41
|
-
avatarUrl="https://randomuser.me/api/portraits/men/44.jpg"
|
42
|
-
name="Dennis Wilks"
|
43
|
-
orientation="horizontal"
|
44
|
-
territory="PHL"
|
45
|
-
title="Senior Remodeling Consultant"
|
46
|
-
{...props}
|
47
|
-
/>
|
48
|
-
</NavItem>
|
49
|
-
<NavItem link="#">
|
50
|
-
<User
|
51
|
-
align="left"
|
52
|
-
avatarUrl="https://randomuser.me/api/portraits/men/46.jpg"
|
53
|
-
name="Ronnie Martin"
|
54
|
-
orientation="horizontal"
|
55
|
-
territory="PHL"
|
56
|
-
title="Customer Development Representative"
|
57
|
-
{...props}
|
58
|
-
/>
|
17
|
+
{'Photos'}
|
59
18
|
</NavItem>
|
19
|
+
<NavItem link="#">{'Music'}</NavItem>
|
20
|
+
<NavItem link="#">{'Video'}</NavItem>
|
21
|
+
<NavItem link="#">{'Files'}</NavItem>
|
60
22
|
</Nav>
|
61
23
|
)
|
62
24
|
}
|
@@ -38,9 +38,13 @@ const SectionSeparator = (props: SectionSeparatorProps) => {
|
|
38
38
|
className={classes}
|
39
39
|
id={id}
|
40
40
|
>
|
41
|
-
|
42
|
-
|
43
|
-
|
41
|
+
|
42
|
+
<If condition={text}>
|
43
|
+
<span>
|
44
|
+
<Caption text={text} />
|
45
|
+
</span>
|
46
|
+
</If>
|
47
|
+
|
44
48
|
</div>
|
45
49
|
)
|
46
50
|
}
|
@@ -3,10 +3,10 @@
|
|
3
3
|
data: object.data,
|
4
4
|
class: object.classname) do %>
|
5
5
|
|
6
|
-
<%= pb_rails("body", props: { color: "light", classname: "pb_time_stacked time-spacing" }) do %>
|
6
|
+
<%= pb_rails("body", props: { color: "light", dark: object.dark, classname: "pb_time_stacked time-spacing" }) do %>
|
7
7
|
<time>
|
8
8
|
<%= object.format_time_string %>
|
9
|
-
<%= pb_rails("caption", props: { color: "light", tag: "span", text: object.pb_date_time.to_timezone.upcase, classname: "pb_time_stacked" }) %>
|
9
|
+
<%= pb_rails("caption", props: { color: "light", tag: "span", text: object.pb_date_time.to_timezone.upcase, dark: object.dark, classname: "pb_time_stacked" }) %>
|
10
10
|
</time>
|
11
11
|
<% end %>
|
12
12
|
<% end %>
|
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: 9.4.0.
|
4
|
+
version: 9.4.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: 2021-04-
|
12
|
+
date: 2021-04-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -809,6 +809,8 @@ files:
|
|
809
809
|
- app/pb_kits/playbook/pb_date_stacked/date_stacked.rb
|
810
810
|
- app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_align.html.erb
|
811
811
|
- app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_align.jsx
|
812
|
+
- app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_bold.html.erb
|
813
|
+
- app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_bold.jsx
|
812
814
|
- app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_default.html.erb
|
813
815
|
- app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_default.jsx
|
814
816
|
- app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_not_current_year.html.erb
|
@@ -838,6 +840,7 @@ files:
|
|
838
840
|
- app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss
|
839
841
|
- app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.html.erb
|
840
842
|
- app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.rb
|
843
|
+
- app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.test.js
|
841
844
|
- app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_default.html.erb
|
842
845
|
- app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_default.jsx
|
843
846
|
- app/pb_kits/playbook/pb_date_time_stacked/docs/example.yml
|
@@ -2107,7 +2110,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
2107
2110
|
- !ruby/object:Gem::Version
|
2108
2111
|
version: 1.3.1
|
2109
2112
|
requirements: []
|
2110
|
-
|
2113
|
+
rubyforge_project:
|
2114
|
+
rubygems_version: 2.7.3
|
2111
2115
|
signing_key:
|
2112
2116
|
specification_version: 4
|
2113
2117
|
summary: Playbook Design System
|