playbook_ui 14.10.0.pre.alpha.PLAY1774timelinelabelstepspacing5274 → 14.10.0.pre.alpha.PLAY1774timelinelabelstepspacing5314

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +1 -0
  3. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta_subrow_headers.html.erb +1 -1
  4. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta_subrow_headers.md +1 -1
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +1 -1
  6. data/app/pb_kits/playbook/pb_advanced_table/index.js +53 -8
  7. data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +23 -18
  8. data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +6 -0
  9. data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.html.erb +2 -2
  10. data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.rb +6 -4
  11. data/app/pb_kits/playbook/pb_file_upload/_file_upload.tsx +24 -15
  12. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_accept.jsx +3 -1
  13. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_custom_description.jsx +4 -1
  14. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_max_size.jsx +1 -1
  15. data/app/pb_kits/playbook/pb_table/_table.tsx +8 -1
  16. data/app/pb_kits/playbook/pb_table/docs/example.yml +2 -0
  17. data/app/pb_kits/playbook/pb_table/docs/index.js +2 -0
  18. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_mask.jsx +18 -0
  19. data/app/pb_kits/playbook/pb_text_input/inputMask.ts +22 -1
  20. data/app/pb_kits/playbook/pb_text_input/text_input.test.js +80 -0
  21. data/app/pb_kits/playbook/pb_timeline/_timeline.scss +14 -13
  22. data/app/pb_kits/playbook/pb_timeline/_timeline.tsx +5 -5
  23. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_gap.html.erb +4 -5
  24. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_gap.jsx +4 -4
  25. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_gap.md +1 -1
  26. data/app/pb_kits/playbook/pb_timeline/timeline.rb +6 -6
  27. data/app/pb_kits/playbook/utilities/_gap.scss +29 -0
  28. data/app/pb_kits/playbook/utilities/globalPropNames.mjs +1 -0
  29. data/app/pb_kits/playbook/utilities/globalProps.ts +18 -9
  30. data/dist/chunks/_typeahead-C2iCBqxQ.js +36 -0
  31. data/dist/chunks/_weekday_stacked-CWnbnW7m.js +45 -0
  32. data/dist/chunks/lazysizes-B7xYodB-.js +1 -0
  33. data/dist/chunks/vendor.js +1 -1
  34. data/dist/playbook-doc.js +1 -1
  35. data/dist/playbook-rails-react-bindings.js +1 -1
  36. data/dist/playbook-rails.js +1 -1
  37. data/dist/playbook.css +1 -1
  38. data/lib/playbook/classnames.rb +1 -0
  39. data/lib/playbook/spacing.rb +21 -0
  40. data/lib/playbook/version.rb +1 -1
  41. metadata +6 -5
  42. data/dist/chunks/_typeahead-gJLWiR0r.js +0 -22
  43. data/dist/chunks/_weekday_stacked-BT8jIMPK.js +0 -45
  44. data/dist/chunks/lazysizes-DHz07jlL.js +0 -1
@@ -68,10 +68,11 @@ $gap_lg: $height_from_top + $space_lg;
68
68
  flex-basis: 100%;
69
69
  [class=pb_timeline_item_step] {
70
70
  @include flex_wrapper(row);
71
+ align-items: center;
71
72
  margin-top: $space_xs;
72
73
  margin-bottom: $space_xs;
73
74
  [class=pb_timeline_item_connector] {
74
- @include pb_timeline_line_solid($connector_width, $connector_width, $height_from_top $icon_margin 0 $icon_margin );
75
+ @include pb_timeline_line_solid($connector_width, $connector_width, 0 $icon_margin 0 $icon_margin );
75
76
  }
76
77
  }
77
78
  }
@@ -79,18 +80,14 @@ $gap_lg: $height_from_top + $space_lg;
79
80
  flex-basis: 100%;
