playbook_ui 14.9.0.pre.alpha.play1703errorstatealignment5060 → 14.9.0.pre.alpha.play1742globalheightfixes4766

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/CollapsibleTrail.tsx +6 -1
  3. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +0 -8
  4. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +0 -1
  5. data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +2 -4
  6. data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +3 -5
  7. data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +0 -8
  8. data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +0 -2
  9. data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.html.erb +0 -8
  10. data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.rb +0 -2
  11. data/app/pb_kits/playbook/pb_avatar/_avatar.scss +2 -0
  12. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom.jsx +49 -53
  13. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom_rails.html.erb +36 -29
  14. data/app/pb_kits/playbook/pb_body/_body.scss +13 -14
  15. data/app/pb_kits/playbook/pb_body/_body_mixins.scss +16 -22
  16. data/app/pb_kits/playbook/pb_bread_crumbs/docs/_bread_crumbs_default.jsx +0 -6
  17. data/app/pb_kits/playbook/pb_caption/_caption_mixin.scss +1 -2
  18. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +1 -1
  19. data/app/pb_kits/playbook/pb_collapsible/_collapsible.tsx +4 -9
  20. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleContent.tsx +2 -2
  21. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleMain.tsx +2 -2
  22. data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +0 -5
  23. data/app/pb_kits/playbook/pb_file_upload/_file_upload.tsx +2 -7
  24. data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +2 -8
  25. data/app/pb_kits/playbook/pb_form_group/_form_group.scss +2 -11
  26. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.tsx +1 -17
  27. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis.html.erb +1 -17
  28. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis.jsx +0 -15
  29. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis.md +1 -2
  30. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +1 -15
  31. data/app/pb_kits/playbook/pb_link/_link.scss +3 -3
  32. data/app/pb_kits/playbook/pb_nav/_bold_mixin.scss +1 -11
  33. data/app/pb_kits/playbook/pb_nav/_collapsible_nav.scss +2 -16
  34. data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +1 -1
  35. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +4 -4
  36. data/app/pb_kits/playbook/pb_selectable_card/selectable_card.html.erb +1 -1
  37. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_height_width.jsx +0 -2
  38. data/app/pb_kits/playbook/pb_skeleton_loading/docs/example.yml +1 -2
  39. data/app/pb_kits/playbook/pb_skeleton_loading/docs/index.js +0 -2
  40. data/app/pb_kits/playbook/pb_stat_change/_stat_change.tsx +36 -44
  41. data/app/pb_kits/playbook/pb_stat_change/stat_change.html.erb +4 -4
  42. data/app/pb_kits/playbook/pb_table/docs/example.yml +0 -5
  43. data/app/pb_kits/playbook/pb_table/docs/index.js +0 -5
  44. data/app/pb_kits/playbook/pb_table/index.ts +26 -100
  45. data/app/pb_kits/playbook/pb_table/styles/_all.scss +1 -2
  46. data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +1 -106
  47. data/app/pb_kits/playbook/pb_table/table.html.erb +1 -1
  48. data/app/pb_kits/playbook/pb_table/table.rb +2 -17
  49. data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +3 -35
  50. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +0 -1
  51. data/app/pb_kits/playbook/pb_text_input/docs/index.js +0 -1
  52. data/app/pb_kits/playbook/pb_text_input/text_input.test.js +2 -139
  53. data/app/pb_kits/playbook/pb_title/_title.scss +5 -6
  54. data/app/pb_kits/playbook/pb_title/_title_mixin.scss +0 -13
  55. data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +46 -115
  56. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_highlight.jsx +2 -9
  57. data/app/pb_kits/playbook/pb_typeahead/typeahead.html.erb +2 -3
  58. data/app/pb_kits/playbook/tokens/_titles.scss +8 -0
  59. data/app/pb_kits/playbook/utilities/_hover.scss +2 -11
  60. data/app/pb_kits/playbook/utilities/globalProps.ts +0 -2
  61. data/app/pb_kits/playbook/utilities/test/globalProps/hover.test.js +0 -15
  62. data/dist/chunks/_typeahead-B8fkIeXA.js +22 -0
  63. data/dist/chunks/_weekday_stacked-DjRTXEi-.js +45 -0
  64. data/dist/chunks/{lib-CuCy3_xO.js → lib-SyD3buPZ.js} +3 -3
  65. data/dist/chunks/{pb_form_validation-D37k10a0.js → pb_form_validation-Dt8UJgrJ.js} +1 -1
  66. data/dist/chunks/vendor.js +1 -1
  67. data/dist/menu.yml +1 -1
  68. data/dist/playbook-doc.js +1 -1
  69. data/dist/playbook-rails-react-bindings.js +1 -1
  70. data/dist/playbook-rails.js +1 -1
  71. data/dist/playbook.css +1 -1
  72. data/lib/playbook/hover.rb +1 -7
  73. data/lib/playbook/version.rb +1 -1
  74. metadata +6 -27
  75. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_collapsible_trail_rails.html.erb +0 -36
  76. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_collapsible_trail_rails.md +0 -1
  77. data/app/pb_kits/playbook/pb_form_group/_error_state_mixin.scss +0 -57
  78. data/app/pb_kits/playbook/pb_home_address_street/none_emphasis.html.erb +0 -32
  79. data/app/pb_kits/playbook/pb_home_address_street/none_emphasis.rb +0 -29
  80. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_filter.jsx +0 -166
  81. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_user.jsx +0 -89
  82. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns.html.erb +0 -95
  83. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.jsx +0 -75
  84. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.md +0 -1
  85. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.jsx +0 -108
  86. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.md +0 -2
  87. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_content.jsx +0 -94
  88. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_content.md +0 -0
  89. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows.jsx +0 -83
  90. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows.md +0 -3
  91. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table.jsx +0 -120
  92. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table.md +0 -1
  93. data/app/pb_kits/playbook/pb_table/styles/_collapsible.scss +0 -35
  94. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_mask.jsx +0 -88
  95. data/app/pb_kits/playbook/pb_text_input/inputMask.ts +0 -64
  96. data/dist/chunks/_typeahead-l1kq1p9m.js +0 -22
  97. data/dist/chunks/_weekday_stacked-DkCMUF58.js +0 -45
