playbook_ui_docs 16.3.0.pre.alpha.play284914770 → 16.3.0.pre.alpha.play285814889

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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.html.erb +1 -1
  3. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.jsx +6 -3
  4. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_default.html.erb +18 -9
  5. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_default.jsx +24 -5
  6. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height.html.erb +3 -3
  7. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height.jsx +6 -3
  8. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height_placement.html.erb +3 -3
  9. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height_placement.jsx +6 -3
  10. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_closing_options_rails.html.erb +16 -0
  11. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_closing_options_rails.md +1 -0
  12. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +1 -1
  13. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.jsx +56 -0
  14. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.md +1 -0
  15. data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +13 -21
  16. data/app/pb_kits/playbook/pb_rich_text_editor/docs/index.js +0 -10
  17. metadata +5 -26
  18. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_custom_event_type.html.erb +0 -224
  19. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_custom_event_type.md +0 -7
  20. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_attributes.html.erb +0 -5
  21. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_attributes.jsx +0 -15
  22. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.html.erb +0 -1
  23. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_focus.html.erb +0 -3
  24. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_focus.jsx +0 -17
  25. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_inline.html.erb +0 -6
  26. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_inline.jsx +0 -16
  27. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_label.jsx +0 -28
  28. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_label.md +0 -1
  29. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.html.erb +0 -35
  30. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.jsx +0 -45
  31. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.html.erb +0 -10
  32. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.jsx +0 -22
  33. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.md +0 -3
  34. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_simple.html.erb +0 -1
  35. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_simple.jsx +0 -13
  36. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_sticky.html.erb +0 -1
  37. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_sticky.jsx +0 -15
  38. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_templates.html.erb +0 -115
  39. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_templates.jsx +0 -42
  40. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_bottom.html.erb +0 -4
  41. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_bottom.jsx +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8a9c4c55a34ed20163b96c3aed1180d4ff8e2f1335ccca59b59091a3a384495c
4
- data.tar.gz: ef35842aa2b6ee61e13302c8370d911e618d4d11fec735473d670edac10656e3
3
+ metadata.gz: 22e0f89223c61e36588232c3bb4007f762fa5b2744b84968a842126baeee495b
4
+ data.tar.gz: 11f02cbe0dfb6e47296421e1a2ca123d8433844bc92fd105ce0774f100c3b79e
5
5
  SHA512:
6
- metadata.gz: 2da2f955fd09b23d85d645a3f7b8c8b958643750e1bb02d1fe2b9f4e1e82f34594040081f61b459a6474c9216d197a0b1f656391f480924e8dab7001a30993f4
7
- data.tar.gz: 7bd6b76a659154e6a2e1ec1e53961d7b29bd17d8a189f98cf64f7d1e9013069cc362aef60556106783837e1e1f86bfa673ef6f86715e66531dd9f5aba55e6d94
6
+ metadata.gz: 25cd200a848064e0c3f74fcbd1f864d7340930397c64f8e84b05d5735554945b8bfa5e2fb3d2ffec3a52d38a2aa2caa84c39fdd94404eb3325caac0363ae69af
7
+ data.tar.gz: b8dd1bc01692c1f5f9422b1f898bf2d09ee02a443f6b8d0747d625ed58ea88cc2d4f4942ea5cf2de13140c2d4ca4c7c3b24b7ea568efb6d3cc89f966ddf7c584
@@ -28,7 +28,7 @@
28
28
  <% end %>
29
29
  <%= pb_rails("dialog/dialog_body") do %>
30
30
  <%= pb_rails("caption", props: { text: "Description", margin_bottom: "xs" }) %>
31
- <%= pb_rails("rich_text_editor", props: {id: "default", value: "Add your text here"}) %>
31
+ <%= pb_rails("textarea", props: {id: "default"}) %>
32
32
  <%= pb_rails("caption", props: { text: "Type in a word or term too help find tickets later. ex. training, phone setup, hr", margin_bottom: "xs", margin_top: "sm" }) %>
33
33
  <%= pb_rails("typeahead", props: { placeholder: "Tags.."}) %>
34
34
  <%= pb_rails("dropdown", props: {options: options, autocomplete: true}) %>
@@ -4,7 +4,7 @@ import Body from '../../pb_body/_body'
4
4
  import Button from '../../pb_button/_button'
5
5
  import Caption from '../../pb_caption/_caption'
6
6
  import Dialog from '../../pb_dialog/_dialog'
7
- import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
7
+ import Textarea from '../../pb_textarea/_textarea'
8
8
  import Typeahead from '../../pb_typeahead/_typeahead'
9
9
 
