playbook_ui_docs 16.3.0 → 16.4.0.pre.alpha.displaybreakpoints15091

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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_cascade_collapse.jsx +50 -0
  3. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_cascade_collapse.md +1 -0
  4. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_parent_only.jsx +175 -0
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_parent_only.md +5 -0
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +2 -0
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +3 -1
  8. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.html.erb +1 -1
  9. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.jsx +6 -3
  10. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height.html.erb +3 -3
  11. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height.jsx +6 -3
  12. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height_placement.html.erb +3 -3
  13. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height_placement.jsx +6 -3
  14. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_closing_options_rails.html.erb +16 -0
  15. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_closing_options_rails.md +1 -0
  16. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_custom_event_type.html.erb +224 -0
  17. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_custom_event_type.md +7 -0
  18. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +2 -0
  19. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_nav_margin.html.erb +46 -0
  20. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_nav_margin.jsx +42 -0
  21. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_nav_margin_rails.md +1 -0
  22. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_nav_margin_react.md +1 -0
  23. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/example.yml +2 -0
  24. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/index.js +2 -1
  25. data/app/pb_kits/playbook/pb_popover/docs/_popover_placement.jsx +81 -0
  26. data/app/pb_kits/playbook/pb_popover/docs/_popover_placement_react.md +1 -0
  27. data/app/pb_kits/playbook/pb_popover/docs/_popover_position.html.erb +128 -0
  28. data/app/pb_kits/playbook/pb_popover/docs/_popover_position_rails.md +1 -0
  29. data/app/pb_kits/playbook/pb_popover/docs/example.yml +2 -0
  30. data/app/pb_kits/playbook/pb_popover/docs/index.js +2 -1
  31. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.jsx +56 -0
  32. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.md +1 -0
  33. data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +13 -21
  34. data/app/pb_kits/playbook/pb_rich_text_editor/docs/index.js +0 -10
  35. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_with_card_title_props.jsx +152 -0
  36. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_with_card_title_props.md +17 -0
  37. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_with_card_title_props_rails.html.erb +121 -0
  38. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_with_card_title_props_rails.md +17 -0
  39. data/app/pb_kits/playbook/pb_table/docs/example.yml +2 -0
  40. data/app/pb_kits/playbook/pb_table/docs/index.js +1 -0
  41. metadata +23 -24
  42. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_attributes.html.erb +0 -5
  43. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_attributes.jsx +0 -15
  44. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.html.erb +0 -1
  45. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_focus.html.erb +0 -3
  46. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_focus.jsx +0 -17
  47. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_inline.html.erb +0 -6
  48. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_inline.jsx +0 -16
  49. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_label.jsx +0 -28
  50. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_label.md +0 -1
  51. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.html.erb +0 -35
  52. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.jsx +0 -45
  53. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.html.erb +0 -10
  54. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.jsx +0 -22
  55. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.md +0 -3
  56. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_simple.html.erb +0 -1
  57. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_simple.jsx +0 -13
  58. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_sticky.html.erb +0 -1
  59. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_sticky.jsx +0 -15
  60. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_templates.html.erb +0 -115
  61. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_templates.jsx +0 -42
  62. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_bottom.html.erb +0 -4
  63. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_bottom.jsx +0 -14
@@ -0,0 +1,7 @@
1
+ The `custom_event_type` prop lets the dropdown clear when specific events are dispatched. Set it to a comma-separated list of event names (e.g. Turbo or app-specific); when any of those events fire with optional `detail: { dropdownId }`, the matching dropdown clears. You can also listen for selection changes (`pb:dropdown:selected`), clear by dispatching `pb:dropdown:clear`, or set the selection by dispatching `pb:dropdown:select` with `detail: { dropdownId, optionId }` (or `optionIds` for multi-select).
2
+
3
+ The examples show five distinct variants (default, multi select, autocomplete, quick pick, custom display). In each example, the first button clears the dropdown by dispatching a custom event that the dropdown listens for via `custom_event_type`. The second button sets the selection by dispatching `pb:dropdown:select`. The third button simulates a form submit by dispatching another custom event in `custom_event_type`, so the dropdown clears as it would after a real form submission.
4
+
5
+ Turbo events (e.g. `turbo:frame-load`, `turbo:frame-render`, `turbo:submit-end`) often fire for many actions or across the page, so using them as `custom_event_type` can clear the dropdown more often than intended. Use them when that scope is what you want; otherwise use app-specific event names and dispatch with `detail: { dropdownId }` when the action happens, or dispatch `pb:dropdown:clear` from your own handler.
6
+
7
+ Dropdowns with subcomponent structures that show custom displays (e.g. custom trigger or custom display) require a `pb:dropdown:selected` listener to update the visible UI from `event.detail` when a selection is made; clear is handled by the kit.
@@ -25,6 +25,7 @@ examples:
25
25
  - dropdown_separators_hidden: Separators Hidden
