playbook_ui 7.3.0.pre.alpha3 → 7.3.0.pre.alpha4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +0 -1
  3. data/app/pb_kits/playbook/data/menu.yml +0 -1
  4. data/app/pb_kits/playbook/index.js +0 -1
  5. data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +19 -14
  6. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +1 -1
  7. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +17 -1
  8. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +2 -2
  9. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +11 -7
  10. data/app/pb_kits/playbook/vendor.js +0 -3
  11. data/lib/playbook/version.rb +1 -1
  12. metadata +1 -16
  13. data/app/pb_kits/playbook/pb_collapsible/_collapsible.html.erb +0 -9
  14. data/app/pb_kits/playbook/pb_collapsible/_collapsible.jsx +0 -142
  15. data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +0 -17
  16. data/app/pb_kits/playbook/pb_collapsible/child_kits/_collapsible_content.html.erb +0 -7
  17. data/app/pb_kits/playbook/pb_collapsible/child_kits/_collapsible_main.html.erb +0 -16
  18. data/app/pb_kits/playbook/pb_collapsible/collapsible.rb +0 -15
  19. data/app/pb_kits/playbook/pb_collapsible/collapsible_content.rb +0 -21
  20. data/app/pb_kits/playbook/pb_collapsible/collapsible_main.rb +0 -24
  21. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.html.erb +0 -10
  22. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.jsx +0 -17
  23. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.html.erb +0 -10
  24. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.jsx +0 -17
  25. data/app/pb_kits/playbook/pb_collapsible/docs/example.yml +0 -9
  26. data/app/pb_kits/playbook/pb_collapsible/docs/index.js +0 -2
  27. data/app/pb_kits/playbook/pb_collapsible/index.js +0 -82
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 199c07a5e9c937684b8bcf972cb949850771575b6f656acdcdb89242f4f0aea0
4
- data.tar.gz: 78490ef07003b0b1edfa5994a6aef45d2235fc625a4f2d218e45387e4ed124d5
3
+ metadata.gz: c254b4df78da26ac88080e216dcabcff2c7ae67749755eca2e7f289d2f428728
4
+ data.tar.gz: 6f5aaae2cc86313968d331881d933a36e4d9e7ec1a6c82b51471f18652834aca
5
5
  SHA512:
6
- metadata.gz: '0482dfa160df37fdac288dc3bff5b7be2e97b0030a9d019c90b84c27502e856cb4b62bac4d67b2f95d07d891c0ee5ffe7c3edb996b89a82d63a02c616db3e1ba'
7
- data.tar.gz: b0bcdb6b65d9ed2831250c0c049ff2d8025aa724941c240c0b5acef8bf2483bf7a26067113c64ede36a6171e07d22c91f3585fd99ee608a4d0861dcb0d2feb28
6
+ metadata.gz: 6f48fbdf2a8cc92bd85997620b4953832e3478724e76b5571af4c1ad76ae59ee25d0935413f96e73d8e68597b51b2288affbc36250854dc7c07cb757d3688972
7
+ data.tar.gz: 37fe5b56013bb0256efe3ef1d28e120a23b34cf74b56cb8dc25c4e30c58c6859cccd33824fc5479ee4c710c37fa3622acdd6ec7c9e34429bb67d96f7bd8fcfcb
@@ -12,7 +12,6 @@
12
12
  @import 'pb_checkbox/checkbox';
13
13
  @import 'pb_circle_chart/circle_chart';
14
14
  @import 'pb_circle_icon_button/circle_icon_button';
15
- @import 'pb_collapsible/collapsible';
16
15
  @import 'pb_contact/contact';
17
16
  @import 'pb_currency/currency';
18
17
  @import 'pb_dashboard_value/dashboard_value';
@@ -13,7 +13,6 @@ kits:
13
13
  - circle_icon_button
14
14
  - card
15
15
  - checkbox
16
- - collapsible
17
16
  - charts_and_graphs:
18
17
  - bar_graph
19
18
  - circle_chart
@@ -15,7 +15,6 @@ export Card from './pb_card/_card.jsx'
15
15
  export Checkbox from './pb_checkbox/_checkbox.jsx'
