playbook_ui 14.9.0 → 14.10.0.pre.alpha.PBNTR775formmatingmaskdefaultvalue5137

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.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/CollapsibleTrail.tsx +1 -6
  3. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +11 -3
  4. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +62 -18
  5. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +2 -2
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_collapsible_trail_rails.html.erb +36 -0
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_collapsible_trail_rails.md +1 -0
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pagination.jsx +50 -0
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pagination.md +1 -0
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pagination_with_props.jsx +57 -0
  11. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pagination_with_props.md +5 -0
  12. data/app/pb_kits/playbook/pb_advanced_table/docs/advanced_table_pagination_mock_data.json +5600 -0
  13. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +3 -0
  14. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -0
  15. data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +4 -2
  16. data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +5 -3
  17. data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +8 -0
  18. data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +2 -0
  19. data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.html.erb +8 -0
  20. data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.rb +2 -0
  21. data/app/pb_kits/playbook/pb_avatar/_avatar.scss +0 -2
  22. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom.jsx +53 -49
  23. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom_rails.html.erb +29 -36
  24. data/app/pb_kits/playbook/pb_body/_body.scss +14 -13
  25. data/app/pb_kits/playbook/pb_body/_body_mixins.scss +22 -16
  26. data/app/pb_kits/playbook/pb_bread_crumbs/docs/_bread_crumbs_default.jsx +6 -0
  27. data/app/pb_kits/playbook/pb_caption/_caption_mixin.scss +2 -1
  28. data/app/pb_kits/playbook/pb_card/_card.tsx +7 -7
  29. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +2 -2
  30. data/app/pb_kits/playbook/pb_card/docs/_card_header.html.erb +21 -1
  31. data/app/pb_kits/playbook/pb_card/docs/_card_header.jsx +50 -0
  32. data/app/pb_kits/playbook/pb_card/docs/_card_header.md +1 -1
  33. data/app/pb_kits/playbook/pb_collapsible/_collapsible.tsx +9 -4
  34. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleContent.tsx +2 -2
  35. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleMain.tsx +2 -2
  36. data/app/pb_kits/playbook/pb_drawer/_drawer.tsx +2 -2
  37. data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +5 -0
  38. data/app/pb_kits/playbook/pb_file_upload/_file_upload.tsx +7 -2
  39. data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +8 -2
  40. data/app/pb_kits/playbook/pb_form_group/_error_state_mixin.scss +57 -0
  41. data/app/pb_kits/playbook/pb_form_group/_form_group.scss +11 -2
  42. data/app/pb_kits/playbook/pb_gauge/_gauge.scss +31 -1
  43. data/app/pb_kits/playbook/pb_gauge/_gauge.tsx +3 -3
  44. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex.jsx +25 -5
  45. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.tsx +17 -1
  46. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis.html.erb +17 -1
  47. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis.jsx +15 -0
  48. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis.md +2 -1
  49. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +15 -1
  50. data/app/pb_kits/playbook/pb_home_address_street/none_emphasis.html.erb +32 -0
  51. data/app/pb_kits/playbook/pb_home_address_street/none_emphasis.rb +29 -0
  52. data/app/pb_kits/playbook/pb_layout/_layout.tsx +30 -11
  53. data/app/pb_kits/playbook/pb_link/_link.scss +3 -3
  54. data/app/pb_kits/playbook/pb_nav/_bold_mixin.scss +11 -1
  55. data/app/pb_kits/playbook/pb_nav/_collapsible_nav.scss +16 -2
  56. data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +1 -1
  57. data/app/pb_kits/playbook/pb_pagination/_pagination.tsx +2 -2
  58. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +4 -4
  59. data/app/pb_kits/playbook/pb_selectable_card/selectable_card.html.erb +1 -1
  60. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_filter.jsx +166 -0
  61. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_height_width.jsx +2 -0
  62. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_user.jsx +89 -0
  63. data/app/pb_kits/playbook/pb_skeleton_loading/docs/example.yml +2 -1
  64. data/app/pb_kits/playbook/pb_skeleton_loading/docs/index.js +2 -0
  65. data/app/pb_kits/playbook/pb_stat_change/_stat_change.tsx +44 -36
  66. data/app/pb_kits/playbook/pb_stat_change/stat_change.html.erb +4 -4
  67. data/app/pb_kits/playbook/pb_table/_table.tsx +6 -6
  68. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns.html.erb +77 -0
  69. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns_rails.md +1 -0
  70. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.jsx +75 -0
  71. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.md +1 -0
  72. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.jsx +108 -0
  73. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.md +2 -0
  74. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_content.jsx +94 -0
  75. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_content.md +0 -0
  76. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows.jsx +83 -0
  77. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows.md +3 -0
  78. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table.jsx +120 -0
  79. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table.md +1 -0
  80. data/app/pb_kits/playbook/pb_table/docs/example.yml +7 -0
  81. data/app/pb_kits/playbook/pb_table/docs/index.js +5 -0
  82. data/app/pb_kits/playbook/pb_table/index.ts +102 -26
  83. data/app/pb_kits/playbook/pb_table/styles/_all.scss +2 -1
  84. data/app/pb_kits/playbook/pb_table/styles/_collapsible.scss +35 -0
  85. data/app/pb_kits/playbook/pb_table/styles/_scroll.scss +28 -3
  86. data/app/pb_kits/playbook/pb_table/styles/_sticky_columns.scss +0 -1
  87. data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +106 -1
  88. data/app/pb_kits/playbook/pb_table/table.html.erb +8 -2
  89. data/app/pb_kits/playbook/pb_table/table.rb +21 -2
  90. data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +43 -4
  91. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_mask.jsx +88 -0
  92. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +1 -0
  93. data/app/pb_kits/playbook/pb_text_input/docs/index.js +1 -0
  94. data/app/pb_kits/playbook/pb_text_input/inputMask.ts +87 -0
  95. data/app/pb_kits/playbook/pb_text_input/text_input.test.js +139 -2
  96. data/app/pb_kits/playbook/pb_title/_title.scss +6 -5
  97. data/app/pb_kits/playbook/pb_title/_title_mixin.scss +13 -0
  98. data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +115 -46
  99. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_highlight.jsx +9 -2
  100. data/app/pb_kits/playbook/pb_typeahead/typeahead.html.erb +3 -2
  101. data/app/pb_kits/playbook/tokens/_titles.scss +0 -8
  102. data/app/pb_kits/playbook/utilities/_hover.scss +11 -2
  103. data/app/pb_kits/playbook/utilities/globalProps.ts +2 -0
  104. data/app/pb_kits/playbook/utilities/test/globalProps/hover.test.js +15 -0
  105. data/dist/chunks/{_typeahead-B8fkIeXA.js → _typeahead-CoIYBETL.js} +3 -3
  106. data/dist/chunks/_weekday_stacked-Qj3GFYzA.js +45 -0
  107. data/dist/chunks/lazysizes-B7xYodB-.js +1 -0
  108. data/dist/chunks/{lib-SyD3buPZ.js → lib-sMFo2JZy.js} +3 -3
  109. data/dist/chunks/{pb_form_validation-Dt8UJgrJ.js → pb_form_validation-CgvjWbOK.js} +1 -1
  110. data/dist/chunks/vendor.js +1 -1
  111. data/dist/menu.yml +1 -1
  112. data/dist/playbook-doc.js +1 -1
  113. data/dist/playbook-rails-react-bindings.js +1 -1
  114. data/dist/playbook-rails.js +1 -1
  115. data/dist/playbook.css +1 -1
  116. data/lib/playbook/hover.rb +7 -1
  117. data/lib/playbook/version.rb +2 -2
  118. metadata +37 -10
  119. data/dist/chunks/_weekday_stacked-CVYxBYHe.js +0 -45
  120. data/dist/chunks/lazysizes-DHz07jlL.js +0 -1
