playbook_ui 12.30.1.pre.alpha.PLAY802responsivetitlekit909 → 12.30.1.pre.alpha.PLAY906multilevelselectedidsprop912

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 721bb127babde220f239ae7ba3a8fc3bbbff5c8078e6d58ed0fa3cebd33724db
4
- data.tar.gz: c896e6c5fae4da4004ef5fa234ae930013d31a68b84f93cb3da36f9e31a1f21c
3
+ metadata.gz: 5bb99bff289e00a7d9a4304de6118e54be2349a7d705bd69f07307940b277db5
4
+ data.tar.gz: 34b932013c8f26a6c25afe95e725fc4bac6f62b323e49e134ab0020a312107f6
5
5
  SHA512:
6
- metadata.gz: 65acd0c7af39e80e7157b87e2544216cce50c8ef582a002912d8f56d7a31ce802a543df41d5a31854649bddad6b9bb1def1d3e8eb088866252d4528d9a0926f5
7
- data.tar.gz: d124637fac9f1a5601490420173f81909efcd40f3abeea66f9f2bcb7a1ef97f6211108ebf37cfe3974a6e9f1ed8f2c25cbbe5b1756b59a5ac4ff0ea81e50e813
6
+ metadata.gz: 245aac90b727280ef79d58a04569cc93f559d09b5ad2bd1350260c1eea9c4b02030de75e6ec7ff9a7d6751006c0c32bb7be946bc1ad813032d00a5ced8e240e0
7
+ data.tar.gz: af04cb501838d28a314d6de419fd6a5ca7782ce2f0973f80ba24ca048d82fdbad61041c56d43783f38ec1f77a6b7a56fd5b09eff85528ddab775557d6a0f2a9f
@@ -28,6 +28,7 @@ type MultiLevelSelectProps = {
28
28
  returnAllSelected?: boolean
29
29
  treeData?: { [key: string]: string }[]
30
30
  onSelect?: (prop: { [key: string]: any }) => void
31
+ selectedIds?: string[]
31
32
  } & GlobalProps
32
33
 
33
34
  const MultiLevelSelect = (props: MultiLevelSelectProps) => {
@@ -41,6 +42,7 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
41
42
  returnAllSelected = false,
42
43
  treeData,
43
44
  onSelect = () => {},
45
+ selectedIds
44
46
  } = props
45
47
 
46
48
  const ariaProps = buildAriaProps(aria)
@@ -70,8 +72,8 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
70
72
 
71
73
 
72
74
  useEffect(() => {
73
- setFormattedData(addCheckedAndParentProperty(treeData))
74
- }, [treeData])
75
+ setFormattedData(addCheckedAndParentProperty(treeData, selectedIds))
76
+ }, [treeData, selectedIds])
75
77
 
