playbook_ui_docs 14.10.0.pre.alpha.PBNTR775formmatingmaskdefaultvalue5137 → 14.10.0.pre.alpha.PLAY1774timelinelabelstepspacing5274

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta_sort.html.erb +1 -3
  3. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers.html.erb +43 -0
  4. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers.jsx +60 -0
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers.md +1 -0
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_multiple.html.erb +58 -0
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_multiple.jsx +74 -0
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_multiple.md +1 -0
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +6 -1
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -0
  11. data/app/pb_kits/playbook/pb_card/docs/_card_header.html.erb +18 -0
  12. data/app/pb_kits/playbook/pb_card/docs/_card_header.jsx +40 -0
  13. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_link.html.erb +8 -0
  14. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_link.jsx +9 -0
  15. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_link.md +1 -0
  16. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_color.html.erb +10 -0
  17. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_color.jsx +42 -0
  18. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_color.md +3 -0
  19. data/app/pb_kits/playbook/pb_section_separator/docs/example.yml +2 -0
  20. data/app/pb_kits/playbook/pb_section_separator/docs/index.js +1 -0
  21. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_description.md +3 -0
  22. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_border_radius.html.erb +9 -0
  23. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_border_radius_rails.md +1 -0
  24. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_color.html.erb +7 -0
  25. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_default.html.erb +1 -1
  26. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_filter.html.erb +119 -0
  27. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_filter.jsx +10 -2
  28. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_height_width.html.erb +15 -0
  29. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_height_width.jsx +6 -2
  30. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_height_width_rails.md +3 -0
  31. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_layout.html.erb +3 -0
  32. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_user.html.erb +63 -0
  33. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_user.jsx +11 -3
  34. data/app/pb_kits/playbook/pb_skeleton_loading/docs/example.yml +7 -2
  35. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns.jsx +88 -0
  36. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns_react.md +3 -0
  37. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns.jsx +1 -1
  38. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns_rails.md +2 -0
  39. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns_react.md +4 -1
  40. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns.jsx +87 -0
  41. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns_react.md +5 -0
  42. data/dist/playbook-doc.js +1 -1
  43. metadata +27 -4
  44. /data/app/pb_kits/playbook/pb_skeleton_loading/docs/{_skeleton_loading_border_radius.md → _skeleton_loading_border_radius_react.md} +0 -0
  45. /data/app/pb_kits/playbook/pb_skeleton_loading/docs/{_skeleton_loading_height_width.md → _skeleton_loading_height_width_react.md} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f63f011df5ca015b631841759087b3250e27cc87c544f286e344df9c4e7ab3a3
4
- data.tar.gz: 10dffc163dc8b721c7a18bff0a1958696974f4847f368fa185905bc944db9fc5
3
+ metadata.gz: 877ffced2933cbb96f1f6e492eb32185c9188e472a85e3aefb5eac54a38046fd
4
+ data.tar.gz: 20269a31e066feb582e95674dab94e8b5e940f7a38fd6aa2d8356721748a567d
5
5
  SHA512:
6
- metadata.gz: 6bd96f9b9a7082b727d649e0bac9a665602d877580e5f3c0b616a8787e4cdda1cf31297d8979183ae54c3bb456c111cd8f921246842820ebac1de3d289194d81
7
- data.tar.gz: 9e529cd3b3778b16fa6ca230c34a4dd88735223372b1b036465f3db9220b5df8cae6c63b906393222a56858096aa538eda9aafc383d80fab6a9dee83db1e726b
6
+ metadata.gz: 9e23ea06428b6f051f60b33a654dba11f5e7dbedada92ffe2ca1801b6549c38c022db958ab00afe9cda2b7d1d6c92fb850a36566fc98a2b36d66863b1383fe2a
7
+ data.tar.gz: 73554e253b0d5c97de77db7f978e53cf22afa507474bb34c09bb788f3b54f19daeafa3baba14463d3be4f9a126f5a9d12e0a2bbc76c70aaddb98d378c8d1e583
@@ -49,11 +49,9 @@
49
49
  label: "Graduated Students",
50
50
  }
51
51
  ]
