playbook_ui 14.6.0.pre.alpha.dropdownclassfix4224 → 14.6.0.pre.alpha.play1586datearea4218
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_card/_card.tsx +5 -1
- data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +5 -1
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +4 -4
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +3 -1
- data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +2 -2
- data/app/pb_kits/playbook/pb_flex/_flex.tsx +3 -1
- data/app/pb_kits/playbook/pb_flex/_flex_item.tsx +8 -2
- data/app/pb_kits/playbook/pb_flex/flex_item.html.erb +3 -6
- data/app/pb_kits/playbook/pb_flex/flex_item.rb +7 -2
- data/app/pb_kits/playbook/pb_popover/_popover.tsx +1 -1
- data/app/pb_kits/playbook/pb_timeline/_item.tsx +59 -23
- data/app/pb_kits/playbook/pb_timeline/_timeline.tsx +8 -0
- data/app/pb_kits/playbook/pb_timeline/date_area.html.erb +12 -0
- data/app/pb_kits/playbook/pb_timeline/date_area.rb +13 -0
- data/app/pb_kits/playbook/pb_timeline/detail_area.html.erb +3 -0
- data/app/pb_kits/playbook/pb_timeline/detail_area.rb +11 -0
- data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.html.erb +43 -0
- data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.jsx +68 -0
- data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.md +4 -0
- data/app/pb_kits/playbook/pb_timeline/docs/example.yml +2 -1
- data/app/pb_kits/playbook/pb_timeline/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_timeline/item.html.erb +17 -21
- data/app/pb_kits/playbook/pb_timeline/item.rb +4 -0
- data/app/pb_kits/playbook/pb_timeline/node_area.html.erb +14 -0
- data/app/pb_kits/playbook/pb_timeline/node_area.rb +16 -0
- data/app/pb_kits/playbook/pb_timeline/subcomponents/Detail.tsx +29 -0
- data/app/pb_kits/playbook/pb_timeline/subcomponents/Label.tsx +38 -0
- data/app/pb_kits/playbook/pb_timeline/subcomponents/Step.tsx +42 -0
- data/app/pb_kits/playbook/pb_timeline/subcomponents/index.tsx +3 -0
- data/app/pb_kits/playbook/pb_timeline/timeline.test.js +84 -0
- data/app/pb_kits/playbook/utilities/globalPropNames.mjs +3 -0
- data/app/pb_kits/playbook/utilities/globalProps.ts +39 -2
- data/dist/chunks/_typeahead-BhHnXJjy.js +22 -0
- data/dist/chunks/{_weekday_stacked-Dh3OU4s8.js → _weekday_stacked-C-VEa5Ar.js} +2 -2
- 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/kit_base.rb +21 -1
- data/lib/playbook/version.rb +1 -1
- metadata +17 -4
- data/dist/chunks/_typeahead-BV_n6U5W.js +0 -22
@@ -0,0 +1,29 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import classnames from 'classnames'
|
3
|
+
import { buildHtmlProps } from '../../utilities/props'
|
4
|
+
import { globalProps, GlobalProps } from "../../utilities/globalProps"
|
5
|
+
|
6
|
+
type TimelineDetailProps = {
|
7
|
+
children?: React.ReactNode,
|
8
|
+
className?: string,
|
9
|
+
htmlOptions?: { [key: string]: any },
|
10
|
+
} & GlobalProps
|
11
|
+
|
12
|
+
const TimelineDetail: React.FC<TimelineDetailProps> = ({
|
13
|
+
children,
|
14
|
+
className,
|
15
|
+
htmlOptions = {},
|
16
|
+
...props
|
17
|
+
}) => {
|
18
|
+
const htmlProps = buildHtmlProps(htmlOptions)
|
19
|
+
return (
|
20
|
+
<div
|
21
|
+
{...htmlProps}
|
22
|
+
className={classnames('pb_timeline_item_right_block', globalProps(props), className)}
|
23
|
+
>
|
24
|
+
{children}
|
25
|
+
</div>
|
26
|
+
)
|
27
|
+
}
|
28
|
+
|
29
|
+
export default TimelineDetail
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import classnames from 'classnames'
|
3
|
+
import { buildHtmlProps } from '../../utilities/props'
|
4
|
+
import { globalProps, GlobalProps } from "../../utilities/globalProps"
|
5
|
+
import DateStacked from '../../pb_date_stacked/_date_stacked'
|
6
|
+
|
7
|
+
type TimelineLabelProps = {
|
8
|
+
date?: Date,
|
9
|
+
children?: React.ReactNode,
|
10
|
+
className?: string,
|
11
|
+
htmlOptions?: { [key: string]: any },
|
12
|
+
} & GlobalProps
|
13
|
+
|
14
|
+
const TimelineLabel: React.FC<TimelineLabelProps> = ({
|
15
|
+
date,
|
16
|
+
children,
|
17
|
+
className,
|
18
|
+
htmlOptions = {},
|
19
|
+
...props
|
20
|
+
}) => {
|
21
|
+
const htmlProps = buildHtmlProps(htmlOptions)
|
22
|
+
return (
|
23
|
+
<div
|
24
|
+
{...htmlProps}
|
25
|
+
className={classnames('pb_timeline_item_left_block', globalProps(props), className)}
|
26
|
+
>
|
27
|
+
{children}
|
28
|
+
{date && (
|
29
|
+
<DateStacked align="center"
|
30
|
+
date={date}
|
31
|
+
size="sm"
|
32
|
+
/>
|
33
|
+
)}
|
34
|
+
</div>
|
35
|
+
)
|
36
|
+
}
|
37
|
+
|
38
|
+
export default TimelineLabel
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import classnames from 'classnames'
|
3
|
+
import { buildHtmlProps } from '../../utilities/props'
|
4
|
+
import { globalProps, GlobalProps } from "../../utilities/globalProps"
|
5
|
+
import IconCircle from '../../pb_icon_circle/_icon_circle'
|
6
|
+
|
7
|
+
type TimelineStepProps = {
|
8
|
+
icon?: string,
|
9
|
+
iconColor?: 'default' | 'royal' | 'blue' | 'purple' | 'teal' | 'red' | 'yellow' | 'green',
|
10
|
+
children?: React.ReactNode,
|
11
|
+
className?: string,
|
12
|
+
htmlOptions?: { [key: string]: any },
|
13
|
+
} & GlobalProps
|
14
|
+
|
15
|
+
const TimelineStep: React.FC<TimelineStepProps> = ({
|
16
|
+
icon = 'user',
|
17
|
+
iconColor = 'default',
|
18
|
+
children,
|
19
|
+
className,
|
20
|
+
htmlOptions = {},
|
21
|
+
...props
|
22
|
+
}) => {
|
23
|
+
const htmlProps = buildHtmlProps(htmlOptions)
|
24
|
+
return (
|
25
|
+
<div
|
26
|
+
{...htmlProps}
|
27
|
+
className={classnames('pb_timeline_item_step', globalProps(props), className)}
|
28
|
+
>
|
29
|
+
{children ? (
|
30
|
+
children
|
31
|
+
) : (
|
32
|
+
<IconCircle icon={icon}
|
33
|
+
size="xs"
|
34
|
+
variant={iconColor}
|
35
|
+
/>
|
36
|
+
)}
|
37
|
+
<div className="pb_timeline_item_connector" />
|
38
|
+
</div>
|
39
|
+
)
|
40
|
+
}
|
41
|
+
|
42
|
+
export default TimelineStep
|
@@ -2,6 +2,10 @@ import React from 'react'
|
|
2
2
|
import { render, screen } from '../utilities/test-utils'
|
3
3
|
|
4
4
|
import Timeline from './_timeline'
|
5
|
+
import TimelineItem from './_item'
|
6
|
+
import TimelineLabel from './subcomponents/Label'
|
7
|
+
import TimelineStep from './subcoponents/Step'
|
8
|
+
import TimelineDetail from './subcomponents/Detail'
|
5
9
|
import TitleDetail from '../pb_title_detail/_title_detail'
|
6
10
|
|
7
11
|
const testId = 'timeline'
|
@@ -43,18 +47,91 @@ const TimelineDefault = (props) => (
|
|
43
47
|
</>
|
44
48
|
)
|
45
49
|
|
50
|
+
const TimelineWithChildren = (props) => (
|
51
|
+
<>
|
52
|
+
<Timeline
|
53
|
+
className={className}
|
54
|
+
data={{ testid: testId }}
|
55
|
+
orientation="horizontal"
|
56
|
+
showDate
|
57
|
+
{...props}
|
58
|
+
>
|
59
|
+
<TimelineItem lineStyle="solid"
|
60
|
+
{...props}
|
61
|
+
>
|
62
|
+
<TimelineLabel date={new Date()} />
|
63
|
+
<TimelineStep icon="user"
|
64
|
+
iconColor="royal"
|
65
|
+
/>
|
66
|
+
<TimelineDetail>
|
67
|
+
<TitleDetail
|
68
|
+
detail="37-27 74th Street"
|
69
|
+
title="Jackson Heights"
|
70
|
+
{...props}
|
71
|
+
/>
|
72
|
+
</TimelineDetail>
|
73
|
+
</TimelineItem>
|
74
|
+
|
75
|
+
<TimelineItem lineStyle="dotted"
|
76
|
+
{...props}
|
77
|
+
>
|
78
|
+
<TimelineStep icon="check"
|
79
|
+
iconColor="teal"
|
80
|
+
/>
|
81
|
+
<TimelineDetail>
|
82
|
+
<TitleDetail
|
83
|
+
detail="81 Gate St Brooklyn"
|
84
|
+
title="Greenpoint"
|
85
|
+
{...props}
|
86
|
+
/>
|
87
|
+
</TimelineDetail>
|
88
|
+
</TimelineItem>
|
89
|
+
|
90
|
+
<TimelineItem lineStyle="solid"
|
91
|
+
{...props}
|
92
|
+
>
|
93
|
+
<TimelineLabel
|
94
|
+
date={new Date(new Date().setDate(new Date().getDate() + 1))}
|
95
|
+
/>
|
96
|
+
<TimelineStep icon="map-marker-alt"
|
97
|
+
iconColor="purple"
|
98
|
+
/>
|
99
|
+
<TimelineDetail>
|
100
|
+
<TitleDetail
|
101
|
+
detail="72 E St Astoria"
|
102
|
+
title="Society Hill"
|
103
|
+
{...props}
|
104
|
+
/>
|
105
|
+
</TimelineDetail>
|
106
|
+
</TimelineItem>
|
107
|
+
</Timeline>
|
108
|
+
</>
|
109
|
+
)
|
110
|
+
|
46
111
|
test('should pass data prop', () => {
|
47
112
|
render(<TimelineDefault />)
|
48
113
|
const kit = screen.getByTestId(testId)
|
49
114
|
expect(kit).toBeInTheDocument()
|
50
115
|
})
|
51
116
|
|
117
|
+
test('should pass data prop using children', () => {
|
118
|
+
render(<TimelineWithChildren />)
|
119
|
+
const kit = screen.getByTestId(testId)
|
120
|
+
expect(kit).toBeInTheDocument()
|
121
|
+
})
|
122
|
+
|
52
123
|
test('should pass className prop', () => {
|
53
124
|
render(<TimelineDefault />)
|
54
125
|
const kit = screen.getByTestId(testId)
|
55
126
|
expect(kit).toHaveClass(className)
|
56
127
|
})
|
57
128
|
|
129
|
+
test('should pass className prop with children', () => {
|
130
|
+
render(<TimelineWithChildren />)
|
131
|
+
const kit = screen.getByTestId(testId)
|
132
|
+
expect(kit).toHaveClass(className)
|
133
|
+
})
|
134
|
+
|
58
135
|
test('should pass aria prop', () => {
|
59
136
|
render(<TimelineDefault />)
|
60
137
|
const kit = screen.getByTestId(testId)
|
@@ -86,3 +163,10 @@ test('should pass showDate prop', () => {
|
|
86
163
|
const kit = screen.getByTestId(testId)
|
87
164
|
expect(kit).toHaveClass('pb_timeline_kit__horizontal__with_date')
|
88
165
|
})
|
166
|
+
|
167
|
+
test('should pass showDate prop with Children', () => {
|
168
|
+
const props = { showDate: true }
|
169
|
+
render(<TimelineWithChildren {...props} />)
|
170
|
+
const kit = screen.getByTestId(testId)
|
171
|
+
expect(kit).toHaveClass('pb_timeline_kit__horizontal__with_date')
|
172
|
+
})
|
@@ -170,12 +170,24 @@ type ZIndex = {
|
|
170
170
|
zIndex?: ZIndexType,
|
171
171
|
} | ZIndexResponsiveType
|
172
172
|
|
173
|
+
type Height = {
|
174
|
+
height?: string
|
175
|
+
}
|
176
|
+
|
177
|
+
type MaxHeight = {
|
178
|
+
maxHeight?: string
|
179
|
+
}
|
180
|
+
|
181
|
+
type MinHeight = {
|
182
|
+
minHeight?: string
|
183
|
+
}
|
184
|
+
|
173
185
|
// keep this as the last type definition
|
174
186
|
export type GlobalProps = AlignContent & AlignItems & AlignSelf &
|
175
187
|
BorderRadius & Cursor & Dark & Display & DisplaySizes & Flex & FlexDirection &
|
176
188
|
FlexGrow & FlexShrink & FlexWrap & JustifyContent & JustifySelf &
|
177
189
|
LineHeight & Margin & MinWidth & MaxWidth & NumberSpacing & Order & Overflow & Padding &
|
178
|
-
Position & Shadow & TextAlign & Truncate & VerticalAlign & ZIndex & { hover?: string } & Top & Right & Bottom & Left;
|
190
|
+
Position & Shadow & TextAlign & Truncate & VerticalAlign & ZIndex & { hover?: string } & Top & Right & Bottom & Left & Height & MaxHeight & MinHeight;
|
179
191
|
|
180
192
|
const getResponsivePropClasses = (prop: {[key: string]: string}, classPrefix: string) => {
|
181
193
|
const keys: string[] = Object.keys(prop)
|
@@ -498,7 +510,22 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
|
|
498
510
|
} else {
|
499
511
|
return verticalAlign ? `vertical_align_${verticalAlign} ` : ''
|
500
512
|
}
|
501
|
-
}
|
513
|
+
},
|
514
|
+
|
515
|
+
}
|
516
|
+
|
517
|
+
const PROP_INLINE_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => {[key: string]: any}} = {
|
518
|
+
heightProps: ({ height }: Height) => {
|
519
|
+
return height ? { height } : {};
|
520
|
+
},
|
521
|
+
|
522
|
+
maxHeightProps: ({ maxHeight }: MaxHeight) => {
|
523
|
+
return maxHeight ? { maxHeight } : {};
|
524
|
+
},
|
525
|
+
|
526
|
+
minHeightProps: ({ minHeight }: MinHeight) => {
|
527
|
+
return minHeight ? { minHeight } : {};
|
528
|
+
},
|
502
529
|
}
|
503
530
|
|
504
531
|
type DefaultProps = {[key: string]: string} | Record<string, unknown>
|
@@ -510,6 +537,16 @@ export const globalProps = (props: GlobalProps, defaultProps: DefaultProps = {})
|
|
510
537
|
}).filter((value) => value?.length > 0).join(" ")
|
511
538
|
}
|
512
539
|
|
540
|
+
// New function for inline styles
|
541
|
+
export const globalInlineProps = (props: GlobalProps): React.CSSProperties => {
|
542
|
+
const styles = Object.keys(PROP_INLINE_CATEGORIES).reduce((acc, key) => {
|
543
|
+
const result = PROP_INLINE_CATEGORIES[key](props);
|
544
|
+
return { ...acc, ...(typeof result === 'object' ? result : {}) }; // Ensure result is an object before spreading
|
545
|
+
}, {});
|
546
|
+
|
547
|
+
return styles; // Return the styles object directly
|
548
|
+
}
|
549
|
+
|
513
550
|
|
514
551
|
export const deprecatedProps = (): void => {
|
515
552
|
// if (process.env.NODE_ENV === 'development') {
|