26
26
  - dropdown_with_clearable: Clearable
27
27
  - dropdown_with_constrain_height_rails: Constrain Height
28
+ - dropdown_closing_options_rails: Closing Options
28
29
  - dropdown_quickpick_rails: Quick Pick Variant
29
30
  - dropdown_quickpick_range_end_rails: Quick Pick Variant (Range Ends Today)
30
31
  - dropdown_quickpick_default_dates: Quick Pick Variant (Default Dates)
@@ -32,6 +33,7 @@ examples:
32
33
  - dropdown_quickpick_with_date_pickers_rails: Quick Pick with Date Pickers
33
34
  - dropdown_quickpick_with_date_pickers_default_rails: Quick Pick with Date Pickers (Default Value)
34
35
  - dropdown_required_indicator: Required Indicator
36
+ - dropdown_custom_event_type: Custom Event Type
35
37
 
36
38
  react:
37
39
  - dropdown_default: Default
@@ -0,0 +1,46 @@
1
+ <%= pb_rails("button", props: { text: "Top Nav Toast", variant: "secondary", data: { toast: "#top-nav" } }) %>
2
+
3
+ <%= pb_rails("fixed_confirmation_toast", props: {
4
+ classname: "top-nav-margin",
5
+ closeable: true,
6
+ id: "top-nav",
7
+ multi_line: true,
8
+ text: "Top nav Margin.",
9
+ status: "tip",
10
+ vertical: "top",
11
+ horizontal: "center",
12
+ nav_margin_top: true
13
+ }) %>
14
+
15
+
16
+
17
+ <script type="text/javascript">
18
+ const navtoast = document.querySelectorAll(".top-nav-margin")
19
+ const navbutton = document.querySelectorAll("button[data-toast]")
20
+
21
+ const hideNavToast = () => {
22
+ navtoast.forEach((toast) => {
23
+ toast.style.display = "none"
24
+ })
25
+ }
26
+
27
+ // Hide toasts immediately
28
+ hideNavToast()
29
+
30
+ // Handle various page load/restore events
31
+ window.addEventListener('pageshow', hideNavToast)
32
+ document.addEventListener('DOMContentLoaded', hideNavToast)
33
+ document.addEventListener('turbolinks:load', hideNavToast)
34
+ document.addEventListener('turbo:load', hideNavToast)
35
+
36
+ navbutton.forEach((button) => {
37
+ button.onclick = () => {
38
+ hideNavToast()
39
+ let toast = document.querySelector(button.getAttribute("data-toast"))
40
+
41
+ if (toast) {
42
+ toast.style.display = "flex"
43
+ }
44
+ }
45
+ })
46
+ </script>
@@ -0,0 +1,42 @@
1
+ import React, { useState } from 'react'
2
+
3
+ import Button from '../../pb_button/_button'
4
+ import FixedConfirmationToast from '../_fixed_confirmation_toast'
5
+
6
+ const FixedConfirmationToastNavMargin = (props) => {
7
+ const [openToast, setOpenToast] = useState(false)
8
+
9
+
10
+ const handleClickShort = () => {
11
+ setOpenToast(true)
12
+ }
13
+
14
+ const handleCloseShort = () => {
15
+ setOpenToast(false)
16
+ }
17
+
18
+ return (
19
+ <div>
20
+ <Button
21
+ onClick={handleClickShort}
22
+ text="Top Nav Margin"
23
+ variant="secondary"
24
+ {...props}
25
+ />
26
+
27
+ <FixedConfirmationToast
28
+ closeable
29
+ horizontal='center'
30
+ navMarginTop
31
+ onClose={handleCloseShort}
32
+ open={openToast}
33
+ status="tip"
34
+ text="Top nav Margin."
35
+ vertical='top'
36
+ {...props}
37
+ />
38
+ </div>
39
+ )
40
+ }
41
+
42
+ export default FixedConfirmationToastNavMargin
@@ -0,0 +1 @@
1
+ Use the `nav_margin_top` prop to position the toast lower on the page. This is useful for cases where we want to position the toast below a header or nav.
@@ -0,0 +1 @@
1
+ Use the `navMarginTop` prop to position the toast lower on the page. This is useful for cases where we want to position the toast below a header or nav.
@@ -2,6 +2,7 @@ examples:
2
2
 
3
3
  rails:
4
4
  - fixed_confirmation_toast_default: Default
5
+ - fixed_confirmation_toast_nav_margin: Nav Margin Top
5
6
  - fixed_confirmation_toast_multi_line: Multi Line
6
7
  - fixed_confirmation_toast_close: Click to Close
7
8
  - fixed_confirmation_toast_positions: Click to Show Positions
@@ -12,6 +13,7 @@ examples:
12
13
 
13
14
  react:
14
15
  - fixed_confirmation_toast_default: Default
16
+ - fixed_confirmation_toast_nav_margin: Nav Margin Top
15
17
  - fixed_confirmation_toast_multi_line: Multi Line