52
-
53
- subrow_headers = ["Quarter", "Month", "Day"]
54
52
  %>
55
53
 
56
54
  <%= pb_rails("advanced_table", props: { table_data: @table_data, column_definitions: column_definitions }) do %>
57
55
  <%= pb_rails("advanced_table/table_header", props: { column_definitions: column_definitions }) %>
58
- <%= pb_rails("advanced_table/table_body", props: { id: "beta_sort", table_data: @table_data, column_definitions: column_definitions, subrow_headers: subrow_headers, enable_toggle_expansion: "all" }) %>
56
+ <%= pb_rails("advanced_table/table_body", props: { id: "beta_sort", table_data: @table_data, column_definitions: column_definitions, enable_toggle_expansion: "all" }) %>
59
57
  <% end %>
@@ -0,0 +1,43 @@
1
+ <% column_definitions = [
2
+ {
3
+ accessor: "year",
4
+ label: "Year",
5
+ cellAccessors: ["quarter", "month", "day"],
6
+ },
7
+ {
8
+ label: "Enrollment Data",
9
+ columns: [
10
+ {
11
+ accessor: "newEnrollments",
12
+ label: "New Enrollments",
13
+ },
14
+ {
15
+ accessor: "scheduledMeetings",
16
+ label: "Scheduled Meetings",
17
+ },
18
+ ],
19
+ },
20
+ {
21
+ label: "Performance Data",
22
+ columns: [
23
+ {
24
+ accessor: "attendanceRate",
25
+ label: "Attendance Rate",
26
+ },
27
+ {
28
+ accessor: "completedClasses",
29
+ label: "Completed Classes",
30
+ },
31
+ {
32
+ accessor: "classCompletionRate",
33
+ label: "Class Completion Rate",
34
+ },
35
+ {
36
+ accessor: "graduatedStudents",
37
+ label: "Graduated Students",
38
+ },
39
+ ],
40
+ },
41
+ ] %>
42
+
43
+ <%= pb_rails("advanced_table", props: { id: "beta_table_with_headers", table_data: @table_data, column_definitions: column_definitions }) %>
@@ -0,0 +1,60 @@
1
+ import React from "react"
2
+ import { AdvancedTable } from "playbook-ui"
3
+ import MOCK_DATA from "./advanced_table_mock_data.json"
4
+
5
+ const AdvancedTableColumnHeaders = (props) => {
6
+ const columnDefinitions = [
7
+ {
8
+ accessor: "year",
9
+ label: "Year",
10
+ cellAccessors: ["quarter", "month", "day"],
11
+ },
12
+ {
13
+ label: "Enrollment Data",
14
+ columns: [
15
+ {
16
+ accessor: "newEnrollments",
17
+ label: "New Enrollments",
18
+ },
19
+ {
20
+ accessor: "scheduledMeetings",
21
+ label: "Scheduled Meetings",
22
+ },
23
+ ],
24
+ },
25
+ {
26
+ label: "Performance Data",
27
+ columns: [
28
+ {
29
+ accessor: "attendanceRate",
30
+ label: "Attendance Rate",
31
+ },
32
+ {
33
+ accessor: "completedClasses",
34
+ label: "Completed Classes",
35
+ },
36
+ {
37
+ accessor: "classCompletionRate",
38
+ label: "Class Completion Rate",
39
+ },
40
+ {
41
+ accessor: "graduatedStudents",
42
+ label: "Graduated Students",
43
+ },
44
+ ],
45
+ },
46
+ ];
47
+
48
+
49
+ return (
50
+ <>
51
+ <AdvancedTable
52
+ columnDefinitions={columnDefinitions}
53
+ tableData={MOCK_DATA}
54
+ {...props}
55
+ />
56
+ </>
57
+ )
58
+ }
59
+
60
+ export default AdvancedTableColumnHeaders
@@ -0,0 +1 @@
1
+ Use a nested `columns` array in your columnDefinitions to create multiple header rows. Any column with `columns` is treated as a grouped header, and its child columns are displayed beneath it.
@@ -0,0 +1,58 @@
1
+ <% column_definitions = [
2
+ {
3
+ accessor: "year",
4
+ label: "Year",
5
+ cellAccessors: ["quarter", "month", "day"],
6
+ },
7
+ {
8
+ label: "Enrollment Data",
9
+ columns: [
10
+ {
11
+ label: "Enrollment Stats",
12
+ columns: [
13
+ {
14
+ accessor: "newEnrollments",
15
+ label: "New Enrollments",
16
+ },
17
+ {
18
+ accessor: "scheduledMeetings",
19
+ label: "Scheduled Meetings",
20
+ },
21
+ ],
22
+ },
23
+ ],
24
+ },
25
+ {
26
+ label: "Performance Data",
27
+ columns: [
28
+ {
29
+ label: "Completion Metrics",
30
+ columns: [
31
+ {
32
+ accessor: "completedClasses",
33
+ label: "Completed Classes",
34
+ },
35
+ {
36
+ accessor: "classCompletionRate",
37
+ label: "Class Completion Rate",
38
+ },
39
+ ],
40
+ },
41
+ {
42
+ label: "Attendance",
43
+ columns: [
44
+ {
45
+ accessor: "attendanceRate",
46
+ label: "Attendance Rate",
47
+ },
48
+ {
49
+ accessor: "scheduledMeetings",
50
+ label: "Scheduled Meetings",
51
+ },
52
+ ],
53
+ },
54
+ ],
55
+ },
56
+ ] %>
57
+
58
+ <%= pb_rails("advanced_table", props: { id: "beta_table_with_muilti_headers", table_data: @table_data, column_definitions: column_definitions }) %>
@@ -0,0 +1,74 @@
1
+ import React from "react";
2
+ import { AdvancedTable } from "playbook-ui";
3
+ import MOCK_DATA from "./advanced_table_mock_data.json";
4
+
5
+ const AdvancedTableColumnHeadersMultiple = (props) => {
6
+ const columnDefinitions = [
7
+ {
8
+ accessor: "year",
9
+ label: "Year",
10
+ cellAccessors: ["quarter", "month", "day"],
11
+ },
12
+ {
13
+ label: "Enrollment Data",
14
+ columns: [
15
+ {
16
+ label: "Enrollment Stats",
17
+ columns: [
18
+ {
19
+ accessor: "newEnrollments",
20
+ label: "New Enrollments",
21
+ },
22
+ {
23
+ accessor: "scheduledMeetings",
24
+ label: "Scheduled Meetings",
25
+ },
26
+ ],
27
+ },
28
+ ],
29
+ },
30
+ {
31
+ label: "Performance Data",
32
+ columns: [
33
+ {
34
+ label: "Completion Metrics",
35
+ columns: [
36
+ {
37
+ accessor: "completedClasses",
38
+ label: "Completed Classes",
39
+ },
40
+ {
41
+ accessor: "classCompletionRate",
42
+ label: "Class Completion Rate",
43
+ },
44
+ ],
45
+ },
46
+ {
47
+ label: "Attendance",
48
+ columns: [
49
+ {
50
+ accessor: "attendanceRate",
51
+ label: "Attendance Rate",
52
+ },
53
+ {
54
+ accessor: "scheduledMeetings",
55
+ label: "Scheduled Meetings",
56
+ },
57
+ ],
58
+ },
59
+ ],
60
+ },
61
+ ];
62
+
63
+ return (
64
+ <>
65
+ <AdvancedTable
66
+ columnDefinitions={columnDefinitions}
67
+ tableData={MOCK_DATA}
68
+ {...props}
69
+ />
70
+ </>
71
+ );
72
+ };
73
+
74
+ export default AdvancedTableColumnHeadersMultiple;
@@ -0,0 +1 @@
1
+ Multiple levels of column headers can also be rendered as seen here.
@@ -1,10 +1,13 @@
1
1
  examples:
