playbook_ui 14.7.0.pre.alpha.spacingquickchange4482 → 14.7.0.pre.rc.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 +2 -3
- data/app/pb_kits/playbook/pb_advanced_table/Components/CustomCell.tsx +1 -8
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +28 -21
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +1 -37
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_cell.jsx +2 -13
- data/app/pb_kits/playbook/pb_card/_card.tsx +5 -8
- data/app/pb_kits/playbook/pb_card/_card_mixin.scss +2 -1
- data/app/pb_kits/playbook/pb_card/docs/_card_light.md +1 -1
- data/app/pb_kits/playbook/pb_currency/_currency.tsx +6 -16
- data/app/pb_kits/playbook/pb_currency/currency.rb +11 -38
- data/app/pb_kits/playbook/pb_currency/currency.test.js +0 -35
- data/app/pb_kits/playbook/pb_currency/docs/example.yml +1 -3
- data/app/pb_kits/playbook/pb_currency/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_date/_date.scss +0 -3
- data/app/pb_kits/playbook/pb_draggable/docs/example.yml +0 -6
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +4 -4
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +10 -9
- data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +2 -2
- data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +1 -1
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +2 -6
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +26 -30
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.html.erb +1 -24
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx +2 -25
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.md +1 -0
- data/app/pb_kits/playbook/pb_form_pill/form_pill.html.erb +8 -46
- data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +1 -67
- data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.tsx +0 -1
- data/app/pb_kits/playbook/pb_selectable_card/selectable_card.html.erb +1 -1
- data/app/pb_kits/playbook/pb_selectable_card/selectable_card.rb +1 -5
- data/app/pb_kits/playbook/pb_timeline/_item.tsx +23 -59
- data/app/pb_kits/playbook/pb_timeline/_timeline.tsx +0 -8
- data/app/pb_kits/playbook/pb_timeline/docs/example.yml +1 -2
- data/app/pb_kits/playbook/pb_timeline/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_timeline/item.html.erb +21 -17
- data/app/pb_kits/playbook/pb_timeline/item.rb +0 -4
- data/app/pb_kits/playbook/pb_timeline/timeline.test.js +0 -84
- data/app/pb_kits/playbook/tokens/_typography.scss +0 -35
- data/app/pb_kits/playbook/utilities/_hover.scss +43 -46
- data/app/pb_kits/playbook/utilities/globalPropNames.mjs +0 -1
- data/app/pb_kits/playbook/utilities/globalProps.ts +0 -5
- data/dist/chunks/_typeahead-BhHnXJjy.js +22 -0
- data/dist/chunks/_weekday_stacked-C_QAqbqJ.js +45 -0
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +2 -8
- 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 +1 -4
- data/lib/playbook/kit_base.rb +15 -33
- data/lib/playbook/version.rb +2 -2
- metadata +5 -69
- data/app/pb_kits/playbook/pb_currency/docs/_currency_comma_separator.html.erb +0 -7
- data/app/pb_kits/playbook/pb_currency/docs/_currency_comma_separator.jsx +0 -18
- data/app/pb_kits/playbook/pb_currency/docs/_currency_comma_separator.md +0 -3
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_default_rails.html.erb +0 -26
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_default_rails.md +0 -7
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_cards_rails.html.erb +0 -38
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_cards_rails.md +0 -0
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_list_rails.html.erb +0 -19
- data/app/pb_kits/playbook/pb_draggable/draggable.html.erb +0 -3
- data/app/pb_kits/playbook/pb_draggable/draggable.rb +0 -18
- data/app/pb_kits/playbook/pb_draggable/draggable_container.html.erb +0 -3
- data/app/pb_kits/playbook/pb_draggable/draggable_container.rb +0 -15
- data/app/pb_kits/playbook/pb_draggable/draggable_item.html.erb +0 -7
- data/app/pb_kits/playbook/pb_draggable/draggable_item.rb +0 -18
- data/app/pb_kits/playbook/pb_draggable/index.js +0 -125
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text_rails.md +0 -3
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text_react.md +0 -1
- data/app/pb_kits/playbook/pb_link/_link.scss +0 -66
- data/app/pb_kits/playbook/pb_link/_link.tsx +0 -107
- data/app/pb_kits/playbook/pb_link/docs/_link_color.html.erb +0 -30
- data/app/pb_kits/playbook/pb_link/docs/_link_color.jsx +0 -40
- data/app/pb_kits/playbook/pb_link/docs/_link_disabled.html.erb +0 -5
- data/app/pb_kits/playbook/pb_link/docs/_link_disabled.jsx +0 -15
- data/app/pb_kits/playbook/pb_link/docs/_link_icon.html.erb +0 -15
- data/app/pb_kits/playbook/pb_link/docs/_link_icon.jsx +0 -25
- data/app/pb_kits/playbook/pb_link/docs/_link_tag.html.erb +0 -35
- data/app/pb_kits/playbook/pb_link/docs/_link_tag.jsx +0 -45
- data/app/pb_kits/playbook/pb_link/docs/_link_underline.html.erb +0 -5
- data/app/pb_kits/playbook/pb_link/docs/_link_underline.jsx +0 -15
- data/app/pb_kits/playbook/pb_link/docs/example.yml +0 -16
- data/app/pb_kits/playbook/pb_link/docs/index.js +0 -5
- data/app/pb_kits/playbook/pb_link/link.html.erb +0 -21
- data/app/pb_kits/playbook/pb_link/link.rb +0 -44
- data/app/pb_kits/playbook/pb_link/link.test.jsx +0 -92
- data/app/pb_kits/playbook/pb_skeleton_loading/_skeleton_loading.scss +0 -37
- data/app/pb_kits/playbook/pb_skeleton_loading/_skeleton_loading.tsx +0 -67
- data/app/pb_kits/playbook/pb_skeleton_loading/_skeleton_loading_mixins.scss +0 -40
- data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_border_radius.jsx +0 -51
- data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_border_radius.md +0 -1
- data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_color.jsx +0 -26
- data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_color.md +0 -1
- data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_default.html.erb +0 -1
- data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_default.jsx +0 -11
- data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_height_width.jsx +0 -59
- data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_height_width.md +0 -3
- data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_layout.jsx +0 -20
- data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_layout.md +0 -3
- data/app/pb_kits/playbook/pb_skeleton_loading/docs/example.yml +0 -13
- data/app/pb_kits/playbook/pb_skeleton_loading/docs/index.js +0 -5
- data/app/pb_kits/playbook/pb_skeleton_loading/skeleton_loading.html.erb +0 -12
- data/app/pb_kits/playbook/pb_skeleton_loading/skeleton_loading.rb +0 -8
- data/app/pb_kits/playbook/pb_skeleton_loading/skeleton_loading.test.jsx +0 -81
- data/app/pb_kits/playbook/pb_timeline/detail.html.erb +0 -3
- data/app/pb_kits/playbook/pb_timeline/detail.rb +0 -11
- data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.html.erb +0 -43
- data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.jsx +0 -68
- data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.md +0 -2
- data/app/pb_kits/playbook/pb_timeline/label.html.erb +0 -12
- data/app/pb_kits/playbook/pb_timeline/label.rb +0 -13
- data/app/pb_kits/playbook/pb_timeline/step.html.erb +0 -14
- data/app/pb_kits/playbook/pb_timeline/step.rb +0 -16
- data/app/pb_kits/playbook/pb_timeline/subcomponents/Detail.tsx +0 -29
- data/app/pb_kits/playbook/pb_timeline/subcomponents/Label.tsx +0 -38
- data/app/pb_kits/playbook/pb_timeline/subcomponents/Step.tsx +0 -42
- data/app/pb_kits/playbook/pb_timeline/subcomponents/index.tsx +0 -3
- data/dist/chunks/_typeahead-DhLic2Fe.js +0 -22
- data/dist/chunks/_weekday_stacked-Mx8TYP5I.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: 656e9e66e2df384c9f3d9ad833d269551418aa20f70c3e8cb4b8b017ce1b2db1
|
4
|
+
data.tar.gz: 28c337d7bd834f0d8448010014dc8bbbab8162f02ee5afe95cd8caacc250aee6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6578a809aafafb0bbe3be5e2ad11701e14dc359fb34d4157153a1909fc6d06ca9b3ac9c98461a7205bd9f3565d51fa626b64500fcea13b55d79302c9e011f7b0
|
7
|
+
data.tar.gz: 598e947939ac29bdc05f48871d9a63d41295836bc44cf225a3374a1c72c6f92e13c9e684b26d26ba9d04095b50a126dac0d79f4e322c54470021efbe51b29ce5
|
@@ -1,3 +1,4 @@
|
|
1
|
+
|
1
2
|
@import 'pb_advanced_table/advanced_table';
|
2
3
|
@import 'pb_avatar/avatar';
|
3
4
|
@import 'pb_avatar_action_button/avatar_action_button';
|
@@ -29,7 +30,6 @@
|
|
29
30
|
@import 'pb_dialog/dialog';
|
30
31
|
@import 'pb_distribution_bar/distribution_bar';
|
31
32
|
@import 'pb_draggable/draggable';
|
32
|
-
@import 'pb_drawer/drawer';
|
33
33
|
@import 'pb_dropdown/dropdown';
|
34
34
|
@import 'pb_file_upload/file_upload';
|
35
35
|
@import 'pb_filter/filter';
|
@@ -54,7 +54,6 @@
|
|
54
54
|
@import 'pb_legend/legend';
|
55
55
|
@import 'pb_lightbox/lightbox';
|
56
56
|
@import 'pb_line_graph/line_graph';
|
57
|
-
@import 'pb_link/link';
|
58
57
|
@import 'pb_list/list';
|
59
58
|
@import 'pb_loading_inline/loading_inline';
|
60
59
|
@import 'pb_map/map';
|
@@ -84,7 +83,6 @@
|
|
84
83
|
@import 'pb_selectable_card_icon/selectable_card_icon';
|
85
84
|
@import 'pb_selectable_icon/selectable_icon';
|
86
85
|
@import 'pb_selectable_list/selectable_list';
|
87
|
-
@import 'pb_skeleton_loading/skeleton_loading';
|
88
86
|
@import 'pb_source/source';
|
89
87
|
@import 'pb_star_rating/star_rating';
|
90
88
|
@import 'pb_stat_change/stat_change';
|
@@ -108,6 +106,7 @@
|
|
108
106
|
@import 'pb_user_badge/user_badge';
|
109
107
|
@import 'pb_walkthrough/walkthrough';
|
110
108
|
@import 'pb_weekday_stacked/weekday_stacked';
|
109
|
+
@import 'pb_drawer/drawer';
|
111
110
|
@import 'utilities/mixins';
|
112
111
|
@import 'utilities/spacing';
|
113
112
|
@import 'utilities/cursor';
|
@@ -16,7 +16,6 @@ interface CustomCellProps {
|
|
16
16
|
onRowToggleClick?: (arg: Row<GenericObject>) => void
|
17
17
|
row: Row<GenericObject>
|
18
18
|
value?: string
|
19
|
-
customRenderer?: (row: Row<GenericObject>, value: string | undefined) => React.ReactNode
|
20
19
|
}
|
21
20
|
|
22
21
|
export const CustomCell = ({
|
@@ -24,7 +23,6 @@ export const CustomCell = ({
|
|
24
23
|
onRowToggleClick,
|
25
24
|
row,
|
26
25
|
value,
|
27
|
-
customRenderer,
|
28
26
|
}: CustomCellProps & GlobalProps) => {
|
29
27
|
const { setExpanded, expanded, expandedControl, inlineRowLoading } = useContext(AdvancedTableContext);
|
30
28
|
|
@@ -63,12 +61,7 @@ export const CustomCell = ({
|
|
63
61
|
</button>
|
64
62
|
) : null}
|
65
63
|
<FlexItem paddingLeft={renderButton? "none" : "xs"}>
|
66
|
-
{row.depth === 0 ? (
|
67
|
-
customRenderer ? customRenderer(row, getValue()) : getValue()
|
68
|
-
) :(
|
69
|
-
customRenderer ? customRenderer(row, value) : value
|
70
|
-
)
|
71
|
-
}
|
64
|
+
{row.depth === 0 ? getValue() : value}
|
72
65
|
</FlexItem>
|
73
66
|
</Flex>
|
74
67
|
</div>
|
@@ -90,8 +90,8 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
90
90
|
|
91
91
|
const columnHelper = createColumnHelper()
|
92
92
|
|
93
|
-
//Create cells for
|
94
|
-
const createCellFunction = (cellAccessors: string[], customRenderer?: (row: Row<GenericObject>, value: any) => JSX.Element
|
93
|
+
//Create cells for first columns
|
94
|
+
const createCellFunction = (cellAccessors: string[], customRenderer?: (row: Row<GenericObject>, value: any) => JSX.Element) => {
|
95
95
|
const columnCells = ({
|
96
96
|
row,
|
97
97
|
getValue,
|
@@ -101,16 +101,19 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
101
101
|
}) => {
|
102
102
|
const rowData = row.original
|
103
103
|
|
104
|
-
if
|
104
|
+
// Use customRenderer if provided, otherwise default rendering
|
105
|
+
if (customRenderer) {
|
106
|
+
return customRenderer(row, getValue())
|
107
|
+
}
|
108
|
+
|
105
109
|
switch (row.depth) {
|
106
110
|
case 0: {
|
107
111
|
return (
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
/>
|
112
|
+
<CustomCell
|
113
|
+
getValue={getValue}
|
114
|
+
onRowToggleClick={onRowToggleClick}
|
115
|
+
row={row}
|
116
|
+
/>
|
114
117
|
)
|
115
118
|
}
|
116
119
|
default: {
|
@@ -119,7 +122,6 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
119
122
|
const accessorValue = rowData[depthAccessor]
|
120
123
|
return accessorValue ? (
|
121
124
|
<CustomCell
|
122
|
-
customRenderer={customRenderer}
|
123
125
|
onRowToggleClick={onRowToggleClick}
|
124
126
|
row={row}
|
125
127
|
value={accessorValue}
|
@@ -130,13 +132,11 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
130
132
|
}
|
131
133
|
}
|
132
134
|
}
|
133
|
-
|
134
|
-
? customRenderer(row, getValue())
|
135
|
-
: getValue()
|
136
|
-
}
|
135
|
+
|
137
136
|
return columnCells
|
138
137
|
}
|
139
|
-
|
138
|
+
|
139
|
+
//Create column array in format needed by Tanstack
|
140
140
|
const columns =
|
141
141
|
columnDefinitions &&
|
142
142
|
columnDefinitions.map((column, index) => {
|
@@ -147,12 +147,19 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
147
147
|
}),
|
148
148
|
}
|
149
149
|
|
150
|
-
if
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
150
|
+
// Use the custom renderer if provided, EXCEPT for the first column
|
151
|
+
if (index !== 0) {
|
152
|
+
if (column.cellAccessors || column.customRenderer) {
|
153
|
+
columnStructure.cell = createCellFunction(
|
154
|
+
column.cellAccessors,
|
155
|
+
column.customRenderer
|
156
|
+
)
|
157
|
+
}
|
158
|
+
} else {
|
159
|
+
// For the first column, apply createCellFunction without customRenderer
|
160
|
+
if (column.cellAccessors) {
|
161
|
+
columnStructure.cell = createCellFunction(column.cellAccessors)
|
162
|
+
}
|
156
163
|
}
|
157
164
|
|
158
165
|
return columnStructure
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import React, {useState} from "react"
|
2
2
|
import { render, screen, waitFor } from "../utilities/test-utils"
|
3
3
|
|
4
|
-
import { AdvancedTable
|
4
|
+
import { AdvancedTable } from "playbook-ui"
|
5
5
|
|
6
6
|
const MOCK_DATA = [
|
7
7
|
{
|
@@ -88,28 +88,6 @@ const columnDefinitions = [
|
|
88
88
|
},
|
89
89
|
]
|
90
90
|
|
91
|
-
const columnDefinitionsCustomRenderer = [
|
92
|
-
{
|
93
|
-
accessor: "year",
|
94
|
-
label: "Year",
|
95
|
-
cellAccessors: ["quarter", "month", "day"],
|
96
|
-
},
|
97
|
-
{
|
98
|
-
accessor: "newEnrollments",
|
99
|
-
label: "New Enrollments",
|
100
|
-
customRenderer: (row, value) => (
|
101
|
-
<Pill text={value}
|
102
|
-
variant="success"
|
103
|
-
/>
|
104
|
-
),
|
105
|
-
},
|
106
|
-
{
|
107
|
-
accessor: "scheduledMeetings",
|
108
|
-
label: "Scheduled Meetings",
|
109
|
-
},
|
110
|
-
]
|
111
|
-
|
112
|
-
|
113
91
|
const subRowHeaders = ["Quarter"]
|
114
92
|
|
115
93
|
const testId = "advanced_table"
|
@@ -485,17 +463,3 @@ test("responsive none prop functions as expected", () => {
|
|
485
463
|
const kit = screen.getByTestId(testId)
|
486
464
|
expect(kit).toHaveClass("pb_advanced_table table-responsive-none")
|
487
465
|
})
|
488
|
-
|
489
|
-
test("customRenderer prop functions as expected", () => {
|
490
|
-
render(
|
491
|
-
<AdvancedTable
|
492
|
-
columnDefinitions={columnDefinitionsCustomRenderer}
|
493
|
-
data={{ testid: testId }}
|
494
|
-
tableData={MOCK_DATA}
|
495
|
-
/>
|
496
|
-
)
|
497
|
-
|
498
|
-
const kit = screen.getByTestId(testId)
|
499
|
-
const pill = kit.querySelector(".pb_pill_kit_success_lowercase")
|
500
|
-
expect(pill).toBeInTheDocument()
|
501
|
-
})
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import React from "react"
|
2
|
-
import { AdvancedTable, Pill, Body, Flex, Detail, Caption
|
2
|
+
import { AdvancedTable, Pill, Body, Flex, Detail, Caption } from "playbook-ui"
|
3
3
|
import MOCK_DATA from "./advanced_table_mock_data.json"
|
4
4
|
|
5
5
|
const AdvancedTableCustomCell = (props) => {
|
@@ -8,18 +8,7 @@ const AdvancedTableCustomCell = (props) => {
|
|
8
8
|
accessor: "year",
|
9
9
|
label: "Year",
|
10
10
|
cellAccessors: ["quarter", "month", "day"],
|
11
|
-
|
12
|
-
<Flex>
|
13
|
-
<Title size={4}
|
14
|
-
text={value}
|
15
|
-
/>
|
16
|
-
<Badge dark
|
17
|
-
marginLeft="xxs"
|
18
|
-
text={row.original.newEnrollments > 20 ? "High" : "Low"}
|
19
|
-
variant="neutral"
|
20
|
-
/>
|
21
|
-
</Flex>
|
22
|
-
),
|
11
|
+
|
23
12
|
},
|
24
13
|
{
|
25
14
|
accessor: "newEnrollments",
|
@@ -109,9 +109,6 @@ const Card = (props: CardPropTypes): React.ReactElement => {
|
|
109
109
|
// coerce to array
|
110
110
|
const cardChildren = React.Children.toArray(children)
|
111
111
|
const dynamicInlineProps = globalInlineProps(props);
|
112
|
-
const { style: htmlStyle = {}, ...restHtmlProps } = htmlProps as { style?: React.CSSProperties };
|
113
|
-
const mergedStyles: React.CSSProperties = { ...htmlStyle, ...dynamicInlineProps };
|
114
|
-
|
115
112
|
|
116
113
|
const subComponentTags = (tagName: string) => {
|
117
114
|
return cardChildren.filter((c: string) => (
|
@@ -127,7 +124,7 @@ const Card = (props: CardPropTypes): React.ReactElement => {
|
|
127
124
|
|
128
125
|
const tagOptions = ['div', 'section', 'footer', 'header', 'article', 'aside', 'main', 'nav']
|
129
126
|
const Tag = tagOptions.includes(tag) ? tag : 'div'
|
130
|
-
|
127
|
+
|
131
128
|
return (
|
132
129
|
<>
|
133
130
|
{
|
@@ -138,9 +135,9 @@ const Card = (props: CardPropTypes): React.ReactElement => {
|
|
138
135
|
<Tag
|
139
136
|
{...ariaProps}
|
140
137
|
{...dataProps}
|
138
|
+
{...htmlProps}
|
141
139
|
className={classnames(cardCss, globalProps(props), className)}
|
142
|
-
{
|
143
|
-
style={mergedStyles}
|
140
|
+
style={dynamicInlineProps}
|
144
141
|
>
|
145
142
|
{subComponentTags('Header')}
|
146
143
|
{
|
@@ -167,9 +164,9 @@ const Card = (props: CardPropTypes): React.ReactElement => {
|
|
167
164
|
<Tag
|
168
165
|
{...ariaProps}
|
169
166
|
{...dataProps}
|
167
|
+
{...htmlProps}
|
170
168
|
className={classnames(cardCss, globalProps(props), className)}
|
171
|
-
{
|
172
|
-
style={mergedStyles}
|
169
|
+
style={dynamicInlineProps}
|
173
170
|
>
|
174
171
|
{subComponentTags('Header')}
|
175
172
|
{nonHeaderChildren}
|
@@ -28,7 +28,8 @@ $pb_card_header_colors: map-merge(map-merge($product_colors, $additional_colors)
|
|
28
28
|
|
29
29
|
@mixin pb_card_selected($border_color: $primary) {
|
30
30
|
border-color: $border_color;
|
31
|
-
border-width: $pb_card_border_width
|
31
|
+
border-width: $pb_card_border_width;
|
32
|
+
outline: 1px solid $border_color;
|
32
33
|
}
|
33
34
|
|
34
35
|
@mixin pb_card_selected_dark {
|
@@ -1 +1 @@
|
|
1
|
-
Card can leverage the max-width property. Learn more in our <a href="https://playbook.powerapp.cloud/visual_guidelines" target="_blank">visual guidelines.</a>
|
1
|
+
Card can leverage the max-width property. Learn more in our <a href="https://playbook.powerapp.cloud/visual_guidelines" target="_blank">visual guidelines.</a>
|
@@ -26,7 +26,6 @@ type CurrencyProps = {
|
|
26
26
|
variant?: 'default' | 'light' | 'bold',
|
27
27
|
unit?: string,
|
28
28
|
unstyled?: boolean,
|
29
|
-
commaSeparator?: boolean,
|
30
29
|
}
|
31
30
|
|
32
31
|
const sizes: {lg: 1, md: 3, sm: 4} = {
|
@@ -54,7 +53,6 @@ const Currency = (props: CurrencyProps): React.ReactElement => {
|
|
54
53
|
variant = 'default',
|
55
54
|
dark = false,
|
56
55
|
unstyled = false,
|
57
|
-
commaSeparator = false,
|
58
56
|
} = props
|
59
57
|
|
60
58
|
const emphasizedClass = emphasized ? '' : '_deemphasized'
|
@@ -76,7 +74,7 @@ const Currency = (props: CurrencyProps): React.ReactElement => {
|
|
76
74
|
className
|
77
75
|
)
|
78
76
|
|
79
|
-
const getFormattedNumber = (input: number | any) => new Intl.NumberFormat('en-US', {
|
77
|
+
const getFormattedNumber = (input: number | any ) => new Intl.NumberFormat('en-US', {
|
80
78
|
notation: 'compact',
|
81
79
|
maximumFractionDigits: 1,
|
82
80
|
}).format(input)
|
@@ -90,20 +88,12 @@ const Currency = (props: CurrencyProps): React.ReactElement => {
|
|
90
88
|
return isAmount ? num.slice(0, -1) : isUnit ? num.slice(-1) : ''
|
91
89
|
}
|
92
90
|
|
93
|
-
const getMatchingDecimalAmount = decimals === "matching" ? amount : whole
|
94
|
-
|
91
|
+
const getMatchingDecimalAmount = decimals === "matching" ? amount : whole,
|
92
|
+
getMatchingDecimalValue = decimals === "matching" ? '' : `.${decimal}`
|
95
93
|
|
96
|
-
const
|
97
|
-
|
98
|
-
|
99
|
-
const [wholePart, decimalPart] = amount.split('.');
|
100
|
-
const formattedWhole = new Intl.NumberFormat('en-US').format(parseInt(wholePart));
|
101
|
-
return decimalPart ? `${formattedWhole}.${decimalPart}` : formattedWhole;
|
102
|
-
}
|
103
|
-
|
104
|
-
const getAmount = abbreviate ? getAbbreviatedValue('amount') : formatAmount(getMatchingDecimalAmount)
|
105
|
-
const getAbbreviation = abbreviate ? getAbbreviatedValue('unit') : null
|
106
|
-
const getDecimalValue = abbreviate ? '' : getMatchingDecimalValue
|
94
|
+
const getAmount = abbreviate ? getAbbreviatedValue('amount') : getMatchingDecimalAmount,
|
95
|
+
getAbbreviation = abbreviate ? getAbbreviatedValue('unit') : null,
|
96
|
+
getDecimalValue = abbreviate ? '' : getMatchingDecimalValue
|
107
97
|
|
108
98
|
return (
|
109
99
|
<div
|
@@ -43,9 +43,6 @@ module Playbook
|
|
43
43
|
prop :unstyled, type: Playbook::Props::Boolean,
|
44
44
|
default: false
|
45
45
|
|
46
|
-
prop :comma_separator, type: Playbook::Props::Boolean,
|
47
|
-
default: false
|
48
|
-
|
49
46
|
def classname
|
50
47
|
generate_classname("pb_currency_kit", align, size, dark_class)
|
51
48
|
end
|
@@ -68,7 +65,7 @@ module Playbook
|
|
68
65
|
def title_props
|
69
66
|
{
|
70
67
|
size: size_value,
|
71
|
-
text: abbreviate ? abbreviated_value :
|
68
|
+
text: abbreviate ? abbreviated_value : whole_value,
|
72
69
|
classname: "pb_currency_value",
|
73
70
|
dark: dark,
|
74
71
|
}
|
@@ -99,38 +96,28 @@ module Playbook
|
|
99
96
|
private
|
100
97
|
|
101
98
|
def whole_value
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
else
|
106
|
-
value
|
107
|
-
end
|
99
|
+
return amount if decimals == "matching"
|
100
|
+
|
101
|
+
amount.split(".").first.to_s
|
108
102
|
end
|
109
103
|
|
110
|
-
def
|
111
|
-
amount.split(".")
|
104
|
+
def abbreviated_value(index = 0..-2)
|
105
|
+
value = amount.split(".").first.split(",").join("")
|
106
|
+
abbreviated_num = number_to_human(value, units: { thousand: "K", million: "M", billion: "B", trillion: "T" }).gsub(/\s+/, "").to_s
|
107
|
+
abbreviated_num[index]
|
112
108
|
end
|
113
109
|
|
114
110
|
def units_element
|
115
111
|
return "" if decimals == "matching" && !abbreviate && !unit
|
116
112
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
else
|
121
|
-
".#{decimal_value}"
|
122
|
-
end
|
113
|
+
_, decimal_part = amount.split(".")
|
114
|
+
if unit.nil? && abbreviate == false
|
115
|
+
decimal_part.nil? ? ".00" : ".#{decimal_part}"
|
123
116
|
else
|
124
117
|
abbreviate ? "#{abbreviated_value(-1)}#{unit}" : unit
|
125
118
|
end
|
126
119
|
end
|
127
120
|
|
128
|
-
def abbreviated_value(index = 0..-2)
|
129
|
-
value = amount.split(".").first.gsub(",", "").to_i
|
130
|
-
abbreviated_num = number_to_human(value, units: { thousand: "K", million: "M", billion: "B", trillion: "T" }).gsub(/\s+/, "")
|
131
|
-
abbreviated_num[index]
|
132
|
-
end
|
133
|
-
|
134
121
|
def size_value
|
135
122
|
case size
|
136
123
|
when "lg"
|
@@ -145,20 +132,6 @@ module Playbook
|
|
145
132
|
def dark_class
|
146
133
|
dark ? "dark" : nil
|
147
134
|
end
|
148
|
-
|
149
|
-
def formatted_amount
|
150
|
-
return abbreviated_value if abbreviate
|
151
|
-
|
152
|
-
if decimals == "matching"
|
153
|
-
if comma_separator
|
154
|
-
number_with_delimiter(amount.gsub(",", ""))
|
155
|
-
else
|
156
|
-
amount
|
157
|
-
end
|
158
|
-
else
|
159
|
-
whole_value
|
160
|
-
end
|
161
|
-
end
|
162
135
|
end
|
163
136
|
end
|
164
137
|
end
|
@@ -61,38 +61,3 @@ test('decimals default prop returns decimals as body text', () => {
|
|
61
61
|
expect(currencyKit.querySelector('.pb_currency_value')).toHaveTextContent('320')
|
62
62
|
expect(currencyKit.querySelector('.unit')).toHaveTextContent('.20')
|
63
63
|
})
|
64
|
-
|
65
|
-
|
66
|
-
test('commaSeparator prop returns comma separated amount', () => {
|
67
|
-
render(
|
68
|
-
<Currency
|
69
|
-
amount="1234567890"
|
70
|
-
commaSeparator
|
71
|
-
data={{ testid: 'comma-test' }}
|
72
|
-
/>
|
73
|
-
)
|
74
|
-
expect(screen.getByTestId('comma-test')).toHaveTextContent('1,234,567,890')
|
75
|
-
})
|
76
|
-
|
77
|
-
test('commaSeparator prop returns comma separated amount with decimals', () => {
|
78
|
-
render(
|
79
|
-
<Currency
|
80
|
-
amount="1234567890.12"
|
81
|
-
commaSeparator
|
82
|
-
data={{ testid: 'comma-test-decimals' }}
|
83
|
-
/>
|
84
|
-
)
|
85
|
-
expect(screen.getByTestId('comma-test-decimals')).toHaveTextContent('1,234,567,890.12')
|
86
|
-
})
|
87
|
-
|
88
|
-
test('commaSeparator prop returns comma separated amount with decimals="matching"', () => {
|
89
|
-
render(
|
90
|
-
<Currency
|
91
|
-
amount="1234567890.12"
|
92
|
-
commaSeparator
|
93
|
-
data={{ testid: 'comma-test-decimals-matching' }}
|
94
|
-
decimals="matching"
|
95
|
-
/>
|
96
|
-
)
|
97
|
-
expect(screen.getByTestId('comma-test-decimals-matching')).toHaveTextContent('1,234,567,890.12')
|
98
|
-
})
|
@@ -8,8 +8,7 @@ examples:
|
|
8
8
|
- currency_abbreviated: Abbreviate Larger Amounts
|
9
9
|
- currency_matching_decimals: Matching Decimals
|
10
10
|
- currency_unstyled: Unstyled
|
11
|
-
|
12
|
-
|
11
|
+
|
13
12
|
react:
|
14
13
|
- currency_variants: Variants
|
15
14
|
- currency_size: Size
|
@@ -18,7 +17,6 @@ examples:
|
|
18
17
|
- currency_abbreviated: Abbreviate Larger Amounts
|
19
18
|
- currency_matching_decimals: Matching Decimals
|
20
19
|
- currency_unstyled: Unstyled
|
21
|
-
- currency_comma_separator: Comma Separator
|
22
20
|
|
23
21
|
swift:
|
24
22
|
- currency_size_swift: Size
|
@@ -5,4 +5,3 @@ export { default as CurrencyNoSymbol } from './_currency_no_symbol.jsx'
|
|
5
5
|
export { default as CurrencyAbbreviated } from './_currency_abbreviated.jsx'
|
6
6
|
export { default as CurrencyMatchingDecimals } from './_currency_matching_decimals.jsx'
|
7
7
|
export { default as CurrencyUnstyled } from './_currency_unstyled.jsx'
|
8
|
-
export { default as CurrencyCommaSeparator } from './_currency_comma_separator.jsx'
|
@@ -8,10 +8,4 @@ examples:
|
|
8
8
|
- draggable_with_cards: Draggable with Cards
|
9
9
|
- draggable_multiple_containers: Dragging Across Multiple Containers
|
10
10
|
|
11
|
-
rails:
|
12
|
-
- draggable_default_rails: Default
|
13
|
-
- draggable_with_list_rails: Draggable with List Kit
|
14
|
-
- draggable_with_cards_rails: Draggable with Cards
|
15
|
-
|
16
|
-
|
17
11
|
|
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
@import "./scss_partials/dropdown_animation";
|
11
11
|
|
12
|
-
|
12
|
+
.pb_dropdown {
|
13
13
|
.dropdown_wrapper {
|
14
14
|
[class*="dropdown_trigger_wrapper"] {
|
15
15
|
@include pb_body;
|
@@ -131,7 +131,7 @@
|
|
131
131
|
}
|
132
132
|
}
|
133
133
|
|
134
|
-
|
134
|
+
&.separators_hidden {
|
135
135
|
.dropdown_wrapper {
|
136
136
|
.pb_dropdown_container {
|
137
137
|
|
@@ -142,7 +142,7 @@
|
|
142
142
|
}
|
143
143
|
}
|
144
144
|
|
145
|
-
|
145
|
+
&.subtle {
|
146
146
|
.dropdown_wrapper {
|
147
147
|
.pb_dropdown_container {
|
148
148
|
|
@@ -178,7 +178,7 @@
|
|
178
178
|
}
|
179
179
|
}
|
180
180
|
|
181
|
-
|
181
|
+
&.separators_hidden {
|
182
182
|
.dropdown_wrapper {
|
183
183
|
.pb_dropdown_container {
|
184
184
|
[class*="pb_dropdown_option"]:first-child {
|
@@ -47,7 +47,7 @@ interface DropdownComponent
|
|
47
47
|
Container: typeof DropdownContainer;
|
48
48
|
}
|
49
49
|
|
50
|
-
|
50
|
+
const Dropdown = forwardRef((props: DropdownProps, ref: any) => {
|
51
51
|
const {
|
52
52
|
aria = {},
|
53
53
|
autocomplete = false,
|
@@ -74,8 +74,10 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
74
74
|
const htmlProps = buildHtmlProps(htmlOptions);
|
75
75
|
const separatorsClass = separators ? '' : 'separators_hidden'
|
76
76
|
const classes = classnames(
|
77
|
-
buildCss("pb_dropdown"
|
77
|
+
buildCss("pb_dropdown"),
|
78
78
|
globalProps(props),
|
79
|
+
variant,
|
80
|
+
separatorsClass,
|
79
81
|
className
|
80
82
|
);
|
81
83
|
|
@@ -260,7 +262,7 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
260
262
|
<DropdownContainer>
|
261
263
|
{optionsWithBlankSelection &&
|
262
264
|
optionsWithBlankSelection?.map((option: GenericObject) => (
|
263
|
-
<
|
265
|
+
<Dropdown.Option key={option.id}
|
264
266
|
option={option}
|
265
267
|
/>
|
266
268
|
))}
|
@@ -278,12 +280,11 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
278
280
|
</DropdownContext.Provider>
|
279
281
|
</div>
|
280
282
|
)
|
281
|
-
}
|
283
|
+
}) as DropdownComponent
|
282
284
|
|
283
|
-
Dropdown =
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
(Dropdown as DropdownComponent).Container = DropdownContainer;
|
285
|
+
Dropdown.displayName = "Dropdown";
|
286
|
+
Dropdown.Option = DropdownOption;
|
287
|
+
Dropdown.Trigger = DropdownTrigger;
|
288
|
+
Dropdown.Container = DropdownContainer;
|
288
289
|
|
289
290
|
export default Dropdown;
|
@@ -24,7 +24,7 @@ module Playbook
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def classname
|
27
|
-
generate_classname("pb_dropdown", variant, separators_class)
|
27
|
+
generate_classname("pb_dropdown", variant, separators_class, separator: " ")
|
28
28
|
end
|
29
29
|
|
30
30
|
private
|
@@ -38,7 +38,7 @@ module Playbook
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def separators_class
|
41
|
-
separators ?
|
41
|
+
separators ? "" : "separators_hidden"
|
42
42
|
end
|
43
43
|
|
44
44
|
def options_with_blank
|
@@ -50,7 +50,7 @@ test('generated default kit and classname', () => {
|
|
50
50
|
|
51
51
|
const kit = screen.getByTestId(testId)
|
52
52
|
expect(kit).toBeInTheDocument()
|
53
|
-
expect(kit).toHaveClass('
|
53
|
+
expect(kit).toHaveClass('pb_dropdown')
|
54
54
|
})
|
55
55
|
|
56
56
|
test('generated default Trigger and Container when none passed in', () => {
|
@@ -142,9 +142,7 @@ $form_pill_colors: map-merge($status_color_text, map-merge($data_colors, $produc
|
|
142
142
|
height: 12px !important;
|
143
143
|
width: 12px !important;
|
144
144
|
padding-right: $space_xs;
|
145
|
-
+ .pb_form_pill_text, + .pb_form_pill_tag
|
146
|
-
+ .pb_tooltip_kit .pb_form_pill_text, + .pb_tooltip_kit .pb_form_pill_tag,
|
147
|
-
+ div .pb_form_pill_text, + div .pb_form_pill_tag {
|
145
|
+
+ .pb_form_pill_text, + .pb_form_pill_tag {
|
148
146
|
padding-left: 0;
|
149
147
|
}
|
150
148
|
}
|
@@ -171,9 +169,7 @@ $form_pill_colors: map-merge($status_color_text, map-merge($data_colors, $produc
|
|
171
169
|
}
|
172
170
|
.pb_form_pill_icon {
|
173
171
|
padding-right: $space_xxs;
|
174
|
-
+ .pb_form_pill_text, + .pb_form_pill_tag
|
175
|
-
+ .pb_tooltip_kit .pb_form_pill_text, + .pb_tooltip_kit .pb_form_pill_tag,
|
176
|
-
+ div .pb_form_pill_text, + div .pb_form_pill_tag {
|
172
|
+
+ .pb_form_pill_text, + .pb_form_pill_tag {
|
177
173
|
padding-left: 0;
|
178
174
|
}
|
179
175
|
}
|