playbook_ui 14.6.2.pre.alpha.PBNTR667railstypeaheadformintegration4424 → 14.6.2.pre.alpha.PLAY1485selectablecardoverflowoutlinebug4247
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/_playbook.scss +1 -2
- data/app/pb_kits/playbook/pb_advanced_table/Components/CustomCell.tsx +1 -8
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +28 -21
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +1 -37
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_cell.jsx +2 -13
- data/app/pb_kits/playbook/pb_currency/_currency.tsx +6 -16
- data/app/pb_kits/playbook/pb_currency/currency.rb +11 -38
- data/app/pb_kits/playbook/pb_currency/currency.test.js +0 -35
- data/app/pb_kits/playbook/pb_currency/docs/example.yml +1 -3
- data/app/pb_kits/playbook/pb_currency/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +7 -8
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +2 -2
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with_loading.html.erb +1 -1
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +12 -63
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +2 -6
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +26 -30
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.html.erb +1 -24
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx +2 -25
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.md +1 -0
- data/app/pb_kits/playbook/pb_form_pill/form_pill.html.erb +8 -46
- data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +1 -1
- data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.tsx +1 -1
- data/app/pb_kits/playbook/pb_selectable_card/selectable_card.rb +2 -2
- data/app/pb_kits/playbook/pb_timeline/_item.tsx +23 -59
- data/app/pb_kits/playbook/pb_timeline/_timeline.tsx +0 -8
- data/app/pb_kits/playbook/pb_timeline/docs/example.yml +1 -2
- data/app/pb_kits/playbook/pb_timeline/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_timeline/item.html.erb +21 -17
- data/app/pb_kits/playbook/pb_timeline/item.rb +0 -4
- data/app/pb_kits/playbook/pb_timeline/timeline.test.js +0 -84
- data/app/pb_kits/playbook/pb_typeahead/typeahead.html.erb +1 -7
- data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +0 -2
- data/app/pb_kits/playbook/tokens/_typography.scss +0 -35
- data/app/pb_kits/playbook/utilities/_hover.scss +43 -46
- data/app/pb_kits/playbook/utilities/globalPropNames.mjs +0 -1
- data/app/pb_kits/playbook/utilities/globalProps.ts +1 -6
- data/dist/chunks/_typeahead-BV_n6U5W.js +22 -0
- data/dist/chunks/_weekday_stacked-Cyqgh5-q.js +45 -0
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +0 -3
- data/dist/playbook-doc.js +1 -1
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/forms/builder/typeahead_field.rb +0 -1
- data/lib/playbook/hover.rb +1 -4
- data/lib/playbook/version.rb +1 -1
- metadata +5 -39
- data/app/pb_kits/playbook/pb_currency/docs/_currency_comma_separator.html.erb +0 -7
- data/app/pb_kits/playbook/pb_currency/docs/_currency_comma_separator.jsx +0 -18
- data/app/pb_kits/playbook/pb_currency/docs/_currency_comma_separator.md +0 -3
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text_rails.md +0 -3
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text_react.md +0 -1
- data/app/pb_kits/playbook/pb_link/_link.scss +0 -66
- data/app/pb_kits/playbook/pb_link/_link.tsx +0 -107
- data/app/pb_kits/playbook/pb_link/docs/_link_color.html.erb +0 -30
- data/app/pb_kits/playbook/pb_link/docs/_link_color.jsx +0 -40
- data/app/pb_kits/playbook/pb_link/docs/_link_disabled.html.erb +0 -5
- data/app/pb_kits/playbook/pb_link/docs/_link_disabled.jsx +0 -15
- data/app/pb_kits/playbook/pb_link/docs/_link_icon.html.erb +0 -15
- data/app/pb_kits/playbook/pb_link/docs/_link_icon.jsx +0 -25
- data/app/pb_kits/playbook/pb_link/docs/_link_tag.html.erb +0 -35
- data/app/pb_kits/playbook/pb_link/docs/_link_tag.jsx +0 -45
- data/app/pb_kits/playbook/pb_link/docs/_link_underline.html.erb +0 -5
- data/app/pb_kits/playbook/pb_link/docs/_link_underline.jsx +0 -15
- data/app/pb_kits/playbook/pb_link/docs/example.yml +0 -16
- data/app/pb_kits/playbook/pb_link/docs/index.js +0 -5
- data/app/pb_kits/playbook/pb_link/link.html.erb +0 -21
- data/app/pb_kits/playbook/pb_link/link.rb +0 -44
- data/app/pb_kits/playbook/pb_link/link.test.jsx +0 -92
- data/app/pb_kits/playbook/pb_timeline/detail.html.erb +0 -3
- data/app/pb_kits/playbook/pb_timeline/detail.rb +0 -11
- data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.html.erb +0 -43
- data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.jsx +0 -68
- data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.md +0 -2
- data/app/pb_kits/playbook/pb_timeline/label.html.erb +0 -12
- data/app/pb_kits/playbook/pb_timeline/label.rb +0 -13
- data/app/pb_kits/playbook/pb_timeline/step.html.erb +0 -14
- data/app/pb_kits/playbook/pb_timeline/step.rb +0 -16
- data/app/pb_kits/playbook/pb_timeline/subcomponents/Detail.tsx +0 -29
- data/app/pb_kits/playbook/pb_timeline/subcomponents/Label.tsx +0 -38
- data/app/pb_kits/playbook/pb_timeline/subcomponents/Step.tsx +0 -42
- data/app/pb_kits/playbook/pb_timeline/subcomponents/index.tsx +0 -3
- data/dist/chunks/_typeahead-5m7Pr_Rh.js +0 -22
- data/dist/chunks/_weekday_stacked-B4YQ6Z-d.js +0 -45
@@ -3,7 +3,6 @@ import classnames from 'classnames'
|
|
3
3
|
import Title from '../pb_title/_title'
|
4
4
|
import Icon from '../pb_icon/_icon'
|
5
5
|
import Avatar from '../pb_avatar/_avatar'
|
6
|
-
import Tooltip from '../pb_tooltip/_tooltip'
|
7
6
|
import { globalProps, GlobalProps } from '../utilities/globalProps'
|
8
7
|
import { buildDataProps, buildHtmlProps } from '../utilities/props'
|
9
8
|
|
@@ -63,30 +62,6 @@ const FormPill = (props: FormPillProps): React.ReactElement => {
|
|
63
62
|
const dataProps = buildDataProps(data)
|
64
63
|
const htmlProps = buildHtmlProps(htmlOptions)
|
65
64
|
|
66
|
-
const renderTitle = (content: string, className: string) => {
|
67
|
-
const titleComponent = (
|
68
|
-
<Title
|
69
|
-
className={className}
|
70
|
-
size={4}
|
71
|
-
text={content}
|
72
|
-
truncate={props.truncate}
|
73
|
-
/>
|
74
|
-
)
|
75
|
-
if (props.truncate) {
|
76
|
-
return (
|
77
|
-
<Tooltip
|
78
|
-
interaction
|
79
|
-
placement="top"
|
80
|
-
position="fixed"
|
81
|
-
text={content}
|
82
|
-
>
|
83
|
-
{titleComponent}
|
84
|
-
</Tooltip>
|
85
|
-
)
|
86
|
-
}
|
87
|
-
return titleComponent
|
88
|
-
}
|
89
|
-
|
90
65
|
return (
|
91
66
|
<div className={css}
|
92
67
|
id={id}
|
@@ -102,7 +77,12 @@ const FormPill = (props: FormPillProps): React.ReactElement => {
|
|
102
77
|
size="xxs"
|
103
78
|
status={null}
|
104
79
|
/>
|
105
|
-
|
80
|
+
<Title
|
81
|
+
className="pb_form_pill_text"
|
82
|
+
size={4}
|
83
|
+
text={name}
|
84
|
+
truncate={props.truncate}
|
85
|
+
/>
|
106
86
|
</>
|
107
87
|
)}
|
108
88
|
{((name && icon && !text) || (name && icon && text)) && (
|
@@ -113,7 +93,12 @@ const FormPill = (props: FormPillProps): React.ReactElement => {
|
|
113
93
|
size="xxs"
|
114
94
|
status={null}
|
115
95
|
/>
|
116
|
-
|
96
|
+
<Title
|
97
|
+
className="pb_form_pill_text"
|
98
|
+
size={4}
|
99
|
+
text={name}
|
100
|
+
truncate={props.truncate}
|
101
|
+
/>
|
117
102
|
<Icon
|
118
103
|
className="pb_form_pill_icon"
|
119
104
|
color={color}
|
@@ -128,10 +113,22 @@ const FormPill = (props: FormPillProps): React.ReactElement => {
|
|
128
113
|
color={color}
|
129
114
|
icon={icon}
|
130
115
|
/>
|
131
|
-
|
116
|
+
<Title
|
117
|
+
className="pb_form_pill_tag"
|
118
|
+
size={4}
|
119
|
+
text={text}
|
120
|
+
truncate={props.truncate}
|
121
|
+
/>
|
132
122
|
</>
|
133
123
|
)}
|
134
|
-
{(!name && !icon && text) &&
|
124
|
+
{(!name && !icon && text) && (
|
125
|
+
<Title
|
126
|
+
className="pb_form_pill_tag"
|
127
|
+
size={4}
|
128
|
+
text={text}
|
129
|
+
truncate={props.truncate}
|
130
|
+
/>
|
131
|
+
)}
|
135
132
|
<div
|
136
133
|
className="pb_form_pill_close"
|
137
134
|
onClick={onClick}
|
@@ -146,5 +143,4 @@ const FormPill = (props: FormPillProps): React.ReactElement => {
|
|
146
143
|
</div>
|
147
144
|
)
|
148
145
|
}
|
149
|
-
|
150
146
|
export default FormPill
|
@@ -13,30 +13,7 @@
|
|
13
13
|
id: "typeahead-form-pill",
|
14
14
|
is_multi: true,
|
15
15
|
options: names,
|
16
|
-
label: "
|
16
|
+
label: "Names",
|
17
17
|
pills: true,
|
18
18
|
truncate: 1,
|
19
19
|
}) %>
|
20
|
-
|
21
|
-
<%= pb_rails("caption", props: { text: "Form Pill Truncation" }) %>
|
22
|
-
<%= pb_rails("card", props: { max_width: "xs" }) do %>
|
23
|
-
<%= pb_rails("form_pill", props: {
|
24
|
-
name: "Princess Amelia Mignonette Grimaldi Thermopolis Renaldo",
|
25
|
-
avatar_url: "https://randomuser.me/api/portraits/women/44.jpg",
|
26
|
-
tabindex: 0,
|
27
|
-
truncate: 1,
|
28
|
-
id: "truncation-1"
|
29
|
-
}) %>
|
30
|
-
<%= pb_rails("form_pill", props: {
|
31
|
-
icon: "badge-check",
|
32
|
-
text: "icon and a very long tag to show truncation",
|
33
|
-
tabindex: 0,
|
34
|
-
truncate: 1,
|
35
|
-
id: "truncation-2"
|
36
|
-
}) %>
|
37
|
-
<%= pb_rails("form_pill", props: {
|
38
|
-
text: "form pill long tag no tooltip show truncation",
|
39
|
-
tabindex: 0,
|
40
|
-
truncate: 1,
|
41
|
-
}) %>
|
42
|
-
<% end %>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import React from 'react'
|
2
|
-
import
|
2
|
+
import Typeahead from '../../pb_typeahead/_typeahead'
|
3
3
|
|
4
4
|
const names = [
|
5
5
|
{ label: 'Alexander Nathaniel Montgomery', value: 'Alexander Nathaniel Montgomery' },
|
@@ -15,34 +15,11 @@ const FormPillTruncatedText = (props) => {
|
|
15
15
|
<Typeahead
|
16
16
|
htmlOptions={{ style: { maxWidth: "240px" }}}
|
17
17
|
isMulti
|
18
|
-
label="
|
18
|
+
label="Names"
|
19
19
|
options={names}
|
20
20
|
truncate={1}
|
21
21
|
{...props}
|
22
22
|
/>
|
23
|
-
<Caption text="Form Pill Truncation"/>
|
24
|
-
<Card maxWidth="xs">
|
25
|
-
<FormPill
|
26
|
-
avatarUrl="https://randomuser.me/api/portraits/women/44.jpg"
|
27
|
-
name="Princess Amelia Mignonette Grimaldi Thermopolis Renaldo"
|
28
|
-
onClick={() => alert('Click!')}
|
29
|
-
tabIndex={0}
|
30
|
-
truncate={1}
|
31
|
-
/>
|
32
|
-
<FormPill
|
33
|
-
icon="badge-check"
|
34
|
-
onClick={() => {alert('Click!')}}
|
35
|
-
tabIndex={0}
|
36
|
-
text="icon and a very long tag to show truncation"
|
37
|
-
truncate={1}
|
38
|
-
/>
|
39
|
-
<FormPill
|
40
|
-
onClick={() => {alert('Click!')}}
|
41
|
-
tabIndex={0}
|
42
|
-
text="form pill with a very long tag to show truncation"
|
43
|
-
truncate={1}
|
44
|
-
/>
|
45
|
-
</Card>
|
46
23
|
</>
|
47
24
|
)
|
48
25
|
}
|
@@ -0,0 +1 @@
|
|
1
|
+
For pills with longer text, the `truncate` global prop can be used to truncate the label within each Form Pill. See [here](https://playbook.powerapp.cloud/visual_guidelines/truncate) for more information on the truncate global prop.
|
@@ -1,57 +1,19 @@
|
|
1
1
|
<%= content_tag(:div, id: object.id, data: object.data, class: object.classname + object.size_class, tabindex: object.tabindex, **combined_html_options) do %>
|
2
2
|
<% if object.name.present? %>
|
3
3
|
<%= pb_rails("avatar", props: { name: object.name, image_url: object.avatar_url, size: "xxs" }) %>
|
4
|
-
|
5
|
-
<div>
|
6
|
-
<%= pb_rails("title", props: {
|
7
|
-
classname: "pb_form_pill_text truncate_#{object.truncate}",
|
8
|
-
id: object.id,
|
9
|
-
size: 4,
|
10
|
-
text: object.name,
|
11
|
-
}) %>
|
12
|
-
<% if object.id.present? %>
|
13
|
-
<%= pb_rails("tooltip", props: {
|
14
|
-
position: "top",
|
15
|
-
tooltip_id: "tooltip-#{object.id}",
|
16
|
-
trigger_element_selector: "##{object.id}"
|
17
|
-
}) do %>
|
18
|
-
<%= object.name %>
|
19
|
-
<% end %>
|
20
|
-
<% end %>
|
21
|
-
</div>
|
22
|
-
<% else %>
|
23
|
-
<%= pb_rails("title", props: { classname: "pb_form_pill_text", id: object.id, size: 4, text: object.name }) %>
|
24
|
-
<% end %>
|
4
|
+
<%= pb_rails("title", props: { text: object.name, size: 4, classname: "pb_form_pill_text" }) %>
|
25
5
|
<% if object.icon.present? %>
|
26
6
|
<%= pb_rails("icon", props: { classname: "pb_form_pill_icon", color: object.color, icon: object.icon }) %>
|
27
7
|
<% end %>
|
28
8
|
<% elsif object.text.present? %>
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
classname: "pb_form_pill_tag truncate_#{object.truncate}",
|
36
|
-
id: object.id,
|
37
|
-
size: 4,
|
38
|
-
text: object.text,
|
39
|
-
}) %>
|
40
|
-
<% if object.id.present? %>
|
41
|
-
<%= pb_rails("tooltip", props: {
|
42
|
-
position: "top",
|
43
|
-
tooltip_id: "tooltip-#{object.id}",
|
44
|
-
trigger_element_selector: "##{object.id}"
|
45
|
-
}) do %>
|
46
|
-
<%= object.text %>
|
47
|
-
<% end %>
|
48
|
-
<% end %>
|
49
|
-
</div>
|
50
|
-
<% else %>
|
51
|
-
<%= pb_rails("title", props: { classname: "pb_form_pill_tag", id: object.id, size: 4, text: object.text, }) %>
|
52
|
-
<% end %>
|
9
|
+
<% if object.icon.present? %>
|
10
|
+
<%= pb_rails("icon", props: { classname: "pb_form_pill_icon", color: object.color, icon: object.icon }) %>
|
11
|
+
<% end %>
|
12
|
+
<% if object.text.present? %>
|
13
|
+
<%= pb_rails("title", props: { text: object.text, size: 4, classname: "pb_form_pill_tag" }) %>
|
14
|
+
<% end %>
|
53
15
|
<% end %>
|
54
16
|
<%= pb_rails("body", props: { classname: "pb_form_pill_close" }) do %>
|
55
17
|
<%= pb_rails("icon", props: { icon: 'times', fixed_width: true, size: object.close_icon_size }) %>
|
56
18
|
<% end %>
|
57
|
-
<% end %>
|
19
|
+
<% end %>
|
@@ -66,8 +66,8 @@ const SelectableCard = (props: SelectableCardProps) => {
|
|
66
66
|
'checked': checked,
|
67
67
|
'disabled': disabled,
|
68
68
|
'enabled': !disabled,
|
69
|
+
'display_input': variant === 'displayInput',
|
69
70
|
}),
|
70
|
-
variant === 'displayInput' ? 'display_input' : '',
|
71
71
|
{ error },
|
72
72
|
dark ? 'dark' : '',
|
73
73
|
className
|
@@ -25,7 +25,7 @@ module Playbook
|
|
25
25
|
|
26
26
|
def classname
|
27
27
|
[
|
28
|
-
generate_classname_without_spacing("pb_selectable_card_kit", checked_class, enable_disabled_class
|
28
|
+
generate_classname_without_spacing("pb_selectable_card_kit", checked_class, enable_disabled_class, display_input_class),
|
29
29
|
error_class,
|
30
30
|
dark_props,
|
31
31
|
].compact.join(" ")
|
@@ -81,7 +81,7 @@ module Playbook
|
|
81
81
|
end
|
82
82
|
|
83
83
|
def display_input_class
|
84
|
-
variant == "display_input" ? "
|
84
|
+
variant == "display_input" ? "display_input" : nil
|
85
85
|
end
|
86
86
|
end
|
87
87
|
end
|
@@ -1,15 +1,12 @@
|
|
1
1
|
import React from 'react'
|
2
2
|
import classnames from 'classnames'
|
3
|
+
|
3
4
|
import { buildCss, buildHtmlProps } from '../utilities/props'
|
4
|
-
import { globalProps, GlobalProps } from "../utilities/globalProps"
|
5
|
+
import { globalProps, GlobalProps } from "../utilities/globalProps";
|
5
6
|
|
6
7
|
import DateStacked from '../pb_date_stacked/_date_stacked'
|
7
8
|
import IconCircle from '../pb_icon_circle/_icon_circle'
|
8
9
|
|
9
|
-
import TimelineLabel from './subcomponents/Label'
|
10
|
-
import TimelineStep from './subcomponents/Step'
|
11
|
-
import TimelineDetail from './subcomponents/Detail'
|
12
|
-
|
13
10
|
type ItemProps = {
|
14
11
|
className?: string,
|
15
12
|
children?: React.ReactNode[] | React.ReactNode,
|
@@ -20,13 +17,6 @@ type ItemProps = {
|
|
20
17
|
lineStyle?: 'solid' | 'dotted',
|
21
18
|
} & GlobalProps
|
22
19
|
|
23
|
-
function isElementOfType<P>(
|
24
|
-
element: React.ReactNode,
|
25
|
-
component: React.ComponentType<P>
|
26
|
-
): element is React.ReactElement<P> {
|
27
|
-
return React.isValidElement<P>(element) && element.type === component
|
28
|
-
}
|
29
|
-
|
30
20
|
const TimelineItem = ({
|
31
21
|
className,
|
32
22
|
children,
|
@@ -41,57 +31,31 @@ const TimelineItem = ({
|
|
41
31
|
|
42
32
|
const htmlProps = buildHtmlProps(htmlOptions)
|
43
33
|
|
44
|
-
const childrenArray = React.Children.toArray(children)
|
45
|
-
|
46
|
-
const labelChild = childrenArray.find(
|
47
|
-
(child): child is React.ReactElement => isElementOfType(child, TimelineLabel)
|
48
|
-
)
|
49
|
-
|
50
|
-
const stepChild = childrenArray.find(
|
51
|
-
(child): child is React.ReactElement => isElementOfType(child, TimelineStep)
|
52
|
-
)
|
53
|
-
|
54
|
-
const detailChild = childrenArray.find(
|
55
|
-
(child): child is React.ReactElement => isElementOfType(child, TimelineDetail)
|
56
|
-
)
|
57
|
-
|
58
|
-
const otherChildren = childrenArray.filter(
|
59
|
-
(child) =>
|
60
|
-
!isElementOfType(child, TimelineLabel) &&
|
61
|
-
!isElementOfType(child, TimelineStep) &&
|
62
|
-
!isElementOfType(child, TimelineDetail)
|
63
|
-
)
|
64
|
-
|
65
34
|
return (
|
66
|
-
<div
|
35
|
+
<div
|
67
36
|
{...htmlProps}
|
68
37
|
className={classnames(timelineItemCss, globalProps(props), className)}
|
69
38
|
>
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
{detailChild || (
|
91
|
-
<div className="pb_timeline_item_right_block">
|
92
|
-
{ otherChildren }
|
93
|
-
</div>
|
94
|
-
)}
|
39
|
+
<div className="pb_timeline_item_left_block">
|
40
|
+
{date &&
|
41
|
+
<DateStacked
|
42
|
+
align="center"
|
43
|
+
date={date}
|
44
|
+
size="sm"
|
45
|
+
/>
|
46
|
+
}
|
47
|
+
</div>
|
48
|
+
<div className="pb_timeline_item_step">
|
49
|
+
<IconCircle
|
50
|
+
icon={icon}
|
51
|
+
size="xs"
|
52
|
+
variant={iconColor}
|
53
|
+
/>
|
54
|
+
<div className="pb_timeline_item_connector" />
|
55
|
+
</div>
|
56
|
+
<div className="pb_timeline_item_right_block">
|
57
|
+
{children}
|
58
|
+
</div>
|
95
59
|
</div>
|
96
60
|
)
|
97
61
|
}
|
@@ -5,11 +5,6 @@ import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../uti
|
|
5
5
|
import { GlobalProps, globalProps } from '../utilities/globalProps'
|
6
6
|
|
7
7
|
import TimelineItem from './_item'
|
8
|
-
import {
|
9
|
-
TimelineStep,
|
10
|
-
TimelineLabel,
|
11
|
-
TimelineDetail,
|
12
|
-
} from './subcomponents'
|
13
8
|
|
14
9
|
type TimelineProps = {
|
15
10
|
aria?: { [key: string]: string },
|
@@ -52,8 +47,5 @@ const Timeline = ({
|
|
52
47
|
}
|
53
48
|
|
54
49
|
Timeline.Item = TimelineItem
|
55
|
-
Timeline.Step = TimelineStep
|
56
|
-
Timeline.Label = TimelineLabel
|
57
|
-
Timeline.Detail = TimelineDetail
|
58
50
|
|
59
51
|
export default Timeline
|
@@ -4,11 +4,10 @@ examples:
|
|
4
4
|
- timeline_default: Default
|
5
5
|
- timeline_vertical: Vertical
|
6
6
|
- timeline_with_date: With Date
|
7
|
-
- timeline_with_children: With Children
|
8
7
|
|
9
8
|
|
10
9
|
react:
|
11
10
|
- timeline_default: Default
|
12
11
|
- timeline_vertical: Vertical
|
13
12
|
- timeline_with_date: With Date
|
14
|
-
|
13
|
+
|
@@ -1,4 +1,3 @@
|
|
1
1
|
export { default as TimelineDefault } from './_timeline_default.jsx'
|
2
2
|
export { default as TimelineVertical } from './_timeline_vertical.jsx'
|
3
3
|
export { default as TimelineWithDate } from './_timeline_with_date.jsx'
|
4
|
-
export { default as TimelineWithChildren } from './_timeline_with_children.jsx'
|
@@ -1,21 +1,25 @@
|
|
1
1
|
<%= pb_content_tag do %>
|
2
|
-
<% if label %>
|
3
|
-
<%= label %>
|
4
|
-
<% else %>
|
5
|
-
<%= pb_rails("timeline/label", props: { date: date }) %>
|
6
|
-
<% end %>
|
7
2
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
<%= detail%>
|
16
|
-
<% else %>
|
17
|
-
<%= pb_rails("timeline/detail") do %>
|
18
|
-
<%= content %>
|
3
|
+
<div class="pb_timeline_item_left_block">
|
4
|
+
<% if object.date.present? %>
|
5
|
+
<%= pb_rails("date_stacked", props: {
|
6
|
+
date: object.date,
|
7
|
+
size: "sm",
|
8
|
+
align: "center"
|
9
|
+
}) %>
|
19
10
|
<% end %>
|
20
|
-
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<div class="pb_timeline_item_step">
|
14
|
+
<%= pb_rails("icon_circle", props: {
|
15
|
+
icon: object.icon,
|
16
|
+
variant: object.icon_color,
|
17
|
+
size: "xs"
|
18
|
+
}) %>
|
19
|
+
<div class="pb_timeline_item_connector"></div>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<div class="pb_timeline_item_right_block">
|
23
|
+
<%= content.presence %>
|
24
|
+
</div>
|
21
25
|
<% end %>
|
@@ -2,10 +2,6 @@ import React from 'react'
|
|
2
2
|
import { render, screen } from '../utilities/test-utils'
|
3
3
|
|
4
4
|
import Timeline from './_timeline'
|
5
|
-
import TimelineItem from './_item'
|
6
|
-
import TimelineLabel from './subcomponents/Label'
|
7
|
-
import TimelineStep from './subcomponents/Step'
|
8
|
-
import TimelineDetail from './subcomponents/Detail'
|
9
5
|
import TitleDetail from '../pb_title_detail/_title_detail'
|
10
6
|
|
11
7
|
const testId = 'timeline'
|
@@ -47,91 +43,18 @@ const TimelineDefault = (props) => (
|
|
47
43
|
</>
|
48
44
|
)
|
49
45
|
|
50
|
-
const TimelineWithChildren = (props) => (
|
51
|
-
<>
|
52
|
-
<Timeline
|
53
|
-
className={className}
|
54
|
-
data={{ testid: testId }}
|
55
|
-
orientation="horizontal"
|
56
|
-
showDate
|
57
|
-
{...props}
|
58
|
-
>
|
59
|
-
<TimelineItem lineStyle="solid"
|
60
|
-
{...props}
|
61
|
-
>
|
62
|
-
<TimelineLabel date={new Date()} />
|
63
|
-
<TimelineStep icon="user"
|
64
|
-
iconColor="royal"
|
65
|
-
/>
|
66
|
-
<TimelineDetail>
|
67
|
-
<TitleDetail
|
68
|
-
detail="37-27 74th Street"
|
69
|
-
title="Jackson Heights"
|
70
|
-
{...props}
|
71
|
-
/>
|
72
|
-
</TimelineDetail>
|
73
|
-
</TimelineItem>
|
74
|
-
|
75
|
-
<TimelineItem lineStyle="dotted"
|
76
|
-
{...props}
|
77
|
-
>
|
78
|
-
<TimelineStep icon="check"
|
79
|
-
iconColor="teal"
|
80
|
-
/>
|
81
|
-
<TimelineDetail>
|
82
|
-
<TitleDetail
|
83
|
-
detail="81 Gate St Brooklyn"
|
84
|
-
title="Greenpoint"
|
85
|
-
{...props}
|
86
|
-
/>
|
87
|
-
</TimelineDetail>
|
88
|
-
</TimelineItem>
|
89
|
-
|
90
|
-
<TimelineItem lineStyle="solid"
|
91
|
-
{...props}
|
92
|
-
>
|
93
|
-
<TimelineLabel
|
94
|
-
date={new Date(new Date().setDate(new Date().getDate() + 1))}
|
95
|
-
/>
|
96
|
-
<TimelineStep icon="map-marker-alt"
|
97
|
-
iconColor="purple"
|
98
|
-
/>
|
99
|
-
<TimelineDetail>
|
100
|
-
<TitleDetail
|
101
|
-
detail="72 E St Astoria"
|
102
|
-
title="Society Hill"
|
103
|
-
{...props}
|
104
|
-
/>
|
105
|
-
</TimelineDetail>
|
106
|
-
</TimelineItem>
|
107
|
-
</Timeline>
|
108
|
-
</>
|
109
|
-
)
|
110
|
-
|
111
46
|
test('should pass data prop', () => {
|
112
47
|
render(<TimelineDefault />)
|
113
48
|
const kit = screen.getByTestId(testId)
|
114
49
|
expect(kit).toBeInTheDocument()
|
115
50
|
})
|
116
51
|
|
117
|
-
test('should pass data prop using children', () => {
|
118
|
-
render(<TimelineWithChildren />)
|
119
|
-
const kit = screen.getByTestId(testId)
|
120
|
-
expect(kit).toBeInTheDocument()
|
121
|
-
})
|
122
|
-
|
123
52
|
test('should pass className prop', () => {
|
124
53
|
render(<TimelineDefault />)
|
125
54
|
const kit = screen.getByTestId(testId)
|
126
55
|
expect(kit).toHaveClass(className)
|
127
56
|
})
|
128
57
|
|
129
|
-
test('should pass className prop with children', () => {
|
130
|
-
render(<TimelineWithChildren />)
|
131
|
-
const kit = screen.getByTestId(testId)
|
132
|
-
expect(kit).toHaveClass(className)
|
133
|
-
})
|
134
|
-
|
135
58
|
test('should pass aria prop', () => {
|
136
59
|
render(<TimelineDefault />)
|
137
60
|
const kit = screen.getByTestId(testId)
|
@@ -163,10 +86,3 @@ test('should pass showDate prop', () => {
|
|
163
86
|
const kit = screen.getByTestId(testId)
|
164
87
|
expect(kit).toHaveClass('pb_timeline_kit__horizontal__with_date')
|
165
88
|
})
|
166
|
-
|
167
|
-
test('should pass showDate prop with Children', () => {
|
168
|
-
const props = { showDate: true }
|
169
|
-
render(<TimelineWithChildren {...props} />)
|
170
|
-
const kit = screen.getByTestId(testId)
|
171
|
-
expect(kit).toHaveClass('pb_timeline_kit__horizontal__with_date')
|
172
|
-
})
|
@@ -14,20 +14,14 @@
|
|
14
14
|
fixed_width: true,
|
15
15
|
}) %>
|
16
16
|
</div>
|
17
|
-
<% if object.label.present? %>
|
18
|
-
<label class="pb_typeahead_kit_label" for="<%= object.name %>">
|
19
|
-
<%= pb_rails("caption", props: { text: object.label, margin_bottom:"xs"}) %>
|
20
|
-
</label>
|
21
|
-
<% end %>
|
22
17
|
<%= pb_rails("text_input", props: {
|
23
18
|
type: "search",
|
24
19
|
input_options: object.input_options,
|
20
|
+
label: object.label,
|
25
21
|
name: object.name,
|
26
22
|
value: object.value,
|
27
23
|
placeholder: object.placeholder,
|
28
24
|
margin_bottom: "none",
|
29
|
-
required: object.required,
|
30
|
-
id: object.name,
|
31
25
|
}) %>
|
32
26
|
<%= pb_rails("list", props: { ordered: false, borderless: false, xpadding: true, role: "status", aria: { live: "polite" }, data: { pb_typeahead_kit_results: true } }) do %>
|
33
27
|
<% end %>
|
@@ -40,8 +40,6 @@ module Playbook
|
|
40
40
|
prop :pill_color, type: Playbook::Props::Enum,
|
41
41
|
values: %w[primary neutral success warning error info data_1 data_2 data_3 data_4 data_5 data_6 data_7 data_8 windows siding roofing doors gutters solar insulation accessories],
|
42
42
|
default: "primary"
|
43
|
-
prop :required, type: Playbook::Props::Boolean,
|
44
|
-
default: false
|
45
43
|
|
46
44
|
def classname
|
47
45
|
default_margin_bottom = margin_bottom.present? ? "" : " mb_sm"
|
@@ -1,5 +1,3 @@
|
|
1
|
-
@import "../tokens/colors";
|
2
|
-
|
3
1
|
$font_family_base: "Power Centra", "Helvetica Neue", Helvetica, Arial, sans_serif !default;
|
4
2
|
|
5
3
|
/* CLEAN UP AND REMOVE */
|
@@ -53,36 +51,3 @@ $boldest: 700 !default;
|
|
53
51
|
$bolder: 700 !default;
|
54
52
|
$light: 300 !default;
|
55
53
|
$lighter: 300 !default;
|
56
|
-
|
57
|
-
/* Link Colors */
|
58
|
-
$pb_link_colors: (
|
59
|
-
default: $primary_action,
|
60
|
-
body: $text_lt_default,
|
61
|
-
muted: $text_lt_light,
|
62
|
-
destructive: $error,
|
63
|
-
);
|
64
|
-
|
65
|
-
$pb_link_hover_colors: (
|
66
|
-
default: $text_lt_default,
|
67
|
-
body: $primary_action,
|
68
|
-
muted: $text_lt_default,
|
69
|
-
destructive: $text_lt_default,
|
70
|
-
);
|
71
|
-
|
72
|
-
$pb_dark_link_colors: (
|
73
|
-
default: $active_dark,
|
74
|
-
body: $text_dk_default,
|
75
|
-
muted: $text_dk_light,
|
76
|
-
destructive: $error_dark,
|
77
|
-
);
|
78
|
-
|
79
|
-
$pb_dark_link_hover_colors: (
|
80
|
-
default: $text_dk_default,
|
81
|
-
body: $active_dark,
|
82
|
-
muted: $text_dk_default,
|
83
|
-
destructive: $text_dk_default,
|
84
|
-
);
|
85
|
-
|
86
|
-
@mixin pb_link($color: $primary_action) {
|
87
|
-
color: $color;
|
88
|
-
}
|