playbook_ui 14.17.0.pre.alpha.PLAY2040removeunnecessarystickytableclasses7300 → 14.17.0.pre.alpha.PLAY20267223

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 (77) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns.jsx +1 -1
  3. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.html.erb +1 -1
  4. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.jsx +2 -1
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_rails.md +2 -2
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_react.md +1 -1
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_rails.md +2 -6
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_react.md +2 -6
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +2 -5
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +1 -3
  11. data/app/pb_kits/playbook/pb_background/_background.scss +0 -26
  12. data/app/pb_kits/playbook/pb_background/_background.tsx +3 -5
  13. data/app/pb_kits/playbook/pb_background/background.test.js +0 -5
  14. data/app/pb_kits/playbook/pb_background/docs/example.yml +0 -1
  15. data/app/pb_kits/playbook/pb_background/docs/index.js +0 -1
  16. data/app/pb_kits/playbook/pb_copy_button/_copy_button.tsx +45 -19
  17. data/app/pb_kits/playbook/pb_copy_button/docs/example.yml +0 -1
  18. data/app/pb_kits/playbook/pb_copy_button/docs/index.js +1 -2
  19. data/app/pb_kits/playbook/pb_form_group/_form_group.scss +2 -18
  20. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_select.html.erb +5 -15
  21. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_select.jsx +5 -20
  22. data/app/pb_kits/playbook/pb_layout/_layout.scss +1 -70
  23. data/app/pb_kits/playbook/pb_layout/_layout.tsx +2 -29
  24. data/app/pb_kits/playbook/pb_layout/docs/_layout_bracket.jsx +118 -322
  25. data/app/pb_kits/playbook/pb_layout/docs/_layout_bracket.md +1 -1
  26. data/app/pb_kits/playbook/pb_layout/subcomponents/_game.tsx +43 -74
  27. data/app/pb_kits/playbook/pb_layout/subcomponents/_round.tsx +4 -21
  28. data/app/pb_kits/playbook/pb_overlay/_overlay.scss +22 -49
  29. data/app/pb_kits/playbook/pb_overlay/_overlay.tsx +4 -15
  30. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_default.md +7 -1
  31. data/app/pb_kits/playbook/pb_overlay/docs/example.yml +0 -3
  32. data/app/pb_kits/playbook/pb_overlay/docs/index.js +0 -3
  33. data/app/pb_kits/playbook/pb_overlay/overlay.test.jsx +1 -39
  34. data/app/pb_kits/playbook/pb_table/_table.tsx +2 -2
  35. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows.md +1 -3
  36. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows_rails.md +1 -3
  37. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table.md +1 -3
  38. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table_rails.md +1 -3
  39. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_floating_react.md +1 -1
  40. data/app/pb_kits/playbook/pb_table/docs/example.yml +0 -2
  41. data/app/pb_kits/playbook/pb_table/styles/_collapsible.scss +1 -1
  42. data/app/pb_kits/playbook/pb_table/table.rb +1 -13
  43. data/app/pb_kits/playbook/pb_table/table_header.rb +1 -13
  44. data/dist/chunks/{_typeahead-CHd0V9EL.js → _typeahead-HqfDnjRe.js} +3 -3
  45. data/dist/chunks/_weekday_stacked-CPNaHtxQ.js +45 -0
  46. data/dist/chunks/{lib-BV_AF_eh.js → lib-BGzBzFZX.js} +3 -3
  47. data/dist/chunks/{pb_form_validation-nsvkJU2J.js → pb_form_validation-BvNy9Bd6.js} +1 -1
  48. data/dist/chunks/vendor.js +1 -1
  49. data/dist/playbook-doc.js +1 -1
  50. data/dist/playbook-rails-react-bindings.js +1 -1
  51. data/dist/playbook-rails.js +1 -1
  52. data/dist/playbook.css +1 -1
  53. data/lib/playbook/version.rb +1 -1
  54. metadata +6 -28
  55. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns_and_header.jsx +0 -64
  56. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns_and_header.md +0 -8
  57. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header.jsx +0 -55
  58. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header.md +0 -3
  59. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header_rails.html.erb +0 -33
  60. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header_rails.md +0 -3
  61. data/app/pb_kits/playbook/pb_background/docs/_background_overlay.jsx +0 -35
  62. data/app/pb_kits/playbook/pb_background/docs/_background_overlay.md +0 -1
  63. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_hook.jsx +0 -54
  64. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_hook.md +0 -3
  65. data/app/pb_kits/playbook/pb_copy_button/usePBCopy.ts +0 -45
  66. data/app/pb_kits/playbook/pb_layout/subcomponents/_participant.tsx +0 -79
  67. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_color.jsx +0 -63
  68. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_color.md +0 -3
  69. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_gradient_opacity.jsx +0 -39
  70. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_gradient_opacity.md +0 -1
  71. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_layout.jsx +0 -40
  72. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_layout.md +0 -5
  73. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless.html.erb +0 -34
  74. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless_rails.md +0 -1
  75. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_floating.html.erb +0 -36
  76. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_floating_rails.md +0 -1
  77. data/dist/chunks/_weekday_stacked-CdE0nXPu.js +0 -45
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Playbook
4
4
  PREVIOUS_VERSION = "14.17.0"
