playbook_ui 14.10.0.pre.alpha.PLAY1750pbcontenttagkitbutton5308 → 14.10.0.pre.alpha.PLAY1774timelinelabelstepspacing5274

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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +0 -1
  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 +8 -53
  7. data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +18 -23
  8. data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +0 -6
  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 +4 -6
  11. data/app/pb_kits/playbook/pb_button/button.html.erb +3 -2
  12. data/app/pb_kits/playbook/pb_checkbox/checkbox.html.erb +6 -1
  13. data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +6 -1
  14. data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +12 -7
  15. data/app/pb_kits/playbook/pb_dropdown/dropdown_container.html.erb +14 -9
  16. data/app/pb_kits/playbook/pb_dropdown/dropdown_option.html.erb +11 -6
  17. data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.html.erb +14 -8
  18. data/app/pb_kits/playbook/pb_file_upload/_file_upload.tsx +15 -24
  19. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_accept.jsx +1 -3
  20. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_custom_description.jsx +1 -4
  21. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_max_size.jsx +1 -1
  22. data/app/pb_kits/playbook/pb_table/_table.tsx +1 -8
  23. data/app/pb_kits/playbook/pb_table/docs/example.yml +0 -2
  24. data/app/pb_kits/playbook/pb_table/docs/index.js +0 -2
  25. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_mask.jsx +0 -18
  26. data/app/pb_kits/playbook/pb_text_input/inputMask.ts +1 -22
  27. data/app/pb_kits/playbook/pb_text_input/text_input.test.js +0 -80
  28. data/app/pb_kits/playbook/pb_timeline/_timeline.scss +5 -6
  29. data/app/pb_kits/playbook/pb_timeline/_timeline.tsx +5 -5
  30. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_gap.html.erb +5 -4
  31. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_gap.jsx +4 -4
  32. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_gap.md +1 -1
  33. data/app/pb_kits/playbook/pb_timeline/timeline.rb +6 -6
  34. data/app/pb_kits/playbook/utilities/globalPropNames.mjs +0 -1
  35. data/app/pb_kits/playbook/utilities/globalProps.ts +9 -18
  36. data/dist/chunks/_typeahead-gJLWiR0r.js +22 -0
  37. data/dist/chunks/_weekday_stacked-BT8jIMPK.js +45 -0
  38. data/dist/chunks/lazysizes-DHz07jlL.js +1 -0
  39. data/dist/chunks/vendor.js +1 -1
  40. data/dist/playbook-doc.js +1 -1
  41. data/dist/playbook-rails-react-bindings.js +1 -1
  42. data/dist/playbook-rails.js +1 -1
  43. data/dist/playbook.css +1 -1
  44. data/lib/playbook/classnames.rb +0 -1
  45. data/lib/playbook/spacing.rb +0 -21
  46. data/lib/playbook/version.rb +1 -1
  47. metadata +5 -6
  48. data/app/pb_kits/playbook/utilities/_gap.scss +0 -29
  49. data/dist/chunks/_typeahead-C2iCBqxQ.js +0 -36
  50. data/dist/chunks/_weekday_stacked-CWnbnW7m.js +0 -45
  51. data/dist/chunks/lazysizes-B7xYodB-.js +0 -1
@@ -6,7 +6,7 @@ type InputMask = {
6
6
  }
7
7
 
8
8
  type InputMaskDictionary = {
9
- [key in 'currency' | 'zipCode' | 'postalCode' | 'ssn' | 'creditCard' | 'cvv']: InputMask
9
+ [key in 'currency' | 'zipCode' | 'postalCode' | 'ssn']: InputMask
10
10
  }
11
11
 
