playbook_ui 14.6.2.pre.alpha.PBNTR667railstypeaheadformintegration4424 → 14.6.2.pre.alpha.PLAY1485selectablecardoverflowoutlinebug4247

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +1 -2
  3. data/app/pb_kits/playbook/pb_advanced_table/Components/CustomCell.tsx +1 -8
  4. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +28 -21
  5. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +1 -37
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_cell.jsx +2 -13
  7. data/app/pb_kits/playbook/pb_currency/_currency.tsx +6 -16
  8. data/app/pb_kits/playbook/pb_currency/currency.rb +11 -38
  9. data/app/pb_kits/playbook/pb_currency/currency.test.js +0 -35
  10. data/app/pb_kits/playbook/pb_currency/docs/example.yml +1 -3
  11. data/app/pb_kits/playbook/pb_currency/docs/index.js +0 -1
  12. data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +7 -8
  13. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +2 -2
  14. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_loading.html.erb +1 -1
  15. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +12 -63
  16. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +2 -6
  17. data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +26 -30
  18. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.html.erb +1 -24
  19. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx +2 -25
  20. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.md +1 -0
  21. data/app/pb_kits/playbook/pb_form_pill/form_pill.html.erb +8 -46
  22. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +1 -1
  23. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.tsx +1 -1
  24. data/app/pb_kits/playbook/pb_selectable_card/selectable_card.rb +2 -2
  25. data/app/pb_kits/playbook/pb_timeline/_item.tsx +23 -59
  26. data/app/pb_kits/playbook/pb_timeline/_timeline.tsx +0 -8
  27. data/app/pb_kits/playbook/pb_timeline/docs/example.yml +1 -2
  28. data/app/pb_kits/playbook/pb_timeline/docs/index.js +0 -1
  29. data/app/pb_kits/playbook/pb_timeline/item.html.erb +21 -17
  30. data/app/pb_kits/playbook/pb_timeline/item.rb +0 -4
  31. data/app/pb_kits/playbook/pb_timeline/timeline.test.js +0 -84
  32. data/app/pb_kits/playbook/pb_typeahead/typeahead.html.erb +1 -7
  33. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +0 -2
  34. data/app/pb_kits/playbook/tokens/_typography.scss +0 -35
  35. data/app/pb_kits/playbook/utilities/_hover.scss +43 -46
  36. data/app/pb_kits/playbook/utilities/globalPropNames.mjs +0 -1
  37. data/app/pb_kits/playbook/utilities/globalProps.ts +1 -6
  38. data/dist/chunks/_typeahead-BV_n6U5W.js +22 -0
  39. data/dist/chunks/_weekday_stacked-Cyqgh5-q.js +45 -0
  40. data/dist/chunks/vendor.js +1 -1
  41. data/dist/menu.yml +0 -3
  42. data/dist/playbook-doc.js +1 -1
  43. data/dist/playbook-rails-react-bindings.js +1 -1
  44. data/dist/playbook-rails.js +1 -1
  45. data/dist/playbook.css +1 -1
  46. data/lib/playbook/forms/builder/typeahead_field.rb +0 -1
  47. data/lib/playbook/hover.rb +1 -4
  48. data/lib/playbook/version.rb +1 -1
  49. metadata +5 -39
  50. data/app/pb_kits/playbook/pb_currency/docs/_currency_comma_separator.html.erb +0 -7
  51. data/app/pb_kits/playbook/pb_currency/docs/_currency_comma_separator.jsx +0 -18
  52. data/app/pb_kits/playbook/pb_currency/docs/_currency_comma_separator.md +0 -3
  53. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text_rails.md +0 -3
  54. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text_react.md +0 -1
  55. data/app/pb_kits/playbook/pb_link/_link.scss +0 -66
  56. data/app/pb_kits/playbook/pb_link/_link.tsx +0 -107
  57. data/app/pb_kits/playbook/pb_link/docs/_link_color.html.erb +0 -30
  58. data/app/pb_kits/playbook/pb_link/docs/_link_color.jsx +0 -40
  59. data/app/pb_kits/playbook/pb_link/docs/_link_disabled.html.erb +0 -5
  60. data/app/pb_kits/playbook/pb_link/docs/_link_disabled.jsx +0 -15
  61. data/app/pb_kits/playbook/pb_link/docs/_link_icon.html.erb +0 -15
  62. data/app/pb_kits/playbook/pb_link/docs/_link_icon.jsx +0 -25
  63. data/app/pb_kits/playbook/pb_link/docs/_link_tag.html.erb +0 -35
  64. data/app/pb_kits/playbook/pb_link/docs/_link_tag.jsx +0 -45
  65. data/app/pb_kits/playbook/pb_link/docs/_link_underline.html.erb +0 -5
  66. data/app/pb_kits/playbook/pb_link/docs/_link_underline.jsx +0 -15
  67. data/app/pb_kits/playbook/pb_link/docs/example.yml +0 -16
  68. data/app/pb_kits/playbook/pb_link/docs/index.js +0 -5
  69. data/app/pb_kits/playbook/pb_link/link.html.erb +0 -21
  70. data/app/pb_kits/playbook/pb_link/link.rb +0 -44
  71. data/app/pb_kits/playbook/pb_link/link.test.jsx +0 -92
  72. data/app/pb_kits/playbook/pb_timeline/detail.html.erb +0 -3
  73. data/app/pb_kits/playbook/pb_timeline/detail.rb +0 -11
  74. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.html.erb +0 -43
  75. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.jsx +0 -68
  76. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.md +0 -2
  77. data/app/pb_kits/playbook/pb_timeline/label.html.erb +0 -12
  78. data/app/pb_kits/playbook/pb_timeline/label.rb +0 -13
  79. data/app/pb_kits/playbook/pb_timeline/step.html.erb +0 -14
  80. data/app/pb_kits/playbook/pb_timeline/step.rb +0 -16
  81. data/app/pb_kits/playbook/pb_timeline/subcomponents/Detail.tsx +0 -29
  82. data/app/pb_kits/playbook/pb_timeline/subcomponents/Label.tsx +0 -38
  83. data/app/pb_kits/playbook/pb_timeline/subcomponents/Step.tsx +0 -42
  84. data/app/pb_kits/playbook/pb_timeline/subcomponents/index.tsx +0 -3
  85. data/dist/chunks/_typeahead-5m7Pr_Rh.js +0 -22
  86. 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