80
81
  [class=pb_timeline_item_step] {
81
82
  @include flex_wrapper(row);
83
+ align-items: center;
82
84
  margin-top: $space_xs;
83
85
  margin-bottom: $space_xs;
84
86
  [class=pb_timeline_item_connector] {
85
- @include pb_timeline_line_dotted_horizontal($connector_width, $connector_width, $height_from_top $icon_margin 0 $icon_margin );
87
+ @include pb_timeline_line_dotted_horizontal($connector_width, $connector_width, 0 $icon_margin 0 $icon_margin );
86
88
  }
87
89
  }
88
90
  }
89
- [class=pb_timeline_item_step] {
90
- > :first-child:not([class^=pb_icon_circle_kit]) {
91
- margin-top: $space_xs;
92
- }
93
- }
94
91
  }
95
92
  &[class*=_with_date] {
96
93
  @include flex_wrapper(row);
@@ -133,7 +130,7 @@ $gap_lg: $height_from_top + $space_lg;
133
130
  margin-top: $space_xs;
134
131
  margin-bottom: $space_xs;
135
132
  [class=pb_timeline_item_connector] {
136
- @include pb_timeline_line_solid($connector_width, $connector_width, $height_from_top $icon_margin 0 $icon_margin );
133
+ @include pb_timeline_line_solid($connector_width, $connector_width, 0 $icon_margin 0 $icon_margin );
137
134
  }
138
135
  }
139
136
  }
@@ -157,7 +154,7 @@ $gap_lg: $height_from_top + $space_lg;
157
154
  margin-top: $space_xs;
158
155
  margin-bottom: $space_xs;
159
156
  [class=pb_timeline_item_connector] {
160
- @include pb_timeline_line_dotted_horizontal($connector_width, $connector_width, $height_from_top $icon_margin 0 $icon_margin );
157
+ @include pb_timeline_line_dotted_horizontal($connector_width, $connector_width, 0 $icon_margin 0 $icon_margin );
161
158
  }
162
159
  }
163
160
  }
@@ -181,11 +178,12 @@ $gap_lg: $height_from_top + $space_lg;
181
178
  flex-basis: 100%;
182
179
  [class=pb_timeline_item_step] {
183
180
  @include flex_wrapper(column);
181
+ align-items: center;
184
182
  align-content: flex-start;
185
183
  margin-right: $space_sm;
186
184
  margin-left: $space_sm;
187
185
  [class=pb_timeline_item_connector] {
188
- @include pb_timeline_line_solid($connector_width, $connector_width, $icon_margin 0 $icon_margin $height_from_top);
186
+ @include pb_timeline_line_solid($connector_width, $connector_width, $icon_margin 0 $icon_margin 0);
189
187
  }
190
188
  }
