playbook_ui 14.5.0.pre.alpha.PBNTR595popoverwidthpropfilterpopoverprop4158 → 14.5.0.pre.alpha.PBNTR600reactfilterdisplayzeroresults4068

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +4 -20
  3. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +0 -1
  4. data/app/pb_kits/playbook/pb_dropdown/docs/index.js +0 -1
  5. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownOption.tsx +1 -1
  6. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownTrigger.tsx +2 -2
  7. data/app/pb_kits/playbook/pb_filter/Filter/FilterDouble.tsx +0 -2
  8. data/app/pb_kits/playbook/pb_filter/Filter/FilterSingle.tsx +0 -2
  9. data/app/pb_kits/playbook/pb_filter/Filter/FiltersPopover.tsx +1 -4
  10. data/app/pb_kits/playbook/pb_filter/docs/example.yml +0 -3
  11. data/app/pb_kits/playbook/pb_filter/docs/index.js +0 -1
  12. data/app/pb_kits/playbook/pb_filter/filter.html.erb +2 -2
  13. data/app/pb_kits/playbook/pb_filter/filter.rb +0 -2
  14. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +0 -17
  15. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +0 -1
  16. data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.scss +65 -169
  17. data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.test.js +5 -5
  18. data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.tsx +9 -15
  19. data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/example.yml +0 -2
  20. data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/index.js +0 -1
  21. data/app/pb_kits/playbook/pb_multiple_users_stacked/multiple_users_stacked.html.erb +6 -28
  22. data/app/pb_kits/playbook/pb_multiple_users_stacked/multiple_users_stacked.rb +1 -31
  23. data/app/pb_kits/playbook/pb_popover/_popover.tsx +1 -5
  24. data/app/pb_kits/playbook/pb_popover/docs/_popover_default.html.erb +1 -1
  25. data/app/pb_kits/playbook/pb_popover/popover.rb +1 -3
  26. data/dist/chunks/{_typeahead-BKndSDgc.js → _typeahead-CT2ByCBK.js} +1 -1
  27. data/dist/chunks/_weekday_stacked-BFqyoTft.js +45 -0
  28. data/dist/chunks/vendor.js +1 -1
  29. data/dist/playbook-doc.js +1 -1
  30. data/dist/playbook-rails-react-bindings.js +1 -1
  31. data/dist/playbook-rails.js +1 -1
  32. data/dist/playbook.css +1 -1
  33. data/lib/playbook/version.rb +1 -1
  34. metadata +4 -14
  35. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_clear_selection.jsx +0 -45
  36. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_clear_selection.md +0 -1
  37. data/app/pb_kits/playbook/pb_filter/docs/_filter_custom_width.html.erb +0 -41
  38. data/app/pb_kits/playbook/pb_filter/docs/_filter_custom_width.jsx +0 -71
  39. data/app/pb_kits/playbook/pb_filter/docs/_filter_custom_width_rails.md +0 -1
  40. data/app/pb_kits/playbook/pb_filter/docs/_filter_custom_width_react.md +0 -1
  41. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_reset.html.erb +0 -93
  42. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_reset.md +0 -1
  43. data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/_multiple_users_stacked_size.html.erb +0 -336
  44. data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/_multiple_users_stacked_size.jsx +0 -97
  45. data/dist/chunks/_weekday_stacked-DBH_rF_4.js +0 -45
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3c69ef4f757b7b9151cfcaba9de63b00d96ffae1f4d025b641c8da490837f472
4
- data.tar.gz: c97c0a78b71fe319d903c2dfe0fc9e58bd1d7fdcab51eaff4cfa622c9fd53129
3
+ metadata.gz: 1315703b951ec18c52f143275d8fcce5219cd6cab284b284be92584ffe64adb5
4
+ data.tar.gz: a8ec02f07ec4a6e857e855b712f659c539410232cb4d8515ae99566e3c1d39f3
5
5
  SHA512:
6
- metadata.gz: 2852e96631890324a8179f30761e7edb5d39757e56e0c28aae06c033c357cbec9bcc385f796e9f09fe8ab9720fb0890b54c18918dc822279e4546bf3f53fc2b3
7
- data.tar.gz: 58315e2d91a473d953d152cda638dca0d9e5322dec8c799ed48048f6bf36a8e8a99ded832024ff5df39efcb12fd27eb4785b020b0a8c71eceef833a7d7125228
6
+ metadata.gz: 947391921569c72c01d30a6819ab580140bea82df5bc6f83a8e3426ea1561a07e6178574a8c3df62c820818eb98f792aa7eb0cab223ec837f420f44ec1adb29e
7
+ data.tar.gz: c33a5d61b41a9fb8c57538234484a37e3bc08c8dbc161f727ec8fa9ba5fcbc0f1e9615bb4c53f844561c89e1ce03a4d64064a6d9e00fb54ba72138dadfc507d8
@@ -1,4 +1,4 @@
1
- import React, { useState, useRef, useEffect, forwardRef, useImperativeHandle } from "react";
1
+ import React, { useState, useRef, useEffect } from "react";
2
2
  import classnames from "classnames";