- {renderTitle(name, "pb_form_pill_text")}
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
- {renderTitle(name, "pb_form_pill_text")}
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
- {renderTitle(text, "pb_form_pill_tag")}
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) && renderTitle(text, "pb_form_pill_tag")}
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: "Truncation Within Typeahead",
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 { Card, Caption, FormPill, Typeahead } from 'playbook-ui'
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="Truncation Within Typeahead"
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
- <% if object.truncate %>
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
- <% if object.icon.present? %>
30
- <%= pb_rails("icon", props: { classname: "pb_form_pill_icon", color: object.color, icon: object.icon }) %>
31
- <% end %>
32
- <% if object.truncate %>
33
- <div>
34
- <%= pb_rails("title", props: {
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 %>
@@ -129,7 +129,7 @@ $pb_selectable_paddings: (
129
129
  }
130
130
  }
131
131
 
132
- &.display_input {
132
+ &[class*=_display_input] {
133
133
  input[type="checkbox"],
134
134
  input[type="radio"] {
135
135
  &:checked {
@@ -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) + display_input_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" ? " 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
- {labelChild || (
71
- <div className="pb_timeline_item_left_block">
72
- {date && (
73
- <DateStacked
74
- align="center"
75
- date={date}
76
- size="sm"
77
- />
78
- )}
79
- </div>
80
- )}
81
- {stepChild || (
82
- <div className="pb_timeline_item_step">
83
- <IconCircle icon={icon}
84
- size="xs"
85
- variant={iconColor}
86
- />
87
- <div className="pb_timeline_item_connector" />
88
- </div>
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
- - timeline_with_children: With Children
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
- <% if step %>
9
- <%= step %>
10
- <% else %>
11
- <%= pb_rails("timeline/step", props: { icon: icon, icon_color: icon_color }) %>
12
- <% end %>
13
-
14
- <% if detail%>
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
- <% end %>
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 %>
@@ -13,10 +13,6 @@ module Playbook
13
13
  values: %w[solid dotted],
14
14
  default: "solid"
15
15
 
16
- renders_one :label
17
- renders_one :step
18
- renders_one :detail
19
-
20
16
  def classname
21
17
  generate_classname("pb_timeline_item_kit", line_style)
22
18
  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
- }