10
10
  const DialogCompound = () => {
@@ -25,8 +25,11 @@ const DialogCompound = () => {
25
25
  <Body>{'What do you need us to take care of?'}</Body>
26
26
  </Dialog.Header>
27
27
  <Dialog.Body>
28
- <Caption marginBottom="xs">{'Description'}</Caption>
29
- <RichTextEditor />
28
+ <Textarea
29
+ id="default-example-1"
30
+ label="Description"
31
+ rows={4}
32
+ />
30
33
  <br />
31
34
  <Caption>
32
35
  {
@@ -1,11 +1,20 @@
1
1
  <%= pb_rails("button", props: { text: "Open Dialog", data: {"open-dialog": "dialog-1"} }) %>
2
2
 
3
- <%= pb_rails("dialog", props: {
4
- id:"dialog-1",
5
- size: "sm",
6
- title: "Header Title is the Title Prop",
7
- text: "Hello Body Text, Nice to meet ya.",
8
- cancel_button: "Cancel Button",
9
- confirm_button: "Okay",
10
- confirm_button_id: "confirm-button-1"
11
- }) %>
3
+ <%= pb_rails("dialog", props: {
4
+ id:"dialog-1",
5
+ size: "md",
6
+ title: "Header Title is the Title Prop"
7
+ }) do %>
8
+ <%= pb_rails("dialog/dialog_body") do %>
9
+ <%= pb_rails("button", props: { aria: { label: "Loading" }, loading: true, margin_right: "lg", text: "Button Primary" }) %>
10
+ <div style="height: 800px; background-color: lightgray;"></div>
11
+ <%= pb_rails("button", props: { loading: true, text: "Loading..." }) %>
12
+ <% end %>
13
+
14
+ <%= pb_rails("dialog/dialog_footer") do %>
15
+ <%= pb_rails("flex", props: { spacing: "between", padding_x: "md", padding_bottom: "md", padding: "sm" }) do %>
16
+ <%= pb_rails("button", props: { loading: true, text: "Send My Issue" }) %>
17
+ <%= pb_rails("button", props: { text: "Back", variant: "link", data: {"close-dialog": "dialog-1"} }) %>
18
+ <% end %>
19
+ <% end %>
20
+ <% end %>
@@ -12,16 +12,35 @@ const DialogDefault = () => {
12
12
  <>
13
13
  <Button onClick={open}>{'Open Dialog'}</Button>
14
14
  <Dialog
15
- cancelButton="Cancel Button"
16
- confirmButton="Okay"
17
15
  onCancel={close}
18
16
  onClose={close}
19
17
  onConfirm={close}
20
18
  opened={isOpen}
21
- size="sm"
22
- text="Hello Body Text, Nice to meet ya."
19
+ size="md"
23
20
  title="Header Title is the Title Prop"
24
- />
21
+ >
22
+ <Dialog.Body>
23
+ <Button
24
+ aria={{ label: 'Loading' }}
25
+ loading
26
+ text="Button Primary"
27
+ />
28
+ <div style={{height: '800px', backgroundColor: 'lightgray'}} />
29
+ <Button
30
+ loading
31
+ text="Loading..."
32
+ />
33
+ </Dialog.Body>
34
+ <Dialog.Footer>
35
+ <Button
36
+ loading
37
+ text="Send My Issue"
38
+ />
39
+ <Button variant="link">
40
+ {"Back"}
41
+ </Button>
42
+ </Dialog.Footer>
43
+ </Dialog>
25
44
  </>
26
45
  )
27
46
  }
@@ -12,7 +12,7 @@
12
12
  <% end %>
13
13
  <%= pb_rails("dialog/dialog_body") do %>
14
14
  <%= pb_rails("caption", props: { text: "Description", margin_bottom: "xs" }) %>
15
- <%= pb_rails("rich_text_editor", props: {id: "default", value: "Add your text here"}) %>
15
+ <%= pb_rails("textarea", props: {id: "default-7"}) %>
16
16
  <%= pb_rails("caption", props: { text: "Type in a word or term too help find tickets later. ex. training, phone setup, hr", margin_bottom: "xs", margin_top: "sm" }) %>
17
17
  <%= pb_rails("typeahead", props: { placeholder: "Tags.."}) %>
18
18
 
@@ -31,7 +31,7 @@
31
31
  <% end %>
32
32
  <%= pb_rails("dialog/dialog_body") do %>
33
33
  <%= pb_rails("caption", props: { text: "Description", margin_bottom: "xs" }) %>
34
- <%= pb_rails("rich_text_editor", props: {id: "default", value: "Add your text here"}) %>
34
+ <%= pb_rails("textarea", props: {id: "default-8"}) %>
35
35
  <%= pb_rails("caption", props: { text: "Type in a word or term too help find tickets later. ex. training, phone setup, hr", margin_bottom: "xs", margin_top: "sm" }) %>
36
36
  <%= pb_rails("typeahead", props: { placeholder: "Tags.."}) %>
37
37
 
@@ -49,7 +49,7 @@
49
49
  <% end %>
50
50
  <%= pb_rails("dialog/dialog_body") do %>
51
51
  <%= pb_rails("caption", props: { text: "Description", margin_bottom: "xs" }) %>
52
- <%= pb_rails("rich_text_editor", props: {id: "default", value: "Add your text here"}) %>
52
+ <%= pb_rails("textarea", props: {id: "default-9"}) %>
53
53
  <%= pb_rails("caption", props: { text: "Type in a word or term too help find tickets later. ex. training, phone setup, hr", margin_bottom: "xs", margin_top: "sm" }) %>
54
54
  <%= pb_rails("typeahead", props: { placeholder: "Tags.."}) %>
55
55
 
@@ -5,7 +5,7 @@ import Button from '../../pb_button/_button'
5
5
  import Dialog from '../../pb_dialog/_dialog'
6
6
  import Flex from '../../pb_flex/_flex'
7
7
  import Caption from '../../pb_caption/_caption'
8
- import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
8
+ import Textarea from '../../pb_textarea/_textarea'
9
9
  import Typeahead from '../../pb_typeahead/_typeahead'
10
10
 
11
11
  const useDialog = (visible = false) => {
@@ -77,8 +77,11 @@ const DialogFullHeight = () => {
77
77
  <Body>{title}</Body>
78
78
  </Dialog.Header>
79
79
  <Dialog.Body>
80
- <Caption marginBottom="xs">{"Description"}</Caption>
81
- <RichTextEditor />
80
+ <Textarea
81
+ id="default-example-1"
82
+ label="Description"
83
+ rows={4}
84
+ />
82
85
  <br />
83
86
  <Caption>
84
87
  {
@@ -13,7 +13,7 @@
13
13
  <% end %>
14
14
  <%= pb_rails("dialog/dialog_body") do %>
15
15
  <%= pb_rails("caption", props: { text: "Description", margin_bottom: "xs" }) %>
16
- <%= pb_rails("rich_text_editor", props: {id: "default", value: "Add your text here"}) %>
16
+ <%= pb_rails("textarea", props: {id: "default-2"}) %>
17
17
  <%= pb_rails("caption", props: { text: "Type in a word or term too help find tickets later. ex. training, phone setup, hr", margin_bottom: "xs", margin_top: "sm" }) %>
18
18
  <%= pb_rails("typeahead", props: { placeholder: "Tags.."}) %>
19
19
  <% end %>
@@ -32,7 +32,7 @@
32
32
  <% end %>
33
33
  <%= pb_rails("dialog/dialog_body") do %>
34
34
  <%= pb_rails("caption", props: { text: "Description", margin_bottom: "xs" }) %>
35
- <%= pb_rails("rich_text_editor", props: {id: "default", value: "Add your text here"}) %>
35
+ <%= pb_rails("textarea", props: {id: "default-3"}) %>
36
36
  <%= pb_rails("caption", props: { text: "Type in a word or term too help find tickets later. ex. training, phone setup, hr", margin_bottom: "xs", margin_top: "sm" }) %>
37
37
  <%= pb_rails("typeahead", props: { placeholder: "Tags.."}) %>
38
38
  <% end %>
@@ -50,7 +50,7 @@
50
50
  <% end %>
51
51
  <%= pb_rails("dialog/dialog_body") do %>
52
52
  <%= pb_rails("caption", props: { text: "Description", margin_bottom: "xs" }) %>
53
- <%= pb_rails("rich_text_editor", props: {id: "default", value: "Add your text here"}) %>
53
+ <%= pb_rails("textarea", props: {id: "default-4"}) %>
54
54
  <%= pb_rails("caption", props: { text: "Type in a word or term too help find tickets later. ex. training, phone setup, hr", margin_bottom: "xs", margin_top: "sm" }) %>
55
55
  <%= pb_rails("typeahead", props: { placeholder: "Tags.."}) %>
56
56
  <% end %>
@@ -5,7 +5,7 @@ import Button from '../../pb_button/_button'
5
5
  import Dialog from '../../pb_dialog/_dialog'
6
6
  import Flex from '../../pb_flex/_flex'
7
7
  import Caption from '../../pb_caption/_caption'
8
- import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
8
+ import Textarea from "../../pb_textarea/_textarea";
9
9
  import Typeahead from '../../pb_typeahead/_typeahead'
10
10
 
11
11
  const useDialog = (visible = false) => {
@@ -76,8 +76,11 @@ const DialogFullHeightPlacement = () => {
76
76
  <Body>{title}</Body>
77
77
  </Dialog.Header>
78
78
  <Dialog.Body>
79
- <Caption marginBottom="xs">{"Description"}</Caption>
80
- <RichTextEditor />
79
+ <Textarea
80
+ id={`default-example-2-${index}`}
81
+ label="Description"
82
+ rows={4}
83
+ />
81
84
  <br />
82
85
  <Caption>
83
86
  {
@@ -0,0 +1,16 @@
1
+ <%
2
+ options = [
3
+ { label: "United States", value: "unitedStates", id: "us" },
4
+ { label: "Canada", value: "canada", id: "ca" },
5
+ { label: "Pakistan", value: "pakistan", id: "pk" },
6
+ ]
7
+ %>
8
+
9
+ <%= pb_rails("caption", props: { margin_bottom: "xs", text: "Any" }) %>
10
+ <%= pb_rails("dropdown", props: { options: options, close_on_click: "any", margin_bottom: "md" }) %>
11
+
12
+ <%= pb_rails("caption", props: { margin_bottom: "xs", text: "Outside" }) %>
13
+ <%= pb_rails("dropdown", props: { options: options, close_on_click: "outside", margin_bottom: "md" }) %>
14
+
15
+ <%= pb_rails("caption", props: { margin_bottom: "xs", text: "Inside" }) %>
16
+ <%= pb_rails("dropdown", props: { options: options, close_on_click: "inside" }) %>
@@ -0,0 +1 @@
1
+ The `close_on_click` prop allows you to control when the Dropdown closes in response to click interactions. The value `any` reflects the default behavior, where the dropdown will close after any click. Set it to `outside` to ensure interactive elements as dropdown options are able to be interacted with or modified. Set it to `inside` for a dropdown that only closes when the input or dropdown menu is clicked.
@@ -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,7 +33,6 @@ 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
35
- - dropdown_custom_event_type: Custom Event Type
36
36
 
37
37
  react:
38
38
  - dropdown_default: Default
@@ -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'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui_docs
3
3
  version: !ruby/object:Gem::Version
4
- version: 16.3.0.pre.alpha.play284914770
4
+ version: 16.3.0.pre.alpha.play285814889
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: 2026-03-03 00:00:00.000000000 Z
12
+ date: 2026-03-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: playbook_ui
@@ -861,8 +861,8 @@ files:
861
861
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_clear_selection.md
862
862
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_closing_options.jsx
863
863
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_closing_options.md
864
- - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_custom_event_type.html.erb
865
- - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_custom_event_type.md
864
+ - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_closing_options_rails.html.erb
865
+ - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_closing_options_rails.md
866
866
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.jsx
867
867
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.md
868
868
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_rails.html.erb
@@ -1972,31 +1972,10 @@ files:
1972
1972
  - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_sticky.md
1973
1973
  - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_templates.jsx
1974
1974
  - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_templates.md
1975
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_attributes.html.erb
1976
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_attributes.jsx
1977
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.html.erb
1978
1975
  - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.jsx
1979
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_focus.html.erb
1980
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_focus.jsx
1981
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_inline.html.erb
1982
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_inline.jsx
1983
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_label.jsx
1984
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_label.md
1976
+ - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.md
1985
1977
  - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_more_extensions.jsx
1986
1978
  - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_more_extensions.md
1987
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.html.erb
1988
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.jsx
1989
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.html.erb
1990
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.jsx
1991
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.md
1992
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_simple.html.erb
1993
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_simple.jsx
1994
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_sticky.html.erb
1995
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_sticky.jsx
1996
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_templates.html.erb
1997
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_templates.jsx
1998
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_bottom.html.erb
1999
- - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_bottom.jsx
2000
1979
  - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_disabled.jsx
2001
1980
  - app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_disabled.md
2002
1981
  - app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml
@@ -1,224 +0,0 @@
1
- <%
2
- default_options = [
3
- { label: 'United States', value: 'unitedStates', id: 'us' },
4
- { label: 'Canada', value: 'canada', id: 'ca' },
5
- { label: 'Pakistan', value: 'pakistan', id: 'pk' },
6
- { label: 'India', value: 'India', id: 'in' },
7
- { label: 'Mexico', value: 'Mexico', id: 'mx' },
8
- ]
9
-
10
- multi_options = [
11
- { label: 'United States', value: 'unitedStates', id: 'us' },
12
- { label: 'Canada', value: 'canada', id: 'ca' },
13
- { label: 'Pakistan', value: 'pakistan', id: 'pk' },
14
- { label: 'India', value: 'india', id: 'in' },
15
- { label: 'United Kingdom', value: 'unitedKingdom', id: 'uk' },
16
- ]
17
-
18
- autocomplete_options = [
19
- { label: "United States", value: "unitedStates", areaCode: "+1", icon: "🇺🇸", id: "us" },
20
- { label: "United Kingdom", value: "unitedKingdom", areaCode: "+44", icon: "🇬🇧", id: "gb" },
21
- { label: "Pakistan", value: "pakistan", areaCode: "+92", icon: "🇵🇰", id: "pk" },
22
- ]
23
-
24
- custom_display_options = [
25
- { label: "Strong Bad", value: "strongBad", id: "strong-bad", status: "Offline" },
26
- { label: "Strong Mad", value: "strongMad", id: "strong-mad", status: "Online" },
27
- { label: "Strong Sad", value: "strongSad", id: "strong-sad", status: "Away" },
28
- ]
29
-
30
- custom_display_content = capture do
31
- pb_rails("flex", props: { align: "center" }) do
32
- concat(pb_rails("avatar", props: { name: "", size: "xs", id: "cet-dropdown-avatar" }))
33
- concat(pb_rails("body", props: { text: "", size: "xs", margin_x: "xs", id: "cet-dropdown-avatar-name" }))
34
- concat(pb_rails("badge", props: { text: "", id: "cet-dropdown-avatar-status" }))
35
- end
36
- end
37
- %>
38
-
39
- <!-- Example 1: Default dropdown -->
40
- <%= pb_rails("dropdown", props: {
41
- custom_event_type: "form:submitted,pb:dropdown:clearRequest",
42
- id: "dropdown-default-cet",
43
- label: "Default dropdown",
44
- margin_bottom: "sm",
45
- options: default_options,
46
- }) %>
47
- <%= pb_rails("flex", props: { wrap: true, gap: "sm", align: "center", margin_bottom: "md" }) do %>
48
- <%= pb_rails("button", props: { id: "clear-default-cet", text: "Clear", variant: "primary" }) %>
49
- <%= pb_rails("button", props: { id: "select-default-cet", text: "Select Canada", variant: "secondary" }) %>
50
- <%= pb_rails("button", props: { id: "simulate-default-cet", text: "Simulate form submit", variant: "secondary" }) %>
51
- <% end %>
52
-
53
- <script>
54
- (function() {
55
- var id = "dropdown-default-cet";
56
- document.getElementById("clear-default-cet").addEventListener("click", function() {
57
- document.dispatchEvent(new CustomEvent("pb:dropdown:clearRequest", { detail: { dropdownId: id } }));
58
- });
59
- document.getElementById("select-default-cet").addEventListener("click", function() {
60
- document.dispatchEvent(new CustomEvent("pb:dropdown:select", { detail: { dropdownId: id, optionId: "ca" } }));
61
- });
62
- document.getElementById("simulate-default-cet").addEventListener("click", function() {
63
- document.dispatchEvent(new CustomEvent("form:submitted", { detail: { dropdownId: id } }));
64
- });
65
- })();
66
- </script>
67
-
68
- <!-- Example 2: Multi select -->
69
- <%= pb_rails("dropdown", props: {
70
- custom_event_type: "form:submitted,pb:dropdown:clearRequest",
71
- id: "dropdown-multi-cet",
72
- label: "Multi select dropdown",
73
- margin_bottom: "sm",
74
- multi_select: true,
75
- options: multi_options,
76
- }) %>
77
- <%= pb_rails("flex", props: { wrap: true, gap: "sm", align: "center", margin_bottom: "md" }) do %>
78
- <%= pb_rails("button", props: { id: "clear-multi-cet", text: "Clear", variant: "primary" }) %>
79
- <%= pb_rails("button", props: { id: "select-multi-cet", text: "Select US + UK", variant: "secondary" }) %>
80
- <%= pb_rails("button", props: { id: "simulate-multi-cet", text: "Simulate form submit", variant: "secondary" }) %>
81
- <% end %>
82
-
83
- <script>
84
- (function() {
85
- var id = "dropdown-multi-cet";
86
- document.getElementById("clear-multi-cet").addEventListener("click", function() {
87
- document.dispatchEvent(new CustomEvent("pb:dropdown:clearRequest", { detail: { dropdownId: id } }));
88
- });
89
- document.getElementById("select-multi-cet").addEventListener("click", function() {
90
- document.dispatchEvent(new CustomEvent("pb:dropdown:select", { detail: { dropdownId: id, optionIds: ["us", "uk"] } }));
91
- });
92
- document.getElementById("simulate-multi-cet").addEventListener("click", function() {
93
- document.dispatchEvent(new CustomEvent("form:submitted", { detail: { dropdownId: id } }));
94
- });
95
- })();
96
- </script>
97
-
98
- <!-- Example 3: Autocomplete -->
99
- <%= pb_rails("dropdown", props: {
100
- autocomplete: true,
101
- custom_event_type: "form:submitted,pb:dropdown:clearRequest",
102
- id: "dropdown-autocomplete-cet",
103
- label: "Autocomplete dropdown",
104
- margin_bottom: "sm",
105
- options: autocomplete_options,
106
- }) %>
107
- <%= pb_rails("flex", props: { wrap: true, gap: "sm", align: "center", margin_bottom: "md" }) do %>
108
- <%= pb_rails("button", props: { id: "clear-autocomplete-cet", text: "Clear", variant: "primary" }) %>
109
- <%= pb_rails("button", props: { id: "select-autocomplete-cet", text: "Select Pakistan", variant: "secondary" }) %>
110
- <%= pb_rails("button", props: { id: "simulate-autocomplete-cet", text: "Simulate form submit", variant: "secondary" }) %>
111
- <% end %>
112
-
113
- <script>
114
- (function() {
115
- var id = "dropdown-autocomplete-cet";
116
- document.getElementById("clear-autocomplete-cet").addEventListener("click", function() {
117
- document.dispatchEvent(new CustomEvent("pb:dropdown:clearRequest", { detail: { dropdownId: id } }));
118
- });
119
- document.getElementById("select-autocomplete-cet").addEventListener("click", function() {
120
- document.dispatchEvent(new CustomEvent("pb:dropdown:select", { detail: { dropdownId: id, optionId: "pk" } }));
121
- });
122
- document.getElementById("simulate-autocomplete-cet").addEventListener("click", function() {
123
- document.dispatchEvent(new CustomEvent("form:submitted", { detail: { dropdownId: id } }));
124
- });
125
- })();
126
- </script>
127
-
128
- <!-- Example 4: Quick pick (Date Range) -->
129
- <%= pb_rails("dropdown", props: {
130
- custom_event_type: "form:submitted,pb:dropdown:clearRequest",
131
- id: "dropdown-quickpick-cet",
132
- label: "Quickpick dropdown",
133
- margin_bottom: "sm",
134
- variant: "quickpick",
135
- }) %>
136
- <%= pb_rails("flex", props: { wrap: true, gap: "sm", align: "center", margin_bottom: "md" }) do %>
137
- <%= pb_rails("button", props: { id: "clear-quickpick-cet", text: "Clear", variant: "primary" }) %>
138
- <%= pb_rails("button", props: { id: "select-quickpick-cet", text: "Select This Week", variant: "secondary" }) %>
139
- <%= pb_rails("button", props: { id: "simulate-quickpick-cet", text: "Simulate form submit", variant: "secondary" }) %>
140
- <% end %>
141
-
142
- <script>
143
- (function() {
144
- var id = "dropdown-quickpick-cet";
145
- document.getElementById("clear-quickpick-cet").addEventListener("click", function() {
146
- document.dispatchEvent(new CustomEvent("pb:dropdown:clearRequest", { detail: { dropdownId: id } }));
147
- });
148
- document.getElementById("select-quickpick-cet").addEventListener("click", function() {
149
- document.dispatchEvent(new CustomEvent("pb:dropdown:select", { detail: { dropdownId: id, optionId: "quickpick-this-week" } }));
150
- });
151
- document.getElementById("simulate-quickpick-cet").addEventListener("click", function() {
152
- document.dispatchEvent(new CustomEvent("form:submitted", { detail: { dropdownId: id } }));
153
- });
154
- })();
155
- </script>
156
-
157
- <!-- Example 5: Custom display -->
158
- <%= pb_rails("dropdown", props: {
159
- custom_event_type: "form:submitted,pb:dropdown:clearRequest",
160
- id: "dropdown-custom-display-cet",
161
- label: "Custom display (Subcomponent) dropdown",
162
- margin_bottom: "sm",
163
- options: custom_display_options,
164
- }) do %>
165
- <%= pb_rails("dropdown/dropdown_trigger", props: { placeholder: "Select a User", custom_display: custom_display_content }) %>
166
- <%= pb_rails("dropdown/dropdown_container") do %>
167
- <% custom_display_options.each do |option| %>
168
- <%= pb_rails("dropdown/dropdown_option", props: { option: option }) do %>
169
- <%= pb_rails("flex", props: { align: "center", justify: "between" }) do %>
170
- <%= pb_rails("flex/flex_item") do %>
171
- <%= pb_rails("user", props: { name: option[:label], align: "left", avatar: true, orientation: "horizontal" }) %>
172
- <% end %>
173
- <%= pb_rails("flex/flex_item") do %>
174
- <%= pb_rails("badge", props: { rounded: true, dark: true, text: option[:status], variant: option[:status] == "Offline" ? "neutral" : option[:status] == "Online" ? "success" : "warning" }) %>
175
- <% end %>
176
- <% end %>
177
- <% end %>
178
- <% end %>
179
- <% end %>
180
- <% end %>
181
- <%= pb_rails("flex", props: { wrap: true, gap: "sm", align: "center", margin_bottom: "md" }) do %>
182
- <%= pb_rails("button", props: { id: "clear-custom-display-cet", text: "Clear", variant: "primary" }) %>
183
- <%= pb_rails("button", props: { id: "select-custom-display-cet", text: "Select Strong Sad", variant: "secondary" }) %>
184
- <%= pb_rails("button", props: { id: "simulate-custom-display-cet", text: "Simulate form submit", variant: "secondary" }) %>
185
- <% end %>
186
-
187
- <script>
188
- (function() {
189
- var id = "dropdown-custom-display-cet";
190
- document.getElementById("clear-custom-display-cet").addEventListener("click", function() {
191
- document.dispatchEvent(new CustomEvent("pb:dropdown:clearRequest", { detail: { dropdownId: id } }));
192
- });
193
- document.getElementById("select-custom-display-cet").addEventListener("click", function() {
194
- document.dispatchEvent(new CustomEvent("pb:dropdown:select", { detail: { dropdownId: id, optionId: "strong-sad" } }));
195
- });
196
- document.getElementById("simulate-custom-display-cet").addEventListener("click", function() {
197
- document.dispatchEvent(new CustomEvent("form:submitted", { detail: { dropdownId: id } }));
198
- });
199
-
200
- document.addEventListener("pb:dropdown:selected", function(e) {
201
- if (e.target && e.target.id === id && e.detail) {
202
- var display = e.target.querySelector("[data-dropdown-trigger-custom-display]");
203
- if (!display) return;
204
- var nameEl = display.querySelector("#cet-dropdown-avatar-name");
205
- if (nameEl) nameEl.textContent = e.detail.label;
206
- var avatarEl = display.querySelector("#cet-dropdown-avatar");
207
- if (avatarEl) {
208
- var wrapper = avatarEl.querySelector(".avatar_wrapper");
209
- if (wrapper) {
210
- var initials = (e.detail.label[0] + (e.detail.label.split(" ").pop() || "")[0]).toUpperCase();
211
- wrapper.dataset.name = e.detail.label;
212
- wrapper.setAttribute("data-initials", initials);
213
- }
214
- }
215
- var badgeEl = display.querySelector("#cet-dropdown-avatar-status");
216
- if (badgeEl && e.detail.status) {
217
- var variant = e.detail.status === "Online" ? "success" : e.detail.status === "Offline" ? "neutral" : "warning";
218
- badgeEl.querySelector("span").textContent = e.detail.status;
219
- badgeEl.className = "pb_badge_kit_" + variant;
220
- }
221
- }
222
- });
223
- })();
224
- </script>
@@ -1,7 +0,0 @@
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.
@@ -1,5 +0,0 @@
1
- <%= pb_rails("rich_text_editor", props: {
2
- aria: { label: "rich-textarea" },
3
- data: { key: "value", key2: "value2" },
4
- name: "textarea-label",
5
- }) %>
@@ -1,15 +0,0 @@
1
- import React from 'react'
2
- import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
3
-
4
- const RichTextEditorAttributes = (props) => (
5
- <div>
6
- <RichTextEditor
7
- aria={{ label: 'rich textarea' }}
8
- data={{ key: 'value', key2: 'value2' }}
9
- name="name-attribute"
10
- {...props}
11
- />
12
- </div>
13
- )
14
-
15
- export default RichTextEditorAttributes
@@ -1 +0,0 @@
1
- <%= pb_rails("rich_text_editor", props: {input_options: { id: 'hidden_input_id', name: "hidden_input_name" }, value: "Add your text here. You can format your text, add links, quotes, and bullets."}) %>
@@ -1,3 +0,0 @@
1
- <%= pb_rails("rich_text_editor", props: {focus: true}) %>
2
- <br>
3
- <%= pb_rails("rich_text_editor", props: {focus: true}) %>
@@ -1,17 +0,0 @@
1
- import React from 'react'
2
- import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
3
-
4
- const RichTextEditorFocus = (props) => (
5
- <>
6
- <RichTextEditor
7
- focus
8
- {...props}
9
- />
10
- <br />
11
- <RichTextEditor
12
- focus
13
- {...props}
14
- />
15
- </>
16
- )
17
- export default RichTextEditorFocus
@@ -1,6 +0,0 @@
1
- <%= pb_rails("rich_text_editor", props: {
2
- id: "inline",
3
- inline: true,
4
- toolbar_bottom: true,
5
- value: "Try hovering over this text. Then try modifying it or adding more of your own text."
6
- }) %>
@@ -1,16 +0,0 @@
1
- import React from 'react'
2
- import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
3
-
4
- const RichTextEditorInline = (props) => (
5
- <div>
6
- <RichTextEditor
7
- id="inline"
8
- inline
9
- toolbarBottom
10
- value="Try hovering over this text. Then try modifying it or adding more of your own text."
11
- {...props}
12
- />
13
- </div>
14
- )
15
-
16
- export default RichTextEditorInline
@@ -1,28 +0,0 @@
1
- import React, { useState } from 'react'
2
- import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
3
-
4
- const RichTextEditorLabel = (props) => {
5
- const [value, setValue] = useState(''),
6
- handleOnChange = (html) => setValue(html)
7
-
8
- return (
9
- <div>
10
- <RichTextEditor
11
- id="example"
12
- label="Example Label"
13
- onChange={handleOnChange}
14
- value={value}
15
- {...props}
16
- />
17
- <br/>
18
- <RichTextEditor
19
- label="Example Label No ID"
20
- onChange={handleOnChange}
21
- value={value}
22
- {...props}
23
- />
24
- </div>
25
- )
26
- }
27
-
28
- export default RichTextEditorLabel
@@ -1 +0,0 @@
1
- The optional `label` prop adds a visible label to the editor. Passing in the `id` prop associates the `label` with the editor for accessibility, enabling screen reader support and label-based focus behavior.
@@ -1,35 +0,0 @@
1
-
2
- <%= pb_rails("rich_text_editor", props: { id: "content-preview-editor" }) %>
3
- <div id="card-obfuscation" style="display:none">
4
- <%= pb_rails("card", props: { margin_top: "md", max_width: "md", padding: "sm" }) do %>
5
- <div id="content-preview" class="trix-content">
6
- </div>
7
- <% end %>
8
- </div>
9
- <%= pb_rails("button", props: { id: "preview-button", variant: "secondary", margin_top: "md" }) do %>
10
- <span>Preview Output</span>
11
- <% end %>
12
-
13
- <script>
14
- document.addEventListener('DOMContentLoaded', () => {
15
- function handleButtonClick() {
16
- const editorContainer = [...document.querySelectorAll('[data-pb-react-props]')]
17
- .find(element => element.getAttribute('data-pb-react-props')?.includes('"id":"content-preview-editor"'))
18
-
19
- const editorElement = editorContainer?.querySelector('trix-editor')
20
- const inputId = editorElement?.getAttribute('input')
21
- const inputElement = inputId && document.getElementById(inputId)
22
-
23
- const editorContent = inputElement?.value || ''
24
- const previewArea = document.getElementById('content-preview')
25
- const cardDiv = document.getElementById('card-obfuscation')
26
-
27
- if (previewArea && cardDiv) {
28
- previewArea.innerHTML = editorContent
29
- cardDiv.style.display = 'block'
30
- }
31
- }
32
-
33
- document.getElementById('preview-button')?.addEventListener('click', handleButtonClick)
34
- })
35
- </script>
@@ -1,45 +0,0 @@
1
- import React, { useState } from 'react'
2
- import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
3
- import Button from '../../pb_button/_button'
4
- import Card from '../../pb_card/_card'
5
-
6
- const RichTextEditorPreview = (props) => {
7
- const [showPreview, setShowPreview] = useState(false)
8
- const [previewText, setPreviewText] = useState(<div />)
9
-
10
- const handleChange = (event) => setPreviewText(event)
11
- const handleClick = () => {
12
- setShowPreview(true)
13
- }
14
-
15
- return (
16
- <div>
17
- <RichTextEditor
18
- id="content-preview-editor"
19
- onChange={handleChange}
20
- {...props}
21
- />
22
- {showPreview && (
23
- <Card marginTop="md">
24
- <div
25
- className="trix-content"
26
- // eslint-disable-next-line react/no-danger
27
- dangerouslySetInnerHTML={{ __html: previewText }}
28
- id="preview-content"
29
- />
30
- </Card>
31
- )}
32
- {!showPreview && (
33
- <div />
34
- )}
35
- <Button
36
- id="preview-button"
37
- marginTop="md"
38
- onClick={handleClick}
39
- text="Preview Output"
40
- variant="secondary"
41
- />
42
- </div>
43
- )
44
- }
45
- export default RichTextEditorPreview
@@ -1,10 +0,0 @@
1
- <%= pb_rails("rich_text_editor", props: {
2
- id: "required-indicator",
3
- input_options: {
4
- id: 'hidden_input_id',
5
- name: "hidden_input_name"
6
- },
7
- label: "Label",
8
- required_indicator: true,
9
- value: "Add your text here. You can format your text, add links, quotes, and bullets."
10
- }) %>
@@ -1,22 +0,0 @@
1
- import React, { useState } from 'react'
2
- import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
3
-
4
- const RichTextEditorRequiredIndicator = (props) => {
5
- const [value, setValue] = useState('Add your text here. You can format your text, add links, quotes, and bullets.'),
6
- handleOnChange = (html) => setValue(html)
7
-
8
- return (
9
- <div>
10
- <RichTextEditor
11
- inputOptions = {{ id: "required" }}
12
- label="Label"
13
- onChange={handleOnChange}
14
- requiredIndicator
15
- value={value}
16
- {...props}
17
- />
18
- </div>
19
- )
20
- }
21
-
22
- export default RichTextEditorRequiredIndicator
@@ -1,3 +0,0 @@
1
- The `requiredIndicator`/`required_indicator` prop displays a red asterisk (*) next to the label, visually indicating that the field is required. This is purely visual and does not enforce validation.
2
-
3
- You can use `requiredIndicator`/`required_indicator` with any validation approach: HTML5 validation via the `required` prop, client-side validation, or backend validation. For this reason, it works independently and doesn't need to be paired with the `required` prop.
@@ -1 +0,0 @@
1
- <%= pb_rails("rich_text_editor", props: {simple: true, id: "simple"}) %>
@@ -1,13 +0,0 @@
1
- import React from 'react'
2
- import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
3
-
4
- const RichTextEditorSimple = (props) => (
5
- <div>
6
- <RichTextEditor
7
- simple
8
- {...props}
9
- />
10
- </div>
11
- )
12
-
13
- export default RichTextEditorSimple
@@ -1 +0,0 @@
1
- <%= pb_rails("rich_text_editor", props: {id: "sticky", sticky: true, 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."}) %>
@@ -1,15 +0,0 @@
1
- import React from 'react'
2
- import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
3
-
4
- const RichTextEditorSticky = (props) => (
5
- <div>
6
- <RichTextEditor
7
- id="sticky"
8
- sticky
9
- 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."
10
- {...props}
11
- />
12
- </div>
13
- )
14
-
15
- export default RichTextEditorSticky
@@ -1,115 +0,0 @@
1
- <% changelog = "<div>
2
- <strong>Changelog:<br></strong>
3
- [INSERT LINK]<br><br>
4
- You can test the normal spots of Playbook rails and react on
5
- dev docs plus the following:
6
- </div>
7
- <div>
8
- <br>
9
- </div>" %>
10
-
11
- <% release = "<div>
12
- <div>
13
- <strong>Story Background</strong>
14
- </div>
15
- <div>
16
- Follow the{' '}
17
- <a href='https://github.com/powerhome/playbook/wiki/Release-Team-Guide'>
18
- release process
19
- </a>{' '}
20
- to create a new version, create a gem, and package. Create a Ninja testing
21
- plan, then update Nitro with the new version.
22
- </div>
23
- <div>
24
- <br />
25
- </div>
26
- <div>
27
- <strong>Timeline / Due Date</strong>
28
- </div>
29
- <div>
30
- <em>Release End of business Thursday</em>
31
- </div>
32
- <div>
33
- <em>Testing on Nitro End of business Friday</em>
34
- </div>
35
- <div>
36
- <br />
37
- </div>
38
- <div>
39
- <strong>Definition of done</strong>
40
- </div>
41
- <ol>
42
- <li>Merge all PR’s</li>
43
- <li>Update the final CHANGELOG</li>
44
- <li>Version up and generate NPM, and RubyGem</li>
45
- <li>Create next version branch and milestone</li>
46
- <li>Update default branch and branch protection rules&nbsp;</li>
47
- <li>Notify Everyone of new version</li>
48
- <li>
49
- Generate testing plan and pages to test for Ninjas (update runway
50
- ticket)
51
- </li>
52
- <li>Update version on Nitro and get on Demo</li>
53
- <li>Send Ninjas demo and runway ticket for testing</li>
54
- <li>Ninja Approved + PR Approved</li>
55
- </ol>
56
- <div>
57
- <br />
58
- </div>
59
- <div>
60
- <strong>Stakeholders / Sign-off</strong>
61
- </div>
62
- <ul>
63
- <li>Code Owners</li>
64
- </ul>
65
- <div>
66
- <br />
67
- <strong>Cadence</strong>
68
- <br />
69
- Jason, Jon, Stephen, Jasper, Brendan, Cole
70
- </div>
71
- </div>" %>
72
-
73
- <%= pb_rails("select", props: {
74
- id: "rails-select-dropdown",
75
- label: "",
76
- name: "",
77
- blank_selection: "Select a template",
78
- options: [
79
- {
80
- value: release,
81
- value_text: "Playbook Release",
82
- },
83
- {
84
- value: changelog,
85
- value_text: "Changelog",
86
- },
87
- ]
88
- }) %>
89
-
90
-
91
-
92
-
93
-
94
- <%= pb_rails("rich_text_editor", props: {classname: 'template-test', id: "template", template: '' }) %>
95
-
96
-
97
- <script>
98
- const updateContent = (template) => {
99
- const trix = document.querySelector('.template-test trix-editor');
100
- const editor = trix.editor;
101
- console.log(editor)
102
- editor.loadHTML("")
103
- editor.setSelectedRange([0, 0])
104
- editor.insertHTML(template)
105
- }
106
-
107
- window.addEventListener('DOMContentLoaded', () => {
108
- const editor = document.querySelector("#rails-select-dropdown")
109
- editor.addEventListener('change', function() {
110
- console.log('You selected: ', this.value);
111
- const template = this.value
112
- updateContent(template);
113
- });
114
- });
115
- </script>
@@ -1,42 +0,0 @@
1
- import React, { useState } from 'react'
2
- import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
3
- import Select from '../../pb_select/_select'
4
- import { changelog, release } from './templates.js'
5
-
6
- const RichTextEditorTemplates = (props) => {
7
- const [editorContent, setEditorContent] = useState('')
8
-
9
- const handleChange = (event) => {
10
- setEditorContent(event.target.value)
11
- }
12
-
13
- const options = [
14
- {
15
- value: release,
16
- text: 'Playbook Release',
17
- },
18
- {
19
- value: changelog,
20
- text: 'Changelog',
21
- },
22
- ]
23
-
24
- return (
25
- <div>
26
- <Select
27
- blankSelection="Select a template..."
28
- label="Template"
29
- onChange={handleChange}
30
- options={options}
31
- {...props}
32
- />
33
- <RichTextEditor
34
- id="template"
35
- template={editorContent}
36
- {...props}
37
- />
38
- </div>
39
- )
40
- }
41
-
42
- export default RichTextEditorTemplates
@@ -1,4 +0,0 @@
1
- <%= pb_rails("rich_text_editor", props: {
2
- id: "toolbar-bottom",
3
- toolbar_bottom: true
4
- }) %>
@@ -1,14 +0,0 @@
1
- import React from 'react'
2
- import RichTextEditor from '../../pb_rich_text_editor/_rich_text_editor'
3
-
4
- const RichTextEditorToolbarBottom = (props) => (
5
- <div>
6
- <RichTextEditor
7
- id="bottom-toolbar"
8
- toolbarBottom
9
- {...props}
10
- />
11
- </div>
12
- )
13
-
14
- export default RichTextEditorToolbarBottom