16
16
  export CircleChart from './pb_circle_chart/_circle_chart.jsx'
17
17
  export CircleIconButton from './pb_circle_icon_button/_circle_icon_button.jsx'
18
- export Collapsible from './pb_collapsible/_collapsible.jsx'
19
18
  export Contact from './pb_contact/_contact.jsx'
20
19
  export Currency from './pb_currency/_currency.jsx'
21
20
  export DashboardValue from './pb_dashboard_value/_dashboard_value.jsx'
@@ -3,20 +3,25 @@
3
3
  class: object.classname + object.error_class,
4
4
  data: object.data,
5
5
  id: object.id) do %>
6
- <div class="input_wrapper">
7
- <%= pb_rails("text_input", props: {
8
- aria: object.input_aria,
9
- autocomplete: false,
10
- dark: object.dark,
11
- data: object.input_data,
12
- disabled: object.disable_input,
13
- error: object.error,
14
- id: object.picker_id,
15
- label: object.hide_label ? nil : object.label,
16
- name: object.name,
17
- placeholder: object.placeholder,
18
- required: object.required
19
- }) %>
6
+ <% if object.children %>
7
+ <div class="input_wrapper">
8
+ <%= capture(&object.children) %>
9
+ <% else %>
10
+ <div class="input_wrapper">
11
+ <%= pb_rails("text_input", props: {
12
+ aria: object.input_aria,
13
+ autocomplete: false,
14
+ dark: object.dark,
15
+ data: object.input_data,
16
+ disabled: object.disable_input,
17
+ error: object.error,
18
+ id: object.picker_id,
19
+ label: object.hide_label ? nil : object.label,
20
+ name: object.name,
21
+ placeholder: object.placeholder,
22
+ required: object.required,
23
+ }) %>
24
+ <% end %>
20
25
  <% if !object.hide_icon %>
21
26
  <div
22
27
  class="<%= object.icon_wrapper_class %>"
@@ -52,7 +52,7 @@
52
52
  <%= form.select :example_select_field, [["Yes", 1], ["No", 2]], props: { label: true } %>
53
53
  <%= form.collection_select :example_collection_select_field, example_collection, :value, :name, props: { label: true } %>
54
54
  <%= form.check_box :example_checkbox_field, props: { text: "Example Checkbox", label: true } %>
55
- <%= form.date_picker :example_date_picker_field_1, props: { default_date: 'blank', label: true } %>
55
+ <%= form.date_picker :example_date_picker_field_1, props: { label: true } %>
56
56
 
57
57
  <%= form.actions do |action| %>
58
58
  <%= action.submit %>
@@ -13,7 +13,23 @@ module Playbook
13
13
  props[:name] = html_attribute_name
14
14
  props[:picker_id] = html_id
15
15
 
16
- @template.pb_rails("date_picker", props: props)
16
+ input = text_field(
17
+ name,
18
+ autocomplete: "off",
19
+ disabled: props[:disable_input],
20
+ data: props[:input_data],
21
+ aria: props[:input_aria],
22
+ props: {
23
+ error: props[:error],
24
+ label: props[:label],
25
+ placeholder: props[:placeholder],
26
+ required: props[:required],
27
+ }
28
+ )
29
+
30
+ @template.pb_rails("date_picker", props: props) do
31
+ input
32
+ end
17
33
  end
18
34
  end
19
35
  end
@@ -16,8 +16,8 @@ module Playbook
16
16
  values: %w[default tracker],
17
17
  default: "default"
18
18
  prop :color, type: Playbook::Props::Enum,
19
- values: %w[primary info],
20
- default: "primary"
19
+ values: %w[primary info],
20
+ default: "primary"
21
21
  def classname
22
22
  generate_classname("pb_progress_step_kit", orientation, icon_class, variant_class, color_class)
23
23
  end
@@ -6,13 +6,13 @@ module Playbook
6
6
  include Playbook::Props
7
7
 
8
8
  prop :async, type: Playbook::Props::Boolean,
9
- default: false
9
+ default: false
10
10
  prop :label
11
11
  prop :load_options