16
18
  - fixed_confirmation_toast_close: Click to Close
17
19
  - fixed_confirmation_toast_positions: Click to Show Positions
@@ -5,4 +5,5 @@ export { default as FixedConfirmationToastPositions } from './_fixed_confirmatio
5
5
  export { default as FixedConfirmationToastAutoClose } from './_fixed_confirmation_toast_auto_close.jsx'
6
6
  export { default as FixedConfirmationToastChildren } from './_fixed_confirmation_toast_children.jsx'
7
7
  export { default as FixedConfirmationToastCustomIcon } from './_fixed_confirmation_toast_custom_icon.jsx'
8
- export { default as FixedConfirmationToastNoIcon } from './_fixed_confirmation_toast_no_icon.jsx'
8
+ export { default as FixedConfirmationToastNoIcon } from './_fixed_confirmation_toast_no_icon.jsx'
9
+ export { default as FixedConfirmationToastNavMargin } from './_fixed_confirmation_toast_nav_margin.jsx'
@@ -0,0 +1,81 @@
1
+ import React, { useState } from 'react'
2
+
3
+ import Button from '../../pb_button/_button'
4
+ import Flex from '../../pb_flex/_flex'
5
+ import PbReactPopover from '../../pb_popover/_popover'
6
+
7
+ const ROWS = [
8
+ [
9
+ { placement: 'top', label: 'Top' },
10
+ { placement: 'top-start', label: 'Top start' },
11
+ { placement: 'top-end', label: 'Top end' },
12
+ ],
13
+ [
14
+ { placement: 'bottom', label: 'Bottom' },
15
+ { placement: 'bottom-start', label: 'Bottom start' },
16
+ { placement: 'bottom-end', label: 'Bottom end' },
17
+ ],
18
+ [
19
+ { placement: 'left', label: 'Left' },
20
+ { placement: 'left-start', label: 'Left start' },
21
+ { placement: 'left-end', label: 'Left end' },
22
+ ],
23
+ [
24
+ { placement: 'right', label: 'Right' },
25
+ { placement: 'right-start', label: 'Right start' },
26
+ { placement: 'right-end', label: 'Right end' },
27
+ ],
28
+ ]
29
+
30
+ const PopoverPlacement = (props) => {
31
+ const [open, setOpen] = useState({})
32
+
33
+ const isOpen = (placement) => open[placement] === true
34
+ const setOpenFor = (placement) => (value) => setOpen((prev) => ({ ...prev, [placement]: value }))
35
+ const toggle = (placement) => setOpenFor(placement)(!isOpen(placement))
36
+ const handleShouldClose = (placement) => (shouldClose) => {
37
+ if (shouldClose) setOpenFor(placement)(false)
38
+ }
39
+
40
+ return (
41
+ <>
42
+ {ROWS.map((placements, rowIndex) => (
43
+ <Flex
44
+ justify="around"
45
+ key={placements[0].placement}
46
+ marginBottom={rowIndex < ROWS.length - 1 ? 'sm' : undefined}
47
+ orientation="row"
48
+ wrap
49
+ {...props}
50
+ >
51
+ {placements.map(({ placement, label }) => {
52
+ const trigger = (
53
+ <Button
54
+ key={placement}
55
+ onClick={() => toggle(placement)}
56
+ text={label}
57
+ variant="secondary"
58
+ />
59
+ )
60
+ return (
61
+ <PbReactPopover
62
+ closeOnClick="outside"
63
+ key={placement}
64
+ offset
65
+ placement={placement}
66
+ reference={trigger}
67
+ shouldClosePopover={handleShouldClose(placement)}
68
+ show={isOpen(placement)}
69
+ {...props}
70
+ >
71
+ {`Popover: ${label.toLowerCase()}`}
72
+ </PbReactPopover>
73
+ )
74
+ })}
75
+ </Flex>
76
+ ))}
77
+ </>
78
+ )
79
+ }
80
+
81
+ export default PopoverPlacement
@@ -0,0 +1 @@
1
+ Use the `placement` prop to control where the popover appears relative to its trigger. Valid values include `top`, `bottom`, `left`, `right`, and aligned variants such as `top-start`, `top-end`, `bottom-start`, `bottom-end`, `left-start`, `left-end`, `right-start`, and `right-end`.
@@ -0,0 +1,128 @@
1
+ <%= pb_rails("flex", props: { justify: "around", margin_bottom: "sm", orientation: "row", wrap: true }) do %>
2
+ <%= pb_rails("button", props: { text: "Top", variant: "secondary", id: "placement-popover-top" }) %>
3
+ <%= pb_rails("popover", props: {
4
+ close_on_click: "outside",
5
+ trigger_element_id: "placement-popover-top",
6
+ tooltip_id: "placement-tooltip-top",
7
+ position: "top",
8
+ offset: true
9
+ }) do %>
10
+ Popover: top
11
+ <% end %>
12
+ <%= pb_rails("button", props: { text: "Top start", variant: "secondary", id: "placement-popover-top-start" }) %>
13
+ <%= pb_rails("popover", props: {
14
+ close_on_click: "outside",
15
+ trigger_element_id: "placement-popover-top-start",
16
+ tooltip_id: "placement-tooltip-top-start",
17
+ position: "top-start",
18
+ offset: true
19
+ }) do %>
20
+ Popover: top start
21
+ <% end %>
22
+ <%= pb_rails("button", props: { text: "Top end", variant: "secondary", id: "placement-popover-top-end" }) %>
23
+ <%= pb_rails("popover", props: {
24
+ close_on_click: "outside",
25
+ trigger_element_id: "placement-popover-top-end",
26
+ tooltip_id: "placement-tooltip-top-end",
27
+ position: "top-end",
28
+ offset: true
29
+ }) do %>
30
+ Popover: top end
31
+ <% end %>
32
+ <% end %>
33
+ <%= pb_rails("flex", props: { justify: "around", margin_bottom: "sm", orientation: "row", wrap: true }) do %>
34
+ <%= pb_rails("button", props: { text: "Bottom", variant: "secondary", id: "placement-popover-bottom" }) %>
35
+ <%= pb_rails("popover", props: {
36
+ close_on_click: "outside",
37
+ trigger_element_id: "placement-popover-bottom",
38
+ tooltip_id: "placement-tooltip-bottom",
39
+ position: "bottom",
40
+ offset: true
41
+ }) do %>
42
+ Popover: bottom
43
+ <% end %>
44
+ <%= pb_rails("button", props: { text: "Bottom start", variant: "secondary", id: "placement-popover-bottom-start" }) %>
45
+ <%= pb_rails("popover", props: {
46
+ close_on_click: "outside",
47
+ trigger_element_id: "placement-popover-bottom-start",
48
+ tooltip_id: "placement-tooltip-bottom-start",
49
+ position: "bottom-start",
50
+ offset: true
51
+ }) do %>
52
+ Popover: bottom start
53
+ <% end %>
54
+ <%= pb_rails("button", props: { text: "Bottom end", variant: "secondary", id: "placement-popover-bottom-end" }) %>
55
+ <%= pb_rails("popover", props: {
56
+ close_on_click: "outside",
57
+ trigger_element_id: "placement-popover-bottom-end",
58
+ tooltip_id: "placement-tooltip-bottom-end",
59
+ position: "bottom-end",
60
+ offset: true
61
+ }) do %>
62
+ Popover: bottom end
63
+ <% end %>
64
+ <% end %>
65
+ <%= pb_rails("flex", props: { justify: "around", margin_bottom: "sm", orientation: "row", wrap: true }) do %>
66
+ <%= pb_rails("button", props: { text: "Left", variant: "secondary", id: "placement-popover-left" }) %>
67
+ <%= pb_rails("popover", props: {
68
+ close_on_click: "outside",
69
+ trigger_element_id: "placement-popover-left",
70
+ tooltip_id: "placement-tooltip-left",
71
+ position: "left",
72
+ offset: true
73
+ }) do %>
74
+ Popover: left
75
+ <% end %>
76
+ <%= pb_rails("button", props: { text: "Left start", variant: "secondary", id: "placement-popover-left-start" }) %>
77
+ <%= pb_rails("popover", props: {
78
+ close_on_click: "outside",
79
+ trigger_element_id: "placement-popover-left-start",
80
+ tooltip_id: "placement-tooltip-left-start",
81
+ position: "left-start",
82
+ offset: true
83
+ }) do %>
84
+ Popover: left start
85
+ <% end %>
86
+ <%= pb_rails("button", props: { text: "Left end", variant: "secondary", id: "placement-popover-left-end" }) %>
87
+ <%= pb_rails("popover", props: {
88
+ close_on_click: "outside",
89
+ trigger_element_id: "placement-popover-left-end",
90
+ tooltip_id: "placement-tooltip-left-end",
91
+ position: "left-end",
92
+ offset: true
93
+ }) do %>
94
+ Popover: left end
95
+ <% end %>
96
+ <% end %>
97
+ <%= pb_rails("flex", props: { justify: "around", orientation: "row", wrap: true }) do %>
98
+ <%= pb_rails("button", props: { text: "Right", variant: "secondary", id: "placement-popover-right" }) %>
99
+ <%= pb_rails("popover", props: {
100
+ close_on_click: "outside",
101
+ trigger_element_id: "placement-popover-right",
102
+ tooltip_id: "placement-tooltip-right",
103
+ position: "right",
104
+ offset: true
105
+ }) do %>
106
+ Popover: right
107
+ <% end %>
108
+ <%= pb_rails("button", props: { text: "Right start", variant: "secondary", id: "placement-popover-right-start" }) %>
109
+ <%= pb_rails("popover", props: {
110
+ close_on_click: "outside",
111
+ trigger_element_id: "placement-popover-right-start",
112
+ tooltip_id: "placement-tooltip-right-start",
113
+ position: "right-start",
114
+ offset: true
115
+ }) do %>
116
+ Popover: right start
117
+ <% end %>
118
+ <%= pb_rails("button", props: { text: "Right end", variant: "secondary", id: "placement-popover-right-end" }) %>
119
+ <%= pb_rails("popover", props: {
120
+ close_on_click: "outside",
121
+ trigger_element_id: "placement-popover-right-end",
122
+ tooltip_id: "placement-tooltip-right-end",
123
+ position: "right-end",
124
+ offset: true
125
+ }) do %>
126
+ Popover: right end
127
+ <% end %>
128
+ <% end %>
@@ -0,0 +1 @@
1
+ Use the `position` prop to control where the popover appears relative to its trigger. Valid values include `top`, `bottom`, `left`, `right`, and aligned variants such as `top-start`, `top-end`, `bottom-start`, `bottom-end`, `left-start`, `left-end`, `right-start`, and `right-end`.
@@ -7,6 +7,7 @@ examples:
7
7
  - popover_scroll_height: Scroll and Height Settings