@@ -181,6 +181,56 @@ const CardHeader = (props) => {
181
181
  />
182
182
  </Card.Body>
183
183
  </Card>
184
+
185
+ <Title
186
+ {...props}
187
+ marginBottom='sm'
188
+ size={4}
189
+ tag="h4"
190
+ text="Status Colors"
191
+ />
192
+
193
+ <Card
194
+ {...props}
195
+ marginBottom='sm'
196
+ padding="none"
197
+ >
198
+ <Card.Header
199
+ headerColor="success"
200
+ >
201
+ <Body
202
+ dark
203
+ text="Success"
204
+ />
205
+ </Card.Header>
206
+ <Card.Body>
207
+ <Body
208
+ {...props}
209
+ text="Body"
210
+ />
211
+ </Card.Body>
212
+ </Card>
213
+
214
+ <Card
215
+ {...props}
216
+ marginBottom='sm'
217
+ padding="none"
218
+ >
219
+ <Card.Header
220
+ headerColor="error"
221
+ >
222
+ <Body
223
+ dark
224
+ text="Error"
225
+ />
226
+ </Card.Header>
227
+ <Card.Body>
228
+ <Body
229
+ {...props}
230
+ text="Body"
231
+ />
232
+ </Card.Body>
233
+ </Card>
184
234
  </>
185
235
  )
