playbook_ui 9.3.0.alpha.inline3 → 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_badge/_badge.jsx +1 -26
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.jsx +1 -6
- data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.js +0 -3
- 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 +9 -7
- data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.jsx +3 -4
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.jsx +7 -3
- data/app/pb_kits/playbook/pb_text_input/_text_input.jsx +0 -3
- data/app/pb_kits/playbook/pb_textarea/_textarea.jsx +0 -3
- data/app/pb_kits/playbook/pb_time_stacked/time_stacked.html.erb +2 -2
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +1 -9
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +0 -13
- data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.jsx +11 -21
- data/app/pb_kits/playbook/pb_typeahead/components/Placeholder.jsx +4 -17
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default.jsx +0 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.jsx +3 -8
- data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +4 -4
- data/lib/playbook/version.rb +1 -1
- metadata +6 -3
- data/app/pb_kits/playbook/pb_typeahead/components/Input.jsx +0 -27
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
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import React from 'react'
|
|
4
4
|
import classnames from 'classnames'
|
|
5
5
|
import { globalProps } from '../utilities/globalProps.js'
|
|
6
|
-
import { Icon } from '../'
|
|
7
6
|
|
|
8
7
|
import {
|
|
9
8
|
buildAriaProps,
|
|
@@ -14,15 +13,8 @@ import {
|
|
|
14
13
|
type BadgeProps = {
|
|
15
14
|
aria?: object,
|
|
16
15
|
className?: string,
|
|
17
|
-
closeProps?: {
|
|
18
|
-
onClick?: EventHandler,
|
|
19
|
-
onMouseDown?: EventHandler,
|
|
20
|
-
onTouchEnd?: EventHandler,
|
|
21
|
-
},
|
|
22
16
|
data?: object,
|
|
23
17
|
id?: string,
|
|
24
|
-
removeIcon?: Boolean,
|
|
25
|
-
removeOnClick?: EventHandler,
|
|
26
18
|
rounded?: boolean,
|
|
27
19
|
text?: string,
|
|
28
20
|
variant?: "error" | "info" | "neutral" | "primary" | "success" | "warning",
|
|
@@ -31,11 +23,8 @@ const Badge = (props: BadgeProps) => {
|
|
|
31
23
|
const {
|
|
32
24
|
aria = {},
|
|
33
25
|
className,
|
|
34
|
-
closeProps = {},
|
|
35
26
|
data = {},
|
|
36
27
|
id,
|
|
37
|
-
removeIcon = false,
|
|
38
|
-
removeOnClick = () => {},
|
|
39
28
|
rounded = false,
|
|
40
29
|
text,
|
|
41
30
|
variant = 'neutral',
|
|
@@ -55,21 +44,7 @@ const Badge = (props: BadgeProps) => {
|
|
|
55
44
|
className={css}
|
|
56
45
|
id={id}
|
|
57
46
|
>
|
|
58
|
-
<span>
|
|
59
|
-
{text}
|
|
60
|
-
<If condition={removeIcon}>
|
|
61
|
-
<span
|
|
62
|
-
onClick={removeOnClick}
|
|
63
|
-
style={{ cursor: 'pointer' }}
|
|
64
|
-
{...closeProps}
|
|
65
|
-
>
|
|
66
|
-
<Icon
|
|
67
|
-
fixedWidth
|
|
68
|
-
icon="times"
|
|
69
|
-
/>
|
|
70
|
-
</span>
|
|
71
|
-
</If>
|
|
72
|
-
</span>
|
|
47
|
+
<span>{text}</span>
|
|
73
48
|
</div>
|
|
74
49
|
)
|
|
75
50
|
}
|
|
@@ -25,8 +25,6 @@ type DatePickerProps = {
|
|
|
25
25
|
id?: String,
|
|
26
26
|
inputAria?: object,
|
|
27
27
|
inputData?: object,
|
|
28
|
-
inputOnChange?: (String) => void,
|
|
29
|
-
inputValue?: any,
|
|
30
28
|
label?: String,
|
|
31
29
|
maxDate: String,
|
|
32
30
|
minDate: String,
|
|
@@ -57,8 +55,6 @@ const DatePicker = (props: DatePickerProps) => {
|
|
|
57
55
|
id,
|
|
58
56
|
inputAria,
|
|
59
57
|
inputData,
|
|
60
|
-
inputOnChange,
|
|
61
|
-
inputValue,
|
|
62
58
|
label = 'Date Picker',
|
|
63
59
|
maxDate,
|
|
64
60
|
minDate,
|
|
@@ -118,6 +114,7 @@ const DatePicker = (props: DatePickerProps) => {
|
|
|
118
114
|
className={classes}
|
|
119
115
|
id={id}
|
|
120
116
|
>
|
|
117
|
+
{className}
|
|
121
118
|
<div className="input_wrapper">
|
|
122
119
|
<TextInput
|
|
123
120
|
aria={inputAria}
|
|
@@ -129,9 +126,7 @@ const DatePicker = (props: DatePickerProps) => {
|
|
|
129
126
|
id={pickerId}
|
|
130
127
|
label={hideLabel ? null : label}
|
|
131
128
|
name={name}
|
|
132
|
-
onChange={inputOnChange}
|
|
133
129
|
placeholder={placeholder}
|
|
134
|
-
value={inputValue}
|
|
135
130
|
/>
|
|
136
131
|
<If condition={!hideIcon}>
|
|
137
132
|
<div
|
|
@@ -166,9 +166,6 @@ const datePickerHelper = (config) => {
|
|
|
166
166
|
picker.input.style.caretColor = 'transparent'
|
|
167
167
|
picker.input.style.cursor = 'pointer'
|
|
168
168
|
}
|
|
169
|
-
|
|
170
|
-
// Fix event bubbling bug on wrapper
|
|
171
|
-
document.querySelector(`#${pickerId}`).parentElement.addEventListener('click', (e) => e.stopPropagation())
|
|
172
169
|
}
|
|
173
170
|
|
|
174
171
|
export default datePickerHelper
|
|
@@ -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 '../../'
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/* @flow */
|
|
2
2
|
|
|
3
|
-
import React
|
|
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,
|
|
@@ -22,12 +23,12 @@ type FlexProps = {
|
|
|
22
23
|
wrap?: boolean,
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
const Flex = (props: FlexProps
|
|
26
|
+
const Flex = (props: FlexProps) => {
|
|
26
27
|
const {
|
|
27
28
|
align = 'none',
|
|
28
29
|
children,
|
|
29
30
|
className,
|
|
30
|
-
|
|
31
|
+
data = {},
|
|
31
32
|
inline = false,
|
|
32
33
|
horizontal = 'left',
|
|
33
34
|
justify = 'none',
|
|
@@ -52,6 +53,8 @@ const Flex = (props: FlexProps, ref: React.ElementRef<"div">) => {
|
|
|
52
53
|
const columnGapClass = columnGap !== 'none' ? `columnGap_${columnGap}` : ''
|
|
53
54
|
const wrapClass = wrap === true ? 'wrap' : ''
|
|
54
55
|
const reverseClass = reverse === true ? 'reverse' : ''
|
|
56
|
+
const dataProps = buildDataProps(data)
|
|
57
|
+
|
|
55
58
|
return (
|
|
56
59
|
<div
|
|
57
60
|
className={classnames(
|
|
@@ -71,12 +74,11 @@ const Flex = (props: FlexProps, ref: React.ElementRef<"div">) => {
|
|
|
71
74
|
globalProps(props),
|
|
72
75
|
className
|
|
73
76
|
)}
|
|
74
|
-
|
|
75
|
-
ref={ref}
|
|
77
|
+
{...dataProps}
|
|
76
78
|
>
|
|
77
79
|
{children}
|
|
78
80
|
</div>
|
|
79
81
|
)
|
|
80
82
|
}
|
|
81
83
|
|
|
82
|
-
export default
|
|
84
|
+
export default Flex
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* @flow */
|
|
2
2
|
|
|
3
|
-
import React, {
|
|
3
|
+
import React, { useEffect, useRef } from 'react'
|
|
4
4
|
import classnames from 'classnames'
|
|
5
5
|
import useFocus from './useFocus.js'
|
|
6
6
|
import Trix from 'trix'
|
|
@@ -22,7 +22,7 @@ type RichTextEditorProps = {
|
|
|
22
22
|
value?: string,
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
const RichTextEditor = (props: RichTextEditorProps
|
|
25
|
+
const RichTextEditor = (props: RichTextEditorProps) => {
|
|
26
26
|
const {
|
|
27
27
|
aria = {},
|
|
28
28
|
className,
|
|
@@ -120,7 +120,6 @@ const RichTextEditor = (props: RichTextEditorProps, ref: React.ElementRef<"input
|
|
|
120
120
|
<input
|
|
121
121
|
id={id}
|
|
122
122
|
name={name}
|
|
123
|
-
ref={ref}
|
|
124
123
|
type="hidden"
|
|
125
124
|
value={value}
|
|
126
125
|
/>
|
|
@@ -134,4 +133,4 @@ const RichTextEditor = (props: RichTextEditorProps, ref: React.ElementRef<"input
|
|
|
134
133
|
)
|
|
135
134
|
}
|
|
136
135
|
|
|
137
|
-
export default
|
|
136
|
+
export default RichTextEditor
|
|
@@ -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
|
}
|
|
@@ -19,7 +19,6 @@ type TextInputProps = {
|
|
|
19
19
|
id?: string,
|
|
20
20
|
name: string,
|
|
21
21
|
label: string,
|
|
22
|
-
onBlur: (String) => void,
|
|
23
22
|
onChange: (String) => void,
|
|
24
23
|
placeholder: string,
|
|
25
24
|
required?: boolean,
|
|
@@ -42,7 +41,6 @@ const TextInput = (
|
|
|
42
41
|
id,
|
|
43
42
|
name,
|
|
44
43
|
label,
|
|
45
|
-
onBlur = () => {},
|
|
46
44
|
onChange = () => {},
|
|
47
45
|
placeholder,
|
|
48
46
|
required,
|
|
@@ -81,7 +79,6 @@ const TextInput = (
|
|
|
81
79
|
disabled={disabled}
|
|
82
80
|
id={id}
|
|
83
81
|
name={name}
|
|
84
|
-
onBlur={onBlur}
|
|
85
82
|
onChange={onChange}
|
|
86
83
|
placeholder={placeholder}
|
|
87
84
|
ref={ref}
|
|
@@ -24,7 +24,6 @@ type TextareaProps = {
|
|
|
24
24
|
required?: boolean,
|
|
25
25
|
rows?: number,
|
|
26
26
|
resize: 'none' | 'both' | 'horizontal' | 'vertical' | 'auto',
|
|
27
|
-
onBlur?: InputCallback<HTMLTextAreaElement>,
|
|
28
27
|
onChange?: InputCallback<HTMLTextAreaElement>,
|
|
29
28
|
}
|
|
30
29
|
|
|
@@ -38,7 +37,6 @@ const Textarea = ({
|
|
|
38
37
|
label,
|
|
39
38
|
maxCharacters,
|
|
40
39
|
name,
|
|
41
|
-
onBlur = () => {},
|
|
42
40
|
onChange = () => {},
|
|
43
41
|
placeholder,
|
|
44
42
|
required,
|
|
@@ -77,7 +75,6 @@ const Textarea = ({
|
|
|
77
75
|
className="pb_textarea_kit"
|
|
78
76
|
disabled={disabled}
|
|
79
77
|
name={name}
|
|
80
|
-
onBlur={onBlur}
|
|
81
78
|
onChange={onChange}
|
|
82
79
|
placeholder={placeholder}
|
|
83
80
|
ref={ref}
|
|
@@ -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 %>
|
|
@@ -3,14 +3,12 @@
|
|
|
3
3
|
import React from 'react'
|
|
4
4
|
import Select from 'react-select'
|
|
5
5
|
import AsyncSelect from 'react-select/async'
|
|
6
|
-
import CreateableSelect from 'react-select/creatable'
|
|
7
6
|
import { get } from 'lodash'
|
|
8
7
|
import { globalProps } from '../utilities/globalProps.js'
|
|
9
8
|
|
|
10
9
|
import Control from './components/Control'
|
|
11
10
|
import ClearIndicator from './components/ClearIndicator'
|
|
12
11
|
import IndicatorsContainer from './components/IndicatorsContainer'
|
|
13
|
-
// import Input from './components/Input'
|
|
14
12
|
import MenuList from './components/MenuList'
|
|
15
13
|
import MultiValue from './components/MultiValue'
|
|
16
14
|
import Option from './components/Option'
|
|
@@ -28,7 +26,6 @@ import { noop } from '../utilities/props'
|
|
|
28
26
|
|
|
29
27
|
type Props = {
|
|
30
28
|
async?: boolean,
|
|
31
|
-
createable?: boolean,
|
|
32
29
|
dark?: boolean,
|
|
33
30
|
label?: string,
|
|
34
31
|
loadOptions?: noop | string,
|
|
@@ -44,14 +41,12 @@ type Props = {
|
|
|
44
41
|
|
|
45
42
|
const Typeahead = (props: Props) => {
|
|
46
43
|
const selectProps = {
|
|
47
|
-
badges: false,
|
|
48
44
|
cacheOptions: true,
|
|
49
45
|
components: {
|
|
50
46
|
Control,
|
|
51
47
|
ClearIndicator,
|
|
52
48
|
IndicatorsContainer,
|
|
53
49
|
IndicatorSeparator: null,
|
|
54
|
-
// Input,
|
|
55
50
|
MenuList,
|
|
56
51
|
MultiValue,
|
|
57
52
|
Option,
|
|
@@ -63,8 +58,6 @@ const Typeahead = (props: Props) => {
|
|
|
63
58
|
isClearable: true,
|
|
64
59
|
isSearchable: true,
|
|
65
60
|
name,
|
|
66
|
-
onCreate: () => {},
|
|
67
|
-
plusIcon: false,
|
|
68
61
|
...props,
|
|
69
62
|
}
|
|
70
63
|
|
|
@@ -72,8 +65,7 @@ const Typeahead = (props: Props) => {
|
|
|
72
65
|
if (typeof(props.getOptionLabel) === 'string') selectProps.getOptionLabel = get(window, props.getOptionLabel)
|
|
73
66
|
if (typeof(props.getOptionValue) === 'string') selectProps.getOptionValue = get(window, props.getOptionValue)
|
|
74
67
|
|
|
75
|
-
|
|
76
|
-
if (props.createable) Tag = CreateableSelect
|
|
68
|
+
const Tag = props.async ? AsyncSelect : Select
|
|
77
69
|
|
|
78
70
|
const handleOnChange = (data, { action, option, removedValue }) => {
|
|
79
71
|
if (action === 'select-option') {
|
|
@@ -154,17 +154,4 @@
|
|
|
154
154
|
box-sizing: border-box;
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
|
-
.placeholder+.input-wrapper .typeahead-plus-icon {
|
|
158
|
-
display: none;
|
|
159
|
-
}
|
|
160
|
-
.typeahead-kit-select__control--is-focused .typeahead-plus-icon {
|
|
161
|
-
display: none;
|
|
162
|
-
}
|
|
163
|
-
.typeahead-plus-icon {
|
|
164
|
-
color: $text_lt_lighter;
|
|
165
|
-
}
|
|
166
|
-
[class^=pb_badge_kit] span {
|
|
167
|
-
line-height: 16.5px;
|
|
168
|
-
letter-spacing: normal;
|
|
169
|
-
}
|
|
170
157
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import React from 'react'
|
|
4
4
|
import { components } from 'react-select'
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { FormPill } from '../../'
|
|
7
7
|
|
|
8
8
|
type Props = {
|
|
9
9
|
data: object,
|
|
@@ -15,7 +15,6 @@ type Props = {
|
|
|
15
15
|
const MultiValue = (props: Props) => {
|
|
16
16
|
const { removeProps } = props
|
|
17
17
|
const { imageUrl, label } = props.data
|
|
18
|
-
const { badges } = props.selectProps
|
|
19
18
|
|
|
20
19
|
const formPillProps = {
|
|
21
20
|
marginRight: 'xs',
|
|
@@ -29,28 +28,19 @@ const MultiValue = (props: Props) => {
|
|
|
29
28
|
className="text_input_multivalue_container"
|
|
30
29
|
{...props}
|
|
31
30
|
>
|
|
32
|
-
<If condition={
|
|
33
|
-
<
|
|
31
|
+
<If condition={imageUrl}>
|
|
32
|
+
<FormPill
|
|
33
|
+
avatarUrl={imageUrl}
|
|
34
34
|
closeProps={removeProps}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
variant="primary"
|
|
35
|
+
marginRight="xs"
|
|
36
|
+
name={label}
|
|
38
37
|
/>
|
|
39
38
|
<Else />
|
|
40
|
-
<
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
name={label}
|
|
46
|
-
/>
|
|
47
|
-
<Else />
|
|
48
|
-
<FormPill
|
|
49
|
-
closeProps={removeProps}
|
|
50
|
-
marginRight="xs"
|
|
51
|
-
text={label}
|
|
52
|
-
/>
|
|
53
|
-
</If>
|
|
39
|
+
<FormPill
|
|
40
|
+
closeProps={removeProps}
|
|
41
|
+
marginRight="xs"
|
|
42
|
+
text={label}
|
|
43
|
+
/>
|
|
54
44
|
</If>
|
|
55
45
|
</components.MultiValueContainer>
|
|
56
46
|
)
|
|
@@ -1,26 +1,13 @@
|
|
|
1
1
|
/* @flow */
|
|
2
2
|
|
|
3
3
|
import React from 'react'
|
|
4
|
-
import { Flex, Icon } from '../../'
|
|
5
4
|
import { components } from 'react-select'
|
|
6
5
|
|
|
7
6
|
const Placeholder = (props: any) => (
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
>
|
|
13
|
-
<components.IndicatorsContainer
|
|
14
|
-
{...props}
|
|
15
|
-
/>
|
|
16
|
-
<If condition={props.selectProps.plusIcon}>
|
|
17
|
-
<Icon
|
|
18
|
-
className="typeahead-plus-icon"
|
|
19
|
-
icon="plus"
|
|
20
|
-
/>
|
|
21
|
-
</If>
|
|
22
|
-
</Flex>
|
|
23
|
-
</>
|
|
7
|
+
<components.IndicatorsContainer
|
|
8
|
+
className="placeholder"
|
|
9
|
+
{...props}
|
|
10
|
+
/>
|
|
24
11
|
)
|
|
25
12
|
|
|
26
13
|
export default Placeholder
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import React from 'react'
|
|
4
4
|
import { Typeahead } from '../..'
|
|
5
5
|
|
|
6
|
-
const
|
|
6
|
+
const options = [
|
|
7
7
|
{ label: 'Windows', value: '#FFA500' },
|
|
8
8
|
{ label: 'Siding', value: '#FF0000' },
|
|
9
9
|
{ label: 'Doors', value: '#00FF00' },
|
|
@@ -11,18 +11,13 @@ const initOptions = [
|
|
|
11
11
|
]
|
|
12
12
|
|
|
13
13
|
const TypeaheadWithPills = (props) => {
|
|
14
|
-
// const [values, setValues] = useState([])
|
|
15
14
|
return (
|
|
16
15
|
<>
|
|
17
16
|
<Typeahead
|
|
18
|
-
badges
|
|
19
|
-
createable
|
|
20
17
|
isMulti
|
|
21
18
|
label="Colors"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
placeholder="Placeholder"
|
|
25
|
-
plusIcon
|
|
19
|
+
options={options}
|
|
20
|
+
placeholder=""
|
|
26
21
|
{...props}
|
|
27
22
|
/>
|
|
28
23
|
</>
|
|
@@ -7,8 +7,8 @@ examples:
|
|
|
7
7
|
- typeahead_with_pills_async_users: With Pills (Async Data w/ Users)
|
|
8
8
|
|
|
9
9
|
react:
|
|
10
|
-
|
|
10
|
+
- typeahead_default: Default
|
|
11
11
|
- typeahead_with_pills: With Pills
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
- typeahead_with_pills_async: With Pills (Async Data)
|
|
13
|
+
- typeahead_with_pills_async_users: With Pills (Async Data w/ Users)
|
|
14
|
+
- typeahead_with_pills_async_custom_options: With Pills (Async Data w/ Custom Options)
|
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
|
+
version: 9.4.0.pre.alpha1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Power UX
|
|
@@ -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
|
|
@@ -1940,7 +1943,6 @@ files:
|
|
|
1940
1943
|
- app/pb_kits/playbook/pb_typeahead/components/ClearIndicator.jsx
|
|
1941
1944
|
- app/pb_kits/playbook/pb_typeahead/components/Control.jsx
|
|
1942
1945
|
- app/pb_kits/playbook/pb_typeahead/components/IndicatorsContainer.jsx
|
|
1943
|
-
- app/pb_kits/playbook/pb_typeahead/components/Input.jsx
|
|
1944
1946
|
- app/pb_kits/playbook/pb_typeahead/components/MenuList.jsx
|
|
1945
1947
|
- app/pb_kits/playbook/pb_typeahead/components/MultiValue.jsx
|
|
1946
1948
|
- app/pb_kits/playbook/pb_typeahead/components/Option.jsx
|
|
@@ -2108,7 +2110,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
2108
2110
|
- !ruby/object:Gem::Version
|
|
2109
2111
|
version: 1.3.1
|
|
2110
2112
|
requirements: []
|
|
2111
|
-
|
|
2113
|
+
rubyforge_project:
|
|
2114
|
+
rubygems_version: 2.7.3
|
|
2112
2115
|
signing_key:
|
|
2113
2116
|
specification_version: 4
|
|
2114
2117
|
summary: Playbook Design System
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/* @flow */
|
|
2
|
-
|
|
3
|
-
import React from 'react'
|
|
4
|
-
import { components } from 'react-select'
|
|
5
|
-
import { Flex, Icon } from '../../'
|
|
6
|
-
|
|
7
|
-
const Input = (props: any) => (
|
|
8
|
-
<>
|
|
9
|
-
<Flex
|
|
10
|
-
align="center"
|
|
11
|
-
className="input-wrapper"
|
|
12
|
-
>
|
|
13
|
-
<If condition={props.selectProps.plusIcon}>
|
|
14
|
-
<Icon
|
|
15
|
-
className="typeahead-plus-icon"
|
|
16
|
-
icon="plus"
|
|
17
|
-
/>
|
|
18
|
-
</If>
|
|
19
|
-
<components.Input
|
|
20
|
-
className="input"
|
|
21
|
-
{...props}
|
|
22
|
-
/>
|
|
23
|
-
</Flex>
|
|
24
|
-
</>
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
export default Input
|