12
12
  const formatCurrencyDefaultValue = (value: string): string => {
@@ -58,15 +58,6 @@ const formatSSN = (value: string): string => {
58
58
  .replace(/(\d{3})(?=\d)/, '$1-')
59
59
  }
60
60
 
61
- const formatCreditCard = (value: string): string => {
62
- const cleaned = value.replace(/\D/g, '').slice(0, 16)
63
- return cleaned.replace(/(\d{4})(?=\d)/g, '$1 ')
64
- }
65
-
66
- const formatCVV = (value: string): string => {
67
- return value.replace(/\D/g, '').slice(0, 4)
68
- }
69
-
70
61
  export const INPUTMASKS: InputMaskDictionary = {
71
62
  currency: {
72
63
  format: formatCurrency,
@@ -93,16 +84,4 @@ export const INPUTMASKS: InputMaskDictionary = {
93
84
  pattern: '\\d{3}-\\d{2}-\\d{4}',
94
85
  placeholder: '123-45-6789',
95
86
  },
96
- creditCard: {
97
- format: formatCreditCard,
98
- formatDefaultValue: formatCreditCard,
99
- pattern: '\\d{4} \\d{4} \\d{4} \\d{4}',
100
- placeholder: '1234 5678 9012 3456',
101
- },
102
- cvv: {
103
- format: formatCVV,
104
- formatDefaultValue: formatCVV,
105
- pattern: '\\d{3,4}',
106
- placeholder: '123',
107
- },
108
87
  }
@@ -226,83 +226,3 @@ test('returns masked ssn value', () => {
226
226
 
227
227
  expect(input.value).toBe('123-45-6789')
228
228
  })
229
-
230
- const TextInputCreditCardMask = (props) => {
231
- const [creditCard, setValue] = useState('')
232
- const handleOnChange = ({ target }) => {
233
- setValue(target.value)
234
- }
235
-
236
- return (
237
- <TextInput
238
- mask="creditCard"
239
- onChange={handleOnChange}
240
- value={creditCard}
241
- {...props}
242
- />
243
- )
244
- }
245
-
246
- test('returns masked credit card value', () => {
247
- render(
248
- <TextInputCreditCardMask
249
- data={{ testid: testId }}
250
- />
251
- )
252
-
253
- const kit = screen.getByTestId(testId)
254
-
255
- const input = within(kit).getByRole('textbox')
256
-
257
- fireEvent.change(input, { target: { value: '1234567890123456' } })
258
-
259
- expect(input.value).toBe('1234 5678 9012 3456')
260
-
261
- fireEvent.change(input, { target: { value: '1234' } })
262
-
263
- expect(input.value).toBe('1234')
264
-
265
- fireEvent.change(input, { target: { value: '' } })
266
-
267
- expect(input.value).toBe('')
268
- })
269
-
270
- const TextInputCVVMask = (props) => {
271
- const [cvv, setValue] = useState('')
272
- const handleOnChange = ({ target }) => {
273
- setValue(target.value)
274
- }
275
-
276
- return (
277
- <TextInput
278
- mask="cvv"
279
- onChange={handleOnChange}
280
- value={cvv}
281
- {...props}
282
- />
283
- )
284
- }
285
-
286
- test('returns masked CVV value', () => {
287
- render(
288
- <TextInputCVVMask
289
- data={{ testid: testId }}
290
- />
291
- )
292
-
293
- const kit = screen.getByTestId(testId)
294
-
295
- const input = within(kit).getByRole('textbox')
296
-
297
- fireEvent.change(input, { target: { value: '1234' } })
298
-
299
- expect(input.value).toBe('1234')
300
-
301
- fireEvent.change(input, { target: { value: '123' } })
302
-
303
- expect(input.value).toBe('123')
304
-
305
- fireEvent.change(input, { target: { value: '' } })
306
-
307
- expect(input.value).toBe('')
308
- })
@@ -66,9 +66,6 @@ $gap_lg: $height_from_top + $space_lg;
66
66
  [class*=pb_timeline_item_kit] {
67
67
  &[class*=_solid] {
68
68
  flex-basis: 100%;
69
- [class=pb_timeline_item_left_block] {
70
- height: 0px;
71
- }
72
69
  [class=pb_timeline_item_step] {
73
70
  @include flex_wrapper(row);
74
71
  margin-top: $space_xs;
@@ -80,9 +77,6 @@ $gap_lg: $height_from_top + $space_lg;
80
77
  }
81
78
  &[class*=_dotted] {
82
79
  flex-basis: 100%;
83
- [class=pb_timeline_item_left_block] {
84
- height: 0;
85
- }
86
80
  [class=pb_timeline_item_step] {
87
81
  @include flex_wrapper(row);
88
82
  margin-top: $space_xs;
@@ -92,6 +86,11 @@ $gap_lg: $height_from_top + $space_lg;
92
86
  }
93
87
  }
94
88
  }
89
+ [class=pb_timeline_item_step] {
90
+ > :first-child:not([class^=pb_icon_circle_kit]) {
91
+ margin-top: $space_xs;
92
+ }
93
+ }
95
94
  }
96
95
  &[class*=_with_date] {
97
96
  @include flex_wrapper(row);
@@ -20,7 +20,7 @@ type TimelineProps = {
20
20
  id?: string,
21
21
  orientation?: string,
22
22
  showDate?: boolean,
23
- itemGap?: 'xs' | 'sm' | 'md' | 'lg' | 'none',
23
+ gap?: '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
- itemGap = 'none',
35
+ gap = '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 itemGapStyle = itemGap === 'none' ? '' : `gap_${itemGap}`
43
- const timelineCss = buildCss('pb_timeline_kit', `${orientation}`, dateStyle, itemGapStyle)
42
+ const gapStyle = gap === 'none' ? '' : `gap_${gap}`
43
+ const timelineCss = buildCss('pb_timeline_kit', `${orientation}`, dateStyle, gapStyle)
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", item_gap: "xs"}) do %>
3
+ <%= pb_rails("timeline", props: {orientation: "vertical", 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", item_gap: "sm"}) do %>
26
+ <%= pb_rails("timeline", props: {orientation: "vertical", 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", item_gap: "md"}) do %>
49
+ <%= pb_rails("timeline", props: {orientation: "vertical", 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", item_gap: "lg"}) do %>
72
+ <%= pb_rails("timeline", props: {orientation: "vertical", 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,3 +91,4 @@
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
- itemGap="xs"
13
+ gap="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
- itemGap="sm"
54
+ gap="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
- itemGap="md"
95
+ gap="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
- itemGap="lg"
137
+ gap="lg"
138
138
  orientation="vertical"
139
139
  >
140
140
  <Timeline.Item
@@ -1 +1 @@
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.
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.
@@ -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 :item_gap, type: Playbook::Props::Enum,
12
- values: %w[xs sm md lg none],
13
- default: "none"
11
+ prop :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
- item_gap_class)
19
+ 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 item_gap_class
29
- item_gap == "none" ? nil : "gap_#{item_gap}"
28
+ def gap_class
29
+ gap == "none" ? nil : "gap_#{gap}"
30
30
  end
31
31
  end
32
32
  end
@@ -27,7 +27,6 @@ export default [
27
27
  "overflow",
28
28
  "order",
29
29
  "numberSpacing",
30
- "gap",
31
30
  "maxWidth",
32
31
  "minWidth",
33
32
  "width",
@@ -108,10 +108,6 @@ type MinWidth = {
108
108
  minWidth?: string,
109
109
  }
110
110
 
111
- type Gap = {
112
- gap?: string,
113
- }
114
-
115
111
  type NumberSpacing = {
116
112
  numberSpacing?: "tabular",
117
113
  }
@@ -200,7 +196,7 @@ type MinHeight = {
200
196
  export type GlobalProps = AlignContent & AlignItems & AlignSelf &
201
197
  BorderRadius & Cursor & Dark & Display & DisplaySizes & Flex & FlexDirection &
202
198
  FlexGrow & FlexShrink & FlexWrap & JustifyContent & JustifySelf &
203
- LineHeight & Margin & Width & MinWidth & MaxWidth & Gap & NumberSpacing & Order & Overflow & Padding &
199
+ LineHeight & Margin & Width & MinWidth & MaxWidth & NumberSpacing & Order & Overflow & Padding &
204
200
  Position & Shadow & TextAlign & Truncate & VerticalAlign & ZIndex & { hover?: string } & Top & Right & Bottom & Left & Height & MaxHeight & MinHeight;
205
201
 
206
202
  const getResponsivePropClasses = (prop: {[key: string]: string}, classPrefix: string) => {
@@ -376,11 +372,6 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
376
372
  css += maxWidth ? `max_width_${filterClassName(maxWidth)} ` : ''
377
373
  return css.trimEnd()
378
374
  },
379
- gapProps: ({ gap }: Gap) => {
380
- let css = ''
381
- css += gap ? `gap_${gap} ` : ''
382
- return css.trimEnd()
383
- },
384
375
  minHeightProps: ({ minHeight }: MinHeight) => {
385
376
  const heightValues = ["auto", "xs", "sm", "md", "lg", "xl", "xxl", "xxxl"]
386
377
  if (heightValues.includes(minHeight)) {
@@ -539,15 +530,15 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
539
530
  },
540
531
 
541
532
 
542
- topProps: ({top}) => getPositioningPropsClasses('top', top),
543
-
544
- rightProps: ({right}) => getPositioningPropsClasses('right', right),
533
+ topProps: ({top}) => getPositioningPropsClasses('top', top),
545
534
 
546
- bottomProps:({bottom}) => getPositioningPropsClasses('bottom', bottom),
535
+ rightProps: ({right}) => getPositioningPropsClasses('right', right),
547
536
 
537
+ bottomProps:({bottom}) => getPositioningPropsClasses('bottom', bottom),
538
+
548
539
  leftProps: ({left}) => getPositioningPropsClasses('left', left),
549
-
550
-
540
+
541
+
551
542
  textAlignProps: ({ textAlign }: TextAlign) => {
552
543
  if (typeof textAlign === 'object') {
553
544
  return getResponsivePropClasses(textAlign, 'text_align')
@@ -567,7 +558,7 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
567
558
 
568
559
  const PROP_INLINE_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => {[key: string]: any}} = {
569
560
  heightProps: ({ height }: Height) => {
570
- return height ? { height } : {};
561
+ return height ? { height } : {};
571
562
  },
572
563
 
573
564
  maxHeightProps: ({ maxHeight }: MaxHeight) => {
@@ -575,7 +566,7 @@ const PROP_INLINE_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => {[
575
566
  },
576
567
 
577
568
  minHeightProps: ({ minHeight }: MinHeight) => {
578
- return minHeight ? { minHeight } : {};
569
+ return minHeight ? { minHeight } : {};
579
570
  },
580
571
  }
581
572