186
236
  }
@@ -1 +1 @@
1
- Card headers pass category, product, and background colors only. List of all category, product, and background colors can be viewed <a href="https://playbook.powerapp.cloud/visual_guidelines/colors" target="_blank">here</a>.
1
+ Card headers pass category, product, status and background colors only. List of all category, product, status and background colors can be viewed <a href="https://playbook.powerapp.cloud/visual_guidelines/colors" target="_blank">here</a>.
@@ -2,7 +2,7 @@ import React, { useEffect, ReactElement } from 'react'
2
2
  import classnames from 'classnames'
3
3
  import useCollapsible from './useCollapsible'
4
4
 
5
- import { globalProps, globalInlineProps } from '../utilities/globalProps'
5
+ import { globalProps, globalInlineProps, GlobalProps } from '../utilities/globalProps'
6
6
  import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
7
7
 
8
8
  import CollapsibleContent from './child_kits/CollapsibleContent'
@@ -32,6 +32,7 @@ type CollapsibleProps = {
32
32
  onClick?: ()=> void,
33
33
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
34
34
  id?: string,
35
+ tag?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'div' | 'tr' | 'th' | 'td' | 'thead' | 'col',
35
36
  }
36
37
 
37
38
  const Collapsible = ({
@@ -47,8 +48,9 @@ const Collapsible = ({
47
48
  onIconClick,
48
49
  onClick,
49
50
  id,
51
+ tag = 'div',
50
52
  ...props
51
- }: CollapsibleProps): React.ReactElement => {
53
+ }: CollapsibleProps & GlobalProps): React.ReactElement => {
52
54
  const [isCollapsed, toggle, setIsCollapsed] = useCollapsible(collapsed)
53
55
 
54
56
  useEffect(()=> {
@@ -76,9 +78,12 @@ const Collapsible = ({
76
78
  className
77
79
  )
78
80
  const dynamicInlineProps = globalInlineProps(props)
81
+
82
+ const Tag: React.ReactElement | any = `${tag}`;
83
+
79
84
  return (
80
85
  <CollapsibleContext.Provider value={{ collapsed: isCollapsed, toggle, icon, iconSize, iconColor, onIconClick, onClick }}>
81
- <div
86
+ <Tag
82
87
  {...ariaProps}
83
88
  {...dataProps}
84
89
  {...htmlProps}
@@ -96,7 +101,7 @@ const Collapsible = ({
96
101
  <CollapsibleContent {...contentProps}>
97
102
  {contentChildren}
98
103
  </CollapsibleContent>
99
- </div>
104
+ </Tag>
100
105
  </CollapsibleContext.Provider>
101
106
  )
102
107
  }
@@ -1,7 +1,7 @@
1
1
  import classnames from 'classnames'
2
2
  import React, { useContext, useRef, useEffect } from 'react'
3
3
  import { buildCss } from '../../utilities/props'
4
- import { globalProps } from '../../utilities/globalProps'
4
+ import { globalProps, GlobalProps } from '../../utilities/globalProps'
5
5
  import { hideElement, showElement } from '../_helper_functions'
6
6
 
7
7
  import CollapsibleContext from '../context'
@@ -15,7 +15,7 @@ const CollapsibleContent = ({
15
15
  children,
16
16
  className,
17
17
  ...props
18
- }: CollapsibleContentProps): React.ReactElement => {
18
+ }: CollapsibleContentProps & GlobalProps): React.ReactElement => {
19
19
  const context: {[key: string]: boolean | string} = useContext(CollapsibleContext)
20
20
  const contentCSS = buildCss('pb_collapsible_content_kit')
21
21
  const contentSpacing = globalProps(props)
@@ -3,7 +3,7 @@
3
3
  import classnames from 'classnames'
4
4
  import React, { useContext } from 'react'
5
5
  import { buildCss } from '../../utilities/props'
6
- import { globalProps } from '../../utilities/globalProps'
6
+ import { globalProps, GlobalProps } from '../../utilities/globalProps'
7
7
 
8
8
  import Flex from '../../pb_flex/_flex'
9
9
  import FlexItem from '../../pb_flex/_flex_item'
@@ -25,7 +25,7 @@ const CollapsibleMain = ({
25
25
  className,
26
26
  cursor = 'pointer',
27
27
  ...props
28
- }: CollapsibleMainProps): React.ReactElement=> {
28
+ }: CollapsibleMainProps & GlobalProps): React.ReactElement=> {
29
29
  const {collapsed, toggle, icon, iconSize, iconColor, onIconClick, onClick}: any = useContext(CollapsibleContext)
30
30
  const mainCSS = buildCss('pb_collapsible_main_kit')
31
31
  const mainSpacing = globalProps(props, { cursor })
@@ -287,7 +287,6 @@ const Drawer = (props: DrawerProps): React.ReactElement => {
287
287
  {...ariaProps}
288
288
  {...dataProps}
289
289
  {...htmlProps}
290
- style={dynamicInlineProps}
291
290
  className={classnames(drawerClassNames.base, {
292
291
  [drawerClassNames.afterOpen]:
293
292
  animationState === "afterOpen",
@@ -296,6 +295,7 @@ const Drawer = (props: DrawerProps): React.ReactElement => {
296
295
  })}
297
296
  id={id}
298
297
  onClick={(e) => e.stopPropagation()}
298
+ style={dynamicInlineProps}
299
299
  >
300
300
  {children}
301
301
  </div>
@@ -306,7 +306,6 @@ const Drawer = (props: DrawerProps): React.ReactElement => {
306
306
  {...dataProps}
307
307
  {...htmlProps}
308
308
  className={classes}
309
- style={dynamicInlineProps}
310
309
  >
311
310
  {isModalVisible && (
312
311
  <div
@@ -327,6 +326,7 @@ const Drawer = (props: DrawerProps): React.ReactElement => {
327
326
  animationState === "beforeClose",
328
327
  })}
329
328
  onClick={(e) => e.stopPropagation()}
329
+ style={dynamicInlineProps}
330
330
  >
331
331
  {children}
332
332
  </div>
@@ -11,3 +11,8 @@
11
11
  }
12
12
  }
13
13
 
14
+ .dark [class*='pb_file_upload_kit'] {
15
+ [class*='pb_card_kit'] {
16
+ border: 1px $text_dk_lighter dashed;
17
+ }
18
+ }
@@ -13,6 +13,7 @@ type FileUploadProps = {
13
13
  accept?: string[],
14
14
  className?: string,
15
15
  customMessage?: string,
16
+ dark?: boolean,
16
17
  data?: {[key: string]: string | number},
17
18
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
18
19
  acceptedFilesDescription?: string,
@@ -31,6 +32,7 @@ const FileUpload = (props: FileUploadProps): React.ReactElement => {
31
32
  acceptedFilesDescription = '',
32
33
  className,
33
34
  customMessage,
35
+ dark = false,
34
36
  data = {},
35
37
  htmlOptions = {},
36
38
  maxSize,
@@ -94,9 +96,12 @@ const FileUpload = (props: FileUploadProps): React.ReactElement => {
94
96
  {...htmlProps}
95
97
  {...getRootProps()}
96
98
  >
97
- <Card>
99
+ <Card dark={dark}>
98
100
  <input {...getInputProps()} />
99
- <Body color="light">
101
+ <Body
102
+ color="light"
103
+ dark={dark}
104
+ >
100
105
  {isDragActive ?
101
106
  <p>{'Drop the files here ...'}</p>
102
107
  :
@@ -5,11 +5,17 @@
5
5
  id: object.id,
6
6
  **combined_html_options) do %>
7
7
  <%= pb_rails("form_group", props: {cursor: "pointer", full_width: object.full_width}) do %>
8
- <label for="upload-<%= object.id %>" class="pb_button_kit_secondary_inline_enabled"><%= "#{object.label}" %></label>
8
+ <label
9
+ for="upload-<%= object.id %>"
10
+ class="pb_button_kit_secondary_inline_enabled <%= 'dark' if object.dark %>"
11
+ >
12
+ <%= "#{object.label}" %>
13
+ </label>
9
14
  <%= pb_rails("text_input", props: {
10
15
  type: "file",
16
+ dark: object.dark,
11
17
  input_options: {
12
- id: "upload-#{object.id}",
18
+ id: "upload-#{object.id}",
13
19
  classname: "cursor_pointer",
14
20
  }.merge(object.input_options)
15
21
  }) %>
@@ -0,0 +1,57 @@
1
+ @mixin error-state-flex-start-selectors {
2
+ &:has(.pb_text_input_kit.error):has(.pb_text_input_kit),
3
+ &:has(.pb_text_input_kit):has(.pb_date_picker_kit.error),
4
+ &:has(.pb_text_input_kit):has(.pb_select_kit_wrapper.error),
5
+ &:has(.pb_text_input_kit.error):has(.pb_text_input_kit_label):has(.pb_select_kit_wrapper.error) {
6
+ align-items: flex-start;
7
+ }
8
+ }
9
+
10
+ @mixin error-state-center-selectors {
11
+ &:has(.pb_select_kit_label):has(.pb_select_kit_wrapper.error):has(.pb_phone_number_input),
12
+ &:has(.pb_text_input_kit.error):has(.pb_text_input_kit_label):has([class^=pb_button_kit]) {
13
+ align-items: center;
14
+ }
15
+ }
16
+
17
+ @mixin error-state-flex-end-selectors {
18
+ &:has(.pb_select_kit_label):has(.pb_select_kit_wrapper.error):has(.pb_phone_number_input):has(.pb_text_input_kit.error) {
19
+ align-items: flex-end;
20
+ }
21
+ }
22
+
23
+ @mixin error-state-right-side-select-kit {
24
+ &:has(.pb_text_input_kit:not(.error)):has(.pb_text_input_kit_label):has(.pb_select_kit_wrapper.error),
25
+ &:has(.pb_text_input_kit.error):has(.pb_text_input_kit_label):has(.pb_select_kit_wrapper) {
26
+ align-items: flex-start;
27
+
28
+ .pb_select_kit_wrapper {
29
+ padding-top: $space_md;
30
+ margin-top: 2px;
31
+
32
+ .pb_select_kit_caret {
33
+ padding-top: $space_md;
34
+ }
35
+ }
36
+
37
+ .pb_select_kit_wrapper.error {
38
+ padding-top: $space_md;
39
+ margin-top: 2px;
40
+
41
+ .pb_select_kit_caret {
42
+ padding-top: $space_xl;
43
+ }
44
+ }
45
+ }
46
+ }
47
+
48
+ @mixin error-state-left-side-select-kit {
49
+ &:has(.pb_select_kit_label):has(.pb_select_kit_wrapper):has(.pb_phone_number_input):has(.pb_text_input_kit.error) {
50
+ align-items: flex-start;
51
+
52
+ .pb_text_input_kit.error {
53
+ padding-top: $space_md;
54
+ margin-top: 2px;
55
+ }
56
+ }
57
+ }
@@ -1,3 +1,6 @@
1
+ @import "../tokens/spacing";
2
+ @import "./error_state_mixin";
3
+
1
4
  [class^=pb_form_group_kit] {
2
5
  display: inline-flex;
3
6
  flex-direction: row;
@@ -12,6 +15,12 @@
12
15
  }
13
16
  }
14
17
 
18
+ @include error-state-flex-start-selectors;
19
+ @include error-state-center-selectors;
20
+ @include error-state-flex-end-selectors;
21
+ @include error-state-left-side-select-kit;
22
+ @include error-state-right-side-select-kit;
23
+
15
24
  & [class^=pb_text_input_kit] .text_input_wrapper,
16
25
  & [class^=pb_date_picker_kit] .input_wrapper,
17
26
  & [class^=pb_select] {
@@ -27,7 +36,7 @@
27
36
  border-bottom-right-radius: 0;
28
37
  border-top-right-radius: 0;
29
38
  border-right-width: 0;
30
-
39
+
31
40
  &:focus {
32
41
  outline: $primary solid 1px;
33
42
  outline-offset: -1px;
@@ -150,7 +159,7 @@
150
159
  & > [class^=pb_selectable_card_kit] input[type="checkbox"]:not(:checked) ~ label, [class^=pb_selectable_card_kit] input[type="radio"]:not(:checked) ~ label {
151
160
  &:hover {
152
161
  border-right-color: $slate;
153
- }
162
+ }
154
163
  }
155
164
 
156
165
  & > [class^=pb_selectable_card_kit]:not(:first-child) label {
@@ -1,12 +1,33 @@
1
+ @import "../tokens/colors";
2
+
1
3
  [class^=pb_gauge_kit] {
2
4
 
5
+ .fix {
6
+ fill: $text_lt_default;
7
+ stroke: none;
8
+
9
+ &[class*=dark] {
10
+ fill: $text_dk_default;
11
+ }
12
+ }
13
+
3
14
  .suffix {
4
15
  fill: $text_lt_light;
16
+ stroke: none;
5
17
  font: $regular $font_larger $font_family_base;
18
+
19
+ &[class*=dark] {
20
+ fill: $text_dk_light;
21
+ }
6
22
  }
7
23
  .prefix {
8
24
  fill: $text_lt_light;
25
+ stroke: none;
9
26
  font: $regular $font_base $font_family_base;
27
+
28
+ &[class*=dark] {
29
+ fill: $text_dk_light;
30
+ }
10
31
  }
11
32
 
12
33
  rect.highcharts-background {
@@ -16,4 +37,13 @@
16
37
  .gauge-pane {
17
38
  stroke-linejoin: round;
18
39
  }
19
- }
40
+
41
+ &[class*=dark] {
42
+ color: $text_dk_default;
43
+
44
+ .pb_title_kit_size_1,
45
+ .pb_caption_kit_xs {
46
+ color: $text_dk_light;
47
+ }
48
+ }
49
+ }
@@ -164,9 +164,9 @@ const Gauge = ({
164
164
  color: defaultColors.text_lt_default,
165
165
  enabled: true,
166
166
  format:
167
- `<span class="prefix">${prefix}</span>` +
168
- '<span class="fix">{y:,f}</span>' +
169
- `<span class="suffix">${suffix}</span>`,
167
+ `<span class="prefix${dark ? " dark" : ""}">${prefix}</span>` +
168
+ `<span class="fix${dark ? " dark" : ""}">{y:,f}</span>` +
169
+ `<span class="suffix${dark ? " dark" : ""}">${suffix}</span>`,
170
170
  style: {
171
171
  fontFamily: typography.font_family_base,
172
172
  fontWeight: typography.regular,
@@ -17,47 +17,60 @@ const GaugeComplex = (props) => (
17
17
  gap="sm"
18
18
  padding="xl"
19
19
  wrap
20
+ {...props}
20
21
  >
21
22
  <FlexItem
22
23
  flex={1}
23
24
  grow
25
+ {...props}
24
26
  >
25
27
  <Card
26
28
  maxWidth="xs"
27
29
  padding="md"
30
+ {...props}
28
31
  >
29
32
  <Title
30
33
  paddingBottom="sm"
31
34
  size={4}
32
35
  text="Abandoned Calls"
36
+ {...props}
33
37
  />
34
- <Flex align="stretch">
38
+ <Flex
39
+ align="stretch"
40
+ {...props}
41
+ >
35
42
  <Flex
36
43
  marginRight="sm"
37
44
  orientation="column"
45
+ {...props}
38
46
  >
39
47
  <Body
40
48
  color="light"
41
49
  paddingBottom="sm"
42
50
  text="Total Abandoned"
51
+ {...props}
43
52
  />
44
53
  <Flex
45
54
  align="baseline"
46
55
  paddingBottom="xs"
56
+ {...props}
47
57
  >
48
58
  <Title
49
59
  size={1}
50
60
  text="39"
61
+ {...props}
51
62
  />
52
63
  <Title
53
64
  color="light"
54
65
  size={3}
55
66
  text="calls"
67
+ {...props}
56
68
  />
57
69
  </Flex>
58
70
  <Caption
59
71
  size="xs"
60
72
  text="of 390"
73
+ {...props}
61
74
  />
62
75
  </Flex>
63
76
 
@@ -65,22 +78,29 @@ const GaugeComplex = (props) => (
65
78
  alignSelf="stretch"
66
79
  marginRight="sm"
67
80
  orientation="vertical"
81
+ {...props}
68
82
  />
69
83
 
70
84
  <Flex
71
85
  orientation="column"
72
86
  wrap
87
+ {...props}
73
88
  >
74
89
  <Body
75
90
  color="light"
76
91
  text="% Abandoned"
77
- />
78
- <Flex wrap>
92
+ {...props}
93
+ />
94
+ <Flex
95
+ wrap
96
+ {...props}
97
+ >
79
98
  <FlexItem
80
99
  fixedSize="150px"
81
100
  overflow="hidden"
82
101
  shrink
83
- >
102
+ {...props}
103
+ >
84
104
  <Gauge
85
105
  chartData={data}
86
106
  disableAnimation
@@ -90,7 +110,7 @@ const GaugeComplex = (props) => (
90
110
  {...props}
91
111
  />
92
112
  </FlexItem>
93
- </Flex>
113
+ </Flex>
94
114
  </Flex>
95
115
  </Flex>
96
116
  </Card>
@@ -18,7 +18,7 @@ type HomeAddressStreetProps = {
18
18
  className?: string,
19
19
  data?: { [key: string]: string },
20
20
  dark?: boolean,
21
- emphasis: "street" | "city",
21
+ emphasis: "street" | "city" | "none",
22
22
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
23
23
  homeId: string,
24
24
  houseStyle: string,
@@ -129,6 +129,22 @@ const HomeAddressStreet = (props: HomeAddressStreetProps): React.ReactElement =>
129
129
  </div>
130
130
  </div>
131
131
  }
132
+ {emphasis == 'none' &&
133
+ <div>
134
+ <Body dark={dark}>
135
+ {joinPresent([titleize(address), houseStyle], ' · ')}
136
+ </Body>
137
+ <Body dark={dark}>{titleize(addressCont)}</Body>
138
+ <div>
139
+ <Body
140
+ color="light"
141
+ dark={dark}
142
+ >
143
+ {`${titleize(city)}, ${state} ${zipcode}`}
144
+ </Body>
145
+ </div>
146
+ </div>
147
+ }
132
148
  {homeId &&
133
149
  <Hashtag
134
150
  classname="home-hashtag"
@@ -24,4 +24,20 @@
24
24
  state: "PA",
25
25
  zipcode: "19382",
26
26
  territory: "PHL",
27
- }) %>
27
+ }) %>
28
+
29
+ <br>
30
+ <br>
31
+
32
+ <%= pb_rails("home_address_street", props: {
33
+ address: "70 Prospect Ave",
34
+ address_cont: "Apt M18",
35
+ city: "West Chester",
36
+ emphasis: "none",
37
+ home_id: 8250263,
38
+ home_url: "https://powerhrg.com/",
39
+ house_style: "Colonial",
40
+ state: "PA",
41
+ zipcode: "19382",
42
+ territory: "PHL",
43
+ }) %>
@@ -32,6 +32,21 @@ const HomeAddressStreetEmphasis = (props) => {
32
32
  zipcode="19382"
33
33
  {...props}
34
34
  />
35
+ <br />
36
+ <br />
37
+ <HomeAddressStreet
38
+ address="70 Prospect Ave"
39
+ addressCont="Apt M18"
40
+ city="West Chester"
41
+ emphasis="none"
42
+ homeId="8250263"
43
+ homeUrl="https://powerhrg.com/"
44
+ houseStyle="Colonial"
45
+ state="PA"
46
+ territory="PHL"
47
+ zipcode="19382"
48
+ {...props}
49
+ />
35
50
  </div>
36
51
  )
37
52
  }
@@ -1,2 +1,3 @@
1
1
  Emphasis on street happens by default. (no prop needed)
2
- Emphasis on "city" makes the city emphasized, rather than the street.
2
+ Emphasis on "city" makes the city emphasized, rather than the street.
3
+ Adding "none" to emphasis prop will provide no emphasis.
@@ -7,7 +7,7 @@ module Playbook
7
7
  prop :address_cont
8
8
  prop :city
9
9
  prop :emphasis, type: Playbook::Props::Enum,
10
- values: %w[street city],
10
+ values: %w[street city none],
11
11
  default: "street"
12
12
  prop :home_id, type: Playbook::Props::Number
13
13
  prop :home_url
@@ -77,6 +77,20 @@ module Playbook
77
77
  }
78
78
  end
79
79
 
80
+ def none_emphasis_props
81
+ {
82
+ address_house_style: address_house_style,
83
+ address_house_style2: address_house_style2,
84
+ city_state_zip: city_state_zip,
85
+ dark: dark,
86
+ home_id: home_id,
87
+ home_url: home_url,
88
+ target: target_option,
89
+ new_window: new_window,
90
+ territory: territory,
91
+ }
92
+ end
93
+
80
94
  def target_option
81
95
  if target && home_url
82
96
  target
@@ -0,0 +1,32 @@
1
+ <%= pb_rails "body", props: {
2
+ classname: "pb_home_address_street_address",
3
+ size: 4,
4
+ text: object.address_house_style,
5
+ dark: object.dark
6
+ } %>
7
+ <%= pb_rails "body", props: {
8
+ classname: "pb_home_address_street_address",
9
+ size: 4,
10
+ text: object.address_house_style2,
11
+ dark: object.dark
12
+ } %>
13
+ <%= pb_rails "body", props: {
14
+ color: "light",
15
+ text: object.city_state_zip,
16
+ dark: object.dark
17
+ } %>
18
+
19
+ <% if object.home_id %>
20
+ <%= pb_rails("hashtag", props: {
21
+ text: "#{object.home_id}",
22
+ url: object.home_url || "#",
23
+ type: "home",
24
+ dark: object.dark,
25
+ classname: "home-hashtag",
26
+ new_window: object.new_window,
27
+ target: object.target_option}) %>
28
+ <% end %>
29
+
30
+ <%= pb_rails "body", props: { color: "light", tag: "span", dark: object.dark } do %>
31
+ <small><%= object.territory %></small>
32
+ <% end %>
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbHomeAddressStreet
5
+ class NoneEmphasis < Playbook::KitBase
6
+ prop :address_house_style
7
+ prop :address_house_style2
8
+ prop :city_state_zip
9
+ prop :home_id, type: Playbook::Props::Number
10
+ prop :home_url
11
+ prop :new_window, type: Playbook::Props::Boolean,
12
+ default: false
13
+ prop :target
14
+ prop :territory
15
+ prop :dark, type: Playbook::Props::Boolean,
16
+ default: false
17
+
18
+ def target_option
19
+ if target && home_url
20
+ target
21
+ elsif new_window
22
+ "_blank"
23
+ else
24
+ "_self"
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end