playbook_ui 10.25.0 → 10.26.0.pre.alpha3
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_avatar/_avatar.tsx +3 -3
- data/app/pb_kits/playbook/pb_body/_body.tsx +8 -8
- data/app/pb_kits/playbook/pb_card/_card.jsx +3 -1
- data/app/pb_kits/playbook/pb_card/_card_mixin.scss +1 -0
- data/app/pb_kits/playbook/pb_image/_image.tsx +1 -1
- data/app/pb_kits/playbook/pb_kit/dateTime.js +2 -1
- data/app/pb_kits/playbook/pb_table/_table.jsx +3 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_sticky.html.erb +83 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_sticky.jsx +94 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_sticky.md +3 -0
- data/app/pb_kits/playbook/pb_table/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_table/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_table/styles/_all.scss +1 -0
- data/app/pb_kits/playbook/pb_table/styles/_sticky_header.scss +21 -0
- data/app/pb_kits/playbook/pb_table/table.rb +7 -1
- data/app/pb_kits/playbook/pb_table/table.test.js +17 -0
- data/app/pb_kits/playbook/tokens/_display.scss +13 -0
- data/app/pb_kits/playbook/tokens/_screen_sizes.scss +21 -5
- data/app/pb_kits/playbook/utilities/_display.scss +58 -1
- data/app/pb_kits/playbook/utilities/globalProps.ts +31 -16
- data/lib/playbook/display.rb +20 -6
- data/lib/playbook/version.rb +2 -2
- metadata +11 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eec4050a38ffdbc91288fa4d1ebe864edc0485bf814f1569b50a4df569e6c666
|
4
|
+
data.tar.gz: 5967691eccad475c60406d60b9aca79ee520a2736bfde034b48e6db8c1de3316
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ea97fd90f89882ee7e54d80b46e468fa5beffa6ee2e9dc64475e14ebfe4cdcfef43dcf6b3dd0ab06db030da9fb04f4e35fae1e35dcba93a8009a80200d24fd5
|
7
|
+
data.tar.gz: edbf22cf4988bf3ddc4f7872dce6fe51041dd8a8a657bd8b118196fe42c8a0c06428fbc5a1efcec55525d6ae4b769279a3438b12ad174d2e52497b7610e2260d
|
@@ -2,7 +2,7 @@ import React, { useState } from 'react'
|
|
2
2
|
import classnames from 'classnames'
|
3
3
|
|
4
4
|
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
5
|
-
import { globalProps } from '../utilities/globalProps'
|
5
|
+
import { globalProps, GlobalProps } from '../utilities/globalProps'
|
6
6
|
|
7
7
|
import Image from '../pb_image/_image'
|
8
8
|
import OnlineStatus from '../pb_online_status/_online_status'
|
@@ -18,14 +18,14 @@ type AvatarProps = {
|
|
18
18
|
name: string,
|
19
19
|
size?: "md" | "lg" | "sm" | "xl" | "xs" | "xxs",
|
20
20
|
status: "away" | "offline" | "online",
|
21
|
-
}
|
21
|
+
} & GlobalProps
|
22
22
|
|
23
23
|
const firstTwoInitials = (name: string) =>
|
24
24
|
name.split(/\s/).map((name) => name[0])
|
25
25
|
.join('')
|
26
26
|
.substring(0, 2)
|
27
27
|
|
28
|
-
const Avatar = (props: AvatarProps) => {
|
28
|
+
const Avatar = (props: AvatarProps): React.ReactElement => {
|
29
29
|
const {
|
30
30
|
aria = {},
|
31
31
|
className,
|
@@ -2,7 +2,7 @@ import React from 'react'
|
|
2
2
|
import classnames from 'classnames'
|
3
3
|
|
4
4
|
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
5
|
-
import { globalProps } from '../utilities/globalProps'
|
5
|
+
import { globalProps, GlobalProps } from '../utilities/globalProps'
|
6
6
|
|
7
7
|
import Highlight from '../pb_highlight/_highlight'
|
8
8
|
|
@@ -20,7 +20,7 @@ type BodyProps = {
|
|
20
20
|
tag?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'div',
|
21
21
|
text?: string,
|
22
22
|
variant: null | 'link',
|
23
|
-
}
|
23
|
+
} & GlobalProps
|
24
24
|
|
25
25
|
const Body = (props: BodyProps): React.ReactElement => {
|
26
26
|
const {
|
@@ -56,12 +56,12 @@ const Body = (props: BodyProps): React.ReactElement => {
|
|
56
56
|
id={id}
|
57
57
|
>
|
58
58
|
{ highlighting && (
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
59
|
+
<Highlight
|
60
|
+
highlightedText={highlightedText}
|
61
|
+
text={text}
|
62
|
+
>
|
63
|
+
{children}
|
64
|
+
</Highlight>
|
65
65
|
) }
|
66
66
|
{ !highlighting && (
|
67
67
|
text || children
|
@@ -1,3 +1,4 @@
|
|
1
|
+
/* eslint-disable react/no-multi-comp */
|
1
2
|
/* @flow */
|
2
3
|
|
3
4
|
import React from 'react'
|
@@ -29,7 +30,7 @@ type CardHeaderProps = {
|
|
29
30
|
headerColor?: BackgroundColors | ProductColors | CategoryColors | "none",
|
30
31
|
children: array<React.ReactNode> | React.ReactNode,
|
31
32
|
className?: string,
|
32
|
-
padding?: string
|
33
|
+
padding?: string
|
33
34
|
}
|
34
35
|
|
35
36
|
type CardBodyProps = {
|
@@ -56,6 +57,7 @@ const Header = (props: CardHeaderProps) => {
|
|
56
57
|
const Body = (props: CardBodyProps) => {
|
57
58
|
const { children, padding = 'md', className } = props
|
58
59
|
const bodyCSS = buildCss('pb_card_body_kit')
|
60
|
+
|
59
61
|
const bodySpacing = globalProps(props, { padding })
|
60
62
|
|
61
63
|
return (
|
@@ -20,6 +20,7 @@ type TableProps = {
|
|
20
20
|
responsive: "collapse" | "scroll" | "none",
|
21
21
|
singleLine: boolean,
|
22
22
|
size: "sm" | "md" | "lg",
|
23
|
+
sticky?: boolean,
|
23
24
|
}
|
24
25
|
|
25
26
|
const Table = (props: TableProps) => {
|
@@ -37,6 +38,7 @@ const Table = (props: TableProps) => {
|
|
37
38
|
responsive = 'collapse',
|
38
39
|
singleLine = false,
|
39
40
|
size = 'sm',
|
41
|
+
sticky = false,
|
40
42
|
} = props
|
41
43
|
|
42
44
|
const ariaProps = buildAriaProps(aria)
|
@@ -60,6 +62,7 @@ const Table = (props: TableProps) => {
|
|
60
62
|
'data_table': dataTable,
|
61
63
|
'single-line': singleLine,
|
62
64
|
'no-hover': disableHover,
|
65
|
+
'sticky-header': sticky,
|
63
66
|
},
|
64
67
|
globalProps(props),
|
65
68
|
tableCollapseCss,
|
@@ -0,0 +1,83 @@
|
|
1
|
+
<%= pb_rails("table", props: { sticky: true }) do %>
|
2
|
+
<thead>
|
3
|
+
<tr>
|
4
|
+
<th>Column 1</th>
|
5
|
+
<th>Column 2</th>
|
6
|
+
<th>Column 3</th>
|
7
|
+
<th>Column 4</th>
|
8
|
+
<th>Column 5</th>
|
9
|
+
</tr>
|
10
|
+
</thead>
|
11
|
+
<tbody>
|
12
|
+
<tr>
|
13
|
+
<td>Value 1</td>
|
14
|
+
<td>Value 2</td>
|
15
|
+
<td>Value 3</td>
|
16
|
+
<td>Value 4</td>
|
17
|
+
<td>Value 5</td>
|
18
|
+
</tr>
|
19
|
+
<tr>
|
20
|
+
<td>Value 1</td>
|
21
|
+
<td>Value 2</td>
|
22
|
+
<td>Value 3</td>
|
23
|
+
<td>Value 4</td>
|
24
|
+
<td>Value 5</td>
|
25
|
+
</tr>
|
26
|
+
<tr>
|
27
|
+
<td>Value 1</td>
|
28
|
+
<td>Value 2</td>
|
29
|
+
<td>Value 3</td>
|
30
|
+
<td>Value 4</td>
|
31
|
+
<td>Value 5</td>
|
32
|
+
</tr>
|
33
|
+
<tr>
|
34
|
+
<td>Value 1</td>
|
35
|
+
<td>Value 2</td>
|
36
|
+
<td>Value 3</td>
|
37
|
+
<td>Value 4</td>
|
38
|
+
<td>Value 5</td>
|
39
|
+
</tr>
|
40
|
+
<tr>
|
41
|
+
<td>Value 1</td>
|
42
|
+
<td>Value 2</td>
|
43
|
+
<td>Value 3</td>
|
44
|
+
<td>Value 4</td>
|
45
|
+
<td>Value 5</td>
|
46
|
+
</tr>
|
47
|
+
<tr>
|
48
|
+
<td>Value 1</td>
|
49
|
+
<td>Value 2</td>
|
50
|
+
<td>Value 3</td>
|
51
|
+
<td>Value 4</td>
|
52
|
+
<td>Value 5</td>
|
53
|
+
</tr>
|
54
|
+
<tr>
|
55
|
+
<td>Value 1</td>
|
56
|
+
<td>Value 2</td>
|
57
|
+
<td>Value 3</td>
|
58
|
+
<td>Value 4</td>
|
59
|
+
<td>Value 5</td>
|
60
|
+
</tr>
|
61
|
+
<tr>
|
62
|
+
<td>Value 1</td>
|
63
|
+
<td>Value 2</td>
|
64
|
+
<td>Value 3</td>
|
65
|
+
<td>Value 4</td>
|
66
|
+
<td>Value 5</td>
|
67
|
+
</tr>
|
68
|
+
<tr>
|
69
|
+
<td>Value 1</td>
|
70
|
+
<td>Value 2</td>
|
71
|
+
<td>Value 3</td>
|
72
|
+
<td>Value 4</td>
|
73
|
+
<td>Value 5</td>
|
74
|
+
</tr>
|
75
|
+
<tr>
|
76
|
+
<td>Value 1</td>
|
77
|
+
<td>Value 2</td>
|
78
|
+
<td>Value 3</td>
|
79
|
+
<td>Value 4</td>
|
80
|
+
<td>Value 5</td>
|
81
|
+
</tr>
|
82
|
+
</tbody>
|
83
|
+
<% end %>
|
@@ -0,0 +1,94 @@
|
|
1
|
+
import React from "react"
|
2
|
+
|
3
|
+
import Table from "../_table"
|
4
|
+
|
5
|
+
const TableSticky = (props) => (
|
6
|
+
<Table
|
7
|
+
sticky
|
8
|
+
{...props}
|
9
|
+
>
|
10
|
+
<thead>
|
11
|
+
<tr>
|
12
|
+
<th>{'Column 1'}</th>
|
13
|
+
<th>{'Column 2'}</th>
|
14
|
+
<th>{'Column 3'}</th>
|
15
|
+
<th>{'Column 4'}</th>
|
16
|
+
<th>{'Column 5'}</th>
|
17
|
+
</tr>
|
18
|
+
</thead>
|
19
|
+
<tbody>
|
20
|
+
<tr>
|
21
|
+
<td>{'Value 1'}</td>
|
22
|
+
<td>{'Value 2'}</td>
|
23
|
+
<td>{'Value 3'}</td>
|
24
|
+
<td>{'Value 4'}</td>
|
25
|
+
<td>{'Value 5'}</td>
|
26
|
+
</tr>
|
27
|
+
<tr>
|
28
|
+
<td>{'Value 1'}</td>
|
29
|
+
<td>{'Value 2'}</td>
|
30
|
+
<td>{'Value 3'}</td>
|
31
|
+
<td>{'Value 4'}</td>
|
32
|
+
<td>{'Value 5'}</td>
|
33
|
+
</tr>
|
34
|
+
<tr>
|
35
|
+
<td>{'Value 1'}</td>
|
36
|
+
<td>{'Value 2'}</td>
|
37
|
+
<td>{'Value 3'}</td>
|
38
|
+
<td>{'Value 4'}</td>
|
39
|
+
<td>{'Value 5'}</td>
|
40
|
+
</tr>
|
41
|
+
<tr>
|
42
|
+
<td>{'Value 1'}</td>
|
43
|
+
<td>{'Value 2'}</td>
|
44
|
+
<td>{'Value 3'}</td>
|
45
|
+
<td>{'Value 4'}</td>
|
46
|
+
<td>{'Value 5'}</td>
|
47
|
+
</tr>
|
48
|
+
<tr>
|
49
|
+
<td>{'Value 1'}</td>
|
50
|
+
<td>{'Value 2'}</td>
|
51
|
+
<td>{'Value 3'}</td>
|
52
|
+
<td>{'Value 4'}</td>
|
53
|
+
<td>{'Value 5'}</td>
|
54
|
+
</tr>
|
55
|
+
<tr>
|
56
|
+
<td>{'Value 1'}</td>
|
57
|
+
<td>{'Value 2'}</td>
|
58
|
+
<td>{'Value 3'}</td>
|
59
|
+
<td>{'Value 4'}</td>
|
60
|
+
<td>{'Value 5'}</td>
|
61
|
+
</tr>
|
62
|
+
<tr>
|
63
|
+
<td>{'Value 1'}</td>
|
64
|
+
<td>{'Value 2'}</td>
|
65
|
+
<td>{'Value 3'}</td>
|
66
|
+
<td>{'Value 4'}</td>
|
67
|
+
<td>{'Value 5'}</td>
|
68
|
+
</tr>
|
69
|
+
<tr>
|
70
|
+
<td>{'Value 1'}</td>
|
71
|
+
<td>{'Value 2'}</td>
|
72
|
+
<td>{'Value 3'}</td>
|
73
|
+
<td>{'Value 4'}</td>
|
74
|
+
<td>{'Value 5'}</td>
|
75
|
+
</tr>
|
76
|
+
<tr>
|
77
|
+
<td>{'Value 1'}</td>
|
78
|
+
<td>{'Value 2'}</td>
|
79
|
+
<td>{'Value 3'}</td>
|
80
|
+
<td>{'Value 4'}</td>
|
81
|
+
<td>{'Value 5'}</td>
|
82
|
+
</tr>
|
83
|
+
<tr>
|
84
|
+
<td>{'Value 1'}</td>
|
85
|
+
<td>{'Value 2'}</td>
|
86
|
+
<td>{'Value 3'}</td>
|
87
|
+
<td>{'Value 4'}</td>
|
88
|
+
<td>{'Value 5'}</td>
|
89
|
+
</tr>
|
90
|
+
</tbody>
|
91
|
+
</Table>
|
92
|
+
)
|
93
|
+
|
94
|
+
export default TableSticky
|
@@ -3,6 +3,7 @@ examples:
|
|
3
3
|
- table_sm: Small
|
4
4
|
- table_md: Medium
|
5
5
|
- table_lg: Large
|
6
|
+
- table_sticky: Sticky Header
|
6
7
|
- table_alignment_row: Row Alignment
|
7
8
|
- table_alignment_column: Column Alignment
|
8
9
|
- table_alignment_shift_row: Shift Row
|
@@ -25,6 +26,7 @@ examples:
|
|
25
26
|
- table_sm: Small
|
26
27
|
- table_md: Medium
|
27
28
|
- table_lg: Large
|
29
|
+
- table_sticky: Sticky Header
|
28
30
|
- table_alignment_row: Row Alignment
|
29
31
|
- table_alignment_column: Column Alignment
|
30
32
|
- table_alignment_shift_row: Shift Row
|
@@ -1,6 +1,7 @@
|
|
1
1
|
export { default as TableSm } from './_table_sm.jsx'
|
2
2
|
export { default as TableMd } from './_table_md.jsx'
|
3
3
|
export { default as TableLg } from './_table_lg.jsx'
|
4
|
+
export { default as TableSticky } from './_table_sticky.jsx'
|
4
5
|
export { default as TableSideHighlight } from './_table_side_highlight.jsx'
|
5
6
|
export { default as TableContainer } from './_table_container.jsx'
|
6
7
|
export { default as TableDataTable } from './_table_data_table.jsx'
|
@@ -0,0 +1,21 @@
|
|
1
|
+
@import "../../tokens/colors";
|
2
|
+
|
3
|
+
[class^="pb_table"] {
|
4
|
+
&.sticky-header {
|
5
|
+
thead {
|
6
|
+
position: sticky;
|
7
|
+
background: $white;
|
8
|
+
top: -40px;
|
9
|
+
}
|
10
|
+
}
|
11
|
+
|
12
|
+
&.dark {
|
13
|
+
&.sticky-header {
|
14
|
+
thead {
|
15
|
+
position: sticky;
|
16
|
+
background: #0a0527;
|
17
|
+
top: -40px;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
}
|
@@ -21,11 +21,13 @@ module Playbook
|
|
21
21
|
values: %w[sm md lg],
|
22
22
|
default: "sm"
|
23
23
|
prop :text
|
24
|
+
prop :sticky, type: Playbook::Props::Boolean,
|
25
|
+
default: false
|
24
26
|
|
25
27
|
def classname
|
26
28
|
generate_classname(
|
27
29
|
"pb_table", "table-#{size}", single_line_class, dark_class,
|
28
|
-
disable_hover_class, container_class, data_table_class, collapse_class,
|
30
|
+
disable_hover_class, container_class, data_table_class, sticky_class, collapse_class,
|
29
31
|
"table-responsive-#{responsive}", separator: " "
|
30
32
|
)
|
31
33
|
end
|
@@ -55,6 +57,10 @@ module Playbook
|
|
55
57
|
def collapse_class
|
56
58
|
responsive != "none" ? "table-collapse-#{collapse}" : ""
|
57
59
|
end
|
60
|
+
|
61
|
+
def sticky_class
|
62
|
+
sticky ? "sticky-header" : nil
|
63
|
+
end
|
58
64
|
end
|
59
65
|
end
|
60
66
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { ensureAccessible, renderKit } from "../utilities/test-utils"
|
2
|
+
|
3
|
+
import Table from "./_table"
|
4
|
+
|
5
|
+
const props = {
|
6
|
+
data: { testid: "table" },
|
7
|
+
sticky: false
|
8
|
+
}
|
9
|
+
|
10
|
+
it("should be accessible", async () => {
|
11
|
+
ensureAccessible(Table, props)
|
12
|
+
})
|
13
|
+
|
14
|
+
test("when sticky is true", () => {
|
15
|
+
const kit = renderKit(Table, props, { sticky: true })
|
16
|
+
expect(kit).toHaveClass("pb_table table-sm table-responsive-collapse table-card sticky-header table-collapse-sm")
|
17
|
+
})
|
@@ -0,0 +1,13 @@
|
|
1
|
+
$display_inline: inline;
|
2
|
+
$display_block: block;
|
3
|
+
$display_inline_block: inline-block;
|
4
|
+
$display_flex: flex;
|
5
|
+
$display_hidden: hidden;
|
6
|
+
$display_inline_flex: inline-flex;
|
7
|
+
$displays: (
|
8
|
+
display_hidden: $display_hidden,
|
9
|
+
display_flex: $display_flex,
|
10
|
+
display_inline: $display_inline,
|
11
|
+
display_inline_block: $display_inline_block,
|
12
|
+
display_block: $display_block
|
13
|
+
);
|
@@ -10,11 +10,11 @@ $screen-xl-min: 1200px;
|
|
10
10
|
$screen-xl-max: $screen-xl-min - 1;
|
11
11
|
|
12
12
|
$breakpoints: (
|
13
|
-
xs: $screen-xs-min,
|
14
|
-
sm: $screen-sm-min,
|
15
|
-
md: $screen-md-min,
|
16
|
-
lg: $screen-lg-min,
|
17
|
-
xl: $screen-xl-min
|
13
|
+
xs: $screen-xs-min, // $screen-xs-min
|
14
|
+
sm: $screen-sm-min, // $screen-xs-min + 1 thru $screen-md-min
|
15
|
+
md: $screen-md-min, // $screen-md-min + 1 thru $screen-md-lg
|
16
|
+
lg: $screen-lg-min, // $screen-lg-min + 1 thru $screen-md-xl
|
17
|
+
xl: $screen-xl-min // $screen-xl-min + 1
|
18
18
|
);
|
19
19
|
|
20
20
|
|
@@ -28,3 +28,19 @@ $breakpoints: (
|
|
28
28
|
@content;
|
29
29
|
}
|
30
30
|
}
|
31
|
+
|
32
|
+
@mixin break_on($min: null, $max: null) {
|
33
|
+
@if not $max {
|
34
|
+
@media screen and (min-width: $min) {
|
35
|
+
@content;
|
36
|
+
}
|
37
|
+
} @else if not $min {
|
38
|
+
@media screen and (max-width: $max) {
|
39
|
+
@content;
|
40
|
+
}
|
41
|
+
} @else {
|
42
|
+
@media screen and (min-width: $min) and (max-width: $max) {
|
43
|
+
@content;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}
|
@@ -1,3 +1,5 @@
|
|
1
|
+
@import "../tokens/display";
|
2
|
+
|
1
3
|
.display_block {
|
2
4
|
display: block;
|
3
5
|
}
|
@@ -20,4 +22,59 @@
|
|
20
22
|
|
21
23
|
.display_hidden {
|
22
24
|
display: none;
|
23
|
-
}
|
25
|
+
}
|
26
|
+
|
27
|
+
$screen-xs-min: 575px;
|
28
|
+
$screen-xs-max: $screen-xs-min - 1;
|
29
|
+
$screen-sm-min: 576px;
|
30
|
+
$screen-sm-max: $screen-sm-min - 1;
|
31
|
+
$screen-md-min: 768px;
|
32
|
+
$screen-md-max: $screen-md-min - 1;
|
33
|
+
$screen-lg-min: 992px;
|
34
|
+
$screen-lg-max: $screen-lg-min - 1;
|
35
|
+
$screen-xl-min: 1200px;
|
36
|
+
$screen-xl-max: $screen-xl-min - 1;
|
37
|
+
|
38
|
+
$breakpoints: (
|
39
|
+
xs: (
|
40
|
+
// min: 0,
|
41
|
+
max: $screen-xs-min // 575
|
42
|
+
),
|
43
|
+
sm: (
|
44
|
+
min: $screen-sm-min, // 576
|
45
|
+
max: $screen-md-max // 767
|
46
|
+
),
|
47
|
+
md: (
|
48
|
+
min: $screen-md-min, // 768
|
49
|
+
max: $screen-lg-max // 991
|
50
|
+
),
|
51
|
+
lg: (
|
52
|
+
min: $screen-lg-min, // 992
|
53
|
+
max: $screen-xl-max // 1199
|
54
|
+
),
|
55
|
+
xl: (
|
56
|
+
min: $screen-xl-min, //1200
|
57
|
+
// max: 0
|
58
|
+
)
|
59
|
+
);
|
60
|
+
|
61
|
+
|
62
|
+
$display_values: (
|
63
|
+
hidden: $display_hidden,
|
64
|
+
flex: $display_flex,
|
65
|
+
inline: $display_inline,
|
66
|
+
inline_block: $display_inline_block,
|
67
|
+
block: $display_block
|
68
|
+
);
|
69
|
+
|
70
|
+
@each $size, $size_value in $breakpoints {
|
71
|
+
@each $display, $display_value in $display_values {
|
72
|
+
$min_size: map-get($size_value, "min");
|
73
|
+
$max_size: map-get($size_value, "max");
|
74
|
+
@include break_on($min_size, $max_size) {
|
75
|
+
.display_#{$size}_#{$display} {
|
76
|
+
display: #{$display_value} !important;
|
77
|
+
}
|
78
|
+
}
|
79
|
+
}
|
80
|
+
}
|
@@ -1,7 +1,12 @@
|
|
1
1
|
import { omit } from 'lodash'
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
import {
|
4
|
+
Binary,
|
5
|
+
Display,
|
6
|
+
DisplaySizes,
|
7
|
+
None,
|
8
|
+
Sizes,
|
9
|
+
} from '../types'
|
5
10
|
|
6
11
|
type AllSizes = None & Sizes
|
7
12
|
|
@@ -42,27 +47,23 @@ type ZIndex = {
|
|
42
47
|
}
|
43
48
|
|
44
49
|
type Shadow = {
|
45
|
-
shadow?:
|
50
|
+
shadow?: None | "deep" | "deeper" | "deepest",
|
46
51
|
}
|
47
52
|
|
48
53
|
type LineHeight = {
|
49
54
|
lineHeight?: "loosest" | "looser" | "loose" | "normal" | "tight" | "tighter" | "tightest",
|
50
55
|
}
|
51
56
|
|
52
|
-
type Display = {
|
53
|
-
display?: "block" | "flex" | "hidden" | "inline_block" | "inline" | "inline_flex",
|
54
|
-
}
|
55
|
-
|
56
57
|
type Cursor = {
|
57
58
|
cursor?: "pointer",
|
58
59
|
}
|
59
60
|
|
60
61
|
type BorderRadius = {
|
61
|
-
borderRadius?:
|
62
|
+
borderRadius?: None | "xs" | "sm" | "md" | "lg" | "xl" | "rounded",
|
62
63
|
}
|
63
64
|
|
64
65
|
type Flex = {
|
65
|
-
flex?:
|
66
|
+
flex?: None | "initial" | "auto" | 1
|
66
67
|
}
|
67
68
|
|
68
69
|
type FlexDirection = {
|
@@ -70,11 +71,11 @@ type FlexDirection = {
|
|
70
71
|
}
|
71
72
|
|
72
73
|
type FlexGrow = {
|
73
|
-
flexGrow?:
|
74
|
+
flexGrow?: Binary
|
74
75
|
}
|
75
76
|
|
76
77
|
type FlexShrink = {
|
77
|
-
flexShrink?:
|
78
|
+
flexShrink?: Binary
|
78
79
|
}
|
79
80
|
|
80
81
|
type FlexWrap = {
|
@@ -106,11 +107,11 @@ type AlignSelf = {
|
|
106
107
|
}
|
107
108
|
|
108
109
|
type Order = {
|
109
|
-
order?:
|
110
|
+
order?: None | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
|
110
111
|
}
|
111
112
|
|
112
113
|
export type GlobalProps = AlignContent & AlignItems & AlignSelf &
|
113
|
-
BorderRadius & Cursor & Dark & Display & Flex & FlexDirection &
|
114
|
+
BorderRadius & Cursor & Dark & Display & DisplaySizes & Flex & FlexDirection &
|
114
115
|
FlexGrow & FlexShrink & FlexWrap & JustifyContent & JustifySelf &
|
115
116
|
LineHeight & Margin & MaxWidth & NumberSpacing & Order & Padding &
|
116
117
|
Shadow & ZIndex
|
@@ -180,9 +181,21 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
|
|
180
181
|
css += lineHeight ? `line_height_${lineHeight} ` : ''
|
181
182
|
return css
|
182
183
|
},
|
183
|
-
displayProps: (
|
184
|
+
displayProps: (display: Display ) => {
|
184
185
|
let css = ''
|
185
|
-
|
186
|
+
Object.entries(display).forEach((displayEntry) => {
|
187
|
+
if (displayEntry[0] == "display") {
|
188
|
+
if (typeof displayEntry[1] == "string") {
|
189
|
+
css += `display_${displayEntry[1]}`
|
190
|
+
} else if (typeof displayEntry[1] == "object") {
|
191
|
+
Object.entries(displayEntry[1]).forEach((displayObj) => {
|
192
|
+
css += `display_${displayObj[0]}_${displayObj[1]}`
|
193
|
+
})
|
194
|
+
} else {
|
195
|
+
' '
|
196
|
+
}
|
197
|
+
}
|
198
|
+
})
|
186
199
|
return css
|
187
200
|
},
|
188
201
|
cursorProps: ({ cursor }: Cursor) => {
|
@@ -259,7 +272,9 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
|
|
259
272
|
}
|
260
273
|
}
|
261
274
|
|
262
|
-
|
275
|
+
type DefaultProps = {[key: string]: string} | Record<string, unknown>
|
276
|
+
|
277
|
+
export const globalProps = (props: GlobalProps, defaultProps: DefaultProps = {}): string => {
|
263
278
|
const allProps = { ...props, ...defaultProps }
|
264
279
|
return Object.keys(PROP_CATEGORIES).map((key) => {
|
265
280
|
return PROP_CATEGORIES[key](allProps)
|
data/lib/playbook/display.rb
CHANGED
@@ -8,12 +8,22 @@ module Playbook
|
|
8
8
|
|
9
9
|
def display_props
|
10
10
|
selected_props = display_options.keys.select { |sk| try(sk) }
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
display_value = send(
|
15
|
-
|
16
|
-
|
11
|
+
responsive = selected_props.present? && try(:display).is_a?(::Hash)
|
12
|
+
css = ""
|
13
|
+
if responsive
|
14
|
+
display_value = send(:display)
|
15
|
+
display_value.each do |key, value|
|
16
|
+
css += "display_#{key}_#{value} " if display_size_values.include?(key.to_s) && display_values.include?(value.to_s)
|
17
|
+
end
|
18
|
+
elsif display_value.is_a?(String)
|
19
|
+
selected_props.each do |k|
|
20
|
+
display_value = send(k)
|
21
|
+
css += "display_#{display_value}" if display_values.include? display_value
|
22
|
+
end
|
23
|
+
else
|
24
|
+
""
|
25
|
+
end
|
26
|
+
css unless css.blank?
|
17
27
|
end
|
18
28
|
|
19
29
|
def display_options
|
@@ -22,6 +32,10 @@ module Playbook
|
|
22
32
|
}
|
23
33
|
end
|
24
34
|
|
35
|
+
def display_size_values
|
36
|
+
%w[xs sm md lg xl]
|
37
|
+
end
|
38
|
+
|
25
39
|
def display_values
|
26
40
|
%w[block inline_block inline flex inline_flex hidden]
|
27
41
|
end
|
data/lib/playbook/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playbook_ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 10.
|
4
|
+
version: 10.26.0.pre.alpha3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Power UX
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-
|
12
|
+
date: 2022-05-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -1734,6 +1734,9 @@ files:
|
|
1734
1734
|
- app/pb_kits/playbook/pb_table/docs/_table_sm.html.erb
|
1735
1735
|
- app/pb_kits/playbook/pb_table/docs/_table_sm.jsx
|
1736
1736
|
- app/pb_kits/playbook/pb_table/docs/_table_sm.md
|
1737
|
+
- app/pb_kits/playbook/pb_table/docs/_table_sticky.html.erb
|
1738
|
+
- app/pb_kits/playbook/pb_table/docs/_table_sticky.jsx
|
1739
|
+
- app/pb_kits/playbook/pb_table/docs/_table_sticky.md
|
1737
1740
|
- app/pb_kits/playbook/pb_table/docs/_table_two_actions.html.erb
|
1738
1741
|
- app/pb_kits/playbook/pb_table/docs/_table_two_actions.jsx
|
1739
1742
|
- app/pb_kits/playbook/pb_table/docs/_table_two_actions.md
|
@@ -1755,6 +1758,7 @@ files:
|
|
1755
1758
|
- app/pb_kits/playbook/pb_table/styles/_reset.scss
|
1756
1759
|
- app/pb_kits/playbook/pb_table/styles/_side_highlight.scss
|
1757
1760
|
- app/pb_kits/playbook/pb_table/styles/_single-line.scss
|
1761
|
+
- app/pb_kits/playbook/pb_table/styles/_sticky_header.scss
|
1758
1762
|
- app/pb_kits/playbook/pb_table/styles/_structure.scss
|
1759
1763
|
- app/pb_kits/playbook/pb_table/styles/_table-card.scss
|
1760
1764
|
- app/pb_kits/playbook/pb_table/styles/_table-dark.scss
|
@@ -1762,6 +1766,7 @@ files:
|
|
1762
1766
|
- app/pb_kits/playbook/pb_table/styles/_variables.scss
|
1763
1767
|
- app/pb_kits/playbook/pb_table/table.html.erb
|
1764
1768
|
- app/pb_kits/playbook/pb_table/table.rb
|
1769
|
+
- app/pb_kits/playbook/pb_table/table.test.js
|
1765
1770
|
- app/pb_kits/playbook/pb_table/table_row.html.erb
|
1766
1771
|
- app/pb_kits/playbook/pb_table/table_row.rb
|
1767
1772
|
- app/pb_kits/playbook/pb_text_input/_text_input.jsx
|
@@ -2050,6 +2055,7 @@ files:
|
|
2050
2055
|
- app/pb_kits/playbook/tokens/_animation-curves.scss
|
2051
2056
|
- app/pb_kits/playbook/tokens/_border_radius.scss
|
2052
2057
|
- app/pb_kits/playbook/tokens/_colors.scss
|
2058
|
+
- app/pb_kits/playbook/tokens/_display.scss
|
2053
2059
|
- app/pb_kits/playbook/tokens/_line_height.scss
|
2054
2060
|
- app/pb_kits/playbook/tokens/_opacity.scss
|
2055
2061
|
- app/pb_kits/playbook/tokens/_positioning.scss
|
@@ -2155,7 +2161,7 @@ files:
|
|
2155
2161
|
- lib/playbook_ui.rb
|
2156
2162
|
homepage: http://playbook.powerapp.cloud
|
2157
2163
|
licenses:
|
2158
|
-
-
|
2164
|
+
- ISC
|
2159
2165
|
metadata: {}
|
2160
2166
|
post_install_message:
|
2161
2167
|
rdoc_options: []
|
@@ -2168,9 +2174,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
2168
2174
|
version: '0'
|
2169
2175
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
2170
2176
|
requirements:
|
2171
|
-
- - "
|
2177
|
+
- - ">"
|
2172
2178
|
- !ruby/object:Gem::Version
|
2173
|
-
version:
|
2179
|
+
version: 1.3.1
|
2174
2180
|
requirements: []
|
2175
2181
|
rubygems_version: 3.1.6
|
2176
2182
|
signing_key:
|