12
12
  prop :name
13
13
  prop :options, type: Playbook::Props::HashArray, default: []
14
14
  prop :pills, type: Playbook::Props::Boolean,
15
- default: false
15
+ default: false
16
16
 
17
17
  prop :placeholder
18
18
  prop :search_term_minimum_length, default: 3
@@ -38,13 +38,17 @@ module Playbook
38
38
  isMulti: true,
39
39
  label: label,
40
40
  options: options,
41
- placeholder: placeholder
41
+ placeholder: placeholder,
42
42
  }
43
43
 
44
- base_options.merge!({
45
- async: true,
46
- loadOptions: load_options,
47
- }) if async
44
+ if async
45
+ base_options.merge!(
46
+ {
47
+ async: true,
48
+ loadOptions: load_options,
49
+ }
50
+ )
51
+ end
48
52
 
49
53
  base_options
50
54
  end
@@ -12,9 +12,6 @@ window.datePickerHelper = datePickerHelper
12
12
  // Lazy image loading
13
13
  import 'lazysizes'
14
14
 
15
- import PbCollapsible from './pb_collapsible'
16
- PbCollapsible.start()
17
-
18
15
  import PbPopover from './pb_popover'
19
16
  PbPopover.start()
20
17
 
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Playbook
3
- VERSION = "7.3.0.pre.alpha3"
3
+ VERSION = "7.3.0.pre.alpha4"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.3.0.pre.alpha3
4
+ version: 7.3.0.pre.alpha4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
@@ -625,21 +625,6 @@ files:
625
625
  - app/pb_kits/playbook/pb_circle_icon_button/docs/_footer.md
626
626
  - app/pb_kits/playbook/pb_circle_icon_button/docs/example.yml
627
627
  - app/pb_kits/playbook/pb_circle_icon_button/docs/index.js
628
- - app/pb_kits/playbook/pb_collapsible/_collapsible.html.erb
629
- - app/pb_kits/playbook/pb_collapsible/_collapsible.jsx
630
- - app/pb_kits/playbook/pb_collapsible/_collapsible.scss
631
- - app/pb_kits/playbook/pb_collapsible/child_kits/_collapsible_content.html.erb
632
- - app/pb_kits/playbook/pb_collapsible/child_kits/_collapsible_main.html.erb
633
- - app/pb_kits/playbook/pb_collapsible/collapsible.rb
634
- - app/pb_kits/playbook/pb_collapsible/collapsible_content.rb
635
- - app/pb_kits/playbook/pb_collapsible/collapsible_main.rb
636
- - app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.html.erb
637
- - app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.jsx
638
- - app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.html.erb
639
- - app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.jsx
640
- - app/pb_kits/playbook/pb_collapsible/docs/example.yml
641
- - app/pb_kits/playbook/pb_collapsible/docs/index.js
642
- - app/pb_kits/playbook/pb_collapsible/index.js
643
628
  - app/pb_kits/playbook/pb_contact/_contact.html.erb
644
629
  - app/pb_kits/playbook/pb_contact/_contact.jsx
645
630
  - app/pb_kits/playbook/pb_contact/_contact.scss