2
2
  rails:
3
3
  - advanced_table_beta: Default (Required Props)
4
- - advanced_table_beta_subrow_headers: SubRow Headers
4
+ # - advanced_table_beta_subrow_headers: SubRow Headers
5
5
  - advanced_table_collapsible_trail_rails: Collapsible Trail
6
6
  - advanced_table_beta_sort: Enable Sorting
7
7
  - advanced_table_custom_cell_rails: Custom Components for Cells
8
+ - advanced_table_column_headers: Multi-Header Columns
9
+ - advanced_table_column_headers_multiple: Multi-Header Columns (Multiple Levels)
10
+
8
11
 
9
12
  react:
10
13
  - advanced_table_default: Default (Required Props)
@@ -21,3 +24,5 @@ examples:
21
24
  - advanced_table_custom_cell: Custom Components for Cells
22
25
  - advanced_table_pagination: Pagination
23
26
  - advanced_table_pagination_with_props: Pagination Props
27
+ - advanced_table_column_headers: Multi-Header Columns
28
+ - advanced_table_column_headers_multiple: Multi-Header Columns (Multiple Levels)
@@ -12,3 +12,5 @@ export { default as AdvancedTableResponsive } from './_advanced_table_responsive
12
12
  export { default as AdvancedTableCustomCell } from './_advanced_table_custom_cell.jsx'
