playbook_ui 14.9.0.pre.alpha.PBNTR686advancedtablepaginationpoc4747 → 14.9.0.pre.alpha.PBNTR738collapsiblewithintablekit4855
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_advanced_table/table_header.html.erb +5 -3
- data/app/pb_kits/playbook/pb_avatar/_avatar.scss +0 -2
- data/app/pb_kits/playbook/pb_body/_body.scss +14 -13
- data/app/pb_kits/playbook/pb_body/_body_mixins.scss +22 -16
- data/app/pb_kits/playbook/pb_bread_crumbs/docs/_bread_crumbs_default.jsx +6 -0
- data/app/pb_kits/playbook/pb_caption/_caption_mixin.scss +2 -1
- data/app/pb_kits/playbook/pb_card/_card_mixin.scss +1 -1
- data/app/pb_kits/playbook/pb_collapsible/_collapsible.tsx +9 -4
- data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleContent.tsx +2 -2
- data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleMain.tsx +2 -2
- data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +5 -0
- data/app/pb_kits/playbook/pb_file_upload/_file_upload.tsx +7 -2
- data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +8 -2
- data/app/pb_kits/playbook/pb_nav/_bold_mixin.scss +11 -1
- data/app/pb_kits/playbook/pb_nav/_collapsible_nav.scss +16 -2
- data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +1 -1
- data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +4 -4
- data/app/pb_kits/playbook/pb_selectable_card/selectable_card.html.erb +1 -1
- data/app/pb_kits/playbook/pb_stat_change/_stat_change.tsx +44 -36
- data/app/pb_kits/playbook/pb_stat_change/stat_change.html.erb +4 -4
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.jsx +75 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.md +1 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.jsx +108 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.md +2 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_content.jsx +94 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_content.md +0 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows.jsx +83 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows.md +3 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table.jsx +120 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table.md +1 -0
- data/app/pb_kits/playbook/pb_table/docs/example.yml +5 -0
- data/app/pb_kits/playbook/pb_table/docs/index.js +5 -0
- data/app/pb_kits/playbook/pb_table/styles/_all.scss +2 -1
- data/app/pb_kits/playbook/pb_table/styles/_collapsible.scss +35 -0
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +106 -1
- data/app/pb_kits/playbook/pb_title/_title.scss +6 -5
- data/app/pb_kits/playbook/pb_title/_title_mixin.scss +13 -0
- data/app/pb_kits/playbook/tokens/_titles.scss +0 -8
- data/app/pb_kits/playbook/utilities/_hover.scss +11 -2
- data/app/pb_kits/playbook/utilities/globalProps.ts +2 -0
- data/app/pb_kits/playbook/utilities/test/globalProps/hover.test.js +15 -0
- data/dist/chunks/{_typeahead-B8fkIeXA.js → _typeahead-ClJHKLj6.js} +3 -3
- data/dist/chunks/_weekday_stacked-DaVTrOfA.js +45 -0
- data/dist/chunks/{lib-SyD3buPZ.js → lib-CtS0DLMo.js} +3 -3
- data/dist/chunks/{pb_form_validation-Dt8UJgrJ.js → pb_form_validation-C3vQKj7-.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- 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/hover.rb +7 -1
- data/lib/playbook/version.rb +1 -1
- metadata +17 -6
- data/dist/chunks/_weekday_stacked-DSEuqOLN.js +0 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7836406579285d2cbea8a738bb95e477a2f513f6243b4a59cfaef6985ee22a3a
|
4
|
+
data.tar.gz: 0af1be0d7a9f685d063c68d09d7d441317bb99b6bd591eab66d738300ab49dd9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cdb9e010f6a61b4b6a52ce0f317127c1f097607aa846b14887b0163625d1718eac6a93eff8e5bc1f7aab34f06eb3d69c56fea4667e513751c697f58ca221fe6a
|
7
|
+
data.tar.gz: 99fb58c0a203ddc69ebf6fa643274582d5b96e32284d1817fbe6d9d9ebfd5fbe358816e674bbf02cdbb394490283db22e077c44a2116e23935a37852ba628354
|
@@ -4,8 +4,10 @@
|
|
4
4
|
<%= pb_rails("table/table_header", props: { tag: "div", id: item[:accessor], classname: object.th_classname, sort_menu: item[:sort_menu] }) do %>
|
5
5
|
<%= pb_rails("flex", props:{ align: "center", justify: index.zero? ? "start" : "end", text_align: "end" }) do %>
|
6
6
|
<% if index.zero? && (object.enable_toggle_expansion == "header" || object.enable_toggle_expansion == "all") %>
|
7
|
-
<button
|
8
|
-
|
7
|
+
<button
|
8
|
+
class="gray-icon toggle-all-icon"
|
9
|
+
onclick="expandAllRows(this); event.preventDefault();">
|
10
|
+
<%= pb_rails("icon", props: { icon: "arrows-from-line", cursor: "pointer", fixed_width: true, padding_right: "xs" }) %>
|
9
11
|
</button>
|
10
12
|
<% end %>
|
11
13
|
<%= item[:label] %>
|
@@ -13,4 +15,4 @@
|
|
13
15
|
<% end %>
|
14
16
|
<% end %>
|
15
17
|
<% end %>
|
16
|
-
<% end %>
|
18
|
+
<% end %>
|
@@ -31,14 +31,12 @@ $avatar-sizes: (
|
|
31
31
|
[class^=pb_card_kit].overlay_top_center {
|
32
32
|
left: 50%;
|
33
33
|
transform: translateX(-50%);
|
34
|
-
padding: 2px !important;
|
35
34
|
}
|
36
35
|
|
37
36
|
[class^=pb_card_kit].overlay_left_center,
|
38
37
|
[class^=pb_card_kit].overlay_right_center {
|
39
38
|
top: 50%;
|
40
39
|
transform: translateY(-50%);
|
41
|
-
padding: 2px !important;
|
42
40
|
}
|
43
41
|
}
|
44
42
|
|
@@ -1,24 +1,25 @@
|
|
1
1
|
@import "./body_mixins";
|
2
2
|
@import "../tokens/titles";
|
3
3
|
|
4
|
-
[class^=pb_body_kit]{
|
4
|
+
[class^="pb_body_kit"] {
|
5
5
|
@include pb_body($text_lt_default);
|
6
6
|
@each $color_name, $color_value in $pb_body_colors {
|
7
7
|
&[class*=_#{"" + $color_name}] {
|
8
8
|
@include pb_body($color_value);
|
9
9
|
}
|
10
10
|
@each $status_name, $status_value in $pb_body_status {
|
11
|
-
&[class*=_default_#{$status_name}] {
|
11
|
+
&[class*="_default_#{$status_name}"] {
|
12
12
|
@include pb_body($status_value);
|
13
13
|
}
|
14
14
|
}
|
15
15
|
}
|
16
|
-
@each $dark_color_name, $dark_color_value in $pb_dark_body_colors{
|
17
|
-
&[class*=_#{$dark_color_name}][class*=dark]{
|
16
|
+
@each $dark_color_name, $dark_color_value in $pb_dark_body_colors {
|
17
|
+
&[class*="_#{$dark_color_name}"][class*="dark"] {
|
18
18
|
@include pb_body($dark_color_value);
|
19
19
|
}
|
20
20
|
}
|
21
|
-
b,
|
21
|
+
b,
|
22
|
+
strong {
|
22
23
|
font-weight: $bold;
|
23
24
|
}
|
24
25
|
|
@@ -29,7 +30,8 @@
|
|
29
30
|
}
|
30
31
|
}
|
31
32
|
|
32
|
-
em,
|
33
|
+
em,
|
34
|
+
i {
|
33
35
|
font-style: italic;
|
34
36
|
}
|
35
37
|
|
@@ -39,26 +41,25 @@
|
|
39
41
|
}
|
40
42
|
|
41
43
|
@each $status_name, $status_value in $pb_body_status {
|
42
|
-
&[class
|
44
|
+
&[class*="#{$status_name}"] {
|
43
45
|
@include pb_body($status_value);
|
44
46
|
}
|
45
47
|
}
|
46
48
|
|
47
|
-
&[class*=dark] {
|
49
|
+
&[class*="dark"] {
|
48
50
|
a {
|
49
51
|
color: $active_dark;
|
50
52
|
}
|
51
53
|
@include pb_body_dark();
|
52
|
-
@each $dark_color_name, $dark_color_value in $pb_dark_body_colors{
|
53
|
-
&[class*=_#{$dark_color_name}][class*=dark]{
|
54
|
+
@each $dark_color_name, $dark_color_value in $pb_dark_body_colors {
|
55
|
+
&[class*="_#{$dark_color_name}"][class*="dark"] {
|
54
56
|
@include pb_body($dark_color_value);
|
55
57
|
}
|
56
58
|
}
|
57
|
-
@each $status_name, $status_value in $
|
58
|
-
&[class*=_#{$status_name}] {
|
59
|
+
@each $status_name, $status_value in $pb_dark_body_status {
|
60
|
+
&[class*="_#{$status_name}"] {
|
59
61
|
@include pb_body($status_value);
|
60
62
|
}
|
61
63
|
}
|
62
64
|
}
|
63
|
-
|
64
65
|
}
|
@@ -3,29 +3,35 @@
|
|
3
3
|
@import "../tokens/typography";
|
4
4
|
|
5
5
|
$pb_body_colors: (
|
6
|
-
default:
|
7
|
-
light:
|
8
|
-
lighter:
|
9
|
-
link:
|
10
|
-
error:
|
11
|
-
success:
|
6
|
+
default: $text_lt_default,
|
7
|
+
light: $text_lt_light,
|
8
|
+
lighter: $text_lt_lighter,
|
9
|
+
link: $primary,
|
10
|
+
error: $error,
|
11
|
+
success: $text_lt_success_sm,
|
12
12
|
);
|
13
13
|
|
14
14
|
$pb_dark_body_colors: (
|
15
|
-
default:
|
16
|
-
light:
|
17
|
-
lighter:
|
18
|
-
link:
|
19
|
-
error:
|
20
|
-
success:
|
15
|
+
default: $text_dk_default,
|
16
|
+
light: $text_dk_light,
|
17
|
+
lighter: $text_dk_lighter,
|
18
|
+
link: $active_dark,
|
19
|
+
error: $error,
|
20
|
+
success: $text_dk_success_sm,
|
21
21
|
);
|
22
22
|
|
23
23
|
// Order is important here!
|
24
24
|
$pb_body_status: (
|
25
|
-
default:
|
26
|
-
negative:
|
27
|
-
dark_error:
|
28
|
-
positive:
|
25
|
+
default: $text_lt_default,
|
26
|
+
negative: $error,
|
27
|
+
dark_error: $error_dark_body,
|
28
|
+
positive: $text_lt_success_sm,
|
29
|
+
);
|
30
|
+
|
31
|
+
$pb_dark_body_status: (
|
32
|
+
default: $text_dk_default,
|
33
|
+
negative: $error_dark,
|
34
|
+
positive: $text_dk_success_sm,
|
29
35
|
);
|
30
36
|
|
31
37
|
@mixin pb_body($color: $text_lt_default) {
|
@@ -13,6 +13,7 @@ const BreadCrumbsDefault = (props) => {
|
|
13
13
|
<Icon
|
14
14
|
icon="home"
|
15
15
|
size="1x"
|
16
|
+
{...props}
|
16
17
|
/>
|
17
18
|
<BreadCrumbItem
|
18
19
|
{...props}
|
@@ -22,11 +23,13 @@ const BreadCrumbsDefault = (props) => {
|
|
22
23
|
size="4"
|
23
24
|
tag="span"
|
24
25
|
text="Home"
|
26
|
+
{...props}
|
25
27
|
/>
|
26
28
|
</BreadCrumbItem>
|
27
29
|
<Icon
|
28
30
|
icon="users"
|
29
31
|
size="1x"
|
32
|
+
{...props}
|
30
33
|
/>
|
31
34
|
<Link
|
32
35
|
{...props}
|
@@ -36,17 +39,20 @@ const BreadCrumbsDefault = (props) => {
|
|
36
39
|
size="4"
|
37
40
|
tag="span"
|
38
41
|
text="Users"
|
42
|
+
{...props}
|
39
43
|
/>
|
40
44
|
</Link>
|
41
45
|
<Icon
|
42
46
|
icon="user"
|
43
47
|
size="1x"
|
48
|
+
{...props}
|
44
49
|
/>
|
45
50
|
<Link {...props}>
|
46
51
|
<Title
|
47
52
|
size="4"
|
48
53
|
tag="span"
|
49
54
|
text="User"
|
55
|
+
{...props}
|
50
56
|
/>
|
51
57
|
</Link>
|
52
58
|
</BreadCrumbs>
|
@@ -32,7 +32,7 @@ $pb_card_header_colors: map-merge(map-merge($product_colors, $additional_colors)
|
|
32
32
|
}
|
33
33
|
|
34
34
|
@mixin pb_card_selected_dark {
|
35
|
-
@include pb_card_selected($
|
35
|
+
@include pb_card_selected($primary_action_dark);
|
36
36
|
}
|
37
37
|
|
38
38
|
@mixin pb_card($background: $card_light, $border_color: $border_light) {
|
@@ -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
|
-
<
|
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
|
-
</
|
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 })
|
@@ -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
|
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
|
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
|
}) %>
|
@@ -223,6 +223,7 @@
|
|
223
223
|
}
|
224
224
|
}
|
225
225
|
[class*="pb_collapsible_nav_item"][class*="pb_nav_list_item_link_collapsible"][class*="pb_nav_list_kit_item"] {
|
226
|
+
box-shadow: unset !important;
|
226
227
|
.pb_nav_list_item_text_collapsible {
|
227
228
|
color: $white !important;
|
228
229
|
}
|
@@ -240,11 +241,17 @@
|
|
240
241
|
|
241
242
|
.pb_collapsible_main_kit:hover {
|
242
243
|
background-color: mix($white, $card_dark, 20%);
|
243
|
-
.pb_nav_list_item_text_collapsible
|
244
|
-
svg {
|
244
|
+
.pb_nav_list_item_text_collapsible {
|
245
245
|
color: $white !important;
|
246
246
|
}
|
247
247
|
}
|
248
|
+
|
249
|
+
.pb_collapsible_main_kit {
|
250
|
+
svg {
|
251
|
+
color: $text_dk_default !important;
|
252
|
+
}
|
253
|
+
}
|
254
|
+
|
248
255
|
.icon_wrapper:hover {
|
249
256
|
background-color: mix($white, $card_dark, 40%);
|
250
257
|
}
|
@@ -256,6 +263,13 @@
|
|
256
263
|
}
|
257
264
|
}
|
258
265
|
}
|
266
|
+
|
267
|
+
&[class*="_active"] {
|
268
|
+
> .pb_collapsible_main_kit {
|
269
|
+
background-color: $primary;
|
270
|
+
box-shadow: 0 2px 10px 0 $shadow_dark;
|
271
|
+
}
|
272
|
+
}
|
259
273
|
}
|
260
274
|
}
|
261
275
|
}
|
@@ -151,7 +151,7 @@ $pb_selectable_paddings: (
|
|
151
151
|
input[type="radio"] {
|
152
152
|
&:checked ~ label {
|
153
153
|
border-width: $pb_card_border_width;
|
154
|
-
outline: 1px solid $
|
154
|
+
outline: 1px solid $primary_action_dark;
|
155
155
|
}
|
156
156
|
}
|
157
157
|
}
|
@@ -161,11 +161,11 @@ $pb_selectable_paddings: (
|
|
161
161
|
color: $white;
|
162
162
|
> label {
|
163
163
|
@include pb_card_dark;
|
164
|
-
background:
|
164
|
+
background: $bg_dark_card;
|
165
165
|
|
166
166
|
.pb_selectable_card_circle {
|
167
167
|
border-color: $bg_dark;
|
168
|
-
background: $
|
168
|
+
background: $primary_action_dark;
|
169
169
|
}
|
170
170
|
}
|
171
171
|
|
@@ -173,7 +173,7 @@ $pb_selectable_paddings: (
|
|
173
173
|
input[type="radio"] {
|
174
174
|
&:checked ~ label {
|
175
175
|
@include pb_card_selected_dark;
|
176
|
-
background:
|
176
|
+
background: $bg_dark_card;
|
177
177
|
}
|
178
178
|
}
|
179
179
|
|
@@ -1,40 +1,46 @@
|
|
1
|
-
import React from
|
2
|
-
import classnames from
|
1
|
+
import React from "react"
|
2
|
+
import classnames from "classnames"
|
3
3
|
|
4
|
-
import { buildCss, buildHtmlProps } from
|
5
|
-
import { globalProps } from
|
4
|
+
import { buildCss, buildHtmlProps } from "../utilities/props"
|
5
|
+
import { globalProps } from "../utilities/globalProps"
|
6
6
|
|
7
|
-
import Body from
|
8
|
-
import Icon from
|
7
|
+
import Body from "../pb_body/_body"
|
8
|
+
import Icon from "../pb_icon/_icon"
|
9
9
|
|
10
|
-
const statusMap: {
|
11
|
-
|
12
|
-
decrease:
|
13
|
-
|
10
|
+
const statusMap: {
|
11
|
+
neutral: "neutral"
|
12
|
+
decrease: "negative"
|
13
|
+
increase: "positive"
|
14
|
+
} = {
|
15
|
+
increase: "positive",
|
16
|
+
decrease: "negative",
|
17
|
+
neutral: "neutral",
|
14
18
|
}
|
15
19
|
|
16
20
|
const iconMap = {
|
17
|
-
increase:
|
18
|
-
decrease:
|
21
|
+
increase: "arrow-up",
|
22
|
+
decrease: "arrow-down",
|
19
23
|
}
|
20
24
|
|
21
25
|
type StatChangeProps = {
|
22
|
-
change?:
|
23
|
-
className?: string
|
24
|
-
|
25
|
-
|
26
|
-
id?: string
|
27
|
-
|
26
|
+
change?: "increase" | "decrease" | "neutral"
|
27
|
+
className?: string
|
28
|
+
dark?: boolean
|
29
|
+
icon?: string
|
30
|
+
id?: string
|
31
|
+
htmlOptions?: { [key: string]: string | number | boolean | (() => void) }
|
32
|
+
value?: string | number
|
28
33
|
}
|
29
34
|
|
30
35
|
const StatChange = (props: StatChangeProps): React.ReactElement => {
|
31
|
-
const {
|
32
|
-
change =
|
33
|
-
className,
|
36
|
+
const {
|
37
|
+
change = "neutral",
|
38
|
+
className,
|
39
|
+
dark = false,
|
34
40
|
htmlOptions = {},
|
35
|
-
icon,
|
36
|
-
id,
|
37
|
-
value
|
41
|
+
icon,
|
42
|
+
id,
|
43
|
+
value,
|
38
44
|
} = props
|
39
45
|
|
40
46
|
const status = statusMap[change as keyof typeof statusMap]
|
@@ -47,30 +53,32 @@ const StatChange = (props: StatChangeProps): React.ReactElement => {
|
|
47
53
|
|
48
54
|
return (
|
49
55
|
<>
|
50
|
-
{value &&
|
56
|
+
{value && (
|
51
57
|
<div
|
52
58
|
className={classnames(
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
59
|
+
buildCss("pb_stat_change_kit", status),
|
60
|
+
globalProps(props),
|
61
|
+
className
|
62
|
+
)}
|
57
63
|
id={id}
|
58
64
|
{...htmlProps}
|
59
65
|
>
|
60
|
-
<Body
|
61
|
-
|
66
|
+
<Body dark={dark}
|
67
|
+
status={status}
|
68
|
+
>
|
69
|
+
{" "}
|
70
|
+
{returnedIcon && (
|
62
71
|
<>
|
63
|
-
<Icon
|
72
|
+
<Icon dark={dark}
|
64
73
|
fixed_width
|
65
74
|
icon={returnedIcon}
|
66
|
-
/>
|
67
|
-
{' '}
|
75
|
+
/>{" "}
|
68
76
|
</>
|
69
|
-
}
|
77
|
+
)}
|
70
78
|
{`${value}%`}
|
71
79
|
</Body>
|
72
80
|
</div>
|
73
|
-
}
|
81
|
+
)}
|
74
82
|
</>
|
75
83
|
)
|
76
84
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%= pb_content_tag do %>
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
<%= pb_rails("body", props: { status: object.status, dark: object.dark }) do %>
|
3
|
+
<%= pb_rails("icon", props: { fixed_width: true, icon: object.returned_icon, dark: object.dark }) if object.returned_icon %>
|
4
|
+
<%= "#{object.value}%" if object.value %>
|
5
|
+
<% end %>
|
6
6
|
<% end %>
|