playbook_ui_docs 15.3.0.pre.alpha.PLAY2601advancedtablecustomcellmultiheaderrails12030 → 15.3.0.pre.alpha.PLAY2622richtexteditortiptaponlyrails12127

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 (40) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_background_control_rails.html.erb +4 -0
  3. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_background_control_rails.md +1 -1
  4. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling.jsx +3 -1
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling.md +2 -0
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_column_headers.jsx +1 -1
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_rails.html.erb +1 -0
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_rails.md +2 -0
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control.jsx +9 -1
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control.md +1 -1
  11. data/app/pb_kits/playbook/pb_currency/docs/_currency_variants.html.erb +1 -1
  12. data/app/pb_kits/playbook/pb_currency/docs/_currency_variants.jsx +1 -1
  13. data/app/pb_kits/playbook/pb_currency/docs/_currency_variants.md +1 -0
  14. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_and_dropdown_range.jsx +38 -0
  15. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_and_dropdown_range.md +14 -0
  16. data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +2 -1
  17. data/app/pb_kits/playbook/pb_date_picker/docs/index.js +2 -1
  18. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick.jsx +18 -0
  19. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick.md +4 -0
  20. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_default_dates.jsx +18 -0
  21. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_default_dates.md +1 -0
  22. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_range_end.jsx +19 -0
  23. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_range_end.md +1 -0
  24. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_with_date_pickers.jsx +38 -0
  25. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_with_date_pickers.md +14 -0
  26. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +5 -0
  27. data/app/pb_kits/playbook/pb_dropdown/docs/index.js +5 -1
  28. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_auto_close.html.erb +15 -1
  29. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_multi_line.html.erb +9 -8
  30. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_positions.html.erb +11 -10
  31. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default_rails.md +7 -0
  32. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_focus.html.erb +10 -2
  33. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_inline_rails.md +1 -0
  34. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.html.erb +19 -11
  35. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_simple.html.erb +5 -1
  36. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_sticky.html.erb +1 -1
  37. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_sticky_rails.md +1 -0
  38. data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +2 -2
  39. data/dist/playbook-doc.js +1 -19
  40. metadata +16 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d824bd157d14a8643cbc18f9ec7676b45fe90e949315e96e191ce66503a6aff7
4
- data.tar.gz: a64fe3d7ce447ca068d90e46f1ab54a36e07f5f917efd8cb5092ff2c14c20c48
3
+ metadata.gz: ff2286b21c48390fcd124440d69de83db038fd23a3b5f74039c819c588a738ad
4
+ data.tar.gz: 3acf15022a6ba95552cc03b78c4d87ffbea1d376354c720b380cdf9398f594c8
5
5
  SHA512:
6
- metadata.gz: 0c7d7dae90ec02263d91fa228845fbe3cd46769a9906be99e0055adacf327486f670e143517d360cc1691f9e2d0c47a8b101c85f54fa9713a35263f5a1621613
7
- data.tar.gz: da4b5f29eec7b56ff02ba76f154f25182b5d02f9da670f2e211482b6eb856ebf0d665c7d133de8069e46f7c6baa5df02e0c7c2f253ac6cb1a0e86d96670732c2
6
+ metadata.gz: '08ccd564a6ac7694fbc53edc0ab5dae7e1cab9a8679ace8bc9bb015ea30f48e831b108fc682e68421126d97cf0e0cbca7af2adbdaf373bcd2378f55ad7741466'
7
+ data.tar.gz: 58acd298938164bf9b9eab73ad0696544ec96bb3d7ba30580457f14e42d89a400460906d46246ce4a99fc5b3dbe4d2e1f2509ba48f644bf107388d2feff71434
@@ -26,6 +26,10 @@
26
26
  {
27
27
  accessor: "classCompletionRate",
28
28
  label: "Class Completion Rate",
29
+ column_styling: {
30
+ cell_background_color: "category_1",
31
+ font_color: "white"
32
+ }
29
33
  },