@@ -13,7 +13,6 @@ type FileUploadProps = {
13
13
  accept?: string[],
14
14
  className?: string,
15
15
  customMessage?: string,
16
- dark?: boolean,
17
16
  data?: {[key: string]: string | number},
18
17
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
19
18
  acceptedFilesDescription?: string,
@@ -32,7 +31,6 @@ const FileUpload = (props: FileUploadProps): React.ReactElement => {
32
31
  acceptedFilesDescription = '',
33
32
  className,
34
33
  customMessage,
35
- dark = false,
36
34
  data = {},
37
35
  htmlOptions = {},
38
36
  maxSize,
@@ -96,12 +94,9 @@ const FileUpload = (props: FileUploadProps): React.ReactElement => {
96
94
  {...htmlProps}
97
95
  {...getRootProps()}
98
96
  >
99
- <Card dark={dark}>
97
+ <Card>
100
98
  <input {...getInputProps()} />
101
- <Body
102
- color="light"
103
- dark={dark}
104
- >
99
+ <Body color="light">
105
100
  {isDragActive ?
106
101
  <p>{'Drop the files here ...'}</p>
107
102
  :
@@ -5,17 +5,11 @@
5
5
  id: object.id,
6
6
  **combined_html_options) do %>
7
7
  <%= pb_rails("form_group", props: {cursor: "pointer", full_width: object.full_width}) do %>
8
- <label
9
- for="upload-<%= object.id %>"
10
- class="pb_button_kit_secondary_inline_enabled <%= 'dark' if object.dark %>"
11
- >
12
- <%= "#{object.label}" %>
13
- </label>
8
+ <label for="upload-<%= object.id %>" class="pb_button_kit_secondary_inline_enabled"><%= "#{object.label}" %></label>
14
9
  <%= pb_rails("text_input", props: {
15
10
  type: "file",
16
- dark: object.dark,
17
11
  input_options: {
18
- id: "upload-#{object.id}",
12
+ id: "upload-#{object.id}",
19
13
  classname: "cursor_pointer",
20
14
  }.merge(object.input_options)
21
15
  }) %>
@@ -1,6 +1,3 @@
1
- @import "../tokens/spacing";
2
- @import "./error_state_mixin";
3
-
4
1
  [class^=pb_form_group_kit] {
5
2
  display: inline-flex;
6
3
  flex-direction: row;
@@ -15,12 +12,6 @@
15
12
  }
16
13
  }
17
14
 
18
- @include error-state-flex-start-selectors;
19
- @include error-state-center-selectors;
20
- @include error-state-flex-end-selectors;
21
- @include error-state-left-side-select-kit;
22
- @include error-state-right-side-select-kit;
23
-
24
15
  & [class^=pb_text_input_kit] .text_input_wrapper,
25
16
  & [class^=pb_date_picker_kit] .input_wrapper,
26
17
  & [class^=pb_select] {
@@ -36,7 +27,7 @@
36
27
  border-bottom-right-radius: 0;
37
28
  border-top-right-radius: 0;
38
29
  border-right-width: 0;
39
-
30
+
40
31
  &:focus {
41
32
  outline: $primary solid 1px;
42
33
  outline-offset: -1px;
@@ -159,7 +150,7 @@
159
150
  & > [class^=pb_selectable_card_kit] input[type="checkbox"]:not(:checked) ~ label, [class^=pb_selectable_card_kit] input[type="radio"]:not(:checked) ~ label {
160
151
  &:hover {
161
152
  border-right-color: $slate;
162
- }
153
+ }
163
154
  }
164
155
 
165
156
  & > [class^=pb_selectable_card_kit]:not(:first-child) label {
@@ -18,7 +18,7 @@ type HomeAddressStreetProps = {
18
18
  className?: string,
19
19
  data?: { [key: string]: string },
20
20
  dark?: boolean,
21
- emphasis: "street" | "city" | "none",
21
+ emphasis: "street" | "city",
22
22
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
23
23
  homeId: string,
24
24
  houseStyle: string,
@@ -129,22 +129,6 @@ const HomeAddressStreet = (props: HomeAddressStreetProps): React.ReactElement =>
129
129
  </div>
130
130
  </div>
131
131
  }
132
- {emphasis == 'none' &&
133
- <div>
134
- <Body dark={dark}>
135
- {joinPresent([titleize(address), houseStyle], ' · ')}
136
- </Body>
137
- <Body dark={dark}>{titleize(addressCont)}</Body>
138
- <div>
139
- <Body
140
- color="light"
141
- dark={dark}
142
- >
143
- {`${titleize(city)}, ${state} ${zipcode}`}
144
- </Body>
145
- </div>
146
- </div>
147
- }
148
132
  {homeId &&
149
133
  <Hashtag
150
134
  classname="home-hashtag"
@@ -24,20 +24,4 @@
24
24
  state: "PA",
25
25
  zipcode: "19382",
26
26
  territory: "PHL",
27
- }) %>
28
-
29
- <br>
30
- <br>
31
-
32
- <%= pb_rails("home_address_street", props: {
33
- address: "70 Prospect Ave",
34
- address_cont: "Apt M18",
35
- city: "West Chester",
36
- emphasis: "none",
37
- home_id: 8250263,
38
- home_url: "https://powerhrg.com/",
39
- house_style: "Colonial",
40
- state: "PA",
41
- zipcode: "19382",
42
- territory: "PHL",
43
- }) %>
27
+ }) %>
@@ -32,21 +32,6 @@ const HomeAddressStreetEmphasis = (props) => {
32
32
  zipcode="19382"
33
33
  {...props}
34
34
  />
35
- <br />
36
- <br />
37
- <HomeAddressStreet
38
- address="70 Prospect Ave"
39
- addressCont="Apt M18"
40
- city="West Chester"
41
- emphasis="none"
42
- homeId="8250263"
43
- homeUrl="https://powerhrg.com/"
44
- houseStyle="Colonial"
45
- state="PA"
46
- territory="PHL"
47
- zipcode="19382"
48
- {...props}
49
- />
50
35
  </div>
51
36
  )
52
37
  }