13
13
  export { default as AdvancedTablePagination } from './_advanced_table_pagination.jsx'
14
14
  export { default as AdvancedTablePaginationWithProps } from './_advanced_table_pagination_with_props.jsx'
15
+ export { default as AdvancedTableColumnHeaders } from './_advanced_table_column_headers.jsx'
16
+ export { default as AdvancedTableColumnHeadersMultiple } from './_advanced_table_column_headers_multiple.jsx'
@@ -88,3 +88,21 @@
88
88
  Body
89
89
  <% end %>
90
90
  <% end %>
91
+
92
+ <%= pb_rails("card", props: { padding: "none", header: true, margin_bottom: "sm"}) do %>
93
+ <%= pb_rails("card/card_header", props: { padding: "sm", header_color: "success_subtle" }) do %>
94
+ <%= pb_rails("body", props: { text: "Success Subtle" }) %>
95
+ <% end %>
96
+ <%= pb_rails("card/card_body", props: { padding: "md" }) do %>
97
+ Body
98
+ <% end %>
99
+ <% end %>
100
+
101
+ <%= pb_rails("card", props: { padding: "none", header: true, margin_bottom: "sm"}) do %>
102
+ <%= pb_rails("card/card_header", props: { padding: "sm", header_color: "error_subtle" }) do %>
103
+ <%= pb_rails("body", props: { text: "Error Subtle"}) %>
104
+ <% end %>
105
+ <%= pb_rails("card/card_body", props: { padding: "md" }) do %>
106
+ Body
107
+ <% end %>
108
+ <% end %>
@@ -231,6 +231,46 @@ const CardHeader = (props) => {
231
231
  />
232
232
  </Card.Body>
233
233
  </Card>
234
+
235
+ <Card
236
+ {...props}
237
+ marginBottom='sm'
238
+ padding="none"
239
+ >
240
+ <Card.Header
241
+ headerColor="success_subtle"
242
+ >
243
+ <Body
244
+ text="Success Subtle"
245
+ />
246
+ </Card.Header>
247
+ <Card.Body>
248
+ <Body
249
+ {...props}
250
+ text="Body"
251
+ />
252
+ </Card.Body>
253
+ </Card>
254
+
255
+ <Card
256
+ {...props}
257
+ marginBottom='sm'
258
+ padding="none"
259
+ >
260
+ <Card.Header
261
+ headerColor="error_subtle"
262
+ >
263
+ <Body
264
+ text="Error Subtle"
265
+ />
266
+ </Card.Header>
267
+ <Card.Body>
268
+ <Body
269
+ {...props}
270
+ text="Body"
271
+ />
272
+ </Card.Body>
273
+ </Card>
234
274
  </>
235
275
  )
236
276
  }
@@ -10,3 +10,11 @@
10
10
  link: "https://google.com",
11
11
  new_window: true
12
12
  }) %>
13
+ <br/>
14
+ <%= pb_rails("circle_icon_button", props: {
15
+ icon: "info",
16
+ variant: "secondary",
17
+ aria: { label: "Link to Playbook in new window" },
18
+ link: "https://playbook.powerapp.cloud/",
19
+ target: "child"
20
+ }) %>
@@ -21,6 +21,15 @@ const CircleIconButtonLink = (props) => (
21
21
  {...props}
22
22
  />
23
23
 
24
+ <br/>
25
+
26
+ <CircleIconButton
27
+ aria={{ label: "Link to Playbook in new window" }}
28
+ icon="info"
29
+ link="https://playbook.powerapp.cloud/"
30
+ target="child"
31
+ variant="secondary"
32
+ />
24
33
  </div>
25
34
  )