30
34
  {
31
35
  accessor: "graduatedStudents",
@@ -1 +1 @@
1
- `column_styling` can also be used to control the background color on all cells in a given column via the use of the `cell_background_color` key/value pair. Use `cell_background_color` to achieve custom background colors for individual cells as seen here.
1
+ `column_styling` can also be used to control the background color on all cells in a given column via the use of the `cell_background_color` key/value pair. Use `cell_background_color` to achieve custom background colors for individual cells as seen here. Use `font_color` to achieve better contrast between cell content and background for darker backgrounds.
@@ -1,7 +1,8 @@
1
1
  import React from "react"
2
- import AdvancedTable from '../../pb_advanced_table/_advanced_table'
2
+ import { AdvancedTable, colors } from "playbook-ui"
3
3
  import MOCK_DATA from "./advanced_table_mock_data.json"
4
4
 
5
+
5
6
  const AdvancedTableColumnStyling = (props) => {
6
7
  const columnDefinitions = [
7
8
  {
@@ -34,6 +35,7 @@ const AdvancedTableColumnStyling = (props) => {
34
35
  {
35
36
  accessor: "graduatedStudents",
36
37
  label: "Graduated Students",
38
+ columnStyling:{fontColor: colors.data_8},
37
39
  },
38
40
  ]
39
41
 
@@ -4,4 +4,6 @@ The `columnStyling` prop is an optional item that can be used within `columnDefi
4
4
 
5
5
  2) `cellAlignment`: This will allow you to control alignment of content within all cells in the given column. This is set to right aligned by default. you can set this to `left`, `right` or `center`.
6
6
 
7
+ 3) `fontColor`: This will allow you to control the font color for a given column.
8
+
7
9
  `columnStyling` can be used within the columnDefinition of all the columns or some of them, as shown. Each column has its own individual control in this way.
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import AdvancedTable from '../../pb_advanced_table/_advanced_table';
2
+ import { AdvancedTable } from "playbook-ui";
3
3
  import MOCK_DATA from "./advanced_table_mock_data.json";
4
4
 
5
5
  const AdvancedTableColumnStylingColumnHeaders = (props) => {
@@ -29,6 +29,7 @@
29
29
  {
30
30
  accessor: "graduatedStudents",
31
31
  label: "Graduated Students",
32
+ column_styling: { font_color: "red" }
32
33
  }
33
34
  ] %>
34
35
 
@@ -4,4 +4,6 @@ The `column_styling` prop is an optional item that can be used within `column_de
4
4
 
5
5
  2) `cell_alignment`: This will allow you to control alignment of content within all cells in the given column. This is set to right aligned by default. you can set this to `left`, `right` or `center`.
6
6
 
7
+ 3) `font_color`: This will allow you to control the font color for a given column.
8
+
7
9
  `column_styling` can be used within the column_definition of all the columns or some of them, as shown. Each column has its own individual control in this way.
@@ -22,7 +22,6 @@ const AdvancedTablePaddingControl = (props) => {
22
22
  {value}
23
23
  </Background>
24
24
  ),
25
-
26
25
  },
27
26
  {
28
27
  accessor: "scheduledMeetings",
@@ -39,6 +38,15 @@ const AdvancedTablePaddingControl = (props) => {
39
38
  {
40
39
  accessor: "classCompletionRate",
41
40
  label: "Class Completion Rate",
41
+ columnStyling:{cellPadding: "none", fontColor: "white"},
42
+ customRenderer: (row, value) => (
43
+ <Background
44
+ backgroundColor={"category_1"}
45
+ padding="xs"
46
+ >
47
+ {value}
48
+ </Background>
49
+ ),
42
50
  },
43
51
  {
44
52
  accessor: "graduatedStudents",
@@ -1,3 +1,3 @@
1
1
  `columnStyling` can also be used to control padding on all cells in a given column via the use of the `cellPadding` key/value pair. `cellPadding` lets you use 'xxs', 'xs', 'sm', 'md', 'lg', 'xl' and 'none'.
2
2
 
3
- This control can be used in conjunction with the `customRenderer` item within each columnDefinition to achieve custom background colors for individual cells as seen here.
3
+ This control can be used in conjunction with the `customRenderer` item within each columnDefinition to achieve custom background colors for individual cells as seen here. Use `fontColor` to achieve better contrast between cell content and background for darker backgrounds.
@@ -7,7 +7,7 @@
7
7
  }) %>
8
8
 
9
9
  <%= pb_rails("currency", props: {
10
- amount: "342",
10
+ amount: 342,
11
11
  label: "Light",
12
12
  margin_bottom: "md",
13
13
  size: "sm",
@@ -14,7 +14,7 @@ const CurrencyVariants = (props) => {
14
14
  {...props}
15
15
  />
16
16
  <Currency
17
- amount="342"
17
+ amount={342}
18
18
  label="Light"
19
19
  marginBottom="md"
20
20
  size="sm"
@@ -0,0 +1 @@
1
+ **NOTE:** The value passed into the `amount` prop can be either a string or numeric value.
@@ -0,0 +1,38 @@
1
+ import React from "react";
2
+ import Dropdown from "../../pb_dropdown/_dropdown";
3
+ import DatePicker from "../../pb_date_picker/_date_picker";
4
+
5
+ const DatePickerAndDropdownRange = (props) => {
6
+ return (
7
+ <>
8
+ <Dropdown
9
+ controlsEndId="end-date-picker1"
10
+ controlsStartId="start-date-picker1"
11
+ id="dropdown-as-quickpick"
12
+ label="Date Range"
13
+ marginBottom="sm"
14
+ placeholder="Select a Date Range"
15
+ variant="quickpick"
16
+ {...props}
17
+ />
18
+
19
+ <DatePicker
20
+ label="Start Date"
21
+ pickerId="start-date-picker1"
22
+ placeholder="Select a Start Date"
23
+ syncStartWith="dropdown-as-quickpick"
24
+ {...props}
25
+ />
26
+
27
+ <DatePicker
28
+ label="End Date"
29
+ pickerId="end-date-picker1"
30
+ placeholder="Select an End Date"
31
+ syncEndWith="dropdown-as-quickpick"
32
+ {...props}
33
+ />
34
+ </>
35
+ );
36
+ };
37
+
38
+ export default DatePickerAndDropdownRange;
@@ -0,0 +1,14 @@
1
+ You can link a Dropdown (`quickpick` variant) to standard DatePickers using the following props:
2
+
3
+ **For the Dropdown**:
4
+ `controlsStartId`: ID of the DatePicker that should receive the start date.
5
+
6
+ `controlsEndId`: ID of the DatePicker that should receive the end date.
7
+
8
+ When a quickpick option like “This Year” is selected, it automatically populates the linked start and end inputs.
9
+
10
+ **For the Start/End DatePickers**:
11
+ `syncStartWith`: ID of the quickpick this start date is synced to.
12
+ `syncEndWith`: ID of the quickpick this end date is synced to.
13
+
14
+ When a user manually edits the start or end date, it clears the selected quickpick to prevent conflicting values.
@@ -48,7 +48,8 @@ examples:
48
48
  - date_picker_quick_pick_custom: Custom Quick Pick Dates
49
49
  - date_picker_quick_pick_custom_override: Custom Quick Pick Dates (append to defaults)
50
50
  - date_picker_quick_pick_default_date: Range (Quick Pick w/ Default Date)
51
- - date_picker_range_pattern: Range with 2 Date Pickers and a Quick Pick
51
+ # - date_picker_range_pattern: Range with 2 Date Pickers and a Quick Pick
52
+ - date_picker_and_dropdown_range: Range with Dropdown and 2 Date Pickers
52
53
  - date_picker_format: Format
53
54
  - date_picker_disabled: Disabled Dates
54
55
  - date_picker_min_max: Min Max
@@ -26,4 +26,5 @@ export { default as DatePickerOnClose } from './_date_picker_on_close.jsx'
26
26
  export { default as DatePickerQuickPickCustom } from './_date_picker_quick_pick_custom'
27
27
  export { default as DatePickerQuickPickCustomOverride } from './_date_picker_quick_pick_custom_override'
28
28
  export { default as DatePickerQuickPickDefaultDate } from './_date_picker_quick_pick_default_date'
29
- export { default as DatePickerRangePattern } from './_date_picker_range_pattern'
29
+ export { default as DatePickerRangePattern } from './_date_picker_range_pattern'
30
+ export { default as DatePickerAndDropdownRange } from './_date_picker_and_dropdown_range.jsx'
@@ -0,0 +1,18 @@
1
+ import React from 'react'
2
+ import Dropdown from '../../pb_dropdown/_dropdown'
3
+
4
+ const DropdownQuickpick = (props) => {
5
+
6
+ return (
7
+ <div>
8
+ <Dropdown
9
+ label="Date Range"
10
+ onSelect={(selectedItem) => console.log(selectedItem)}
11
+ variant="quickpick"
12
+ {...props}
13
+ />
14
+ </div>
15
+ )
16
+ }
17
+
18
+ export default DropdownQuickpick
@@ -0,0 +1,4 @@
1
+ The QuickPick variant provides predefined date based options when `variant="quickpick"` is used.
2
+
3
+ Open the Dropdown above to see the default options.
4
+
@@ -0,0 +1,18 @@
1
+ import React from 'react'
2
+ import Dropdown from '../../pb_dropdown/_dropdown'
3
+
4
+ const DropdownQuickpickDefaultDates = (props) => {
5
+
6
+ return (
7
+ <div>
8
+ <Dropdown
9
+ defaultValue="This Year"
10
+ label="Date Range"
11
+ variant="quickpick"
12
+ {...props}
13
+ />
14
+ </div>
15
+ )
16
+ }
17
+
18
+ export default DropdownQuickpickDefaultDates
@@ -0,0 +1 @@
1
+ To set a default value for the Dropdown, you can use the label of the range you want set as default, for example "This Year", "Today", etc.
@@ -0,0 +1,19 @@
1
+ import React from 'react'
2
+ import Dropdown from '../../pb_dropdown/_dropdown'
3
+
4
+ const DropdownQuickpickRangeEnd = (props) => {
5
+
6
+ return (
7
+ <div>
8
+ <Dropdown
9
+ label="Date Range"
10
+ onSelect={(selectedItem) => console.log(selectedItem)}
11
+ rangeEndsToday
12
+ variant="quickpick"
13
+ {...props}
14
+ />
15
+ </div>
16
+ )
17
+ }
18
+
19
+ export default DropdownQuickpickRangeEnd
@@ -0,0 +1 @@
1
+ The optional `rangeEndsToday` prop can be used with the quickpick variant to set end date on all ranges that start with 'this' to today's date. For instance, by default 'This Year' will set end day to 12/31/(current year), but if `rangeEndsToday` prop is used, end date on that range will be today's date.
@@ -0,0 +1,38 @@
1
+ import React from "react";
2
+ import Dropdown from "../../pb_dropdown/_dropdown";
3
+ import DatePicker from "../../pb_date_picker/_date_picker";
4
+
5
+ const DropdownQuickpickWithDatePickers = (props) => {
6
+ return (
7
+ <>
8
+ <Dropdown
9
+ controlsEndId="end-date-picker"
10
+ controlsStartId="start-date-picker"
11
+ id="dropdown-quickpick"
12
+ label="Range"
13
+ marginBottom="sm"
14
+ placeholder="Select a Date Range"
15
+ variant="quickpick"
16
+ {...props}
17
+ />
18
+
19
+ <DatePicker
20
+ label="Start Date"
21
+ pickerId="start-date-picker"
22
+ placeholder="Select a Start Date"
23
+ syncStartWith="dropdown-quickpick"
24
+ {...props}
25
+ />
26
+
27
+ <DatePicker
28
+ label="End Date"
29
+ pickerId="end-date-picker"
30
+ placeholder="Select an End Date"
31
+ syncEndWith="dropdown-quickpick"
32
+ {...props}
33
+ />
34
+ </>
35
+ );
36
+ };
37
+
38
+ export default DropdownQuickpickWithDatePickers;
@@ -0,0 +1,14 @@
1
+ You can link a Dropdown (`quickpick` variant) to standard DatePickers using the following props:
2
+
3
+ **For the Dropdown**:
4
+ `controlsStartId`: ID of the DatePicker that should receive the start date.
5
+
6
+ `controlsEndId`: ID of the DatePicker that should receive the end date.
7
+
8
+ When a quickpick option like “This Year” is selected, it automatically populates the linked start and end inputs.
9
+
10
+ **For the Start/End DatePickers**:
11
+ `syncStartWith`: ID of the quickpick this start date is synced to.
12
+ `syncEndWith`: ID of the quickpick this end date is synced to.
13
+
14
+ When a user manually edits the start or end date, it clears the selected quickpick to prevent conflicting values.
@@ -49,4 +49,9 @@ examples:
49
49
  - dropdown_clear_selection: Clear Selection
50
50
  - dropdown_separators_hidden: Separators Hidden
51
51
  - dropdown_with_external_control: useDropdown Hook
52
+ - dropdown_quickpick: Quick Pick Variant
53
+ - dropdown_quickpick_range_end: Quick Pick Variant (Range Ends Today)
54
+ - dropdown_quickpick_default_dates: Quick Pick Variant (Default Dates)
55
+ - dropdown_quickpick_with_date_pickers: Quick Pick Variant with Date Pickers
56
+
52
57
 
@@ -22,4 +22,8 @@ export { default as DropdownMultiSelectWithDefault } from './_dropdown_multi_sel
22
22
  export { default as DropdownMultiSelectWithCustomOptions } from './_dropdown_multi_select_with_custom_options.jsx'
23
23
  export {default as DropdownWithCustomIconOptions} from './_dropdown_with_custom_icon_options.jsx'
24
24
  export {default as DropdownWithCustomRadioOptions} from './_dropdown_with_custom_radio_options.jsx'
25
- export {default as DropdownWithCustomActiveStyleOptions} from './_dropdown_with_custom_active_style_options.jsx'
25
+ export {default as DropdownWithCustomActiveStyleOptions} from './_dropdown_with_custom_active_style_options.jsx'
26
+ export { default as DropdownQuickpick } from './_dropdown_quickpick.jsx'
27
+ export { default as DropdownQuickpickRangeEnd } from './_dropdown_quickpick_range_end.jsx'
28
+ export { default as DropdownQuickpickDefaultDates } from './_dropdown_quickpick_default_dates.jsx'
29
+ export { default as DropdownQuickpickWithDatePickers } from './_dropdown_quickpick_with_date_pickers.jsx'
@@ -22,13 +22,27 @@
22
22
  }) %>
23
23
 
24
24
  <script>
25
+ // Hide toasts immediately
26
+ const hideAutoToasts = () => {
27
+ const toastAuto = document.getElementById('toast-auto-close');
28
+ const toastAutoCloseable = document.getElementById('toast-auto-close-closeable');
29
+ if (toastAuto) toastAuto.style.display = 'none';
30
+ if (toastAutoCloseable) toastAutoCloseable.style.display = 'none';
31
+ }
32
+ hideAutoToasts();
33
+
34
+ // Handle various page load/restore events
35
+ window.addEventListener('pageshow', hideAutoToasts)
36
+ document.addEventListener('turbolinks:load', hideAutoToasts)
37
+ document.addEventListener('turbo:load', hideAutoToasts)
38
+
25
39
  document.addEventListener('DOMContentLoaded', () => {
26
40
  // Initialize toast elements and buttons
27
41
  const toasts = {
28
42
  '#toast-auto-close': document.querySelector("#toast-auto-close"),
29
43
  '#toast-auto-close-closeable': document.querySelector("#toast-auto-close-closeable")
30
44
  }
31
-
45
+
32
46
  const buttons = {
33
47
  '#toast-auto-close': document.querySelector("button[data-toast='#toast-auto-close']"),
34
48
  '#toast-auto-close-closeable': document.querySelector("button[data-toast='#toast-auto-close-closeable']")
@@ -24,7 +24,6 @@
24
24
  horizontal: "center"
25
25
  }) %>
26
26
 
27
-
28
27
  <script type="text/javascript">
29
28
  const multitoasts = document.querySelectorAll(".multitoast-to-hide")
30
29
  const multibuttons = document.querySelectorAll("button[data-multitoast]")
@@ -35,6 +34,15 @@
35
34
  })
36
35
  }
37
36
 
37
+ // Hide toasts immediately
38
+ hideMultiToasts()
39
+
40
+ // Handle various page load/restore events
41
+ window.addEventListener('pageshow', hideMultiToasts)
42
+ document.addEventListener('DOMContentLoaded', hideMultiToasts)
43
+ document.addEventListener('turbolinks:load', hideMultiToasts)
44
+ document.addEventListener('turbo:load', hideMultiToasts)
45
+
38
46
  multibuttons.forEach((button) => {
39
47
  button.onclick = () => {
40
48
  hideMultiToasts()
@@ -46,10 +54,3 @@
46
54
  }
47
55
  })
48
56
  </script>
49
-
50
- <!-- hiding toast on page load -->
51
- <style>
52
- #toast-long, #toast-short {
53
- display: none;
54
- }
55
- </style>
@@ -69,27 +69,28 @@
69
69
  const toasts = document.querySelectorAll(".toast-to-hide")