@@ -1,3 +1,2 @@
1
1
  Emphasis on street happens by default. (no prop needed)
2
- Emphasis on "city" makes the city emphasized, rather than the street.
3
- Adding "none" to emphasis prop will provide no emphasis.
2
+ Emphasis on "city" makes the city emphasized, rather than the street.
@@ -7,7 +7,7 @@ module Playbook
7
7
  prop :address_cont
8
8
  prop :city
9
9
  prop :emphasis, type: Playbook::Props::Enum,
10
- values: %w[street city none],
10
+ values: %w[street city],
11
11
  default: "street"
12
12
  prop :home_id, type: Playbook::Props::Number
13
13
  prop :home_url
@@ -77,20 +77,6 @@ module Playbook
77
77
  }
78
78
  end
79
79
 
80
- def none_emphasis_props
81
- {
82
- address_house_style: address_house_style,
83
- address_house_style2: address_house_style2,
84
- city_state_zip: city_state_zip,
85
- dark: dark,
86
- home_id: home_id,
87
- home_url: home_url,
88
- target: target_option,
89
- new_window: new_window,
90
- territory: territory,
91
- }
92
- end
93
-
94
80
  def target_option
95
81
  if target && home_url
96
82
  target
@@ -17,7 +17,7 @@
17
17
  outline-offset: 2px;