8
8
  - popover_actionable_content: With Actionable Content
9
9
  - popover_append_to: Append To
10
+ - popover_position: Position
10
11
 
11
12
  react:
12
13
  - popover_default: Default
@@ -16,3 +17,4 @@ examples:
16
17
  - popover_scroll_height: Scroll and Height Settings
17
18
  - popover_actionable_content: With Actionable Content
18
19
  - popover_append_to: Append To
20
+ - popover_placement: Placement
@@ -4,4 +4,5 @@ export { default as PopoverClose } from './_popover_close.jsx'
4
4
  export { default as PopoverZIndex } from './_popover_z_index.jsx'
5
5
  export { default as PopoverScrollHeight } from './_popover_scroll_height.jsx'
6
6
  export { default as PopoverActionableContent } from './_popover_actionable_content.jsx'
7
- export { default as PopoverAppendTo } from './_popover_append_to.jsx'
7
+ export { default as PopoverAppendTo } from './_popover_append_to.jsx'
8
+ export { default as PopoverPlacement } from './_popover_placement.jsx'
@@ -1,5 +1,10 @@
1
1
  import React, { useState } from 'react'
2
2
  import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
3
+ import Caption from '../../pb_caption/_caption'
4
+ // The TrixEditor and Trix imports are required for the Legacy RichTextEditor to work
5
+ // They are passed as props to the RichTextEditor kit
6
+ import { TrixEditor } from 'react-trix'
7
+ import Trix from 'trix'
3
8
 