191
189
  [class=pb_timeline_item_left_block] {
@@ -201,10 +199,11 @@ $gap_lg: $height_from_top + $space_lg;
201
199
  flex-basis: 100%;
202
200
  [class=pb_timeline_item_step] {
203
201
  @include flex_wrapper(column);
202
+ align-items: center;
204
203
  margin-right: $space_sm;
205
204
  margin-left: $space_sm;
206
205
  [class=pb_timeline_item_connector] {
207
- @include pb_timeline_line_dotted_vertical($connector_width, $connector_width, $icon_margin 0 $icon_margin $height_from_top);
206
+ @include pb_timeline_line_dotted_vertical($connector_width, $connector_width, $icon_margin 0 $icon_margin 0);
208
207
  }
209
208
  }
210
209
  [class=pb_timeline_item_left_block] {
@@ -234,11 +233,12 @@ $gap_lg: $height_from_top + $space_lg;
234
233
  flex-basis: 100%;
235
234
  [class=pb_timeline_item_step] {
236
235
  @include flex_wrapper(column);
236
+ align-items: center;
237
237
  align-content: flex-start;
238
238
  margin-right: $space_sm;
239
239
  margin-left: $space_sm;
240
240
  [class=pb_timeline_item_connector] {
241
- @include pb_timeline_line_solid($connector_width, $connector_width, $icon_margin 0 $icon_margin $height_from_top);
241
+ @include pb_timeline_line_solid($connector_width, $connector_width, $icon_margin 0 $icon_margin 0);
242
242
  }
243
243
  }
244
244
  [class=pb_timeline_item_left_block] {
@@ -254,10 +254,11 @@ $gap_lg: $height_from_top + $space_lg;
254
254
  flex-basis: 100%;
255
255
  [class=pb_timeline_item_step] {
256
256
  @include flex_wrapper(column);
257
+ align-items: center;
257
258
  margin-right: $space_sm;
258
259
  margin-left: $space_sm;
259
260
  [class=pb_timeline_item_connector] {
260
- @include pb_timeline_line_dotted_vertical($connector_width, $connector_width, $icon_margin 0 $icon_margin $height_from_top);
261
+ @include pb_timeline_line_dotted_vertical($connector_width, $connector_width, $icon_margin 0 $icon_margin 0);
261
262
  }
262
263
  }
263
264
  [class=pb_timeline_item_left_block] {
@@ -20,7 +20,7 @@ type TimelineProps = {
20
20
  id?: string,
21
21
  orientation?: string,
22
22
  showDate?: boolean,
23
- gap?: 'xs' | 'sm' | 'md' | 'lg' | 'none',
23
+ itemGap?: 'xs' | 'sm' | 'md' | 'lg' | 'none',
24
24
  } & GlobalProps
25
25
 
26
26
  const Timeline = ({
@@ -32,15 +32,15 @@ const Timeline = ({
32
32
  id,
33
33
  orientation = 'horizontal',
34
34
  showDate = false,
35
- gap = 'none',
35
+ itemGap = 'none',
36
36
  ...props
37
37
  }: TimelineProps): React.ReactElement => {
38
38
  const ariaProps = buildAriaProps(aria)
39
39
  const dataProps = buildDataProps(data)
40
40
  const htmlProps = buildHtmlProps(htmlOptions)
41
41
  const dateStyle = showDate === true ? '_with_date' : ''
42
- const gapStyle = gap === 'none' ? '' : `gap_${gap}`
43
- const timelineCss = buildCss('pb_timeline_kit', `${orientation}`, dateStyle, gapStyle)
42
+ const itemGapStyle = itemGap === 'none' ? '' : `gap_${itemGap}`
43
+ const timelineCss = buildCss('pb_timeline_kit', `${orientation}`, dateStyle, itemGapStyle)
44
44
 
45
45
  return (
46
46
  <div
@@ -60,4 +60,4 @@ Timeline.Step = TimelineStep
60
60
  Timeline.Label = TimelineLabel
61
61
  Timeline.Detail = TimelineDetail
62
62
 
63
- export default Timeline
63
+ export default Timeline
@@ -1,6 +1,6 @@
1
1
  <%= pb_rails("flex", props: { justify: "evenly" }) do %>
2
2
  <%= pb_rails("flex/flex_item") do %>
3
- <%= pb_rails("timeline", props: {orientation: "vertical", gap: "xs"}) do %>
3
+ <%= pb_rails("timeline", props: {orientation: "vertical", item_gap: "xs"}) do %>
4
4
  <%= pb_rails("timeline/item", props: {icon: "user", icon_color: "royal"}) do %>
5
5
  <%= pb_rails("body", props: {
6
6
  text: "Conversation started",
@@ -23,7 +23,7 @@
23
23
  <% end %>
24
24
 
25
25
  <%= pb_rails("flex/flex_item") do %>
26
- <%= pb_rails("timeline", props: {orientation: "vertical", gap: "sm"}) do %>
26
+ <%= pb_rails("timeline", props: {orientation: "vertical", item_gap: "sm"}) do %>
27
27
  <%= pb_rails("timeline/item", props: {icon: "user", icon_color: "royal"}) do %>
28
28
  <%= pb_rails("body", props: {
29
29
  text: "Conversation started",
@@ -46,7 +46,7 @@
46
46
  <% end %>
47
47
 
48
48
  <%= pb_rails("flex/flex_item") do %>
49
- <%= pb_rails("timeline", props: {orientation: "vertical", gap: "md"}) do %>
49
+ <%= pb_rails("timeline", props: {orientation: "vertical", item_gap: "md"}) do %>
50
50
  <%= pb_rails("timeline/item", props: {icon: "user", icon_color: "royal"}) do %>
51
51
  <%= pb_rails("body", props: {
52
52
  text: "Conversation started",
@@ -69,7 +69,7 @@
69
69
  <% end %>
70
70
 
71
71
  <%= pb_rails("flex/flex_item") do %>
72
- <%= pb_rails("timeline", props: {orientation: "vertical", gap: "lg"}) do %>
72
+ <%= pb_rails("timeline", props: {orientation: "vertical", item_gap: "lg"}) do %>
73
73
  <%= pb_rails("timeline/item", props: {icon: "user", icon_color: "royal"}) do %>
74
74
  <%= pb_rails("body", props: {
75
75
  text: "Conversation started",
@@ -91,4 +91,3 @@
91
91
  <% end %>
92
92
  <% end %>
93
93
  <% end %>
94
-
@@ -10,7 +10,7 @@ const TimelineWithGap = (props) => (
10
10
  <Flex justify="evenly">
11
11
  <FlexItem>
12
12
  <Timeline
13
- gap="xs"
13
+ itemGap="xs"
14
14
  orientation="vertical"
15
15
  >
16
16
  <Timeline.Item
@@ -51,7 +51,7 @@ const TimelineWithGap = (props) => (
51
51
  </FlexItem>
52
52
  <FlexItem>
53
53
  <Timeline
54
- gap="sm"
54
+ itemGap="sm"
55
55
  orientation="vertical"
56
56
  >
57
57
  <Timeline.Item
@@ -92,7 +92,7 @@ const TimelineWithGap = (props) => (
92
92
  </FlexItem>
93
93
  <FlexItem>
94
94
  <Timeline
95
- gap="md"
95
+ itemGap="md"
96
96
  orientation="vertical"
97
97
  >
98
98
  <Timeline.Item
@@ -134,7 +134,7 @@ const TimelineWithGap = (props) => (
134
134
  </FlexItem>
135
135
  <FlexItem>
136
136
  <Timeline
137
- gap="lg"
137
+ itemGap="lg"
138
138
  orientation="vertical"
139
139
  >
140
140
  <Timeline.Item
@@ -1 +1 @@
1
- Use the optional `gap` prop to render the timeline kit with adjusted spacing between nodes. The `gap` prop will only work when utilized with a vertical timeline. Horizontal timelines will show no difference in spacing.
1
+ Use the optional `itemGap` prop to render the timeline kit with adjusted spacing between nodes. The `itemGap` prop will only work when utilized with a vertical timeline. Horizontal timelines will show no difference in spacing.
@@ -8,15 +8,15 @@ module Playbook
8
8
  default: "horizontal"
9
9
  prop :show_date, type: Playbook::Props::Boolean,
10
10
  default: false
11
- prop :gap, type: Playbook::Props::Enum,
12
- values: %w[xs sm md lg none],
13
- default: "none"
11
+ prop :item_gap, type: Playbook::Props::Enum,
12
+ values: %w[xs sm md lg none],
13
+ default: "none"
14
14
 
15
15
  def classname
16
16
  generate_classname("pb_timeline_kit",
17
17
  orientation,
18
18
  date_class,
19
- gap_class)
19
+ item_gap_class)
20
20
  end
21
21
 
22
22
  private
@@ -25,8 +25,8 @@ module Playbook
25
25
  show_date ? "with_date" : nil
26
26
  end
27
27
 
28
- def gap_class
29
- gap == "none" ? nil : "gap_#{gap}"
28
+ def item_gap_class
29
+ item_gap == "none" ? nil : "gap_#{item_gap}"
30
30
  end
31
31
  end
32
32
  end
@@ -0,0 +1,29 @@
1
+ @import "spacing";
2
+
3
+ .gap_none {
4
+ gap: 0;
5
+ }
6
+
7
+ .gap_xxs {
8
+ gap: $space_xxs;
9
+ }
10
+
11
+ .gap_xs {
12
+ gap: $space_xs;
13
+ }
14
+
15
+ .gap_sm {
16
+ gap: $space_sm;
17
+ }
18
+
19
+ .gap_md {
20
+ gap: $space_md;
21
+ }
22
+
23
+ .gap_lg {
24
+ gap: $space_lg;
25
+ }
26
+
27
+ .gap_xl {
28
+ gap: $space_xl;
29
+ }
@@ -27,6 +27,7 @@ export default [
27
27
  "overflow",
28
28
  "order",
29
29
  "numberSpacing",
30
+ "gap",
30
31
  "maxWidth",
31
32
  "minWidth",
32
33
  "width",
@@ -108,6 +108,10 @@ type MinWidth = {
108
108
  minWidth?: string,
109
109
  }
110
110
 
111
+ type Gap = {
112
+ gap?: string,
113
+ }
114
+
111
115
  type NumberSpacing = {
112
116
  numberSpacing?: "tabular",
113
117
  }
@@ -196,7 +200,7 @@ type MinHeight = {
196
200
  export type GlobalProps = AlignContent & AlignItems & AlignSelf &
197
201
  BorderRadius & Cursor & Dark & Display & DisplaySizes & Flex & FlexDirection &
198
202
  FlexGrow & FlexShrink & FlexWrap & JustifyContent & JustifySelf &
199
- LineHeight & Margin & Width & MinWidth & MaxWidth & NumberSpacing & Order & Overflow & Padding &
203
+ LineHeight & Margin & Width & MinWidth & MaxWidth & Gap & NumberSpacing & Order & Overflow & Padding &
200
204
  Position & Shadow & TextAlign & Truncate & VerticalAlign & ZIndex & { hover?: string } & Top & Right & Bottom & Left & Height & MaxHeight & MinHeight;
201
205
 
202
206
  const getResponsivePropClasses = (prop: {[key: string]: string}, classPrefix: string) => {
@@ -372,6 +376,11 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
372
376
  css += maxWidth ? `max_width_${filterClassName(maxWidth)} ` : ''
373
377
  return css.trimEnd()
374
378
  },
379
+ gapProps: ({ gap }: Gap) => {
380
+ let css = ''
381
+ css += gap ? `gap_${gap} ` : ''
382
+ return css.trimEnd()
383
+ },
375
384
  minHeightProps: ({ minHeight }: MinHeight) => {
376
385
  const heightValues = ["auto", "xs", "sm", "md", "lg", "xl", "xxl", "xxxl"]
377
386
  if (heightValues.includes(minHeight)) {
@@ -530,15 +539,15 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
530
539
  },
531
540
 
532
541
 
533
- topProps: ({top}) => getPositioningPropsClasses('top', top),
542
+ topProps: ({top}) => getPositioningPropsClasses('top', top),
543
+
544
+ rightProps: ({right}) => getPositioningPropsClasses('right', right),
534
545
 
535
- rightProps: ({right}) => getPositioningPropsClasses('right', right),
546
+ bottomProps:({bottom}) => getPositioningPropsClasses('bottom', bottom),
536
547
 
537
- bottomProps:({bottom}) => getPositioningPropsClasses('bottom', bottom),
538
-
539
548
  leftProps: ({left}) => getPositioningPropsClasses('left', left),
540
-
541
-
549
+
550
+
542
551
  textAlignProps: ({ textAlign }: TextAlign) => {
543
552
  if (typeof textAlign === 'object') {
544
553
  return getResponsivePropClasses(textAlign, 'text_align')
@@ -558,7 +567,7 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
558
567
 
559
568
  const PROP_INLINE_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => {[key: string]: any}} = {
560
569
  heightProps: ({ height }: Height) => {
561
- return height ? { height } : {};
570
+ return height ? { height } : {};
562
571
  },
563
572
 
564
573
  maxHeightProps: ({ maxHeight }: MaxHeight) => {
@@ -566,7 +575,7 @@ const PROP_INLINE_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => {[
566
575
  },
567
576
 
568
577
  minHeightProps: ({ minHeight }: MinHeight) => {
569
- return minHeight ? { minHeight } : {};
578
+ return minHeight ? { minHeight } : {};
570
579
  },
571
580
  }
572
581