@@ -1,9 +0,0 @@
1
- <%= content_tag(:div,
2
- aria: object.aria,
3
- class: object.classname,
4
- data: object.data,
5
- id: object.id) do %>
6
- <% if object.children %>
7
- <%= capture(&object.children) %>
8
- <% end %>
9
- <% end %>
@@ -1,142 +0,0 @@
1
- /* @flow */
2
-
3
- import classnames from 'classnames'
4
- import { get } from 'lodash'
5
- import { Flex, FlexItem } from '../'
6
- import React, { useState } from 'react'
7
- import AnimateHeight from 'react-animate-height'
8
- import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
9
- import { globalProps } from '../utilities/globalProps.js'
10
-
11
- type CollapsibleProps = {
12
- children: React.ChildrenArray<React.Element<typeof Main | Content>>,
13
- aria?: object,
14
- className?: string,
15
- data?: object,
16
- id?: string,
17
- }
18
-
19
- type CollapsibleMainProps = {
20
- children: array<React.ReactNode> | React.ReactNode,
21
- className?: string,
22
- padding?: string,
23
- }
24
-
25
- type CollapsibleContentProps = {
26
- children: array<React.ReactNode> | React.ReactNode | string,
27
- className?: string,
28
- padding?: string,
29
- }
30
-
31
- const Main = (props: CollapsibleMainProps) => {
32
- const { children, className, padding = 'sm' } = props
33
- const mainCSS = buildCss('pb_collapsible_main_kit')
34
- const mainSpacing = globalProps(props, { padding })
35
-
36
- return (
37
- <div className={classnames(mainCSS, className, mainSpacing)}>
38
- {children}
39
- </div>
40
- )
41
- }
42
-
43
- const Content = (props: CollapsibleContentProps) => {
44
- const { children, className, padding = 'md' } = props
45
- const contentCSS = buildCss('pb_collapsible_content_kit')
46
- const contentSpacing = globalProps(props, { padding })
47
-
48
- return (
49
- <div className={classnames(contentCSS, className, contentSpacing)}>
50
- {children}
51
- </div>
52
- )
53
- }
54
-
55
- const Collapsible = (props: CollapsibleProps) => {
56
- const {
57
- aria = {},
58
- className,
59
- children = [],
60
- data = {},
61
- id,
62
- } = props
63
-
64
- const ariaProps = buildAriaProps(aria)
65
- const dataProps = buildDataProps(data)
66
- const classes = classnames(buildCss('pb_collapsible'), className, globalProps(props))
67
-
68
- const [height, setHeight] = useState(0)
69
- const toggleExpand = () => {
70
- setHeight(height === 0 ? 'auto' : 0)
71
- }
72
-
73
- const collapsibleChildren =
74
- typeof children === 'object' && children.length ? children : [children]
75
-
76
- const subComponentTags = (tagName) => {
77
- return collapsibleChildren.filter((c) => (
78
- get(c, 'type.name') === tagName
79
- )).map((child, i) => {
80
- return React.cloneElement(child, { key: `${tagName.toLowerCase()}-${i}` })
81
- })
82
- }
83
-
84
- const renderChevron = (height) => {
85
- const direction = height === 0 ? 'down' : 'up'
86
-
87
- return (
88
- <div
89
- key={direction}
90
- style={{ verticalAlign: 'middle' }}
91
- >
92
- <i className={`far fa-2x fa-chevron-${direction} fa-fw`} />
93
- </div>
94
- )
95
- }
96
-
97
- const renderMain = () => {
98
- const mainTags = subComponentTags('Main')
99
-
100
- return (
101
- <div onClick={toggleExpand}>
102
- <Flex
103
- spacing="between"
104
- vertical="center"
105
- >
106
- <FlexItem>{mainTags}</FlexItem>
107
- <FlexItem>{renderChevron(height)}</FlexItem>
108
- </Flex>
109
- </div>
110
-
111
- )
112
- }
113
-
114
- const renderContent = () => {
115
- const nonMainChildren = collapsibleChildren.filter((child) => (get(child, 'type.name') !== 'Main'))
116
- return (
117
- <AnimateHeight
118
- duration={500}
119
- height={height}
120
- id="bottom-section"
121
- >
122
- {nonMainChildren}
123
- </AnimateHeight>
124
- )
125
- }
126
-
127
- return (
128
- <div
129
- {...ariaProps}
130
- {...dataProps}
131
- className={classes}
132
- id={id}
133
- >
134
- {renderMain()}
135
- {renderContent()}
136
- </div>
137
- )
138
- }
139
- Collapsible.Main = Main
140
- Collapsible.Content = Content
141
-
142
- export default Collapsible
@@ -1,17 +0,0 @@
1
-
2
- [class^=pb_collapsible_kit] {
3
-
4
- .toggle-content {
5
- display: none;
6
- height: 0;
7
- padding-bottom: 0 !important;
8
- padding-top: 0 !important;
9
- overflow: hidden;
10
- transition: height 500ms, padding 500ms ease-in-out;
11
- }
12
-
13
- .toggle-content.is-visible {
14
- display: block;
15
- height: auto;
16
- }
17
- }
@@ -1,7 +0,0 @@
1
- <%= content_tag(:div,
2
- id: object.id,
3
- data: object.data,
4
- class: object.classname,
5
- aria: object.aria) do %>
6
- <%= capture(&object.children) %>
7
- <% end %>
@@ -1,16 +0,0 @@
1
- <%= content_tag(:div,
2
- id: object.id,
3
- data: object.data,
4
- class: object.classname,
5
- aria: object.aria) do %>
6
-
7
- <%= pb_rails("flex", props: {vertical: "center", spacing: "between"}) do %>
8
- <%= pb_rails("flex/flex_item") do %>
9
- <%= capture(&object.children) %>
10
- <% end %>
11
- <%= pb_rails("flex/flex_item") do %>
12
- <i class="far fa-chevron-down fa-2x"></i>
13
- <i class="far fa-chevron-up fa-2x" style="display: none"></i>
14
- <% end %>
15
- <% end %>
16
- <% end %>
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Playbook
4
- module PbCollapsible
5
- class Collapsible
6
- include Playbook::Props
7
-
8
- partial "pb_collapsible/collapsible"
9
-
10
- def classname
11
- generate_classname("pb_collapsible_kit")
12
- end
13
- end
14
- end
15
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Playbook
4
- module PbCollapsible
5
- class CollapsibleContent
6
- include Playbook::Props
7
-
8
- partial "pb_collapsible/child_kits/collapsible_content"
9
-
10
- def data
11
- Hash(values[:data]).merge(
12
- collapsible_content: true
13
- )
14
- end
15
-
16
- def classname
17
- generate_classname("pb_collapsible_content_kit", "toggle-content", padding, separator: " ")
18
- end
19
- end
20
- end
21
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Playbook
4
- module PbCollapsible
5
- class CollapsibleMain
6
- include Playbook::Props
7
-
8
- partial "pb_collapsible/child_kits/collapsible_main"
9
-
10
- def data
11
- Hash(values[:data]).merge(
12
- collapsible_main: true
13
- )
14
- end
15
-
16
- def classname
17
- generate_classname("pb_collapsible_main_kit", padding, separator: " ")
18
- end
19
-
20
-
21
-
22
- end
23
- end
24
- end
@@ -1,10 +0,0 @@
1
- <%= pb_rails("collapsible", props: { dark: true }) do %>
2
- <%= pb_rails("collapsible/collapsible_main", props: { padding: "sm", name: "dark-example" }) do %>
3
- <%= pb_rails("body", props: { text: "Main Section", dark: true}) %>
4
- <% end %>
5
- <%= pb_rails("collapsible/collapsible_content", props: { padding: "md" }) do %>
6
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec iaculis, risus a fringilla luctus, sapien eros sodales ex, quis molestie est nulla non turpis. Vestibulum aliquet at ipsum eget posuere. Morbi sed laoreet erat. Sed commodo posuere lectus, at porta nulla ornare a. Suspendisse quam est, sollicitudin ut enim sit amet, commodo placerat enim. Donec laoreet metus ac mauris pellentesque mattis. Pellentesque luctus vel mauris non aliquam. Mauris hendrerit mattis porttitor. Curabitur vehicula justo non ex consectetur commodo. Quisque posuere aliquet quam. Maecenas malesuada magna mauris, ac tempor metus euismod at.
7
- <br><br>
8
- Cras ornare fermentum magna mollis efficitur. Sed vitae nulla vel purus ultrices mollis. Maecenas id nulla id libero faucibus feugiat quis sit amet turpis. In commodo pellentesque risus at fringilla. Integer non interdum leo, non commodo ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut mi augue, dignissim at orci vel, egestas aliquam mi. Proin finibus aliquet tempor. Integer cursus, ex quis gravida rhoncus, nisi elit viverra ipsum, non efficitur est ex ac tortor. Praesent vitae odio massa.
9
- <% end %>
10
- <% end %>
@@ -1,17 +0,0 @@
1
- import React from 'react'
2
- import { Collapsible } from '../..'
3
-
4
- const CollapsibleDark = () => (
5
- <div>
6
- <Collapsible>
7
- <Collapsible.Main>
8
- <div>{'Main Section'}</div>
9
- </Collapsible.Main>
10
- <Collapsible.Content>
11
- <div>{'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In vel erat sed purus hendrerit viverra. Duis et vestibulum metus. Sed consequat ut ante non vehicula. Etiam nunc massa, pharetra vel quam id, posuere rhoncus quam. Quisque imperdiet arcu enim, nec aliquet justo auctor eget. Curabitur in metus nec nunc rhoncus faucibus vitae ac elit. Nulla facilisi. Vestibulum quis pretium nulla. Nulla ut accumsan velit. Duis varius urna sed sem tempor, sit amet fermentum nibh auctor. Praesent lorem arcu, egestas non ante quis, placerat pellentesque lectus.Vestibulum lacinia ipsum quis venenatis tristique. Vivamus suscipit, libero eu fringilla egestas, orci urna commodo arcu, vel gravida turpis ipsum molestie nibh. Donec cursus eu ante sagittis ultrices. Phasellus id sagittis risus. Mauris dapibus neque faucibus, tempor ligula vel, cursus ante. Donec faucibus gravida porta. Nullam egestas est quis aliquam feugiat. Sed eget metus diam. Cras eget placerat libero.'}</div>
12
- </Collapsible.Content>
13
- </Collapsible>
14
- </div>
15
- )
16
-
17
- export default CollapsibleDark
@@ -1,10 +0,0 @@
1
- <%= pb_rails("collapsible", props: { name: "default-example" }) do %>
2
- <%= pb_rails("collapsible/collapsible_main", props: { padding: "sm", name: "default-main" }) do %>
3
- <%= pb_rails("body", props: { text: "Main Section"}) %>
4
- <% end %>
5
- <%= pb_rails("collapsible/collapsible_content", props: { padding: "md" }) do %>
6
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec iaculis, risus a fringilla luctus, sapien eros sodales ex, quis molestie est nulla non turpis. Vestibulum aliquet at ipsum eget posuere. Morbi sed laoreet erat. Sed commodo posuere lectus, at porta nulla ornare a. Suspendisse quam est, sollicitudin ut enim sit amet, commodo placerat enim. Donec laoreet metus ac mauris pellentesque mattis. Pellentesque luctus vel mauris non aliquam. Mauris hendrerit mattis porttitor. Curabitur vehicula justo non ex consectetur commodo. Quisque posuere aliquet quam. Maecenas malesuada magna mauris, ac tempor metus euismod at.
7
- <br><br>
8
- Cras ornare fermentum magna mollis efficitur. Sed vitae nulla vel purus ultrices mollis. Maecenas id nulla id libero faucibus feugiat quis sit amet turpis. In commodo pellentesque risus at fringilla. Integer non interdum leo, non commodo ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut mi augue, dignissim at orci vel, egestas aliquam mi. Proin finibus aliquet tempor. Integer cursus, ex quis gravida rhoncus, nisi elit viverra ipsum, non efficitur est ex ac tortor. Praesent vitae odio massa.
9
- <% end %>
10
- <% end %>
@@ -1,17 +0,0 @@
1
- import React from 'react'
2
- import { Collapsible } from '../..'
3
-
4
- const CollapsibleDefault = () => (
5
- <div>
6
- <Collapsible>
7
- <Collapsible.Main>
8
- <div>{'Main Section'}</div>
9
- </Collapsible.Main>
10
- <Collapsible.Content>
11
- <div>{'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In vel erat sed purus hendrerit viverra. Duis et vestibulum metus. Sed consequat ut ante non vehicula. Etiam nunc massa, pharetra vel quam id, posuere rhoncus quam. Quisque imperdiet arcu enim, nec aliquet justo auctor eget. Curabitur in metus nec nunc rhoncus faucibus vitae ac elit. Nulla facilisi. Vestibulum quis pretium nulla. Nulla ut accumsan velit. Duis varius urna sed sem tempor, sit amet fermentum nibh auctor. Praesent lorem arcu, egestas non ante quis, placerat pellentesque lectus.Vestibulum lacinia ipsum quis venenatis tristique. Vivamus suscipit, libero eu fringilla egestas, orci urna commodo arcu, vel gravida turpis ipsum molestie nibh. Donec cursus eu ante sagittis ultrices. Phasellus id sagittis risus. Mauris dapibus neque faucibus, tempor ligula vel, cursus ante. Donec faucibus gravida porta. Nullam egestas est quis aliquam feugiat. Sed eget metus diam. Cras eget placerat libero.'}</div>
12
- </Collapsible.Content>
13
- </Collapsible>
14
- </div>
15
- )
16
-
17
- export default CollapsibleDefault
@@ -1,9 +0,0 @@
1
- examples:
2
-
3
- rails:
4
- - collapsible_default: Light
5
- - collapsible_dark: Dark
6
-
7
- react:
8
- - collapsible_default: Light
9
- - collapsible_dark: Dark
@@ -1,2 +0,0 @@
1
- export { default as CollapsibleDefault } from './_collapsible_default.jsx'
2
- export { default as CollapsibleDark } from './_collapsible_dark.jsx'
@@ -1,82 +0,0 @@
1
- import PbEnhancedElement from '../pb_enhanced_element'
2
-
3
- const MAIN_SELECTOR = '[data-collapsible-main]'
4
- const CONTENT_SELECTOR = '[data-collapsible-content]'
5
- const DOWN_ARROW_SELECTOR = '.fa-chevron-down'
6
- const UP_ARROW_SELECTOR = '.fa-chevron-up'
7
-
8
- export default class PbCollapsible extends PbEnhancedElement {
9
- static get selector() {
10
- return MAIN_SELECTOR
11
- }
12
-
13
- connect() {
14
- this.element.addEventListener('click', () => {
15
- this.toggle(this.target)
16
- })
17
- this.displayDownArrow()
18
- }
19
-
20
- get target() {
21
- return this.element.parentNode.querySelector(CONTENT_SELECTOR)
22
- }
23
-
24
- // Show an element
25
- show(elem) {
26
- // Get the natural height of the element
27
- const getHeight = () => {
28
- elem.style.display = 'block' // Make it visible
29
- const height = elem.scrollHeight + 'px' // Get it's height
30
- elem.style.display = '' // Hide it again
31
- return height
32
- }
33
-
34
- const height = getHeight() // Get the natural height
35
- elem.classList.add('is-visible') // Make the element visible
36
- elem.style.height = height // Update the max-height
37
-
38
- // Once the transition is complete, remove the inline max-height so the content can scale responsively
39
- window.setTimeout(() => {
40
- elem.style.height = ''
41
- }, 500)
42
- }
43
- // Hide an element
44
- hide(elem) {
45
- // Give the element a height to change from
46
- elem.style.height = elem.scrollHeight + 'px'
47
- // Set the height back to 0
48
- window.setTimeout(() => {
49
- elem.style.height = '0'
50
- elem.style.paddingTop = '0'
51
- elem.style.paddingBottom = '0'
52
- }, 1)
53
-
54
- // When the transition is complete, hide it
55
- window.setTimeout(() => {
56
- elem.classList.remove('is-visible')
57
- }, 500)
58
- }
59
-
60
- // Toggle element visibility
61
- toggle(elem) {
62
- // If the element is visible, hide it
63
- if (elem.classList.contains('is-visible')) {
64
- this.hide(elem)
65
- this.displayDownArrow()
66
- return
67
- }
68
- // Otherwise, show it
69
- this.show(elem)
70
- this.displayUpArrow()
71
- }
72
-
73
- displayDownArrow() {
74
- this.element.querySelector(DOWN_ARROW_SELECTOR).style.display = 'inline-block'
75
- this.element.querySelector(UP_ARROW_SELECTOR).style.display = 'none'
76
- }
77
-
78
- displayUpArrow() {
79
- this.element.querySelector(UP_ARROW_SELECTOR).style.display = 'inline-block'
80
- this.element.querySelector(DOWN_ARROW_SELECTOR).style.display = 'none'
81
- }
82
- }