76
78
  useEffect(() => {
77
79
  if (returnAllSelected) {
@@ -160,6 +162,7 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
160
162
  //function to map over data and add parent_id + depth property to each item
161
163
  const addCheckedAndParentProperty = (
162
164
  treeData: { [key: string]: any }[],
165
+ selectedIds: string[],
163
166
  parent_id: string = null,
164
167
  depth: number = 0,
165
168
  ) => {
@@ -169,6 +172,7 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
169
172
  return treeData.map((item: { [key: string]: any } | any) => {
170
173
  const newItem = {
171
174
  ...item,
175
+ checked: selectedIds && selectedIds.length && selectedIds.includes(item.id),
172
176
  parent_id,
173
177
  depth,
174
178
  }
@@ -179,6 +183,7 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
179
183
  : item.children
180
184
  newItem.children = addCheckedAndParentProperty(
181
185
  children,
186
+ selectedIds,
182
187
  newItem.id,
183
188
  depth + 1
184
189
  )
@@ -1,6 +1,5 @@
1
1
  @import "../tokens/titles";
2
2
  @import "../tokens/colors";
3
- @import "../tokens/screen_sizes";
4
3
  @import './title_mixin';
5
4
 
6
5
  [class^=pb_title_kit]{
@@ -34,21 +33,4 @@
34
33
  &[class*=_thin] {
35
34
  @include pb_title_thin;
36
35
  }
37
-
38
- @each $size, $size_value in $breakpoints_grid {
39
- @each $title_size_value in [1, 2, 3, 4] {
40
- $min_size: map-get($size_value, "min");
41
- $max_size: map-get($size_value, "max");
42
- &[class*=_#{$size}_#{$title_size_value}] {
43
- @include break_on($min_size, $max_size) {
44
- @if $title_size_value == 1 { @include pb_title_1; }
45
- @else if $title_size_value == 2 { @include pb_title_2; }
46
- @else if $title_size_value == 3 { @include pb_title_3; }
47
- @else if $title_size_value == 4 { @include pb_title_4; }
48
- @include title_colors;
49
- @if $title_size_value != 4 { @include pb_title_bold; }
50
- }
51
- }
52
- }
53
- }
54
36
  }
@@ -3,9 +3,6 @@ import classnames from 'classnames'
3
3
  import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
4
4
  import { deprecatedProps, GlobalProps, globalProps } from '../utilities/globalProps'
5
5
 
6
- type SizeType = 1 | 2 | 3 | 4 | "1" | "2" | "3" | "4"
7
- type SizeResponsiveType = {[key: string]: SizeType}
8
-
9
6
  type TitleProps = {
10
7
  aria?: {[key: string]: string},
11
8
  bold?: boolean,
@@ -14,7 +11,7 @@ type TitleProps = {
14
11
  color?: "default" | "light" | "lighter" | "success" | "error" | "link",
15
12
  data?: {[key: string]: string},
16
13
  id?: string,
17
- size?: SizeType | SizeResponsiveType,
14
+ size?: 1 | 2| 3| 4 | "1" | "2" | "3" | "4",
18
15
  tag?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "div" | "span",
19
16
  text?: string,
20
17
  variant?: null | "link",
@@ -39,24 +36,9 @@ const Title = (props: TitleProps): React.ReactElement => {
39
36
  const ariaProps: {[key: string]: string | number} = buildAriaProps(aria)
40
37
  const dataProps: {[key: string]: string | number} = buildDataProps(data)
41
38
  const getBold = bold ? '' : 'thin'
42
- const isSizeNumberOrString = typeof size === "number" || typeof size === "string"
43
-
44
- const buildResponsiveSizeCss = () => {
45
- let css = ''
46
-
47
- if (!isSizeNumberOrString) {
48
- Object.entries(size).forEach((sizeObj) => {
49
- css += `pb_title_kit_${sizeObj[0]}_${sizeObj[1]} `
50
- })
51
- }
52
-
53
- return css.trim()
54
- }
55
-
56
39
  const classes = classnames(
57
- buildCss('pb_title_kit', isSizeNumberOrString ? `size_${size}` : "", variant, color, getBold),
40
+ buildCss('pb_title_kit', `size_${size}`, variant, color, getBold),
58
41
  globalProps(props),
59
- buildResponsiveSizeCss(),
60
42
  className
61
43
  )
62
44
  const Tag: React.ReactElement | any = `${tag}`
@@ -3,10 +3,8 @@ examples:
3
3
  - title_default: Default UI
4
4
  - title_light_weight: Light Weight UI
5
5
  - title_colors: Colors
6
- - title_responsive: Responsive
7
6
 
8
7
  react:
9
8
  - title_default: Default UI
10
9
  - title_light_weight: Light Weight UI
11
10
  - title_colors: Colors
12
- - title_responsive: Responsive
@@ -1,4 +1,3 @@
1
1
  export { default as TitleDefault } from './_title_default.jsx'
2
2
  export { default as TitleLightWeight } from './_title_light_weight.jsx'
3
3
  export { default as TitleColors } from './_title_colors.jsx'
4
- export { default as TitleResponsive } from './_title_responsive.jsx'
@@ -6,7 +6,9 @@ module Playbook
6
6
  prop :color, type: Playbook::Props::Enum,
7
7
  values: [nil, "default", "light", "lighter", "success", "error", "link"],
8
8
  default: nil
9
- prop :size, default: 3
9
+ prop :size, type: Playbook::Props::Enum,
10
+ values: [1, 2, 3, 4],
11
+ default: 3
10
12
  prop :tag, type: Playbook::Props::Enum,
11
13
  values: %w[h1 h2 h3 h4 h5 h6 p div span],
12
14
  default: "h3"
@@ -18,31 +20,12 @@ module Playbook
18
20
  prop :bold, type: Playbook::Props::Boolean, default: true
19
21
 
20
22
  def classname
21
- if is_size_responsive
22
- generate_classname("pb_title_kit", variant, color, is_bold) + generate_responsive_size_classname
23
- else
24
- generate_classname("pb_title_kit", size, variant, color, is_bold)
25
- end
23
+ generate_classname("pb_title_kit", size, variant, color, is_bold)
26
24
  end
27
25
 
28
26
  def is_bold
29
27
  bold ? nil : "thin"
30
28
  end
31
-
32
- def is_size_responsive
33
- try(:size).is_a?(::Hash)
34
- end
35
-
36
- def generate_responsive_size_classname
37
- css = ""
38
- if is_size_responsive
39
- size.each do |key, value|
40
- css += " pb_title_kit_#{key}_#{value}"
41
- end
42
- end
43
-
44
- css unless css.blank?
45
- end
46
29
  end
47
30
  end
48
31
  end
@@ -4,52 +4,39 @@ import { render, screen } from '../utilities/test-utils'
4
4
  import Title from './_title'
5
5
 
6
6
  test('returns namespaced class name', () => {
7
- render(
8
- <Title
9
- data={{ testid: 'primary-test' }}
10
- text="Test colors"
11
- />
12
- )
13
-
14
- const kit = screen.getByTestId('primary-test')
15
- expect(kit).toHaveClass('pb_title_kit_size_3')
7
+ render(
8
+ <Title
9
+ data={{ testid: 'primary-test' }}
10
+ text="Test colors"
11
+ />
12
+ )
13
+
14
+ const kit = screen.getByTestId('primary-test')
15
+ expect(kit).toHaveClass('pb_title_kit_size_3')
16
16
  })
17
17
 
18
18
  test('with thin font weight', () => {
19
- render(
20
- <Title
21
- bold={false}
22
- data={{ testid: 'primary-test' }}
23
- text="Test thin font weight"
24
- />
25
- )
26
-
27
- const kit = screen.getByTestId('primary-test')
28
- expect(kit).toHaveClass('pb_title_kit_size_3_thin')
19
+ render(
20
+ <Title
21
+ bold={false}
22
+ data={{ testid: 'primary-test' }}
23
+ text="Test thin font weight"
24
+ />
25
+ )
26
+
27
+ const kit = screen.getByTestId('primary-test')
28
+ expect(kit).toHaveClass('pb_title_kit_size_3_thin')
29
29
  })
30
30
 
31
31
  test('with colors', () => {
32
- render(
33
- <Title
34
- color="success"
35
- data={{ testid: 'primary-test' }}
36
- text="Test colors"
37
- />
38
- )
39
-
40
- const kit = screen.getByTestId('primary-test')
41
- expect(kit).toHaveClass('pb_title_kit_size_3_success')
42
- })
43
-
44
- test('with responsive title', () => {
45
- render(
46
- <Title
47
- data={{ testid: 'primary-test' }}
48
- size={{ xs: "3", sm: "2", md: "1" }}
49
- text="Responsive Title"
50
- />
51
- )
52
-
53
- const kit = screen.getByTestId('primary-test')
54
- expect(kit).toHaveClass('pb_title_kit pb_title_kit_xs_3 pb_title_kit_sm_2 pb_title_kit_md_1')
32
+ render(
33
+ <Title
34
+ color="success"
35
+ data={{ testid: 'primary-test' }}
36
+ text="Test colors"
37
+ />
38
+ )
39
+
40
+ const kit = screen.getByTestId('primary-test')
41
+ expect(kit).toHaveClass('pb_title_kit_size_3_success')
55
42
  })