70
70
  const buttons = document.querySelectorAll("button[data-toast]")
71
71
 
72
- const hideToasts = () => {
72
+ const hidePositionToasts = () => {
73
73
  toasts.forEach((toast) => {
74
74
  toast.style.display = "none"
75
75
  })
76
76
  }
77
77
 
78
+ // Hide toasts immediately
79
+ hidePositionToasts()
80
+
81
+ // Handle various page load/restore events
82
+ window.addEventListener('pageshow', hidePositionToasts)
83
+ document.addEventListener('DOMContentLoaded', hidePositionToasts)
84
+ document.addEventListener('turbolinks:load', hidePositionToasts)
85
+ document.addEventListener('turbo:load', hidePositionToasts)
86
+
78
87
  buttons.forEach((button) => {
79
88
  button.onclick = () => {
80
- hideToasts()
89
+ hidePositionToasts()
81
90
  let toast = document.querySelector(button.getAttribute("data-toast"))
82
-
83
91
  if (toast) {
84
92
  toast.style.display = "flex"
85
93
  }
86
94
  }
87
95
  })
88
96
  </script>
89
-
90
- <!-- hiding toast on page load -->
91
- <style>
92
- #toast-top-center, #toast-top-right, #toast-top-left, #toast-bottom-center, #toast-bottom-right, #toast-bottom-left {
93
- display: none;
94
- }
95
- </style>
@@ -0,0 +1,7 @@
1
+ The Rails RichTextEditor is a React-Rendered-Rails component that uses [Tiptap](https://tiptap.dev/) and requires the following packages to be installed in your project:
2
+
3
+ - `@tiptap/react`
4
+ - `@tiptap/starter-kit`
5
+ - `@tiptap/extension-link`
6
+
7
+ Once installed, the editor is initialized automatically when you use the component. Unlike the [React Advanced RichTextEditor](https://playbook.powerapp.cloud/kits/rich_text_editor/react#advanced-default) variant, [custom extensions](https://playbook.powerapp.cloud/kits/rich_text_editor/react#advanced-extra-extensions) are not currently supported. The doc examples below showcase some preset prop-enabled Rails RichTextEditor customizations.
@@ -1,3 +1,11 @@
1
- <%= pb_rails("rich_text_editor", props: {focus: true}) %>
1
+ <%= pb_rails("rich_text_editor", props: {
2
+ id: "focus-editor-1",
3
+ focus: true,
4
+ value: "Click inside to see the toolbar. Click outside to hide it."
5
+ }) %>
2
6
  <br>
3
- <%= pb_rails("rich_text_editor", props: {focus: true}) %>
7
+ <%= pb_rails("rich_text_editor", props: {
8
+ id: "focus-editor-2",
9
+ focus: true,
10
+ value: "When the optional focus prop is set to true, the toolbar will only show once you click in to the RichTextEditor."
11
+ }) %>
@@ -0,0 +1 @@
1
+ When the optional `inline` prop is set to true, the editor borders and the toolbar will only be visible when hovered or focused on.
@@ -1,30 +1,38 @@
1
+ <%= pb_rails("rich_text_editor", props: {
2
+ id: "content-preview-editor",
3
+ margin_bottom: "md",
4
+ value: "Add text here, format it, and press \"Preview Output\" to see what your stylized output will look like on the page."
5
+ }) %>
6
+
7
+ <%= pb_rails("button", props: { id: "preview-button", text: "Preview Output", variant: "secondary" }) %>
1
8
 
2
- <%= pb_rails("rich_text_editor", props: { id: "content-preview-editor" }) %>
3
9
  <div id="card-obfuscation" style="display:none">
4
10
  <%= pb_rails("card", props: { margin_top: "md", max_width: "md", padding: "sm" }) do %>
5
- <div id="content-preview" class="trix-content">
11
+ <div id="content-preview" class="tiptap-content">
6
12
  </div>
7
13
  <% end %>
8
14
  </div>
9
- <%= pb_rails("button", props: { id: "preview-button", variant: "secondary", margin_top: "md" }) do %>
10
- <span>Preview Output</span>
11
- <% end %>
12
15
 
13
16
  <script>
14
17
  document.addEventListener('DOMContentLoaded', () => {
15
18
  function handleButtonClick() {
19
+ // Find the specific TipTap editor container by ID
16
20
  const editorContainer = [...document.querySelectorAll('[data-pb-react-props]')]
17
21
  .find(element => element.getAttribute('data-pb-react-props')?.includes('"id":"content-preview-editor"'))
18
22
 
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 || ''
23
+ if (!editorContainer) {
24
+ console.log('Editor container not found')
25
+ return
26
+ }
27
+
28
+ // Find the TipTap editor content
29
+ const tiptapEditor = editorContainer.querySelector('.ProseMirror')
24
30
  const previewArea = document.getElementById('content-preview')
25
31
  const cardDiv = document.getElementById('card-obfuscation')
26
32
 
27
- if (previewArea && cardDiv) {
33
+ if (tiptapEditor && previewArea && cardDiv) {
34
+ // Get the HTML content from the TipTap editor
35
+ const editorContent = tiptapEditor.innerHTML || ''
28
36
  previewArea.innerHTML = editorContent
29
37
  cardDiv.style.display = 'block'
30
38
  }
@@ -1 +1,5 @@
1
- <%= pb_rails("rich_text_editor", props: {simple: true, id: "simple"}) %>
1
+ <%= pb_rails("rich_text_editor", props: {
2
+ id: "simple-editor",
3
+ simple: true,
4
+ value: "Add your text here. Use the simple toolbar above to format your text."
5
+ }) %>
@@ -1 +1 @@
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
+ <%= pb_rails("rich_text_editor", props: {id: "sticky-editor", 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."}) %>
@@ -0,0 +1 @@
1
+ Use the optional `sticky` prop to make the toolbar sticky on scroll.
@@ -3,10 +3,10 @@ examples:
3
3
  rails:
4
4
  - rich_text_editor_default: Default
5
5
  - rich_text_editor_simple: Simple
6
- - rich_text_editor_attributes: Attributes
6
+ # - rich_text_editor_attributes: Attributes
7
7
  - rich_text_editor_focus: Focus
8
8
  - rich_text_editor_sticky: Sticky
9
- - rich_text_editor_templates: Templates
9
+ # - rich_text_editor_templates: Templates
10
10
  # - rich_text_editor_toolbar_bottom: Toolbar Bottom
11
11
  - rich_text_editor_inline: Inline
12
12
  - rich_text_editor_preview: Preview