18
18
  }
19
19
  &:visited {
20
- color: darken($primary_action, 10%);
20
+ color: $data_3;
21
21
  }
22
22
  &.dark {
23
23
  @include pb_link($active_dark);
@@ -34,7 +34,7 @@
34
34
  }
35
35
 
36
36
  &:visited {
37
- color: darken($primary_action, 10%);
37
+ color: $data_3;
38
38
  }
39
39
  }
40
40
  }
@@ -48,7 +48,7 @@
48
48
  }
49
49
 
50
50
  &:visited {
51
- color: darken($primary_action, 10%);
51
+ color: $data_3;
52
52
  }
53
53
  }
54
54
  }
@@ -19,16 +19,6 @@
19
19
  font-weight: $bolder;
20
20
  }
21
21
  }
22
- }
23
- }
24
-
25
- .dark & {
26
- [class*=pb_nav_list_kit_item][class*=pb_nav_list_item] {
27
- &[class*=_link] {
28
- &[class*=_active] {
29
- box-shadow: 0 2px 10px 0 $shadow_dark;
30
- }
31
- }
32
- }
22
+ }
33
23
  }
34
24
  }
@@ -223,7 +223,6 @@
223
223
  }
224
224
  }
225
225
  [class*="pb_collapsible_nav_item"][class*="pb_nav_list_item_link_collapsible"][class*="pb_nav_list_kit_item"] {
226
- box-shadow: unset !important;
227
226
  .pb_nav_list_item_text_collapsible {
228
227
  color: $white !important;
229
228
  }
@@ -241,17 +240,11 @@
241
240
 
242
241
  .pb_collapsible_main_kit:hover {
243
242
  background-color: mix($white, $card_dark, 20%);
244
- .pb_nav_list_item_text_collapsible {
245
- color: $white !important;
246
- }
247
- }
248
-
249
- .pb_collapsible_main_kit {
243
+ .pb_nav_list_item_text_collapsible,
250
244
  svg {
251
- color: $text_dk_default !important;
245
+ color: $white !important;
252
246
  }
253
247
  }
254
-
255
248
  .icon_wrapper:hover {
256
249
  background-color: mix($white, $card_dark, 40%);
257
250
  }
@@ -263,13 +256,6 @@
263
256
  }