4
9
  const RichTextEditorDefault = (props) => {
5
10
  const [value, setValue] = useState('Add your text here. You can format your text, add links, quotes, and bullets.'),
@@ -7,11 +12,62 @@ const RichTextEditorDefault = (props) => {
7
12
 
8
13
  return (
9
14
  <div>
15
+ <Caption marginBottom="xs"
16
+ text="Default"
17
+ />
10
18
  <RichTextEditor
19
+ TrixEditor={TrixEditor}
11
20
  onChange={handleOnChange}
21
+ trixInstance={Trix}
12
22
  value={value}
13
23
  {...props}
14
24
  />
25
+ <br/>
26
+ <Caption marginBottom="xs"
27
+ text="Simple"
28
+ />
29
+ <RichTextEditor
30
+ TrixEditor={TrixEditor}
31
+ simple
32
+ trixInstance={Trix}
33
+ {...props}
34
+ />
35
+ <br/>
36
+ <Caption marginBottom="xs"
37
+ text="Focus"
38
+ />
39
+ <RichTextEditor
40
+ TrixEditor={TrixEditor}
41
+ focus
42
+ trixInstance={Trix}
43
+ {...props}
44
+ />
45
+ <br/>
46
+ <Caption marginBottom="xs"
47
+ text="Inline"
48
+ />
49
+ <RichTextEditor
50
+ TrixEditor={TrixEditor}
51
+ id="inline"
52
+ inline
53
+ toolbarBottom
54
+ trixInstance={Trix}
55
+ value="Try hovering over this text. Then try modifying it or adding more of your own text."
56
+ {...props}
57
+ />
58
+ <br/>
59
+ <Caption marginBottom="xs"
60
+ text="Sticky"
61
+ />
62
+ <RichTextEditor
63
+ TrixEditor={TrixEditor}
64
+ id="sticky"
65
+ sticky
66
+ trixInstance={Trix}
67
+ value="In this example, when you scroll down, the rich text editor's toolbar will scroll along with the page and it will no longer be visible at the top of the page. Dummy text to enable scroll.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ornare lorem ut pellentesque tempor. Vivamus ut ex vestibulum velit rich text editor eleifend fringilla. Sed non metus dictum, elementum mauris wysiwyg html editor non, sagittis odio. Nullam pellentesque leo sit amet ante suscipit wysiwyg html editor sagittis. Donec tempus vulputate suscipit. Ut non felis rich text editor ac dolor pulvinar lacinia eu eget urna. Sed tincidunt sapien vulputate tellus fringilla sodales. Morbi accumsan dui wysiwyg html editor sed massa pellentesque, quis vestibulum lectus scelerisque. Nulla ultrices mi id felis luctus aliquet. Donec nec ligula wysiwyg html editor pretium sapien semper dictum eu id quam. Etiam ut sollicitudin nibh. Quisque eu ultrices dui. Nunc rich text editor congue, enim vitae dictum dignissim, libero nisl sagittis augue, non aliquet nibh tortor sit amet ex. Aliquam cursus maximus rich text editor mi eu consequat. Nullam tincidunt erat et placerat mattis. Nunc rich text editor congue, enim vitae dictum dignissim, libero nisl sagittis augue, non aliquet nibh tortor sit amet ex. Aliquam cursus maximus mi eu consequat. Nullam tincidunt erat et placerat mattis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ornare lorem ut pellentesque tempor. Vivamus ut ex vestibulum velit rich text editor eleifend fringilla. Sed non metus dictum, elementum mauris wysiwyg html editor non, sagittis odio. Nullam pellentesque leo sit amet ante suscipit wysiwyg html editor sagittis. Donec tempus vulputate suscipit. Ut non felis rich text editor ac dolor pulvinar lacinia eu eget urna. Sed tincidunt sapien vulputate tellus fringilla sodales. Morbi accumsan dui wysiwyg html editor sed massa pellentesque, quis vestibulum lectus scelerisque. Nulla ultrices mi id felis luctus aliquet. Donec nec ligula wysiwyg html editor pretium sapien semper dictum eu id quam. Etiam ut sollicitudin nibh. Quisque eu ultrices dui. Nunc rich text editor congue, enim vitae dictum dignissim, libero nisl sagittis augue, non aliquet nibh tortor vulputate suscipit. Ut non felis rich text editor ac dolor pulvinar lacinia eu eget urna. Sed tincidunt sapien vulputate tellus fringilla sodales. Morbi accumsan dui wysiwyg html editor sed massa pellentesque, quis vestibulum lectus scelerisque. Nulla ultrices mi id felis luctus aliquet. Donec nec ligula wysiwyg html editor pretium sapien semper dictum eu id quam. Etiam ut sollicitudin nibh. Quisque eu ultrices dui. Nunc rich text editor congue, enim vitae dictum dignissim, libero nisl sagittis augue, non aliquet nibh tortor sit amet ex. Aliquam cursus maximus rich text editor mi eu consequat. Nullam tincidunt erat et placerat mattis. Nunc rich text editor congue, enim vitae dictum dignissim, libero nisl sagittis augue, non aliquet nibh tortor sit amet ex. Aliquam cursus maximus mi eu consequat. Nullam tincidunt erat et placerat mattis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ornare lorem ut pellentesque tempor. Vivamus ut ex vestibulum velit rich text editor eleifend fringilla. Sed non metus dictum, elementum mauris wysiwyg html editor non, sagittis odio. Nullam pellentesque leo sit amet ante suscipit wysiwyg html editor sagittis. Donec tempus vulputate suscipit. Ut non felis rich text editor ac dolor pulvinar lacinia eu eget urna. Sed tincidunt sapien vulputate tellus fringilla sodales. Morbi accumsan dui wysiwyg html editor sed massa pellentesque, quis vestibulum lectus scelerisque. Nulla ultrices mi id felis luctus aliquet. Donec nec ligula wysiwyg html editor pretium sapien semper dictum eu id quam. Etiam ut sollicitudin nibh. Quisque eu ultrices dui. Nunc rich text editor congue, enim vitae dictum dignissim, libero nisl sagittis augue, non aliquet nibh tortor sit amet ex. Aliquam cursus maximus rich text editor mi eu consequat. Nullam tincidunt erat et placerat mattis. Nunc rich text editor congue, enim vitae dictum dignissim, libero nisl sagittis augue, non aliquet nibh tortor sit amet ex. Aliquam cursus maximus mi eu consequat. Nullam tincidunt erat et placerat mattis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ornare lorem ut pellentesque tempor. Vivamus ut ex vestibulum velit rich text editor eleifend fringilla. Sed non metus dictum, elementum mauris wysiwyg html editor non, sagittis odio. Nullam pellentesque leo sit amet ante suscipit wysiwyg html editor sagittis. Donec tempus vulputate suscipit. Ut non felis rich text editor ac dolor pulvinar lacinia eu eget urna. Sed tincidunt sapien vulputate tellus fringilla sodales. Morbi accumsan dui wysiwyg html editor sed massa pellentesque, quis vestibulum lectus scelerisque. Nulla ultrices mi id felis luctus aliquet. Donec nec ligula wysiwyg html editor pretium sapien semper dictum eu id quam. Etiam ut sollicitudin nibh. Quisque eu ultrices dui. Nunc rich text editor congue, enim vitae dictum dignissim, libero nisl sagittis augue, non aliquet nibh tortor sit amet ex. Aliquam cursus maximus rich text editor mi eu consequat. Nullam tincidunt erat et placerat mattis. Nunc rich text editor congue, enim vitae dictum dignissim, libero nisl sagittis augue, non aliquet nibh tortor sit amet ex. Aliquam cursus maximus mi eu consequat. Nullam tincidunt erat et placerat mattis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ornare lorem ut pellentesque tempor. Vivamus ut ex vestibulum velit rich text editor eleifend fringilla. Sed non metus dictum, elementum mauris wysiwyg html editor non, sagittis odio. Nullam pellentesque leo sit amet ante suscipit wysiwyg html editor sagittis. Donec tempus vulputate suscipit. Ut non felis rich text editor ac dolor pulvinar lacinia eu eget urna. Sed tincidunt sapien vulputate tellus fringilla sodales. Morbi accumsan dui wysiwyg html editor sed massa pellentesque, quis vestibulum lectus scelerisque. Nulla ultrices mi id felis luctus aliquet. Donec nec ligula wysiwyg html editor pretium sapien semper dictum eu id quam. Etiam ut sollicitudin nibh. Quisque eu ultrices dui. Nunc rich text editor congue, enim vitae dictum dignissim, libero nisl sagittis augue, non aliquet nibh tortor sit amet ex. Aliquam cursus maximus rich text editor mi eu consequat. Nullam tincidunt erat et placerat mattis. Nunc rich text editor congue, enim vitae dictum dignissim, libero nisl sagittis augue, non aliquet nibh tortor sit amet ex. Aliquam cursus maximus mi eu consequat. Nullam tincidunt erat et placerat mattis.sit amet ex. Aliquam cursus maximus rich text editor mi eu consequat. Nullam tincidunt erat et placerat mattis. Nunc rich text editor congue, enim vitae dictum dignissim, libero nisl sagittis augue, non aliquet nibh tortor sit amet ex. Aliquam cursus maximus mi eu consequat. Nullam tincidunt erat et placerat mattis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ornare lorem ut pellentesque tempor. Vivamus ut ex vestibulum velit rich text editor eleifend fringilla. Sed non metus dictum, elementum mauris wysiwyg html editor non, sagittis odio. Nullam pellentesque leo sit amet ante suscipit wysiwyg html editor sagittis. Donec tempus vulputate suscipit. Ut non felis rich text editor ac dolor pulvinar lacinia eu eget urna. Sed tincidunt sapien vulputate tellus fringilla sodales. Morbi accumsan dui wysiwyg html editor sed massa pellentesque, quis vestibulum lectus scelerisque. Nulla ultrices mi id felis luctus aliquet. Donec nec ligula wysiwyg html editor pretium sapien semper dictum eu id quam. Etiam ut sollicitudin nibh. Quisque eu ultrices dui. Nunc rich text editor congue, enim vitae dictum dignissim, libero nisl sagittis augue, non aliquet nibh tortor sit amet ex. Aliquam cursus maximus rich text editor mi eu consequat. Nullam tincidunt erat et placerat mattis. Nunc rich text editor congue, enim vitae dictum dignissim, libero nisl sagittis augue, non aliquet nibh tortor sit amet ex. Aliquam cursus maximus mi eu consequat. Nullam tincidunt erat et placerat mattis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ornare lorem ut pellentesque tempor. Vivamus ut ex vestibulum velit rich text editor eleifend fringilla. Sed non metus dictum, elementum mauris wysiwyg html editor non, sagittis odio. Nullam pellentesque leo sit amet ante suscipit wysiwyg html editor sagittis. Donec tempus vulputate suscipit. Ut non felis rich text editor ac dolor pulvinar lacinia eu eget urna. Sed tincidunt sapien vulputate tellus fringilla sodales. Morbi accumsan dui wysiwyg html editor sed massa pellentesque, quis vestibulum lectus scelerisque. Nulla ultrices mi id felis luctus aliquet. Donec nec ligula wysiwyg html editor pretium sapien semper dictum eu id quam. Etiam ut sollicitudin nibh. Quisque eu ultrices dui. Nunc rich text editor congue, enim vitae dictum dignissim, libero nisl sagittis augue, non aliquet nibh tortor sit amet ex. Aliquam cursus maximus rich text editor mi eu consequat. Nullam tincidunt erat et placerat mattis. Nunc rich text editor congue, enim vitae dictum dignissim, libero nisl sagittis augue, non aliquet nibh tortor sit amet ex. Aliquam cursus maximus mi eu consequat. Nullam tincidunt erat et placerat mattis."
68
+ {...props}
69
+ />
70
+
15
71
  </div>
16
72
  )
17
73
  }
@@ -0,0 +1 @@
1
+ **IMPORTANT**: The Trix version of the RichTextEditor is a Legacy kit and no longer being actively maintained. Please use the advanced Editor above.
@@ -1,40 +1,32 @@
1
1
  examples:
2
2
 
3
3
  rails:
4
- - rich_text_editor_default: Default
5
- - rich_text_editor_simple: Simple
6
- - rich_text_editor_attributes: Attributes
7
- - rich_text_editor_focus: Focus
8
- - rich_text_editor_sticky: Sticky
9
- - rich_text_editor_templates: Templates
10
- # - rich_text_editor_toolbar_bottom: Toolbar Bottom
11
- - rich_text_editor_inline: Inline
12
- - rich_text_editor_required_indicator: Required Indicator
13
- - rich_text_editor_preview: Preview
14
4
 
15
5
  react:
16
- - rich_text_editor_default: Default
17
6
  - rich_text_editor_advanced_default: Advanced Default
18
7
  - rich_text_editor_more_extensions: Advanced (Extra Extensions)
19
8
  - rich_text_editor_toolbar_disabled: Advanced (Toolbar disabled)
20
- - rich_text_editor_simple: Simple
21
9
  - rich_text_editor_advanced_simple: Advanced (Simple)
22
- - rich_text_editor_attributes: Attributes
23
10
  - rich_text_editor_advanced_attributes: Advanced (Attributes)
24
- - rich_text_editor_focus: Focus
25
11
  - rich_text_editor_advanced_focus: Advanced (Focus)
26
- - rich_text_editor_sticky: Sticky
27
12
  - rich_text_editor_advanced_sticky: Advanced (Sticky)
28
- - rich_text_editor_templates: Templates
29
13
  - rich_text_editor_advanced_templates: Advanced (Templates)
30
- # - rich_text_editor_toolbar_bottom: Toolbar Bottom
31
- - rich_text_editor_inline: Inline
32
14
  - rich_text_editor_advanced_inline: Advanced (Inline)
33
15
  - rich_text_editor_advanced_height: Advanced Height
34
16
  - rich_text_editor_advanced_min_height: Advanced Min Height
35
- - rich_text_editor_label: Label
36
17
  - rich_text_editor_advanced_label: Advanced (Label)
37
- - rich_text_editor_required_indicator: Required Indicator
38
18
  - rich_text_editor_advanced_required_indicator: Advanced Required Indicator
39
- - rich_text_editor_preview: Preview
40
19
  - rich_text_editor_advanced_preview: Advanced Preview
20
+ - rich_text_editor_default: Legacy Default (Trix)
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
@@ -1,12 +1,4 @@
1
1
  export { default as RichTextEditorDefault } from './_rich_text_editor_default.jsx'
2
- export { default as RichTextEditorSimple } from './_rich_text_editor_simple.jsx'
3
- export { default as RichTextEditorAttributes } from './_rich_text_editor_attributes.jsx'
4
- export { default as RichTextEditorFocus } from './_rich_text_editor_focus.jsx'
5
- export { default as RichTextEditorSticky } from './_rich_text_editor_sticky.jsx'
6
- export { default as RichTextEditorTemplates } from './_rich_text_editor_templates.jsx'
7
- export { default as RichTextEditorToolbarBottom } from './_rich_text_editor_toolbar_bottom.jsx'
8
- export { default as RichTextEditorInline } from './_rich_text_editor_inline.jsx'
9
- export { default as RichTextEditorPreview } from './_rich_text_editor_preview.jsx'
10
2
  export { default as RichTextEditorAdvancedDefault } from './_rich_text_editor_advanced_default.jsx'
11
3
  export { default as RichTextEditorMoreExtensions } from './_rich_text_editor_more_extensions.jsx'
12
4
  export { default as RichTextEditorToolbarDisabled } from './_rich_text_editor_toolbar_disabled.jsx'
@@ -19,7 +11,5 @@ export { default as RichTextEditorAdvancedSticky } from './_rich_text_editor_adv
19
11
  export { default as RichTextEditorAdvancedInline } from './_rich_text_editor_advanced_inline.jsx'
20
12
  export { default as RichTextEditorAdvancedHeight } from './_rich_text_editor_advanced_height.jsx'
21
13
  export { default as RichTextEditorAdvancedMinHeight } from './_rich_text_editor_advanced_min_height.jsx'
22
- export { default as RichTextEditorRequiredIndicator } from './_rich_text_editor_required_indicator.jsx'
23
14
  export { default as RichTextEditorAdvancedRequiredIndicator } from './_rich_text_editor_advanced_required_indicator.jsx'
24
- export { default as RichTextEditorLabel } from './_rich_text_editor_label.jsx'
25
15
  export { default as RichTextEditorAdvancedLabel } from './_rich_text_editor_advanced_label.jsx'