playbook_ui 13.5.0.pre.alpha.play984collapsiblekithidestooltips1203 → 13.5.0
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 +0 -1
- data/app/pb_kits/playbook/pb_body/_body.tsx +1 -1
- data/app/pb_kits/playbook/pb_caption/_caption.tsx +1 -1
- data/app/pb_kits/playbook/pb_card/card.rb +1 -1
- data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +1 -1
- data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +1 -0
- data/app/pb_kits/playbook/pb_collapsible/_helper_functions.ts +22 -26
- data/app/pb_kits/playbook/pb_collapsible/index.js +0 -4
- data/app/pb_kits/playbook/pb_dashboard_value/dashboard_value.rb +2 -2
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +1 -1
- data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +2 -2
- data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.tsx +1 -1
- data/app/pb_kits/playbook/pb_file_upload/file_upload.rb +1 -1
- data/app/pb_kits/playbook/pb_flex/_flex_item.scss +8 -0
- data/app/pb_kits/playbook/pb_flex/_flex_item.tsx +4 -1
- data/app/pb_kits/playbook/pb_flex/flex_item.rb +9 -1
- data/app/pb_kits/playbook/pb_nav/_collapsible_nav.scss +6 -6
- data/app/pb_kits/playbook/pb_passphrase/passphrase.rb +1 -1
- data/app/pb_kits/playbook/pb_radio/radio.rb +1 -1
- data/app/pb_kits/playbook/pb_select/select.rb +1 -1
- data/app/pb_kits/playbook/pb_selectable_card/selectable_card.rb +1 -1
- data/app/pb_kits/playbook/pb_selectable_card_icon/selectable_card_icon.rb +1 -1
- data/app/pb_kits/playbook/pb_selectable_icon/selectable_icon.rb +1 -1
- data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.rb +1 -1
- data/app/pb_kits/playbook/pb_source/source.rb +1 -1
- data/app/pb_kits/playbook/pb_table/docs/_table_header.html.erb +27 -31
- data/app/pb_kits/playbook/pb_table/docs/_table_header.md +1 -8
- data/app/pb_kits/playbook/pb_table/styles/_table_header.scss +1 -20
- data/app/pb_kits/playbook/pb_table/table_header.html.erb +49 -23
- data/app/pb_kits/playbook/pb_table/table_header.rb +6 -34
- data/app/pb_kits/playbook/pb_text_input/text_input.rb +2 -2
- data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.tsx +1 -1
- data/app/pb_kits/playbook/pb_title/_title.tsx +1 -1
- data/app/pb_kits/playbook/pb_toggle/toggle.rb +1 -1
- data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +1 -1
- data/app/pb_kits/playbook/utilities/globalProps.ts +8 -23
- data/dist/playbook-rails.js +3 -3
- data/lib/playbook/classnames.rb +0 -1
- data/lib/playbook/kit_base.rb +2 -4
- data/lib/playbook/props/base.rb +1 -1
- data/lib/playbook/props/hash.rb +1 -1
- data/lib/playbook/version.rb +2 -2
- metadata +7 -10
- data/app/pb_kits/playbook/tokens/_overflow.scss +0 -10
- data/app/pb_kits/playbook/utilities/_overflow.scss +0 -22
- data/lib/playbook/overflow.rb +0 -33
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3fbde0c47559510e98e402f39e88e8eee92d920fe6316a10cf69edd6433c593d
|
|
4
|
+
data.tar.gz: 528eb97cc4627c05a97fdc42c44e2b306481fe8467f9abf38dd135e95916c5a1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 476c5d3b3afc10856fad58a4a417b9124a45bce23ac7af0987fb94e7e5987785786472c35b35a8fe8c1acb8db6c5c040c423f29886c26a0dd8ec7c7ea2baf072
|
|
7
|
+
data.tar.gz: ae782bd74d7a7cf8ee5f88a804079742e28044fc0f7228b1243292711c1d40bf6c8f54c2ed004bc8994321183d35efe7e975c867a99e5baba781f939d8eb76e9
|
|
@@ -24,7 +24,7 @@ type BodyProps = {
|
|
|
24
24
|
} & GlobalProps
|
|
25
25
|
|
|
26
26
|
const Body = (props: BodyProps): React.ReactElement => {
|
|
27
|
-
if (props.variant) deprecatedProps() //status prop is deprecated, use color instead please
|
|
27
|
+
if (props.variant) deprecatedProps("Body", ["status"]) //status prop is deprecated, use color instead please
|
|
28
28
|
const {
|
|
29
29
|
aria = {},
|
|
30
30
|
children,
|
|
@@ -17,7 +17,7 @@ type CaptionProps = {
|
|
|
17
17
|
} & GlobalProps;
|
|
18
18
|
|
|
19
19
|
const Caption = (props: CaptionProps): React.ReactElement => {
|
|
20
|
-
if (props.variant) deprecatedProps() //variant prop is deprecated, use color instead
|
|
20
|
+
if (props.variant) deprecatedProps('Title', ['variant']) //variant prop is deprecated, use color instead
|
|
21
21
|
const {
|
|
22
22
|
aria = {},
|
|
23
23
|
children,
|
|
@@ -4,7 +4,7 @@ module Playbook
|
|
|
4
4
|
module PbCard
|
|
5
5
|
class Card < Playbook::KitBase
|
|
6
6
|
prop :selected, type: Playbook::Props::Boolean, default: false
|
|
7
|
-
prop :highlight, type: Playbook::Props::
|
|
7
|
+
prop :highlight, type: Playbook::Props::Hash,
|
|
8
8
|
default: {}
|
|
9
9
|
prop :tag, type: Playbook::Props::Enum,
|
|
10
10
|
values: %w[div section footer header article aside main nav],
|
|
@@ -1,29 +1,25 @@
|
|
|
1
|
-
export const showElement = (elem:any) => {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}, 300);
|
|
12
|
-
};
|
|
1
|
+
export const showElement = (elem: any) => {
|
|
2
|
+
elem.style.display = 'block';
|
|
3
|
+
const height = elem.scrollHeight + 'px'; // Get its height
|
|
4
|
+
elem.style.height = height; // Update the max-height
|
|
5
|
+
elem.classList.add('is-visible')
|
|
6
|
+
// Once the transition is complete, remove the inline max-height so the content can scale responsively
|
|
7
|
+
window.setTimeout(() => {
|
|
8
|
+
elem.style.height = '';
|
|
9
|
+
}, 300);
|
|
10
|
+
};
|
|
13
11
|
|
|
14
|
-
export const hideElement = (elem:any) => {
|
|
15
|
-
|
|
12
|
+
export const hideElement = (elem:any) => {
|
|
13
|
+
elem.style.height = elem.scrollHeight + 'px';
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}, 1);
|
|
15
|
+
window.setTimeout(() => {
|
|
16
|
+
elem.style.height = '0';
|
|
17
|
+
elem.style.paddingTop = '0';
|
|
18
|
+
elem.style.paddingBottom = '0';
|
|
19
|
+
}, 1);
|
|
23
20
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
};
|
|
21
|
+
// When the transition is complete, hide it
|
|
22
|
+
window.setTimeout(() => {
|
|
23
|
+
elem.classList.remove('is-visible');
|
|
24
|
+
}, 300);
|
|
25
|
+
};
|
|
@@ -33,12 +33,10 @@ export default class PbCollapsible extends PbEnhancedElement {
|
|
|
33
33
|
const height = getHeight()
|
|
34
34
|
elem.classList.add('is-visible')
|
|
35
35
|
elem.style.height = height // Update the max-height
|
|
36
|
-
elem.style.overflow = "hidden"
|
|
37
36
|
|
|
38
37
|
// Once the transition is complete, remove the inline max-height so the content can scale responsively
|
|
39
38
|
window.setTimeout(() => {
|
|
40
39
|
elem.style.height = ''
|
|
41
|
-
elem.style.overflow = ""
|
|
42
40
|
}, 300)
|
|
43
41
|
}
|
|
44
42
|
|
|
@@ -50,13 +48,11 @@ export default class PbCollapsible extends PbEnhancedElement {
|
|
|
50
48
|
elem.style.height = '0'
|
|
51
49
|
elem.style.paddingTop = '0'
|
|
52
50
|
elem.style.paddingBottom = '0'
|
|
53
|
-
elem.style.overflow = "hidden"
|
|
54
51
|
}, 1)
|
|
55
52
|
|
|
56
53
|
// When the transition is complete, hide it
|
|
57
54
|
window.setTimeout(() => {
|
|
58
55
|
elem.classList.remove('is-visible')
|
|
59
|
-
elem.style.overflow = ""
|
|
60
56
|
}, 300)
|
|
61
57
|
}
|
|
62
58
|
|
|
@@ -6,10 +6,10 @@ module Playbook
|
|
|
6
6
|
prop :align, type: Playbook::Props::Enum,
|
|
7
7
|
values: %w[left center right],
|
|
8
8
|
default: "left"
|
|
9
|
-
prop :stat_change, type: Playbook::Props::
|
|
9
|
+
prop :stat_change, type: Playbook::Props::Hash,
|
|
10
10
|
default: {}
|
|
11
11
|
prop :stat_label
|
|
12
|
-
prop :stat_value, type: Playbook::Props::
|
|
12
|
+
prop :stat_value, type: Playbook::Props::Hash,
|
|
13
13
|
default: {}
|
|
14
14
|
|
|
15
15
|
def formatted_stat_value
|
|
@@ -49,7 +49,7 @@ type DatePickerProps = {
|
|
|
49
49
|
} & GlobalProps
|
|
50
50
|
|
|
51
51
|
const DatePicker = (props: DatePickerProps): React.ReactElement => {
|
|
52
|
-
if (props.plugins) deprecatedProps()
|
|
52
|
+
if (props.plugins) deprecatedProps('Date Picker', ['plugins'])
|
|
53
53
|
|
|
54
54
|
const {
|
|
55
55
|
allowInput = false,
|
|
@@ -34,9 +34,9 @@ module Playbook
|
|
|
34
34
|
default: false
|
|
35
35
|
prop :label, type: Playbook::Props::String,
|
|
36
36
|
default: "Date Picker"
|
|
37
|
-
prop :input_aria, type: Playbook::Props::
|
|
37
|
+
prop :input_aria, type: Playbook::Props::Hash,
|
|
38
38
|
default: {}
|
|
39
|
-
prop :input_data, type: Playbook::Props::
|
|
39
|
+
prop :input_data, type: Playbook::Props::Hash,
|
|
40
40
|
default: {}
|
|
41
41
|
prop :max_date, type: Playbook::Props::String
|
|
42
42
|
prop :min_date, type: Playbook::Props::String
|
|
@@ -44,6 +44,14 @@
|
|
|
44
44
|
order: -1;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
$overflow_values: auto, hidden, inherit, initial, scroll, visible;
|
|
48
|
+
|
|
49
|
+
@each $value in $overflow_values {
|
|
50
|
+
&.overflow_#{$value} {
|
|
51
|
+
overflow: #{$value}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
47
55
|
@for $i from 0 through 12 {
|
|
48
56
|
&[class*=_flex_#{$i}]{
|
|
49
57
|
flex: $i;
|
|
@@ -8,6 +8,7 @@ type FlexItemPropTypes = {
|
|
|
8
8
|
grow?: boolean,
|
|
9
9
|
shrink?: boolean,
|
|
10
10
|
className?: string,
|
|
11
|
+
overflow?: "auto" | "hidden" | "initial" | "inherit" | "scroll" | "visible",
|
|
11
12
|
order?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'first' | 'none',
|
|
12
13
|
alignSelf?: "start" | "end" | "center" | "stretch" | null,
|
|
13
14
|
displayFlex?: boolean
|
|
@@ -19,6 +20,7 @@ const FlexItem = (props: FlexItemPropTypes): React.ReactElement => {
|
|
|
19
20
|
className,
|
|
20
21
|
fixedSize,
|
|
21
22
|
grow,
|
|
23
|
+
overflow = null,
|
|
22
24
|
shrink,
|
|
23
25
|
flex = 'none',
|
|
24
26
|
order = 'none',
|
|
@@ -28,6 +30,7 @@ const FlexItem = (props: FlexItemPropTypes): React.ReactElement => {
|
|
|
28
30
|
const growClass = grow === true ? 'grow' : ''
|
|
29
31
|
const displayFlexClass = displayFlex === true ? `display_flex_${displayFlex}` : ''
|
|
30
32
|
const flexClass = flex !== 'none' ? `flex_${flex}` : ''
|
|
33
|
+
const overflowClass = overflow ? `overflow_${overflow}` : ''
|
|
31
34
|
const shrinkClass = shrink === true ? 'shrink' : ''
|
|
32
35
|
const alignSelfClass = alignSelf ? `align_self_${alignSelf}` : ''
|
|
33
36
|
const fixedStyle =
|
|
@@ -36,7 +39,7 @@ const FlexItem = (props: FlexItemPropTypes): React.ReactElement => {
|
|
|
36
39
|
|
|
37
40
|
return (
|
|
38
41
|
<div
|
|
39
|
-
className={classnames(buildCss('pb_flex_item_kit', growClass, shrinkClass, flexClass, displayFlexClass), orderClass, alignSelfClass, globalProps(props), className)}
|
|
42
|
+
className={classnames(buildCss('pb_flex_item_kit', growClass, shrinkClass, flexClass, displayFlexClass), overflowClass, orderClass, alignSelfClass, globalProps(props), className)}
|
|
40
43
|
style={fixedStyle}
|
|
41
44
|
>
|
|
42
45
|
{children}
|
|
@@ -9,6 +9,10 @@ module Playbook
|
|
|
9
9
|
prop :shrink, type: Playbook::Props::Boolean,
|
|
10
10
|
default: false
|
|
11
11
|
|
|
12
|
+
prop :overflow, type: Playbook::Props::Enum,
|
|
13
|
+
values: %w[auto hidden inherit initial scroll visible] + [nil],
|
|
14
|
+
default: nil
|
|
15
|
+
|
|
12
16
|
prop :align_self, type: Playbook::Props::Enum,
|
|
13
17
|
values: %w[start center end stretch] + [nil],
|
|
14
18
|
default: nil
|
|
@@ -17,7 +21,7 @@ module Playbook
|
|
|
17
21
|
default: false
|
|
18
22
|
|
|
19
23
|
def classname
|
|
20
|
-
generate_classname("pb_flex_item_kit", fixed_size_class, grow_class, shrink_class, display_flex_class) + align_self_class
|
|
24
|
+
generate_classname("pb_flex_item_kit", fixed_size_class, grow_class, shrink_class, display_flex_class) + overflow_class + align_self_class
|
|
21
25
|
end
|
|
22
26
|
|
|
23
27
|
def style_value
|
|
@@ -42,6 +46,10 @@ module Playbook
|
|
|
42
46
|
grow ? "grow" : nil
|
|
43
47
|
end
|
|
44
48
|
|
|
49
|
+
def overflow_class
|
|
50
|
+
overflow ? " overflow_#{overflow}" : ""
|
|
51
|
+
end
|
|
52
|
+
|
|
45
53
|
def shrink_class
|
|
46
54
|
shrink ? "shrink" : nil
|
|
47
55
|
end
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
margin: 0;
|
|
34
34
|
}
|
|
35
35
|
&[class*="_active"] {
|
|
36
|
-
|
|
36
|
+
.pb_collapsible_main_kit {
|
|
37
37
|
background-color: $active_light;
|
|
38
38
|
}
|
|
39
39
|
}
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
&[class*="_active"] {
|
|
49
|
-
|
|
49
|
+
.pb_collapsible_main_kit {
|
|
50
50
|
background-color: mix($white, $card_dark, 20%);
|
|
51
51
|
.pb_nav_list_item_text_collapsible,
|
|
52
52
|
svg {
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
.pb_collapsible_kit {
|
|
64
64
|
&[class*="_active"] {
|
|
65
65
|
background-color: unset;
|
|
66
|
-
|
|
66
|
+
.pb_collapsible_main_kit {
|
|
67
67
|
background-color: $primary;
|
|
68
68
|
border-radius: $border_rad_heavier;
|
|
69
69
|
.pb_nav_list_item_text_collapsible,
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
&.dark {
|
|
95
95
|
.pb_collapsible_kit {
|
|
96
96
|
&[class*="_active"] {
|
|
97
|
-
|
|
97
|
+
.pb_collapsible_main_kit {
|
|
98
98
|
background-color: $primary;
|
|
99
99
|
}
|
|
100
100
|
.pb_nav_list_item_link {
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
.pb_collapsible_kit {
|
|
113
113
|
&[class*="_active"] {
|
|
114
114
|
background-color: unset;
|
|
115
|
-
|
|
115
|
+
.pb_collapsible_main_kit {
|
|
116
116
|
background-color: $active_light;
|
|
117
117
|
border-radius: $border_rad_heavier;
|
|
118
118
|
.pb_nav_list_item_text_collapsible,
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
&.dark {
|
|
129
129
|
.pb_collapsible_kit {
|
|
130
130
|
&[class*="_active"] {
|
|
131
|
-
|
|
131
|
+
.pb_collapsible_main_kit {
|
|
132
132
|
background-color: mix($white, $card_dark, 20%) !important;
|
|
133
133
|
.pb_nav_list_item_text_collapsible,
|
|
134
134
|
svg {
|
|
@@ -4,7 +4,7 @@ module Playbook
|
|
|
4
4
|
module PbPassphrase
|
|
5
5
|
class Passphrase < Playbook::KitBase
|
|
6
6
|
prop :confirmation, type: Playbook::Props::Boolean, default: false
|
|
7
|
-
prop :input_props, type: Playbook::Props::
|
|
7
|
+
prop :input_props, type: Playbook::Props::Hash, default: {}
|
|
8
8
|
prop :label
|
|
9
9
|
prop :show_tips_below, type: Playbook::Props::Enum,
|
|
10
10
|
values: %w[always xs sm md lg xl],
|
|
@@ -11,7 +11,7 @@ module Playbook
|
|
|
11
11
|
default: false
|
|
12
12
|
prop :error, type: Playbook::Props::Boolean,
|
|
13
13
|
default: false
|
|
14
|
-
prop :input_options, type: Playbook::Props::
|
|
14
|
+
prop :input_options, type: Playbook::Props::Hash,
|
|
15
15
|
default: {}
|
|
16
16
|
prop :name, type: Playbook::Props::String,
|
|
17
17
|
default: "radio_name"
|
|
@@ -6,7 +6,7 @@ require "action_view"
|
|
|
6
6
|
module Playbook
|
|
7
7
|
module PbSelect
|
|
8
8
|
class Select < Playbook::KitBase
|
|
9
|
-
prop :attributes, type: Playbook::Props::
|
|
9
|
+
prop :attributes, type: Playbook::Props::Hash,
|
|
10
10
|
default: {}
|
|
11
11
|
prop :blank_selection
|
|
12
12
|
prop :compact, type: Playbook::Props::Boolean, default: false
|
|
@@ -10,7 +10,7 @@ module Playbook
|
|
|
10
10
|
prop :type, type: Playbook::Props::Enum,
|
|
11
11
|
values: %w[user retail inbound outbound prospecting events referral],
|
|
12
12
|
default: "inbound"
|
|
13
|
-
prop :user, type: Playbook::Props::
|
|
13
|
+
prop :user, type: Playbook::Props::Hash, default: {}
|
|
14
14
|
|
|
15
15
|
def type_text
|
|
16
16
|
if type == "user" || (type == "referral" && user.present?)
|
|
@@ -1,32 +1,28 @@
|
|
|
1
1
|
<%= pb_rails("table", props: { size: "lg"} ) do %>
|
|
2
2
|
<thead>
|
|
3
3
|
<tr>
|
|
4
|
-
<%= pb_rails("table/table_header", props: {
|
|
5
|
-
text: "Territory",
|
|
6
|
-
id: "territory",
|
|
7
|
-
sort_menu: [
|
|
8
|
-
{ item: "Territory", link: "?sort=territory_desc", active: params["sort"] == "territory_desc", direction: "desc" },
|
|
9
|
-
{ item: "Territory", link: "?sort=territory_asc", active: params["sort"] == "territory_asc", direction: "asc" }
|
|
10
|
-
],
|
|
11
|
-
}) %>
|
|
12
4
|
<%= pb_rails("table/table_header", props: {
|
|
13
5
|
id: "name",
|
|
14
|
-
text: "Full Name",
|
|
15
6
|
colspan: 2,
|
|
16
7
|
sort_menu: [
|
|
17
|
-
{ item: "
|
|
18
|
-
{ item: "
|
|
19
|
-
{ item: "Last Name Descending", link: "?sort=lastname_desc", active: params["sort"] == "lastname_desc", direction: "desc" },
|
|
20
|
-
{ item: "Last Name Ascending", link: "?sort=lastname_asc", active: params["sort"] == "lastname_asc", direction: "asc" }
|
|
8
|
+
{ item: "Name", link: "?q[sorts]=name+desc", active: false, direction: "desc" },
|
|
9
|
+
{ item: "Name", link: "?q[sorts]=name+asc", active: true, direction: "asc" },
|
|
21
10
|
],
|
|
22
11
|
}) %>
|
|
23
12
|
<%= pb_rails("table/table_header", props: {
|
|
24
13
|
text: "Age",
|
|
25
14
|
id: "age",
|
|
26
|
-
sort_dropdown: true,
|
|
27
15
|
sort_menu: [
|
|
28
|
-
{ item: "Age
|
|
29
|
-
{ item: "Age
|
|
16
|
+
{ item: "Age", link: "?q[sorts]=age+desc", active: false, direction: "desc" },
|
|
17
|
+
{ item: "Age", link: "?q[sorts]=age+asc", active: false, direction: "asc" },
|
|
18
|
+
],
|
|
19
|
+
}) %>
|
|
20
|
+
<%= pb_rails("table/table_header", props: {
|
|
21
|
+
text: "Territory",
|
|
22
|
+
id: "territory",
|
|
23
|
+
sort_menu: [
|
|
24
|
+
{ item: "Territory", link: "?q[sorts]=territory+desc", active: false, direction: "desc" },
|
|
25
|
+
{ item: "Territory", link: "?q[sorts]=territory+asc", active: false, direction: "asc" },
|
|
30
26
|
],
|
|
31
27
|
}) %>
|
|
32
28
|
<%= pb_rails("table/table_header", props: { text: "Job Title" }) %>
|
|
@@ -34,25 +30,25 @@
|
|
|
34
30
|
</thead>
|
|
35
31
|
<tbody>
|
|
36
32
|
<tr>
|
|
37
|
-
<td>
|
|
38
|
-
<td>
|
|
39
|
-
<td>
|
|
40
|
-
<td>
|
|
41
|
-
<td>
|
|
33
|
+
<td>Name 1</td>
|
|
34
|
+
<td>Name 2</td>
|
|
35
|
+
<td>Value 3</td>
|
|
36
|
+
<td>Value 4</td>
|
|
37
|
+
<td>Value 5</td>
|
|
42
38
|
</tr>
|
|
43
39
|
<tr>
|
|
44
|
-
<td>
|
|
45
|
-
<td>
|
|
46
|
-
<td>
|
|
47
|
-
<td>
|
|
48
|
-
<td>
|
|
40
|
+
<td>Name 1</td>
|
|
41
|
+
<td>Name 2</td>
|
|
42
|
+
<td>Value 3</td>
|
|
43
|
+
<td>Value 4</td>
|
|
44
|
+
<td>Value 5</td>
|
|
49
45
|
</tr>
|
|
50
46
|
<tr>
|
|
51
|
-
<td>
|
|
52
|
-
<td>
|
|
53
|
-
<td>
|
|
54
|
-
<td>
|
|
55
|
-
<td>
|
|
47
|
+
<td>Name 1</td>
|
|
48
|
+
<td>Name 2</td>
|
|
49
|
+
<td>Value 3</td>
|
|
50
|
+
<td>Value 4</td>
|
|
51
|
+
<td>Value 5</td>
|
|
56
52
|
</tr>
|
|
57
53
|
</tbody>
|
|
58
54
|
<% end %>
|
|
@@ -1,8 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* `colspan` (number) for setting column span
|
|
4
|
-
* `sort_menu` accepts sort options as an array of `item` objects.
|
|
5
|
-
presence of `sort_menu` enables the sort link within the header
|
|
6
|
-
* `sort_dropdown` (boolean) optionally declares that (true) clicking a header's sort link opens a dropdown of sort options, or (false) each sort link click cycles through available sort_menu items in the order they are passed
|
|
7
|
-
* passing a valid `colspan` will render sort options within a dropdown by default, without requiring `sort_dropdown` explicitly. Alternatively, the default sort dropdown can be prevented on headers with `colspan` by setting `sort_dropdown: false`, which reverts the column to sorting to multi-click default (each click of the sort link cycles through the available sort_menu items in the order they are passed)
|
|
8
|
-
* `id` (string) is required for headers that have a dropdown (for popover reference); otherwise they are optional
|
|
1
|
+
A kit that produces a `<th>` tag. You can also use the `sort_menu` prop to make the header a sortable link, just like <a href="https://playbook.powerapp.cloud/kits/filter#sort-only" target="_blank">our filter kit.</a>
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
$text_align_values: (
|
|
2
3
|
start: start,
|
|
3
4
|
end: end,
|
|
@@ -21,15 +22,6 @@ $text_align_values: (
|
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
.pb_th_link:hover {
|
|
25
|
-
background-color: rgba($primary, 0.03);
|
|
26
|
-
color: $primary !important;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.pb_th_link, .pb_th_nolink{
|
|
30
|
-
padding: $space_xxs;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
25
|
[class^=pb_table] {
|
|
34
26
|
thead {
|
|
35
27
|
[class^=pb_th_active] {
|
|
@@ -37,14 +29,3 @@ $text_align_values: (
|
|
|
37
29
|
}
|
|
38
30
|
}
|
|
39
31
|
}
|
|
40
|
-
|
|
41
|
-
[class*="pb_table_header_dropdown"][class*="_vertical"] {
|
|
42
|
-
&[class*="_normal"] {
|
|
43
|
-
[class*="pb_nav_list_kit_item"][class*="pb_nav_list_item"] {
|
|
44
|
-
&[class*="_link"] {
|
|
45
|
-
border-left-width: 0px;
|
|
46
|
-
background-color: #fff !important;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
@@ -4,35 +4,61 @@
|
|
|
4
4
|
class: object.classname,
|
|
5
5
|
data: object.data,
|
|
6
6
|
id: "pb-th#{object.id}") do %>
|
|
7
|
-
<%
|
|
8
|
-
|
|
7
|
+
<% object.sort_menu.each do |item| %>
|
|
8
|
+
<% if item[:active] == true %>
|
|
9
|
+
<%= pb_rails("flex", props:{ align: object.align_content }) do %>
|
|
10
|
+
<%= content.presence || content_tag(:span, item[:item], class: "pb_th_active") %>
|
|
11
|
+
<span class="pb_th_active">
|
|
12
|
+
<%= pb_rails("icon", props: { icon: object.sort_icon(item[:direction]),
|
|
13
|
+
fixed_width: true,
|
|
14
|
+
classname: "pb_th_active",
|
|
15
|
+
padding_left: "xs" }) %>
|
|
16
|
+
</span>
|
|
17
|
+
<% end %>
|
|
18
|
+
<% end %>
|
|
19
|
+
<% end %>
|
|
20
|
+
<% if object.sort_menu.all? { |item| item[:active] == false } %>
|
|
21
|
+
<%= pb_rails("flex", props:{ align: object.align_content }) do %>
|
|
9
22
|
<%= content.presence || object.text %>
|
|
23
|
+
<%= pb_rails("icon", props: { icon: "arrow-up-arrow-down",
|
|
24
|
+
fixed_width: true,
|
|
25
|
+
padding_left: "xs" }) %>
|
|
10
26
|
<% end %>
|
|
11
27
|
<% else %>
|
|
12
|
-
<%=
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<%= pb_rails("nav", props: {classname: "pb_table_header_dropdown"}) do %>
|
|
31
|
-
<% object.sort_menu.each do |item| %>
|
|
32
|
-
<%= pb_rails("nav/item", props: { text: item[:item], link: item[:link], icon_right: sort_icon(item[:direction], item[:active]), active: item[:active] }) %>
|
|
28
|
+
<%= content.presence || object.text %>
|
|
29
|
+
<% end %>
|
|
30
|
+
<% if object.sort_menu != [{}] && object.colspan > 1 %>
|
|
31
|
+
<%= pb_rails("popover", props: { classname: "pb_filter_sort_menu",
|
|
32
|
+
close_on_click: "outside",
|
|
33
|
+
trigger_element_id: "pb-th#{object.id}",
|
|
34
|
+
tooltip_id: "sort-filter-btn-tooltip#{object.id}",
|
|
35
|
+
position: object.placement ,
|
|
36
|
+
padding: 'none'}) do %>
|
|
37
|
+
<%= pb_rails("list") do %>
|
|
38
|
+
<% object.sort_menu.each do |item| %>
|
|
39
|
+
<%= pb_rails("list/item") do %>
|
|
40
|
+
<%= pb_rails("button", props: { variant: "link" ,
|
|
41
|
+
classname: "p-0",
|
|
42
|
+
text: item[:item],
|
|
43
|
+
link: item[:link],
|
|
44
|
+
icon: sort_icon(item[:direction]),
|
|
45
|
+
icon_right: true }) %>
|
|
33
46
|
<% end %>
|
|
34
47
|
<% end %>
|
|
35
48
|
<% end %>
|
|
36
49
|
<% end %>
|
|
37
50
|
<% end %>
|
|
38
51
|
<% end %>
|
|
52
|
+
<% if object.sort_menu != [{}] && object.colspan == 1 %>
|
|
53
|
+
<script>
|
|
54
|
+
document.addEventListener("DOMContentLoaded", function() {
|
|
55
|
+
var thId = `<%= "#pb-th#{object.id}" %>`
|
|
56
|
+
var firstLink = `<%= next_link %>`
|
|
57
|
+
var thElement = document.querySelector(thId);
|
|
58
|
+
|
|
59
|
+
thElement.addEventListener("click", function() {
|
|
60
|
+
window.location.href = firstLink;
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
</script>
|
|
64
|
+
<% end %>
|