264
257
  }
265
258
  }
266
-
267
- &[class*="_active"] {
268
- > .pb_collapsible_main_kit {
269
- background-color: $primary;
270
- box-shadow: 0 2px 10px 0 $shadow_dark;
271
- }
272
- }
273
259
  }
274
260
  }
275
261
  }
@@ -115,7 +115,7 @@ $selector: ".pb_nav_list";
115
115
  }
116
116
  [class*="_item_text"],
117
117
  [class*="_item_icon"] {
118
- color: $text_dk_light !important;
118
+ color: $text_dk_lighter !important;
119
119
  }
120
120
  &[class*="_link"] {
121
121
  &:hover {
@@ -151,7 +151,7 @@ $pb_selectable_paddings: (
151
151
  input[type="radio"] {
152
152
  &:checked ~ label {
153
153
  border-width: $pb_card_border_width;
154
- outline: 1px solid $primary_action_dark;
154
+ outline: 1px solid $primary;
155
155
  }
156
156
  }
157
157
  }
@@ -161,11 +161,11 @@ $pb_selectable_paddings: (
161
161
  color: $white;
162
162
  > label {
163
163
  @include pb_card_dark;
164
- background: $bg_dark_card;
164
+ background: transparent;
165
165
 
166
166
  .pb_selectable_card_circle {
167
167
  border-color: $bg_dark;
168
- background: $primary_action_dark;
168
+ background: $primary-action;
169
169
  }
170
170
  }
171
171
 
@@ -173,7 +173,7 @@ $pb_selectable_paddings: (
173
173
  input[type="radio"] {
174
174
  &:checked ~ label {
175
175
  @include pb_card_selected_dark;
176
- background: $bg_dark_card;
176
+ background: transparent;
177
177
  }
178
178
  }
179
179
 
@@ -35,7 +35,7 @@
35
35
  <% end %>
36
36
  <% else %>
37
37
  <% if content.nil? %>
38
- <%= pb_rails("body", props: { text: object.text, dark: object.dark }) %>
38
+ <%= pb_rails("body", props: { text: object.text }) %>
39
39
  <% else %>
40
40
  <%= content %>
41
41
  <% end %>
@@ -20,7 +20,6 @@ const SkeletonLoadingHeightWidth = (props) => (
20
20
  <Card htmlOptions={{ style: { height: '200px', width: '100%' }}}
21
21
  marginBottom="md"
22
22
  padding="none"
23
- {...props}
24
23
  >
25
24
  <SkeletonLoading
26
25
  borderRadius="md"
@@ -32,7 +31,6 @@ const SkeletonLoadingHeightWidth = (props) => (
32
31
  </Card>
33
32
  <Card htmlOptions={{ style: { height: '200px', width: '100%' }}}
34
33
  padding="none"
35
- {...props}
36
34
  >
37
35
  <SkeletonLoading
38
36
  borderRadius="md"
@@ -10,5 +10,4 @@ examples:
10
10
  - skeleton_loading_layout: Layout
11
11
  - skeleton_loading_border_radius: Border Radius
12
12
  - skeleton_loading_height_width: Height & Width
13
- - skeleton_loading_user: User Component Example
14
- - skeleton_loading_filter: Filter Component Example
13
+
@@ -3,5 +3,3 @@ export { default as SkeletonLoadingColor } from './_skeleton_loading_color.jsx'
3
3
  export { default as SkeletonLoadingLayout } from './_skeleton_loading_layout.jsx'
4
4
  export { default as SkeletonLoadingBorderRadius } from './_skeleton_loading_border_radius.jsx'
5
5
  export { default as SkeletonLoadingHeightWidth } from './_skeleton_loading_height_width.jsx'
6
- export { default as SkeletonLoadingUser } from './_skeleton_loading_user.jsx'
7
- export { default as SkeletonLoadingFilter } from './_skeleton_loading_filter.jsx'
@@ -1,46 +1,40 @@
1
- import React from "react"
2
- import classnames from "classnames"
1
+ import React from 'react'
2
+ import classnames from 'classnames'
3
3
 
4
- import { buildCss, buildHtmlProps } from "../utilities/props"
5
- import { globalProps } from "../utilities/globalProps"
4
+ import { buildCss, buildHtmlProps } from '../utilities/props'
5
+ import { globalProps } from '../utilities/globalProps'
6
6
 
7
- import Body from "../pb_body/_body"
8
- import Icon from "../pb_icon/_icon"
7
+ import Body from '../pb_body/_body'
8
+ import Icon from '../pb_icon/_icon'
9
9
 
10
- const statusMap: {
11
- neutral: "neutral"
12
- decrease: "negative"
13
- increase: "positive"
14
- } = {
15
- increase: "positive",
16
- decrease: "negative",
17
- neutral: "neutral",
10
+ const statusMap: {neutral: 'neutral', decrease: 'negative' ,increase: 'positive'} = {
11
+ increase: 'positive',
12
+ decrease: 'negative',
13
+ neutral: 'neutral',
18
14
  }
19
15
 
20
16
  const iconMap = {
21
- increase: "arrow-up",
22
- decrease: "arrow-down",
17
+ increase: 'arrow-up',
18
+ decrease: 'arrow-down',
23
19
  }
24
20
 
25
21
  type StatChangeProps = {
26
- change?: "increase" | "decrease" | "neutral"
27
- className?: string
28
- dark?: boolean
29
- icon?: string
30
- id?: string
31
- htmlOptions?: { [key: string]: string | number | boolean | (() => void) }
32
- value?: string | number
22
+ change?: 'increase' | 'decrease' | 'neutral',
23
+ className?: string,
24
+ icon?: string,
25
+ htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
26
+ id?: string,
27
+ value?: string | number,
33
28
  }
34
29
 
35
30
  const StatChange = (props: StatChangeProps): React.ReactElement => {
36
- const {
37
- change = "neutral",
38
- className,
39
- dark = false,
31
+ const {
32
+ change = 'neutral',
33
+ className,
40
34
  htmlOptions = {},
41
- icon,
42
- id,
43
- value,
35
+ icon,
36
+ id,
37
+ value
44
38
  } = props
45
39
 
46
40
  const status = statusMap[change as keyof typeof statusMap]
@@ -53,32 +47,30 @@ const StatChange = (props: StatChangeProps): React.ReactElement => {
53
47
 
54
48
  return (
55
49
  <>
56
- {value && (
50
+ {value &&
57
51
  <div
58
52
  className={classnames(
59
- buildCss("pb_stat_change_kit", status),
60
- globalProps(props),
61
- className
62
- )}
53
+ buildCss('pb_stat_change_kit', status),
54
+ globalProps(props),
55
+ className
56
+ )}
63
57
  id={id}
64
58
  {...htmlProps}
65
59
  >
66
- <Body dark={dark}
67
- status={status}
68
- >
69
- {" "}
70
- {returnedIcon && (
60
+ <Body status={status}>
61
+ {returnedIcon &&
71
62
  <>
72
- <Icon dark={dark}
63
+ <Icon
73
64
  fixed_width
74
65
  icon={returnedIcon}
75
- />{" "}
66
+ />
67
+ {' '}
76
68
  </>
77
- )}
69
+ }
78
70
  {`${value}%`}
79
71
  </Body>
80
72
  </div>
81
- )}
73
+ }
82
74
  </>
83
75
  )
84
76
  }
@@ -1,6 +1,6 @@
1
1
  <%= pb_content_tag do %>
2
- <%= pb_rails("body", props: { status: object.status, dark: object.dark }) do %>
3
- <%= pb_rails("icon", props: { fixed_width: true, icon: object.returned_icon, dark: object.dark }) if object.returned_icon %>
4
- <%= "#{object.value}%" if object.value %>
5
- <% end %>
2
+ <%= pb_rails("body", props: { status: object.status }) do %>
3
+ <%= pb_rails("icon", props: { fixed_width: true, icon: object.returned_icon }) if object.returned_icon %>
4
+ <%= "#{object.value}%" if object.value %>
5
+ <% end %>
6
6
  <% end %>
@@ -55,8 +55,3 @@ examples:
55
55
  - table_with_subcomponents: Table with Sub Components (Table Elements)
56
56
  - table_with_subcomponents_as_divs: Table with Sub Components (Divs)
57
57
  - table_outer_padding: Outer Padding
58
- - table_with_collapsible: Table with Collapsible
59
- - table_with_collapsible_with_custom_click: Table with Collapsible with Custom Click
60
- - table_with_collapsible_with_custom_content: Table with Collapsible with Custom Content
61
- - table_with_collapsible_with_nested_rows: Table with Collapsible with Nested Rows
62
- - table_with_collapsible_with_nested_table: Table with Collapsible with Nested Table
@@ -26,8 +26,3 @@ export { default as TableWithSubcomponents } from './_table_with_subcomponents.j
26
26
  export { default as TableWithSubcomponentsAsDivs } from './_table_with_subcomponents_as_divs.jsx'
27
27
  export { default as TableOuterPadding } from './_table_outer_padding.jsx'
28
28
  export { default as TableStickyLeftColumns } from './_table_sticky_left_columns.jsx'
29
- export { default as TableWithCollapsible } from './_table_with_collapsible.jsx'
30
- export { default as TableWithCollapsibleWithCustomContent } from './_table_with_collapsible_with_custom_content.jsx'
31
- export { default as TableWithCollapsibleWithNestedTable } from './_table_with_collapsible_with_nested_table.jsx'
32
- export { default as TableWithCollapsibleWithNestedRows } from './_table_with_collapsible_with_nested_rows.jsx'
33
- export { default as TableWithCollapsibleWithCustomClick } from './_table_with_collapsible_with_custom_click.jsx'
@@ -1,106 +1,32 @@
1
1
  import PbEnhancedElement from '../pb_enhanced_element'
2
2
 
3
3
  export default class PbTable extends PbEnhancedElement {
4
- private stickyLeftColumns: string[] = [];
5
- private handleStickyColumnsRef: () => void;
6
-
7
- static get selector(): string {
8
- return '.table-responsive-collapse'
9
- }
10
-
11
- connect(): void {
12
- const tables = document.querySelectorAll('.table-responsive-collapse');
13
- // Each Table
14
- [].forEach.call(tables, (table: HTMLTableElement) => {
15
- // Header Titles
16
- const headers: string[] = [];
17
- [].forEach.call(table.querySelectorAll('th'), (header: HTMLTableCellElement) => {
18
- const colSpan = header.colSpan
19
- for (let i = 0; i < colSpan; i++) {
20
- headers.push(header.textContent.replace(/\r?\n|\r/, ''));
21
- }
22
- });
23
- // for each row in tbody
24
- [].forEach.call(table.querySelectorAll('tbody tr'), (row: HTMLTableRowElement) => {
25
- // for each cell
26
- [].forEach.call(row.cells, (cell: HTMLTableCellElement, headerIndex: number) => {
27
- // apply the attribute
28
- cell.setAttribute('data-title', headers[headerIndex])
29
- })
30
- })
31
- });
32
-
33
- // New sticky columns logic
34
- this.initStickyColumns();
35
- }
36
-
37
- private initStickyColumns(): void {
38
- // Find tables with sticky-left-column class
39
- const tables = document.querySelectorAll('.sticky-left-column');
40
-
41
- tables.forEach((table) => {
42
- // Extract sticky left column IDs by looking at the component's class
43
- const classList = Array.from(table.classList);
44
-
45
- // Look for classes in the format sticky-left-column-{ids}
46
- const stickyColumnClass = classList.find(cls => cls.startsWith('sticky-columns-'));
47
- if (stickyColumnClass) {
48
- // Extract the IDs from the class name
49
- this.stickyLeftColumns = stickyColumnClass
50
- .replace('sticky-columns-', '')
51
- .split('-');
52
-
53
- if (this.stickyLeftColumns.length > 0) {
54
- this.handleStickyColumnsRef = this.handleStickyColumns.bind(this);
55
- this.handleStickyColumns();
56
- window.addEventListener('resize', this.handleStickyColumnsRef);
57
- }
4
+ static get selector(): string {
5
+ return '.table-responsive-collapse'
6
+ }
7
+
8
+ connect(): void {
9
+ const tables = document.querySelectorAll('.table-responsive-collapse');
10
+
11
+ // Each Table
12
+ [].forEach.call(tables, (table: HTMLTableElement) => {
13
+ // Header Titles
14
+ const headers: string[] = [];
15
+ [].forEach.call(table.querySelectorAll('th'), (header: HTMLTableCellElement) => {
16
+ const colSpan = header.colSpan
17
+ for (let i = 0; i < colSpan; i++) {
18
+ headers.push(header.textContent.replace(/\r?\n|\r/, ''));
58
19
  }
59
20
  });
60
- }
61
-
62
- private handleStickyColumns(): void {
63
- let accumulatedWidth = 0;
64
21
 
65
- this.stickyLeftColumns.forEach((colId, index) => {
66
- const isLastColumn = index === this.stickyLeftColumns.length - 1;
67
- const header = document.querySelector(`th[id="${colId}"]`);
68
- const cells = document.querySelectorAll(`td[id="${colId}"]`);
69
-
70
- if (header) {
71
- header.classList.add('sticky');
72
- (header as HTMLElement).style.left = `${accumulatedWidth}px`;
73
-
74
- if (!isLastColumn) {
75
- header.classList.add('with-border');
76
- header.classList.remove('sticky-shadow');
77
- } else {
78
- header.classList.remove('with-border');
79
- header.classList.add('sticky-shadow');
80
- }
81
-
82
- accumulatedWidth += (header as HTMLElement).offsetWidth;
83
- }
84
-
85
- cells.forEach((cell) => {
86
- cell.classList.add('sticky');
87
- (cell as HTMLElement).style.left = `${accumulatedWidth - (header as HTMLElement).offsetWidth}px`;
88
-
89
- if (!isLastColumn) {
90
- cell.classList.add('with-border');
91
- cell.classList.remove('sticky-shadow');
92
- } else {
93
- cell.classList.remove('with-border');
94
- cell.classList.add('sticky-shadow');
95
- }
96
- });
97
- });
98
- }
99
-
100
- // Cleanup method to remove event listener
101
- disconnect(): void {
102
- if (this.handleStickyColumnsRef) {
103
- window.removeEventListener('resize', this.handleStickyColumnsRef);
104
- }
105
- }
106
- }
22
+ // for each row in tbody
23
+ [].forEach.call(table.querySelectorAll('tbody tr'), (row: HTMLTableRowElement) => {
24
+ // for each cell
25
+ [].forEach.call(row.cells, (cell: HTMLTableCellElement, headerIndex: number) => {
26
+ // apply the attribute
27
+ cell.setAttribute('data-title', headers[headerIndex])
28
+ })
29
+ })
30
+ })
31
+ }
32
+ }
@@ -21,5 +21,4 @@
21
21
  @import "striped";
22
22
  @import "outer_padding";
23
23
  @import "sticky_columns";
24
- @import "scroll";
25
- @import "collapsible";
24
+ @import "scroll";