5
- VERSION = "14.17.0.pre.alpha.PLAY2040removeunnecessarystickytableclasses7300"
5
+ VERSION = "14.17.0.pre.alpha.PLAY20267223"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 14.17.0.pre.alpha.PLAY2040removeunnecessarystickytableclasses7300
4
+ version: 14.17.0.pre.alpha.PLAY20267223
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-04-21 00:00:00.000000000 Z
12
+ date: 2025-04-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -346,12 +346,6 @@ files:
346
346
  - app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_control.md
347
347
  - app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns.jsx
348
348
  - app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns.md
349
- - app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns_and_header.jsx
350
- - app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns_and_header.md
351
- - app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header.jsx
352
- - app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header.md
353
- - app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header_rails.html.erb
354
- - app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header_rails.md
355
349
  - app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_subrow_headers.jsx
356
350
  - app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_subrow_headers.md
357
351
  - app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_options.jsx
@@ -430,8 +424,6 @@ files:
430
424
  - app/pb_kits/playbook/pb_background/docs/_background_image.md
431
425
  - app/pb_kits/playbook/pb_background/docs/_background_light.html.erb
432
426
  - app/pb_kits/playbook/pb_background/docs/_background_light.jsx
433
- - app/pb_kits/playbook/pb_background/docs/_background_overlay.jsx
434
- - app/pb_kits/playbook/pb_background/docs/_background_overlay.md
435
427
  - app/pb_kits/playbook/pb_background/docs/_background_size.html.erb
436
428
  - app/pb_kits/playbook/pb_background/docs/_background_size.jsx
437
429
  - app/pb_kits/playbook/pb_background/docs/_background_size.md
@@ -833,12 +825,9 @@ files:
833
825
  - app/pb_kits/playbook/pb_copy_button/docs/_copy_button_from.html.erb
834
826
  - app/pb_kits/playbook/pb_copy_button/docs/_copy_button_from.jsx
835
827
  - app/pb_kits/playbook/pb_copy_button/docs/_copy_button_from.md
836
- - app/pb_kits/playbook/pb_copy_button/docs/_copy_button_hook.jsx
837
- - app/pb_kits/playbook/pb_copy_button/docs/_copy_button_hook.md
838
828
  - app/pb_kits/playbook/pb_copy_button/docs/example.yml
839
829
  - app/pb_kits/playbook/pb_copy_button/docs/index.js
840
830
  - app/pb_kits/playbook/pb_copy_button/index.js