26
35
 
@@ -0,0 +1 @@
1
+ The `link` prop accepts a string that is used as an href value and causes the button to act as a link. The default behavior of a link is to open in the current window. You can optionally alter the link behavior by adding the `newWindow` prop (boolean), which will open the link in a new window, or by calling the `target` prop, which accepts `_self`, `_blank`, `_parent`, `_top`, `child`, or any string, allowing you to specify any link target.
@@ -0,0 +1,10 @@
1
+ <%= pb_rails("section_separator", props: { text: "Default Separator" }) %>
2
+ <%= pb_rails("section_separator", props: { color: "primary", text: "Primary Separator" }) %>
3
+ <%= pb_rails("section_separator", props: { color: "primary", line_style: "dashed", text: "Primary Dashed Separator" }) %>
4
+ <%= pb_rails("section_separator", props: { color: "primary" }) do %>
5
+ <%= pb_rails("flex", props: { padding: "xs" }) do %>
6
+ <%= pb_rails("icon", props: { color: "primary", icon: "arrow-down" }) %>
7
+ <%= pb_rails("detail", props: { text: "Children", size: "sm", color: "link" }) %>
8
+ <% end %>
9
+ <% end %>
10
+
@@ -0,0 +1,42 @@
1
+ import React from "react"
2
+ import { SectionSeparator, Flex, Detail, Icon } from "playbook-ui"
3
+
4
+ const children = (
5
+ <Flex padding="xs">
6
+ <Icon color="primary"
7
+ icon="arrow-down"
8
+ />
9
+ <Detail
10
+ color="link"
11
+ size="sm"
12
+ text="Children"
13
+ />
14
+ </Flex>
15
+ )
16
+
17
+ const SectionSeparatorColor = (props) => {
18
+ return (
19
+ <div>
20
+ <SectionSeparator text="Default Separator"
21
+ {...props}
22
+ />
23
+ <SectionSeparator color="primary"
24
+ text="Primary Separator"
25
+ {...props}
26
+ />
27
+ <SectionSeparator
28
+ color="primary"
29
+ lineStyle="dashed"
30
+ text="Primary Dashed Separator"
31
+ {...props}
32
+ />
33
+ <SectionSeparator color="primary"
34
+ {...props}
35
+ >
36
+ {children}
37
+ </SectionSeparator>
38
+ </div>
39
+ )
40
+ }
41
+
42
+ export default SectionSeparatorColor
@@ -0,0 +1,3 @@
1
+ Pass "primary" to the `color` prop to change any section separator color.
2
+
3
+ **NOTE:** Passing `children` overrides any content provided via the `text` prop. The `color` prop does not affect the `text` prop's color, and the color of `children` is determined by the children's individual props. For greater control over text color customization, consider using a separator with `children`.
@@ -6,6 +6,7 @@ examples:
6
6
  - section_separator_text: Text Separator
7
7
  - section_separator_vertical: Vertical
8
8
  - section_separator_children: Children
9
+ - section_separator_color: Color
9
10
 
10
11
  react:
11
12
  - section_separator_line: Line Separator
@@ -13,6 +14,7 @@ examples:
13
14
  - section_separator_text: Text Separator
14
15
  - section_separator_vertical: Vertical
15
16
  - section_separator_children: Children
17
+ - section_separator_color: Color
16
18
 
17
19
  swift:
18
20
  - section_separator_line_swift: Line Separator
@@ -3,3 +3,4 @@ export { default as SectionSeparatorText } from './_section_separator_text.jsx'
3
3
  export { default as SectionSeparatorVertical } from './_section_separator_vertical.jsx'
4
4
  export { default as SectionSeparatorDashed } from './_section_separator_dashed.jsx'
5
5
  export { default as SectionSeparatorChildren } from './_section_separator_children.jsx'