3
3
  import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from "../utilities/props";
4
4
  import { globalProps } from "../utilities/globalProps";
@@ -38,14 +38,7 @@ type DropdownProps = {
38
38
  triggerRef?: any;
39
39
  };
40
40
 
41
- interface DropdownComponent
42
- extends React.ForwardRefExoticComponent<DropdownProps & React.RefAttributes<unknown>> {
43
- Option: typeof DropdownOption;
44
- Trigger: typeof DropdownTrigger;
45
- Container: typeof DropdownContainer;
46
- }
47
-
48
- const Dropdown = forwardRef((props: DropdownProps, ref: any) => {
41
+ const Dropdown = (props: DropdownProps) => {
49
42
  const {
50
43
  aria = {},
51
44
  autocomplete = false,
@@ -132,7 +125,7 @@ const Dropdown = forwardRef((props: DropdownProps, ref: any) => {
132
125
  const filteredOptions = optionsWithBlankSelection?.filter((option: GenericObject) => {
133
126
  const label = typeof option.label === 'string' ? option.label.toLowerCase() : option.label;
134
127
  return String(label).toLowerCase().includes(filterItem.toLowerCase());
135
- });
128
+ });
136
129
 
137
130
  // For keyboard accessibility: Set focus within dropdown to selected item if it exists
138
131
  useEffect(() => {
@@ -182,14 +175,6 @@ const Dropdown = forwardRef((props: DropdownProps, ref: any) => {
182
175
  dark
183
176
  });
184
177
 
185
- useImperativeHandle(ref, () => ({
186
- clearSelected: () => {
187
- setSelected({});
188
- setFilterItem("");
189
- setIsDropDownClosed(true);
190
- onSelect && onSelect(null);
191
- },
192
- }));
193
178
 
194
179
  return (
195
180
  <div {...ariaProps}
@@ -273,9 +258,8 @@ const Dropdown = forwardRef((props: DropdownProps, ref: any) => {
273
258
  </DropdownContext.Provider>
274
259
  </div>
275
260
  )
276
- }) as DropdownComponent
261
+ };
277
262
 
278
- Dropdown.displayName = "Dropdown";
279
263
  Dropdown.Option = DropdownOption;
280
264
  Dropdown.Trigger = DropdownTrigger;
281
265
  Dropdown.Container = DropdownContainer;
@@ -22,7 +22,6 @@ examples:
22
22
  - dropdown_error: Dropdown with Error
23
23
  - dropdown_default_value: Default Value
24
24
  - dropdown_blank_selection: Blank Selection
25
- - dropdown_clear_selection: Clear Selection
26
25
  # - dropdown_with_autocomplete: Autocomplete
27
26
  # - dropdown_with_autocomplete_and_custom_display: Autocomplete with Custom Display
28
27
  # - dropdown_with_external_control: useDropdown Hook
@@ -12,4 +12,3 @@ export { default as DropdownSubcomponentStructure } from './_dropdown_subcompone
12
12
  export { default as DropdownError } from './_dropdown_error.jsx'
13
13
  export { default as DropdownDefaultValue } from './_dropdown_default_value.jsx'
14
14
  export { default as DropdownBlankSelection } from './_dropdown_blank_selection.jsx'
15
- export { default as DropdownClearSelection } from './_dropdown_clear_selection.jsx'
@@ -62,7 +62,7 @@ const DropdownOption = (props: DropdownOptionProps) => {
62
62
  const focusedClass = isFocused && "focused";
63
63
 
64
64
  const selectedClass = `${
65
- selected?.label === option.label
65
+ selected.label === option.label
66
66
  ? "selected"
67
67
  : "list"
68
68
  }`;
@@ -73,7 +73,7 @@ const DropdownTrigger = (props: DropdownTriggerProps) => {
73
73
  !autocomplete && "select_only"
74
74
  );
75
75
 
76
- const customDisplayPlaceholder = selected?.label ? (
76
+ const customDisplayPlaceholder = selected.label ? (
77
77
  <b>{selected.label}</b>
78
78
  ) : autocomplete ? (
79
79
  ""
@@ -83,7 +83,7 @@ const DropdownTrigger = (props: DropdownTriggerProps) => {
83
83
  "Select..."
84
84
  );
85
85
 
86
- const defaultDisplayPlaceholder = selected?.label
86
+ const defaultDisplayPlaceholder = selected.label
87
87
  ? selected.label
88
88
  : autocomplete
89
89
  ? ""
@@ -34,7 +34,6 @@ const FilterDouble = ({
34
34
  maxHeight,
35
35
  minWidth,
36
36
  placement,
37
- popoverProps,
38
37
  ...bgProps
39
38
  }: FilterDoubleProps): React.ReactElement => (
40
39
  <FilterBackground
@@ -50,7 +49,6 @@ const FilterDouble = ({
50
49
  maxHeight={maxHeight}
51
50
  minWidth={minWidth}
52
51
  placement={placement}
53
- popoverProps={popoverProps}
54
52
  >
55
53
  {children}
56
54
  </FiltersPopover>
@@ -33,7 +33,6 @@ const FilterSingle = ({
33
33
  maxHeight,
34
34
  minWidth,
35
35
  placement,
36
- popoverProps,
37
36
  ...bgProps
38
37
  }: FilterSingleProps): React.ReactElement => {
39
38
  return (
@@ -53,7 +52,6 @@ const FilterSingle = ({
53
52
  maxHeight={maxHeight}
54
53
  minWidth={minWidth}
55
54
  placement={placement}
56
- popoverProps={popoverProps}
57
55
  >
58
56
  {children}
59
57
  </FiltersPopover>
@@ -2,7 +2,6 @@ import React, { ReactNode, useState } from 'react'
2
2
 
3
3
  import CircleIconButton from '../../pb_circle_icon_button/_circle_icon_button'
4
4
  import PbReactPopover from '../../pb_popover/_popover'
5
- import { GenericObject } from '../../types'
6
5
 
7
6
  type FiltersPopoverProps = {
8
7
  children?: React.ReactChild[] | React.ReactChild | (({closePopover}: {closePopover: () => void}) => ReactNode),
@@ -10,9 +9,8 @@ type FiltersPopoverProps = {
10
9
  maxHeight?: string,
11
10
  minWidth?: string,
12
11
  placement?: "top" | "right" | "bottom" | "left" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end",
13
- popoverProps?: GenericObject,
14
12
  }
15
- const FiltersPopover = ({ children, dark, maxHeight, minWidth, placement = "bottom-start", popoverProps }: FiltersPopoverProps): React.ReactElement => {
13
+ const FiltersPopover = ({ children, dark, maxHeight, minWidth, placement = "bottom-start" }: FiltersPopoverProps): React.ReactElement => {
16
14
  const [hide, updateHide] = useState(true)
17
15
  const toggle = () => updateHide(!hide)
18
16
 
@@ -35,7 +33,6 @@ const FiltersPopover = ({ children, dark, maxHeight, minWidth, placement = "bott
35
33
  reference={filterButton}
36
34
  shouldClosePopover={updateHide}
37
35
  show={!hide}
38
- {...popoverProps}
39
36
  >
40
37
  <div className="pb-form">
41
38
  {typeof children === 'function'
@@ -9,7 +9,6 @@ examples:
9
9
  - sort_only: Sort Only
10
10
  - filter_max_width: Max Width for Popover Inside of Filter
11
11
  - filter_max_height: Max Height for Popover Inside of Filter
12
- - filter_custom_width: Custom Width for Popover Inside of Filter
13
12
  - filter_placement: Filter Placement
14
13
 
15
14
  react:
@@ -21,6 +20,4 @@ examples:
21
20
  - sort_only: Sort Only
22
21
  - filter_max_width: Max Width for Popover Inside of Filter
23
22
  - filter_max_height: Max Height for Popover Inside of Filter
24
- - filter_custom_width: Custom Width for Popover Inside of Filter
25
23
  - filter_placement: Filter Placement
26
-
@@ -7,4 +7,3 @@ export { default as SortOnly } from './_sort_only.jsx'
7
7
  export { default as FilterMaxWidth } from './_filter_max_width.jsx'
8
8
  export { default as FilterMaxHeight } from './_filter_max_height.jsx'
9
9
  export { default as FilterPlacement } from './_filter_placement.jsx'
10
- export { default as FilterCustomWidth } from './_filter_custom_width.jsx'
@@ -71,13 +71,13 @@
71
71
  <% end %>
72
72
 
73
73
  <% if object.template != "sort_only"%>
74
- <%= pb_rails("popover", props: {max_height: object.max_height, min_width: object.min_width, close_on_click: "outside", trigger_element_id: "filter#{object.id}", tooltip_id: "filter-form#{object.id}", position: object.placement }.merge(object.popover_props)) do %>
74
+ <%= pb_rails("popover", props: {max_height: object.max_height, min_width: object.min_width, close_on_click: "outside", trigger_element_id: "filter#{object.id}", tooltip_id: "filter-form#{object.id}", position: object.placement }) do %>
75
75
  <%= content %>
76
76
  <% end %>
77
77
  <%end%>
78
78
 
79
79
  <% if object.template != "filter_only"%>
80
- <%= pb_rails("popover", props: {max_height: object.max_height, classname: "pb_filter_sort_menu", close_on_click: "outside", trigger_element_id: "sort-button#{object.id}", tooltip_id: "sort-filter-btn-tooltip#{object.id}", position: object.placement , padding: 'none'}.merge(object.popover_props)) do %>
80
+ <%= pb_rails("popover", props: {max_height: object.max_height, classname: "pb_filter_sort_menu", close_on_click: "outside", trigger_element_id: "sort-button#{object.id}", tooltip_id: "sort-filter-btn-tooltip#{object.id}", position: object.placement , padding: 'none'}) do %>
81
81
  <%= pb_rails("list") do %>
82
82
  <% object.sort_menu.each do |item| %>
83
83
  <%= pb_rails("list/item") do%> <%= pb_rails("button", props: {variant: "link" ,classname: "p-0", text: item[:item], link: item[:link]}) %><% end %>
@@ -15,8 +15,6 @@ module Playbook
15
15
  prop :placement, type: Playbook::Props::Enum,
16
16
  values: %w[top bottom left right top-start top-end bottom-start bottom-end right-start right-end left-start left-end],
17
17
  default: "bottom-start"
18
- prop :popover_props, type: Playbook::Props::HashProp,
19
- default: {}
20
18
 
21
19
  def classname
22
20
  generate_classname("pb_filter_kit").rstrip
@@ -202,23 +202,6 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
202
202
  };
203
203
  }, []);
204
204
 
205
- useEffect(() => {
206
- if (id) {
207
- // Attach the clear function to the window, scoped by the id
208
- (window as any)[`clearMultiLevelSelect_${id}`] = () => {
209
- const resetData = modifyRecursive(formattedData, false);
210
- setFormattedData(resetData);
211
- setReturnedArray([]);
212
- setDefaultReturn([]);
213
- setSingleSelectedItem({ id: [], value: "", item: [] });
214
- onSelect([]);
215
- };
216
- return () => {
217
- delete (window as any)[`clearMultiLevelSelect_${id}`];
218
- };
219
- }
220
- }, [formattedData, id, onSelect]);
221
-
222
205
  // Iterate over tree, find item and set checked or unchecked
223
206
  const modifyValue = (
224
207
  id: string,
@@ -7,7 +7,6 @@ examples:
7
7
  - multi_level_select_selected_ids: Selected Ids
8
8
  - multi_level_select_with_form: With Form
9
9
  - multi_level_select_color: With Pills (Custom Color)
10
- - multi_level_select_reset: Reset Selection
11
10
 
12
11
  react:
13
12
  - multi_level_select_default: Default
@@ -3,76 +3,6 @@
3
3
  @import "../tokens/opacity";
4
4
  @import "../pb_avatar/avatar";
5
5
 
6
- $sizes: (
7
- "avatar": ("sm": 38px, "md": 60px, "lg": 80px, "xl": 100px),
8
- "first-item-double": ("sm": 20px, "md": 32px, "lg": 44px, "xl": 56px),
9
- "first-item-triple": ("sm": 16px, "md": 24px, "lg": 32px, "xl": 44px),
10
- "first-item-quadruple": ("sm": 16px, "md": 28px, "lg": 36px, "xl": 44px),
11
- "second-item-double": ("sm": 12px, "md": 16px, "lg": 20px, "xl": 24px),
12
- "second-item-triple": ("sm": 12px, "md": 20px, "lg": 24px, "xl": 32px),
13
- "second-item-quadruple": ("sm": 12px, "md": 20px, "lg": 28px, "xl": 32px),
14
- "third-item-triple": ("sm": 10px, "md": 16px, "lg": 20px, "xl": 24px),
15
- "third-item-quadruple": ("sm": 10px, "md": 16px, "lg": 24px, "xl": 24px),
16
- "fourth-item": ("sm": 8px, "md": 12px, "lg": 16px, "xl": 16px)
17
- );
18
-
19
- $positions: (
20
- "second-item-double": (
21
- "sm": ("top": null, "bottom": 5px, "right": 4px, "left": null),
22
- "md": ("top": null, "bottom": 10px, "right": 8px, "left": null),
23
- "lg": ("top": 46px, "bottom": null, "right": 12px, "left": null),
24
- "xl": ("top": 58px, "bottom": null, "right": 14px, "left": null)
25
- ),
26
- "second-item-triple": (
27
- "sm": ("top": 12px, "bottom": null, "right": 2px, "left": null),
28
- "md": ("top": 24px, "bottom": null, "right": 5px, "left": null),
29
- "lg": ("top": 32px, "bottom": null, "right": 9px, "left": null),
30
- "xl": ("top": 41px, "bottom": null, "right": 11px, "left": null)
31
- ),
32
- "second-item-quadruple": (
33
- "sm": ("top": null, "bottom": 9px, "right": 4px, "left": null),
34
- "md": ("top": 24px, "bottom": null, "right": 5px, "left": null),
35
- "lg": ("top": 31px, "bottom": null, "right": 6px, "left": null),
36
- "xl": ("top": 43px, "bottom": null, "right": 9px, "left": null)
37
- ),
38
- "third-item-triple": (
39
- "sm": ("top": null, "bottom": 3px, "right": null, "left": 11px),
40
- "md": ("top": null, "bottom": 6px, "right": null, "left": 16px),
41
- "lg": ("top": null, "bottom": 10px, "right": null, "left": 23px),
42
- "xl": ("top": null, "bottom": 13px, "right": null, "left": 27px)
43
- ),
44
- "third-item-quadruple": (
45
- "sm": ("top": null, "bottom": 3px, "right": null, "left": 9px),
46
- "md": ("top": null, "bottom": 5px, "right": null, "left": 15px),
47
- "lg": ("top": null, "bottom": 7px, "right": null, "left": 20px),
48
- "xl": ("top": null, "bottom": 11px, "right": null, "left": 27px)
49
- ),
50
- "fourth-item": (
51
- "sm": ("top": 5px, "bottom": null, "right": 6px, "left": null),
52
- "md": ("top": 7px, "bottom": null, "right": 12px, "left": null),
53
- "lg": ("top": 9px, "bottom": null, "right": 16px, "left": null),
54
- "xl": ("top": 16px, "bottom": null, "right": 24px, "left": null)
55
- ),
56
- "first-item-double": (
57
- "sm": ("top": 4px, "bottom": null, "right": null, "left": 3px),
58
- "md": ("top": 6px, "bottom": null, "right": null, "left": 8px),
59
- "lg": ("top": 8px, "bottom": null, "right": null, "left": 8px),
60
- "xl": ("top": 10px, "bottom": null, "right": null, "left": 10px)
61
- ),
62
- "first-item-triple": (
63
- "sm": ("top": 4px, "bottom": null, "right": null, "left": 4px),
64
- "md": ("top": 7px, "bottom": null, "right": null, "left": 7px),
65
- "lg": ("top": 10px, "bottom": null, "right": null, "left": 10px),
66
- "xl": ("top": 12px, "bottom": null, "right": null, "left": 12px)
67
- ),
68
- "first-item-quadruple": (
69
- "sm": ("top": 5px, "bottom": null, "right": null, "left": 3px),
70
- "md": ("top": 7px, "bottom": null, "right": null, "left": 5px),
71
- "lg": ("top": 9px, "bottom": null, "right": null, "left": 7px),
72
- "xl": ("top": 16px, "bottom": null, "right": null, "left": 10px)
73
- )
74
- );
75
-
76
6
  @mixin avatar-size($size) {
77
7
  height: $size;
78
8
  width: $size;
@@ -97,8 +27,8 @@ $positions: (
97
27
  $stacked_size: 18px;
98
28
  $max_to_display: 1, 2;
99
29
  display: inline-flex;
100
- width: 28px;
101
- height: 28px;
30
+ width: $container_size;
31
+ height: $container_size;
102
32
  flex-basis: $container_size;
103
33
  position: relative;
104
34
  flex-shrink: 0;
@@ -118,7 +48,7 @@ $positions: (
118
48
  }
119
49
  }
120
50
  &[class*=_single] .pb_multiple_users_stacked_item {
121
- @include avatar-size(28px);
51
+ @include avatar-size($container_size);
122
52
  }
123
53
  [class^=pb_avatar_kit].second_item, [class^=pb_badge_kit].second_item {
124
54
  @include position((bottom: 0, right: 0));
@@ -141,106 +71,72 @@ $positions: (
141
71
  color: transparent;
142
72
  }
143
73
 
144
- // Iterate over each size to adjust the bubble container only when class contains "_bubble_"
145
- @each $size_name, $size_value in $avatar-sizes {
146
- &[class*=_bubble_][class*=_size_#{$size_name}] {
147
- // Set bubble container size based on the class
148
- $bubble_container_size: $size_value;
149
- $container_size: $size_value;
150
-
151
- // Apply the bubble container size
152
- @include avatar-size($bubble_container_size);
153
- width: $bubble_container_size;
154
- height: $bubble_container_size;
155
- flex-basis: $bubble_container_size;
156
-
157
- background-color: $bg_light;
158
- border-radius: 50%;
159
-
160
- &.dark {
161
- background-color: $card_dark;
74
+ &[class*=_bubble] {
75
+ @include avatar-size($bubble_container_size);
76
+ background-color: $bg_light;
77
+ border-radius: 50%;
78
+
79
+ &.dark {
80
+ background-color: $card_dark;
81
+ }
82
+
83
+ [class^=pb_avatar_kit].pb_multiple_users_stacked_item {
84
+ &.dark {
85
+ .avatar_wrapper {
86
+ border: $border_size solid $border_dark;
87
+ }
88
+ }
89
+ }
90
+
91
+ [class^=pb_avatar_kit] {
92
+ &.first_item {
93
+ @include position((top: 4px, left: 3px));
94
+ @include avatar-size(20px);
95
+
96
+ &.triple_bubble {
97
+ @include position((top: 4px, left: 4px));
98
+ @include avatar-size(16px);
162
99
  }
163
-
164
- [class^=pb_avatar_kit].pb_multiple_users_stacked_item {
165
- @include avatar-size($bubble_container_size * 0.45); // Adjust the size of stacked avatars
166
-
167
- &.dark {
168
- .avatar_wrapper {
169
- border: $border_size solid $border_dark;
170
- }
171
- }
172
-
173
- .avatar_wrapper {
174
- border: $border_size solid $white;
175
- }
100
+
101
+ &.quadruple_bubble {
102
+ @include position((top: 5px, left: 3px));
103
+ @include avatar-size(16px);
104
+ }
105
+ }
106
+
107
+ &.second_item {
108
+ @include position((bottom: 5px, right: 4px));
109
+ @include avatar-size(12px);
110
+
111
+ &.triple_bubble {
112
+ @include position((top: 13px, right: 2px));
176
113
  }
177
-
178
- [class^=pb_avatar_kit] {
179
- // First Item
180
- &.first_item {
181
- @include position(map-get(map-get($positions, 'first-item-double'), $size_name));
182
- @include avatar-size(map-get(map-get($sizes, 'first-item-double'), $size_name));
183
-
184
- &.double_bubble {
185
- @include position(map-get(map-get($positions, 'first-item-double'), $size_name));
186
- @include avatar-size(map-get(map-get($sizes, 'first-item-double'), $size_name));
187
- }
188
-
189
- &.triple_bubble {
190
- @include position(map-get(map-get($positions, 'first-item-triple'), $size_name));
191
- @include avatar-size(map-get(map-get($sizes, 'first-item-triple'), $size_name));
192
- }
193
-
194
- &.quadruple_bubble {
195
- @include position(map-get(map-get($positions, 'first-item-quadruple'), $size_name));
196
- @include avatar-size(map-get(map-get($sizes, 'first-item-quadruple'), $size_name));
197
- }
198
- }
199
-
200
- // Second Item
201
- &.second_item {
202
- @include position(map-get(map-get($positions, 'second-item-double'), $size_name));
203
-
204
- &.double_bubble {
205
- @include position(map-get(map-get($positions, 'second-item-double'), $size_name));
206
- @include avatar-size(map-get(map-get($sizes, 'second-item-double'), $size_name));
207
- }
208
-
209
- &.triple_bubble {
210
- @include position(map-get(map-get($positions, 'second-item-triple'), $size_name));
211
- @include avatar-size(map-get(map-get($sizes, 'second-item-triple'), $size_name));
212
- }
213
-
214
- &.quadruple_bubble {
215
- @include position(map-get(map-get($positions, 'second-item-quadruple'), $size_name));
216
- @include avatar-size(map-get(map-get($sizes, 'second-item-quadruple'), $size_name));
217
- }
218
- }
219
-
220
- // Third Item
221
- &.third_item {
222
- @include position(map-get(map-get($positions, 'third-item-triple'), $size_name));
223
- @include avatar-size(map-get(map-get($sizes, 'third-item-triple'), $size_name));
224
-
225
- &.quadruple_bubble {
226
- @include position(map-get(map-get($positions, 'third-item-quadruple'), $size_name));
227
- @include avatar-size(map-get(map-get($sizes, 'third-item-quadruple'), $size_name));
228
- }
229
- }
230
-
231
- // Fourth Item
232
- &.fourth_item {
233
- @include position(map-get(map-get($positions, 'fourth-item'), $size_name));
234
- @include avatar-size(map-get(map-get($sizes, 'fourth-item'), $size_name));
235
- }
114
+
115
+ &.quadruple_bubble {
116
+ @include position((bottom: 9px, right: 4px));
236
117
  }
237
-
238
- &[class*=_single_bubble] {
239
- [class^=pb_avatar_kit].first_item {
240
- @include position((top: 0, left: 0));
241
- @include avatar-size($bubble_container_size);
242
- }
118
+ }
119
+
120
+ &.third_item {
121
+ @include position((bottom: 3px, left: 11px));
122
+ @include avatar-size(10px);
123
+
124
+ &.quadruple_bubble {
125
+ @include position((bottom: 3px, left: 9px));
243
126
  }
244
127
  }
128
+
129
+ &.fourth_item {
130
+ @include position((top: 5px, right: 6px));
131
+ @include avatar-size(8px);
132
+ }
133
+ }
134
+ }
135
+
136
+ &[class*=_single_bubble] {
137
+ [class^=pb_avatar_kit].first_item {
138
+ @include position((top: 0, left: 0));
139
+ @include avatar-size($bubble_container_size);
245
140
  }
246
141
  }
142
+ }
@@ -81,7 +81,7 @@ const MultipleUsersStackedSingleBubble = () => {
81
81
  test('should have a single bubble', () => {
82
82
  render(<MultipleUsersStackedSingleBubble />)
83
83
  const kit = screen.getByTestId(testId)
84
- expect(kit).toHaveClass("pb_multiple_users_stacked_kit_single_bubble_size_sm")
84
+ expect(kit).toHaveClass("pb_multiple_users_stacked_kit_single_bubble")
85
85
 
86
86
  const firstItem = kit.querySelector('.first_item');
87
87
  expect(firstItem).toBeInTheDocument();
@@ -113,7 +113,7 @@ const MultipleUsersStackedDoubleBubble = () => {
113
113
  test('should have a double bubble', () => {
114
114
  render(<MultipleUsersStackedDoubleBubble />)
115
115
  const kit = screen.getByTestId(testId)
116
- expect(kit).toHaveClass("pb_multiple_users_stacked_kit_bubble_size_sm")
116
+ expect(kit).toHaveClass("pb_multiple_users_stacked_kit_bubble")
117
117
 
118
118
  const firstItem = kit.querySelector('.first_item');
119
119
  expect(firstItem).toBeInTheDocument();
@@ -153,7 +153,7 @@ const MultipleUsersStackedTripleBubble = () => {
153
153
  test('should have a triple bubble', () => {
154
154
  render(<MultipleUsersStackedTripleBubble />)
155
155
  const kit = screen.getByTestId(testId)
156
- expect(kit).toHaveClass("pb_multiple_users_stacked_kit_bubble_size_sm")
156
+ expect(kit).toHaveClass("pb_multiple_users_stacked_kit_bubble")
157
157
 
158
158
  const firstItem = kit.querySelector('.first_item');
159
159
  expect(firstItem).toBeInTheDocument();
@@ -208,7 +208,7 @@ const MultipleUsersStackedQuadrupleBubble = () => {
208
208
  test('should have a quadruple bubble', () => {
209
209
  render(<MultipleUsersStackedQuadrupleBubble />)
210
210
  const kit = screen.getByTestId(testId)
211
- expect(kit).toHaveClass("pb_multiple_users_stacked_kit_bubble_size_sm")
211
+ expect(kit).toHaveClass("pb_multiple_users_stacked_kit_bubble")
212
212
 
213
213
  const firstItem = kit.querySelector('.first_item');
214
214
  expect(firstItem).toBeInTheDocument();
@@ -224,4 +224,4 @@ test('should have a quadruple bubble', () => {
224
224
 
225
225
  const fourthItem = kit.querySelector('.fourth_item');
226
226
  expect(fourthItem).toBeInTheDocument();
227
- })
227
+ })
@@ -14,7 +14,6 @@ type MultipleUsersStackedProps = {
14
14
  data?: { [key: string]: string },
15
15
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
16
16
  id?: string,
17
- size?: "md" | "lg" | "sm" | "xl"
18
17
  users: Array<{ [key: string]: string }>,
19
18
  variant: "default" | "bubble",
20
19
  }
@@ -28,17 +27,14 @@ const MultipleUsersStacked = (props: MultipleUsersStackedProps) => {
28
27
  htmlOptions = {},
29
28
  id,
30
29
  users,
31
- size = "sm",
32
30
  variant = "default",
33
31
  } = props
34
32
 
35
33
  const moreThanTwo = users.length > 2
36
34
  const onlyOne = users.length == 1
37
35
  const isBubble = variant === "bubble"
38
- const doubleBubble = isBubble && users.length === 2
39
36
  const tripleBubble = isBubble && users.length === 3
40
37
  const quadrupleBubble = isBubble && users.length > 3
41
- const sizeClass = isBubble ? `size_${size}` : ""
42
38
  const displayCount = () => {
43
39
  return moreThanTwo ? 1 : users.length
44
40
  }
@@ -47,19 +43,17 @@ const MultipleUsersStacked = (props: MultipleUsersStackedProps) => {
47
43
  const htmlProps = buildHtmlProps(htmlOptions)
48
44
  const classes = classnames(buildCss(
49
45
  'pb_multiple_users_stacked_kit',
50
- { single: onlyOne, bubble: isBubble }, sizeClass),
51
- globalProps(props),
52
- className)
46
+ { single: onlyOne, bubble: isBubble }), globalProps(props), className)
53
47
 
54
48
  const firstUser = () => {
55
49
  return users.slice(0, 1).map((userObject, index) => {
56
50
  return (
57
51
  <Avatar
58
52
  {...userObject}
59
- className={`pb_multiple_users_stacked_item first_item ${doubleBubble ? "double_bubble" : ""}${tripleBubble ? " triple_bubble" : ""}${quadrupleBubble ? " quadruple_bubble" : ""}`}
53
+ className={`pb_multiple_users_stacked_item first_item${tripleBubble ? " triple_bubble" : ""}${quadrupleBubble ? " quadruple_bubble" : ""}`}
60
54
  dark={dark}
61
55
  key={index}
62
- size={isBubble ? "md" : "xs"}
56
+ size={isBubble ? "sm" : "xs"}
63
57
  />
64
58
  )
65
59
  })
@@ -71,10 +65,10 @@ const MultipleUsersStacked = (props: MultipleUsersStackedProps) => {
71
65
  return (
72
66
  <Avatar
73
67
  {...userObject}
74
- className={`pb_multiple_users_stacked_item second_item ${doubleBubble ? "double_bubble" : ""}${tripleBubble ? " triple_bubble" : ""}${quadrupleBubble ? " quadruple_bubble" : ""}`}
68
+ className={`pb_multiple_users_stacked_item second_item${tripleBubble ? " triple_bubble" : ""}${quadrupleBubble ? " quadruple_bubble" : ""}`}
75
69
  dark={dark}
76
70
  key={index}
77
- size={isBubble ? "md" : "xs"}
71
+ size="xs"
78
72
  />
79
73
  )
80
74
  })
@@ -87,10 +81,10 @@ const MultipleUsersStacked = (props: MultipleUsersStackedProps) => {
87
81
  return (
88
82
  <Avatar
89
83
  {...userObject}
90
- className={`pb_multiple_users_stacked_item third_item ${doubleBubble ? "double_bubble" : ""}${tripleBubble ? " triple_bubble" : ""}${quadrupleBubble ? " quadruple_bubble" : ""}`}
84
+ className={`pb_multiple_users_stacked_item third_item${quadrupleBubble ? " quadruple_bubble" : ""}`}
91
85
  dark={dark}
92
86
  key={index}
93
- size="md"
87
+ size="xs"
94
88
  />
95
89
  )
96
90
  })
@@ -103,10 +97,10 @@ const MultipleUsersStacked = (props: MultipleUsersStackedProps) => {
103
97
  return (
104
98
  <Avatar
105
99
  {...userObject}
106
- className="pb_multiple_users_stacked_item fourth_item quadruple_bubble"
100
+ className="pb_multiple_users_stacked_item fourth_item"
107
101
  dark={dark}
108
102
  key={index}
109
- size="md"
103
+ size="xs"
110
104
  />
111
105
  )
112
106
  })