841
- - app/pb_kits/playbook/pb_copy_button/usePBCopy.ts
842
831
  - app/pb_kits/playbook/pb_currency/_currency.scss
843
832
  - app/pb_kits/playbook/pb_currency/_currency.tsx
844
833
  - app/pb_kits/playbook/pb_currency/currency.html.erb
@@ -1849,7 +1838,6 @@ files:
1849
1838
  - app/pb_kits/playbook/pb_layout/sidebar.html.erb
1850
1839
  - app/pb_kits/playbook/pb_layout/sidebar.rb
1851
1840
  - app/pb_kits/playbook/pb_layout/subcomponents/_game.tsx
1852
- - app/pb_kits/playbook/pb_layout/subcomponents/_participant.tsx
1853
1841
  - app/pb_kits/playbook/pb_layout/subcomponents/_round.tsx
1854
1842
  - app/pb_kits/playbook/pb_legend/_legend.scss
1855
1843
  - app/pb_kits/playbook/pb_legend/_legend.tsx
@@ -2208,19 +2196,13 @@ files:
2208
2196
  - app/pb_kits/playbook/pb_online_status/online_status.test.js
2209
2197
  - app/pb_kits/playbook/pb_overlay/_overlay.scss
2210
2198
  - app/pb_kits/playbook/pb_overlay/_overlay.tsx
2211
- - app/pb_kits/playbook/pb_overlay/docs/_overlay_color.jsx
2212
- - app/pb_kits/playbook/pb_overlay/docs/_overlay_color.md
2213
2199
  - app/pb_kits/playbook/pb_overlay/docs/_overlay_default.html.erb
2214
2200
  - app/pb_kits/playbook/pb_overlay/docs/_overlay_default.jsx
2215
2201
  - app/pb_kits/playbook/pb_overlay/docs/_overlay_default.md
2216
- - app/pb_kits/playbook/pb_overlay/docs/_overlay_gradient_opacity.jsx
2217
- - app/pb_kits/playbook/pb_overlay/docs/_overlay_gradient_opacity.md
2218
2202
  - app/pb_kits/playbook/pb_overlay/docs/_overlay_hide_scroll_bar.html.erb
2219
2203
  - app/pb_kits/playbook/pb_overlay/docs/_overlay_hide_scroll_bar.jsx
2220
2204
  - app/pb_kits/playbook/pb_overlay/docs/_overlay_hide_scroll_bar_rails.md
2221
2205
  - app/pb_kits/playbook/pb_overlay/docs/_overlay_hide_scroll_bar_react.md
2222
- - app/pb_kits/playbook/pb_overlay/docs/_overlay_layout.jsx
2223
- - app/pb_kits/playbook/pb_overlay/docs/_overlay_layout.md
2224
2206
  - app/pb_kits/playbook/pb_overlay/docs/_overlay_multi_directional.html.erb
2225
2207
  - app/pb_kits/playbook/pb_overlay/docs/_overlay_multi_directional.jsx
2226
2208
  - app/pb_kits/playbook/pb_overlay/docs/_overlay_multi_directional.md
@@ -2890,13 +2872,9 @@ files:
2890
2872
  - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table.md
2891
2873
  - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table_rails.html.erb
2892
2874
  - app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table_rails.md
2893
- - app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless.html.erb
2894
2875
  - app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless.jsx
2895
- - app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless_rails.md
2896
2876
  - app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless_react.md
2897
- - app/pb_kits/playbook/pb_table/docs/_table_with_header_style_floating.html.erb
2898
2877
  - app/pb_kits/playbook/pb_table/docs/_table_with_header_style_floating.jsx
2899
- - app/pb_kits/playbook/pb_table/docs/_table_with_header_style_floating_rails.md
2900
2878
  - app/pb_kits/playbook/pb_table/docs/_table_with_header_style_floating_react.md
2901
2879
  - app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.html.erb
2902
2880
  - app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.jsx