6
+ export { default as SectionSeparatorColor } from './_section_separator_color.jsx'
@@ -0,0 +1,3 @@
1
+ The Skeleton Loading kit can be used an intermediate loading state to give users a visual indication that content is loading.
2
+
3
+ **Please Note**: this kit is not meant to be integrated interally within other Playbook kits as a loading prop; rather, it can be used to create a composite of the section/kit/page with loading intermediataries, as demonstrated in the the "example component" doc examples.
@@ -0,0 +1,9 @@
1
+ <%= pb_rails("flex", props: { justify: "evenly" }) do %>
2
+ <%= pb_rails("skeleton_loading", props: { border_radius: "rounded", height: "50px", width: "100px"}) %>
3
+ <%= pb_rails("skeleton_loading", props: { border_radius: "xl", height: "50px", width: "100px"}) %>
4
+ <%= pb_rails("skeleton_loading", props: { border_radius: "lg", height: "50px", width: "100px"}) %>
5
+ <%= pb_rails("skeleton_loading", props: { border_radius: "md", height: "50px", width: "100px"}) %>
6
+ <%= pb_rails("skeleton_loading", props: { height: "50px", width: "100px"}) %>
7
+ <%= pb_rails("skeleton_loading", props: { border_radius: "xs", height: "50px", width: "100px"}) %>
8
+ <%= pb_rails("skeleton_loading", props: { border_radius: "none", height: "50px", width: "100px"}) %>
9
+ <% end %>
@@ -0,0 +1 @@
1
+ The `border_radius` prop accepts all of our [BorderRadius](https://playbook.powerapp.cloud/visual_guidelines/border_radius) tokens, with `sm` as default.
@@ -0,0 +1,7 @@
1
+ <%= pb_rails("card", props: { border_none: true }) do %>
2
+ <%= pb_rails("skeleton_loading") %>
3
+ <% end %>
4
+
5
+ <%= pb_rails("card", props: { background: "light", border_none: true }) do %>
6
+ <%= pb_rails("skeleton_loading", props: { color: "white" }) %>
7
+ <% end %>
@@ -1 +1 @@
1
- <%= pb_rails("skeleton_loading") %>
1
+ <%= pb_rails("skeleton_loading") %>
@@ -0,0 +1,119 @@
1
+ <%= pb_rails("button", props: { id: "toggle-filter-button", margin_bottom: "md", text: "Show Filter", variant: "secondary" }) %>
2
+
3
+ <div id="skeleton-loading-filter-content">
4
+ <%= pb_rails("card", props: { margin_bottom: "lg" }) do %>
5
+ <%= pb_rails("flex", props: { align_items: "center", justify: "between", orientation: "row" }) do %>
6
+ <%= pb_rails("flex", props: { align_items: "center", justify: "start", orientation: "row" }) do %>
7
+ <%= pb_rails("skeleton_loading", props: { border_radius: "rounded", height: "40px", margin_right: "sm", width: "40px" }) %>
8
+ <%= pb_rails("skeleton_loading", props: { height: "16px", margin_right: "md", width: "80px" }) %>
9
+ <% end %>
10
+ <%= pb_rails("flex", props: { align_items: "center", justify: "end", orientation: "row" }) do %>
11
+ <%= pb_rails("skeleton_loading", props: { height: "18px", width: "120px" }) %>
12
+ <% end %>
13
+ <% end %>
14
+ <% end %>
15
+
16
+ <%= pb_rails("skeleton_loading", props: { height: "127px", width: "100%" }) %>
17
+ </div>
18
+
19
+ <div id="filter-content" style="display: none;">
20
+ <%= pb_rails("filter", props: {
21
+ margin_bottom: "xl",
22
+ min_width: "360px",
23
+ id: "2",
24
+ filters: [
25
+ { name: "name", value: "John Wick" }
26
+ ],
27
+ sort_menu: [
28
+ { item: "Popularity", link: "?q[sorts]=managers_popularity+asc", active: true, direction: "desc" },
29
+ { item: "Mananger's Title", link: "?q[sorts]=managers_title+asc", active: false },
30
+ { item: "Manager's Name", link: "?q[sorts]=managers_name+asc", active: false },
31
+ ],
32
+ results: 546,
33
+ template: "single"
34
+ }) do %>
35
+ <% example_collection = [
36
+ OpenStruct.new(name: "USA", value: 1),
37
+ OpenStruct.new(name: "Canada", value: 2),
38
+ OpenStruct.new(name: "Brazil", value: 3),
39
+ OpenStruct.new(name: "Philippines", value: 4),
40
+ OpenStruct.new(name: "A galaxy far far away...", value: 5)
41
+ ] %>
42
+
43
+ <%= pb_rails("form", props: { form_system_options: { scope: :example, method: :get } }) do |form| %>
44
+ <%= form.text_field :example_text_field, props: { label: true } %>
45
+ <%= form.collection_select :example_collection_select, example_collection, :value, :name, props: { label: true } %>
46
+
47
+ <%= form.actions do |action| %>
48
+ <%= action.submit props: {
49
+ text: "Apply",
50
+ data: {
51
+ disable_with: "pb_rails('icon', props: { icon: 'spinner', spin: true, fixed_width: true })Searching...".html_safe
52
+ },}%>
53
+ <%= action.button props: { type: "reset", text: "Clear", variant: "secondary" } %>
54
+ <% end %>
55
+ <% end %>
56
+ <% end %>
57
+
58
+ <%= pb_rails("filter", props: {
59
+ min_width: "360px",
60
+ id: "1",
61
+ filters: [
62
+ { name: "name", value: "John Wick" },
63
+ { name: "city", value: "San Francisco"}
64
+ ],
65
+ sort_menu: [
66
+ { item: "Popularity", link: "?q[sorts]=managers_popularity+asc", active: true, direction: "desc" },
67
+ { item: "Mananger's Title", link: "?q[sorts]=managers_title+asc", active: false },
68
+ { item: "Manager's Name", link: "?q[sorts]=managers_name+asc", active: false },
69
+ ],
70
+ template: "default",
71
+ results: 1,
72
+ }) do %>
73
+ <% example_collection = [
74
+ OpenStruct.new(name: "USA", value: 1),
75
+ OpenStruct.new(name: "Canada", value: 2),
76
+ OpenStruct.new(name: "Brazil", value: 3),
77
+ OpenStruct.new(name: "Philippines", value: 4),
78
+ OpenStruct.new(name: "A galaxy far far away...", value: 5)
79
+ ] %>
80
+ <%= pb_rails("form", props: { form_system_options: { scope: :example, method: :get } }) do |form| %>
81
+ <%= form.text_field :example_text_field, props: { label: true } %>
82
+ <%= form.collection_select :example_collection_select, example_collection, :value, :name, props: { label: true } %>
83
+
84
+ <%= form.actions do |action| %>
85
+ <%= action.submit props: {
86
+ text: "Apply",
87
+ data: {
88
+ disable_with: "pb_rails('icon', props: { icon: 'spinner', spin: true, fixed_width: true })Searching...".html_safe
89
+ },}%>
90
+ <%= action.button props: { type: "reset", text: "Clear", variant: "secondary" } %>
91
+ <% end %>
92
+ <% end %>
93
+ <% end %>
94
+ </div>
95
+
96
+ <script>
97
+ document.addEventListener("DOMContentLoaded", function() {
98
+ const toggleButton = document.getElementById('toggle-filter-button')
99
+ const skeletonFilterContentDiv = document.getElementById('skeleton-loading-filter-content')
100
+ const filterContentDiv = document.getElementById('filter-content')
101
+ const secondFilterContentDiv = document.getElementById('second-filter-content')
102
+
103
+ let isLoading = true
104
+
105
+ toggleButton.addEventListener('click', function() {
106
+ isLoading = !isLoading
107
+
108
+ if (isLoading) {
109
+ skeletonFilterContentDiv.style.display = 'block'
110
+ filterContentDiv.style.display = 'none'
111
+ toggleButton.textContent = 'Show Filter'
112
+ } else {
113
+ skeletonFilterContentDiv.style.display = 'none'
114
+ filterContentDiv.style.display = 'block'
115
+ toggleButton.textContent = 'Show Skeleton Loading'
116
+ }
117
+ })
118
+ })
119
+ </script>