@@ -3494,11 +3472,11 @@ files:
3494
3472
  - app/pb_kits/playbook/utilities/test/globalProps/truncate.test.js
3495
3473
  - app/pb_kits/playbook/utilities/text.ts
3496
3474
  - app/pb_kits/playbook/utilities/validEmojiChecker.ts
3497
- - dist/chunks/_typeahead-CHd0V9EL.js
3498
- - dist/chunks/_weekday_stacked-CdE0nXPu.js
3475
+ - dist/chunks/_typeahead-HqfDnjRe.js
3476
+ - dist/chunks/_weekday_stacked-CPNaHtxQ.js
3499
3477
  - dist/chunks/lazysizes-B7xYodB-.js
3500
- - dist/chunks/lib-BV_AF_eh.js
3501
- - dist/chunks/pb_form_validation-nsvkJU2J.js
3478
+ - dist/chunks/lib-BGzBzFZX.js
3479
+ - dist/chunks/pb_form_validation-BvNy9Bd6.js
3502
3480
  - dist/chunks/vendor.js
3503
3481
  - dist/menu.yml
3504
3482
  - dist/playbook-doc.js
@@ -1,64 +0,0 @@
1
- import React from "react"
2
- import AdvancedTable from '../../pb_advanced_table/_advanced_table'
3
- import MOCK_DATA from "./advanced_table_mock_data.json"
4
-
5
- const AdvancedTableStickyColumnsAndHeader = (props) => {
6
- const columnDefinitions = [
7
- {
8
- accessor: "year",
9
- label: "Year",
10
- id: "year",
11
- cellAccessors: ["quarter", "month", "day"],
12
- },
13
- {
14
- accessor: "newEnrollments",
15
- label: "New Enrollments",
16
- id: "newEnrollments",
17
- },
18
- {
19
- accessor: "scheduledMeetings",
20
- label: "Scheduled Meetings",
21
- id: "scheduledMeetings",
22
- },
23
- {
24
- accessor: "attendanceRate",
25
- label: "Attendance Rate",
26
- id: "attendanceRate",
27
- },
28
- {
29
- accessor: "completedClasses",
30
- label: "Completed Classes",
31
- id: "completedClasses",
32
- },
33
- {
34
- accessor: "classCompletionRate",
35
- label: "Class Completion Rate",
36
- id: "classCompletionRate",
37
- },
38
- {
39
- accessor: "graduatedStudents",
40
- label: "Graduated Students",
41
- id: "graduatedStudents",
42
- },
43
- ]
44
-
45
- const tableProps = {
46
- sticky: true
47
- }
48
-
49
- return (
50
- <div>
51
- <AdvancedTable
52
- columnDefinitions={columnDefinitions}
53
- maxHeight="xs"
54
- responsive="none"
55
- stickyLeftColumn={["year"]}
56
- tableData={MOCK_DATA}
57
- tableProps={tableProps}
58
- {...props}
59
- />
60
- </div>
61
- )
62
- }
63
-
64
- export default AdvancedTableStickyColumnsAndHeader
@@ -1,8 +0,0 @@
1
- To achieve a sticky header AND sticky columns together, in addition to the `stickyLeftColumn` logic outlined above, you can:
2
-
3
- - Set `sticky: true` via `tableProps`
4
- - Give the AdvancedTable a `maxHeight` using our [Max Height](https://playbook.powerapp.cloud/visual_guidelines/max_height) global prop.
5
-
6
- **NOTE**: This behavior requires a `maxHeight` to work. The header is sticky within the table container, allowing for it to work along with the column stickiness.
7
-
8
- Expand the table above to see this in action.
@@ -1,55 +0,0 @@
1
- import React from "react"
2
- import AdvancedTable from '../../pb_advanced_table/_advanced_table'
3
- import MOCK_DATA from "./advanced_table_mock_data.json"
4
-
5
- const AdvancedTableStickyHeader = (props) => {
6
- const columnDefinitions = [
7
- {
8
- accessor: "year",
9
- label: "Year",
10
- cellAccessors: ["quarter", "month", "day"],
11
- },
12
- {
13
- accessor: "newEnrollments",
14
- label: "New Enrollments",
15
- },
16
- {
17
- accessor: "scheduledMeetings",
18
- label: "Scheduled Meetings",
19
- },
20
- {
21
- accessor: "attendanceRate",
22
- label: "Attendance Rate",
23
- },
24
- {
25
- accessor: "completedClasses",
26
- label: "Completed Classes",
27
- },
28
- {
29
- accessor: "classCompletionRate",
30
- label: "Class Completion Rate",
31
- },
32
- {
33
- accessor: "graduatedStudents",
34
- label: "Graduated Students",
35
- },
36
- ]
37
-
38
- const tableProps = {
39
- sticky: true
40
- }
41
-
42
- return (
43
- <div>
44
- <AdvancedTable
45
- columnDefinitions={columnDefinitions}
46
- responsive="none"
47
- tableData={MOCK_DATA}
48
- tableProps={tableProps}
49
- {...props}
50
- />
51
- </div>
52
- )
53
- }
54
-
55
- export default AdvancedTableStickyHeader
@@ -1,3 +0,0 @@
1
- The `TableProps` prop can also be used to render a sticky header for the Advanced Table.
2
-
3
- This doc example showcases how to set a sticky header for a nonresponsive table (see the `responsive` prop set to "none"). To achieve sticky header AND responsive functionality, see the "Sticky Header for Responsive Table" doc example below.
@@ -1,33 +0,0 @@
1
- <% column_definitions = [
2
- {
3
- accessor: "year",
4
- label: "Year",
5
- cellAccessors: ["quarter", "month", "day"],
6
- },
7
- {
8
- accessor: "newEnrollments",
9
- label: "New Enrollments",
10
- },
11
- {
12
- accessor: "scheduledMeetings",
13
- label: "Scheduled Meetings",
14
- },
15
- {
16
- accessor: "attendanceRate",
17
- label: "Attendance Rate",
18
- },
19
- {
20
- accessor: "completedClasses",
21
- label: "Completed Classes",
22
- },
23
- {
24
- accessor: "classCompletionRate",
25
- label: "Class Completion Rate",
26
- },
27
- {
28
- accessor: "graduatedStudents",
29
- label: "Graduated Students",
30
- }
31
- ] %>
32
-
33
- <%= pb_rails("advanced_table", props: { id: "sticky_header_table", table_data: @table_data, column_definitions: column_definitions, responsive: "none", table_props: { sticky: true }}) %>
@@ -1,3 +0,0 @@
1
- The `table_props` prop can also be used to render a sticky header for the Advanced Table.
2
-
3
- This doc example showcases how to set a sticky header for a nonresponsive table (see the `responsive` prop set to "none"). To achieve sticky header AND responsive functionality, see the "[Sticky Header for Responsive Table](https://playbook.powerapp.cloud/kits/advanced_table/react#sticky-header-for-responsive-table)" doc example below.
@@ -1,35 +0,0 @@
1
- import React from 'react'
2
- import Background from "../../pb_background/_background"
3
- import Flex from "../../pb_flex/_flex"
4
- import FlexItem from "../../pb_flex/_flex_item"
5
- import Title from "../../pb_title/_title"
6
-
7
- const BackgroundOverlay = (props) => {
8
- return (
9
- <Background
10
- alt="colorful background"
11
- backgroundColor="category_21"
12
- className="background lazyload"
13
- imageOverlay="opacity_2"
14
- imageUrl="https://unsplash.it/500/400/?image=633"
15
- {...props}
16
- >
17
- <Flex
18
- orientation="column"
19
- vertical="center"
20
- {...props}
21
- >
22
- <FlexItem>
23
- <Title
24
- dark
25
- padding="lg"
26
- size={1}
27
- text="Background Kit Image"
28
- />
29
- </FlexItem>
30
- </Flex>
31
- </Background>
32
- )
33
- }
34
-
35
- export default BackgroundOverlay
@@ -1 +0,0 @@
1
- An overlay can be added to the background image by setting the `imageOverlay` prop and adding a `backgroundColor`. The `imageOverlay` prop can be set to any opacity ranging from `opacity_1` to `opacity_10`.
@@ -1,54 +0,0 @@
1
- import React, { useEffect, useState } from 'react'
2
- import usePBCopy from '../../pb_copy_button/usePBCopy'
3
- import Body from '../../pb_body/_body'
4
- import Textarea from '../../pb_textarea/_textarea'
5
- import Tooltip from '../../pb_tooltip/_tooltip'
6
-
7
- const CopyButtonHook = ({...props}) => {
8
- // This is how you can use the copy button hook to copy text to the clipboard
9
- // eslint-disable-next-line no-unused-vars
10
- const [copied, copyToClipboard] = usePBCopy({ from: 'hookbody' })
11
- // I added a tooltip so it looks better in the ui
12
- const [showTooltip, setShowTooltip] = useState(false)
13
-
14
- const handleCopy = () => {
15
- copyToClipboard()
16
- setShowTooltip(true)
17
- setTimeout(() => setShowTooltip(false), 1500)
18
- }
19
-
20
- useEffect(() => {
21
- const el = document.getElementById('hookbody')
22
- if (!el) return
23
-
24
- el.addEventListener('click', handleCopy)
25
- return () => {
26
- el.removeEventListener('click', handleCopy)
27
- }
28
- }, [copyToClipboard])
29
-
30
- return (
31
- <div>
32
- <Tooltip
33
- delay={{ close: 1000 }}
34
- forceOpenTooltip={showTooltip}
35
- placement="top"
36
- showTooltip={false}
37
- text="Copied!"
38
- >
39
- <Body
40
- cursor="pointer"
41
- id="hookbody"
42
- text="I'm a custom copy hook! Click this body to copy this text!"
43
- />
44
- </Tooltip>
45
-
46
- <Textarea
47
- {...props}
48
- placeholder="Paste here"
49
- />
50
- </div>
51
- )
52
- }
53
-
54
- export default CopyButtonHook
@@ -1,3 +0,0 @@
1
- We provide a `usePBCopy` hook that you can import to your project. This hook will return a function that you can call to copy the text to the clipboard.
2
-
3
- `usePBCopy({ from: 'your_id' })` will grab the `innerText` from `your_id` element, or `value` if it is an input element.
@@ -1,45 +0,0 @@
1
- import { useState, useRef, useEffect } from 'react'
2
-
3
- type UsePBCopyProps = {
4
- value?: string
5
- from?: string
6
- timeout?: number
7
- }
8
-
9
- export default function usePBCopy({
10
- value = '',
11
- from = '',
12
- timeout = 0,
13
- }: UsePBCopyProps) {
14
- const [copied, setCopied] = useState(false)
15
- const timerRef = useRef<number>()
16
-
17
- const copy = () => {
18
- if (!value && !from) return
19
-
20
- if (value) {
21
- navigator.clipboard.writeText(value)
22
- } else {
23
- const el = document.getElementById(from)
24
- let text = el?.innerText
25
- if (el instanceof HTMLTextAreaElement || el instanceof HTMLInputElement) {
26
- text = el.value
27
- }
28
- if (text) navigator.clipboard.writeText(text)
29
- }
30
-
31
- setCopied(true)
32
- window.clearTimeout(timerRef.current)
33
- timerRef.current = window.setTimeout(() => {
34
- setCopied(false)
35
- }, timeout)
36
- }
37
-
38
- useEffect(() => {
39
- return () => {
40
- window.clearTimeout(timerRef.current)
41
- }
42
- }, [])
43
-
44
- return [copied, copy] as const
45
- }
@@ -1,79 +0,0 @@
1
- import React from 'react'
2
- import classnames from 'classnames'
3
-
4
- import { buildCss } from '../../utilities/props'
5
- import { GlobalProps, globalProps, globalInlineProps } from '../../utilities/globalProps'
6
-
7
- import Avatar from "../../pb_avatar/_avatar";
8
- import Body from "../../pb_body/_body";
9
- import Flex from "../../pb_flex/_flex";
10
- import Badge from "../../pb_badge/_badge";
11
- import Detail from "../../pb_detail/_detail";
12
- import Background from "../../pb_background/_background";
13
-
14
- type LayoutParticipantProps = {
15
- className?: string,
16
- name?: string,
17
- territory?: string,
18
- points?: string,
19
- rank?: string,
20
- avatar?: string,
21
- winner?: boolean,
22
- self?: boolean,
23
- } & GlobalProps
24
-
25
- export const Participant = (props: LayoutParticipantProps) => {
26
- const { className, name = 'To be determined...', territory = '', points, rank, avatar, winner, self, hasLastWinnerAndSelf } = props
27
- const dynamicInlineProps = globalInlineProps(props)
28
- const isLastWinnerAndSelf = hasLastWinnerAndSelf && self && winner
29
- const classes = classnames(buildCss('layout_participant', winner ? 'winner' : '', self ? 'self' : '', isLastWinnerAndSelf ? 'last' : ''), globalProps(props), className)
30
- return (
31
- <Background
32
- backgroundColor={winner ? "success_subtle" : "white"}
33
- className={classes}
34
- padding="xs"
35
- style={dynamicInlineProps}
36
- >
37
- <Flex justify="between">
38
- <Avatar
39
- imageUrl={avatar}
40
- marginRight="sm"
41
- name={name}
42
- size="sm"
43
- />
44
- <Body flexGrow={1}>
45
- <Flex justify="between">
46
- <Body
47
- color={winner && !isLastWinnerAndSelf ? "success" : "default"}
48
- truncate={1}
49
- >
50
- {winner ? <strong>{name}{self ? ' (You)' : ''}</strong> : name + (self && !isLastWinnerAndSelf ? ' (You)' : '')}
51
- </Body>
52
- <Body
53
- color={winner && !isLastWinnerAndSelf ? "success" : "light"}
54
- display="flex"
55
- >
56
- {points && (<>
57
- <strong>{points}</strong>
58
- <Detail
59
- color={winner && !isLastWinnerAndSelf ? "success" : "light"}
60
- text="pts"
61
- />
62
- </>)}
63
- </Body>
64
- </Flex>
65
- <Body color="light">
66
- {territory}
67
- &nbsp;
68
- <Badge
69
- text={rank}
70
- variant={winner && !isLastWinnerAndSelf ? "success" : self ? "notification" : "neutral"}
71
- />
72
- </Body>
73
- </Body>
74
- </Flex>
75
- </Background>
76
- )
77
- }
78
-
79
- export default Participant
@@ -1,63 +0,0 @@
1
- import React from 'react'
2
-
3
- import Overlay from '../../pb_overlay/_overlay'
4
- import Image from '../../pb_image/_image'
5
- import Flex from '../../pb_flex/_flex'
6
-
7
- const OverlayColor = () => (
8
- <Flex
9
- justify="around"
10
- wrap
11
- >
12
- <Overlay
13
- color="black"
14
- marginBottom="xxs"
15
- >
16
- <Image
17
- alt="picture of a misty forest"
18
- display="block"
19
- size="xl"
20
- url="https://unsplash.it/500/400/?image=634"
21
- />
22
- </Overlay>
23
- <Overlay
24
- color="black"
25
- gradient={false}
26
- marginBottom="xxs"
27
- opacity="opacity_4"
28
- >
29
- <Image
30
- alt="picture of a misty forest"
31
- display="block"
32
- size="xl"
33
- url="https://unsplash.it/500/400/?image=634"
34
- />
35
- </Overlay>
36
- <Overlay
37
- color="error"
38
- marginBottom="xxs"
39
- >
40
- <Image
41
- alt="picture of a misty forest"
42
- display="block"
43
- size="xl"
44
- url="https://unsplash.it/500/400/?image=634"
45
- />
46
- </Overlay>
47
- <Overlay
48
- color="error"
49
- gradient={false}
50
- marginBottom="xxs"
51
- opacity="opacity_4"
52
- >
53
- <Image
54
- alt="picture of a misty forest"
55
- display="block"
56
- size="xl"
57
- url="https://unsplash.it/500/400/?image=634"
58
- />
59
- </Overlay>
60
- </Flex>
61
- )
62
-
63
- export default OverlayColor
@@ -1,3 +0,0 @@
1
- The `color` prop is used to change the color of the solid or gradient mask. Gradient overlays always start opaque and fade to transparent.
2
-
3
- NOTE: Images are set to `display: block` to remove the default inline spacing caused by line height. This ensures the image fully fills the container without unexpected gaps.
@@ -1,39 +0,0 @@
1
- import React from 'react'
2
-
3
- import Overlay from '../../pb_overlay/_overlay'
4
- import Image from '../../pb_image/_image'
5
- import Flex from '../../pb_flex/_flex'
6
-
7
- const OverlayGradientOpacity = () => (
8
- <Flex
9
- justify="around"
10
- wrap
11
- >
12
- <Overlay
13
- gradient={false}
14
- marginBottom="xxs"
15
- opacity="opacity_2"
16
- >
17
- <Image
18
- alt="picture of a misty forest"
19
- display="block"
20
- maxWidth="100%"
21
- url="https://unsplash.it/500/400/?image=634"
22
- />
23
- </Overlay>
24
- <Overlay
25
- gradient={false}
26
- marginBottom="xxs"
27
- opacity="opacity_8"
28
- >
29
- <Image
30
- alt="picture of a misty forest"
31
- display="block"
32
- maxWidth="100%"
33
- url="https://unsplash.it/500/400/?image=634"
34
- />
35
- </Overlay>
36
- </Flex>
37
- )
38
-
39
- export default OverlayGradientOpacity
@@ -1 +0,0 @@
1
- By default, the overlay is rendered as a gradient. Setting the `gradient` prop to `false` renders the overlay as a solid color. You can adjust the transparency of the solid overlay by using the `opacity` prop.
@@ -1,40 +0,0 @@
1
- import React from 'react'
2
-
3
- import Overlay from '../../pb_overlay/_overlay'
4
- import Table from '../../pb_table/_table'
5
-
6
-
7
- const TableExample = () => {
8
- return (
9
- <Table size="sm">
10
- <thead>
11
- <tr>
12
- <th>{'Column 1'}</th>
13
- <th>{'Column 2'}</th>
14
- <th>{'Column 3'}</th>
15
- <th>{'Column 4'}</th>
16
- <th>{'Column 5'}</th>
17
- </tr>
18
- </thead>
19
- <tbody>
20
- {Array.from({ length: 7 }, (_, index) => (
21
- <tr key={index}>
22
- {Array.from({ length: 5 }, (_, columnIndex) => (
23
- <td key={columnIndex}>{`Value ${columnIndex + 1}`}</td>
24
- ))}
25
- </tr>
26
- ))}
27
- </tbody>
28
- </Table>
29
- )
30
- }
31
-
32
- const OverlayLayout = () => (
33
- <>
34
- <Overlay layout={{ y: "xl" }}>
35
- <TableExample />
36
- </Overlay>
37
- </>
38
- )
39
-
40
- export default OverlayLayout