playbook_ui 2.9.9 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/_playbook.scss +10 -4
- data/app/pb_kits/playbook/index.js +10 -0
- data/app/pb_kits/playbook/kits/pb_circle_icon_button.js +4 -0
- data/app/pb_kits/playbook/kits/pb_select.js +4 -0
- data/app/pb_kits/playbook/kits/pb_selectable_card.js +4 -0
- data/app/pb_kits/playbook/kits/pb_textarea.js +4 -0
- data/app/pb_kits/playbook/packs/examples.js +8 -0
- data/app/pb_kits/playbook/packs/kits.js +4 -2
- data/app/pb_kits/playbook/pb_avatar/_avatar.jsx +1 -1
- data/app/pb_kits/playbook/pb_body/_body_mixins.scss +3 -0
- data/app/pb_kits/playbook/pb_button/_button.jsx +4 -0
- data/app/pb_kits/playbook/pb_card/_card.scss +50 -17
- data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.html.erb +10 -0
- data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.jsx +30 -0
- data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.scss +32 -0
- data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.rb +22 -0
- data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_dark.html.erb +29 -0
- data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_dark.jsx +38 -0
- data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_default.html.erb +25 -0
- data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_default.jsx +34 -0
- data/app/pb_kits/playbook/pb_circle_icon_button/docs/example.yml +9 -0
- data/app/pb_kits/playbook/pb_circle_icon_button/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.html.erb +1 -1
- data/app/pb_kits/playbook/pb_dashboard_value/dashboard_value.rb +4 -0
- data/app/pb_kits/playbook/pb_date/_date.jsx +51 -17
- data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +10 -2
- data/app/pb_kits/playbook/pb_form/_form.scss +11 -0
- data/app/pb_kits/playbook/pb_form/_form_form_with.html.erb +3 -0
- data/app/pb_kits/playbook/pb_form/_form_simple_form.html.erb +3 -0
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +14 -0
- data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +36 -0
- data/app/pb_kits/playbook/pb_form/docs/example.yml +5 -0
- data/app/pb_kits/playbook/pb_form/form.rb +28 -0
- data/app/pb_kits/playbook/pb_form/form/form_with_form.rb +38 -0
- data/app/pb_kits/playbook/pb_form/form/simple_form_form.rb +45 -0
- data/app/pb_kits/playbook/pb_form/form_builder.rb +23 -0
- data/app/pb_kits/playbook/pb_form/form_builder/action_area.rb +40 -0
- data/app/pb_kits/playbook/pb_form/form_builder/form_with_form_builder.rb +11 -0
- data/app/pb_kits/playbook/pb_form/form_builder/simple_form_builder.rb +25 -0
- data/app/pb_kits/playbook/pb_form/form_builder/text_input_builder.rb +22 -0
- data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.jsx +19 -14
- data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_color.jsx +19 -0
- data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_default.jsx +5 -4
- data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_size.jsx +16 -0
- data/app/pb_kits/playbook/pb_icon_circle/docs/example.yml +2 -1
- data/app/pb_kits/playbook/pb_icon_circle/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_kit/dateTime.js +4 -0
- data/app/pb_kits/playbook/pb_layout/_layout.jsx +50 -48
- data/app/pb_kits/playbook/pb_layout/_layout.scss +8 -12
- data/app/pb_kits/playbook/pb_layout/_layout_mixin.scss +6 -0
- data/app/pb_kits/playbook/pb_layout/docs/_layout_colors.html.erb +24 -0
- data/app/pb_kits/playbook/pb_layout/docs/_layout_default.jsx +15 -0
- data/app/pb_kits/playbook/pb_layout/docs/_layout_sizes.html.erb +32 -0
- data/app/pb_kits/playbook/pb_layout/docs/_layout_sizes_dark.html.erb +32 -0
- data/app/pb_kits/playbook/pb_layout/docs/_layout_transparent.html.erb +8 -0
- data/app/pb_kits/playbook/pb_layout/docs/example.yml +5 -11
- data/app/pb_kits/playbook/pb_layout/docs/index.js +1 -1
- data/app/pb_kits/playbook/pb_layout/layout.rb +5 -7
- data/app/pb_kits/playbook/pb_message/_message.jsx +68 -11
- data/app/pb_kits/playbook/pb_message/docs/_message_default.jsx +59 -2
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.jsx +23 -16
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +15 -6
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_line.jsx +10 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.jsx +10 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text_background.html.erb +1 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text_background.jsx +12 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/example.yml +4 -2
- data/app/pb_kits/playbook/pb_section_separator/docs/index.js +3 -1
- data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +4 -1
- data/app/pb_kits/playbook/pb_select/_select.html.erb +33 -0
- data/app/pb_kits/playbook/pb_select/_select.jsx +110 -0
- data/app/pb_kits/playbook/pb_select/_select.scss +50 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_blank.html.erb +19 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_blank.jsx +30 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_custom_select.html.erb +8 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_custom_select.jsx +19 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_dark.html.erb +24 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_dark.jsx +31 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_default.html.erb +23 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_default.jsx +30 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_disabled.html.erb +19 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_disabled.jsx +30 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_disabled_options.html.erb +33 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_disabled_options.jsx +44 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_required.html.erb +17 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_required.jsx +28 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_value_text_same.html.erb +18 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_value_text_same.jsx +29 -0
- data/app/pb_kits/playbook/pb_select/docs/example.yml +22 -0
- data/app/pb_kits/playbook/pb_select/docs/index.js +8 -0
- data/app/pb_kits/playbook/pb_select/docs/nitro_theme.gemspec +41 -0
- data/app/pb_kits/playbook/pb_select/select.rb +60 -0
- data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.html.erb +25 -0
- data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.jsx +97 -0
- data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +87 -0
- data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_block.html.erb +25 -0
- data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_block.jsx +48 -0
- data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_dark.html.erb +45 -0
- data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_dark.jsx +68 -0
- data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_default.html.erb +39 -0
- data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_default.jsx +67 -0
- data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_single_select.html.erb +30 -0
- data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_single_select.jsx +54 -0
- data/app/pb_kits/playbook/pb_selectable_card/docs/example.yml +13 -0
- data/app/pb_kits/playbook/pb_selectable_card/docs/index.js +4 -0
- data/app/pb_kits/playbook/pb_selectable_card/selectable_card.rb +51 -0
- data/app/pb_kits/playbook/pb_stat_value/_stat_value.html.erb +1 -1
- data/app/pb_kits/playbook/pb_stat_value/stat_value.rb +5 -0
- data/app/pb_kits/playbook/pb_text_input/_text_input.html.erb +13 -9
- data/app/pb_kits/playbook/pb_text_input/_text_input.jsx +12 -6
- data/app/pb_kits/playbook/pb_text_input/_text_input.scss +44 -44
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_default.jsx +68 -12
- data/app/pb_kits/playbook/pb_textarea/_textarea.html.erb +20 -0
- data/app/pb_kits/playbook/pb_textarea/_textarea.jsx +54 -0
- data/app/pb_kits/playbook/pb_textarea/_textarea.scss +31 -0
- data/app/pb_kits/playbook/pb_textarea/_textarea_mixin.scss +51 -0
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_custom.html.erb +3 -0
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_custom.jsx +16 -0
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_dark.html.erb +9 -0
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_dark.jsx +21 -0
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.html.erb +9 -0
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.jsx +21 -0
- data/app/pb_kits/playbook/pb_textarea/docs/example.yml +15 -0
- data/app/pb_kits/playbook/pb_textarea/docs/index.js +3 -0
- data/app/pb_kits/playbook/pb_textarea/textarea.rb +30 -0
- data/app/pb_kits/playbook/pb_title/_title_mixin.scss +3 -1
- data/app/pb_kits/playbook/pb_user/_user.html.erb +3 -1
- data/app/pb_kits/playbook/pb_user/_user.jsx +76 -16
- data/app/pb_kits/playbook/pb_user/docs/_user_default.jsx +42 -1
- data/app/pb_kits/playbook/pb_user/docs/_user_size.jsx +31 -0
- data/app/pb_kits/playbook/pb_user/docs/_user_text_only.jsx +24 -0
- data/app/pb_kits/playbook/pb_user/docs/_user_vertical_size.jsx +37 -0
- data/app/pb_kits/playbook/pb_user/docs/_user_with_territory.html.erb +40 -0
- data/app/pb_kits/playbook/pb_user/docs/_user_with_territory.jsx +57 -0
- data/app/pb_kits/playbook/pb_user/docs/example.yml +8 -0
- data/app/pb_kits/playbook/pb_user/docs/index.js +5 -0
- data/app/pb_kits/playbook/pb_user/user.rb +12 -1
- data/app/pb_kits/playbook/props.rb +11 -3
- data/app/pb_kits/playbook/tokens/_colors.scss +16 -0
- data/app/pb_kits/playbook/tokens/_transition.scss +1 -0
- data/lib/playbook/version.rb +1 -1
- metadata +117 -15
- data/app/pb_kits/playbook/pb_layout/docs/_layout_lg.html.erb +0 -4
- data/app/pb_kits/playbook/pb_layout/docs/_layout_lg_dark.html.erb +0 -4
- data/app/pb_kits/playbook/pb_layout/docs/_layout_md.html.erb +0 -4
- data/app/pb_kits/playbook/pb_layout/docs/_layout_md_dark.html.erb +0 -4
- data/app/pb_kits/playbook/pb_layout/docs/_layout_sm.html.erb +0 -4
- data/app/pb_kits/playbook/pb_layout/docs/_layout_sm_dark.html.erb +0 -4
- data/app/pb_kits/playbook/pb_layout/docs/_layout_xl.html.erb +0 -4
- data/app/pb_kits/playbook/pb_layout/docs/_layout_xl_dark.html.erb +0 -4
- data/app/pb_kits/playbook/pb_layout/docs/_layout_xs.html.erb +0 -4
- data/app/pb_kits/playbook/pb_layout/docs/_layout_xs.jsx +0 -15
- data/app/pb_kits/playbook/pb_layout/docs/_layout_xs_dark.html.erb +0 -4
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_default.jsx +0 -10
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module PbForm
|
5
|
+
module FormBuilder
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
included do
|
9
|
+
prepend(TextInputBuilder.new(:email_field))
|
10
|
+
prepend(TextInputBuilder.new(:number_field))
|
11
|
+
prepend(TextInputBuilder.new(:search_field))
|
12
|
+
prepend(TextInputBuilder.new(:telephone_field))
|
13
|
+
prepend(TextInputBuilder.new(:text_field))
|
14
|
+
prepend(TextInputBuilder.new(:password_field))
|
15
|
+
prepend(TextInputBuilder.new(:url_field))
|
16
|
+
|
17
|
+
def actions(&block)
|
18
|
+
ActionArea.new(self).wrapper(&block)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module PbForm
|
5
|
+
module FormBuilder
|
6
|
+
class ActionArea
|
7
|
+
def initialize(form_builder)
|
8
|
+
self.form_builder = form_builder
|
9
|
+
end
|
10
|
+
|
11
|
+
def submit(value = nil, props: {})
|
12
|
+
props[:type] ||= "submit"
|
13
|
+
button(value, props: props)
|
14
|
+
end
|
15
|
+
|
16
|
+
def button(value = nil, props:)
|
17
|
+
props[:text] ||= value || form_builder.send(:submit_default_value)
|
18
|
+
|
19
|
+
template.content_tag(:li) do
|
20
|
+
template.pb_rails("button", props: props)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def wrapper
|
25
|
+
template.content_tag(:ol, class: "pb-form-actions") do
|
26
|
+
yield self
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
attr_accessor :form_builder
|
33
|
+
|
34
|
+
def template
|
35
|
+
form_builder.instance_variable_get("@template")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
if defined?(SimpleForm)
|
4
|
+
module Playbook
|
5
|
+
module PbForm
|
6
|
+
module FormBuilder
|
7
|
+
class SimpleFormBuilder < SimpleForm::FormBuilder
|
8
|
+
include FormBuilder
|
9
|
+
|
10
|
+
def input(attribute_name, options = {}, &block)
|
11
|
+
super(
|
12
|
+
attribute_name,
|
13
|
+
options.merge(label: false, input_html: {
|
14
|
+
props: {
|
15
|
+
label: true,
|
16
|
+
},
|
17
|
+
}),
|
18
|
+
&block
|
19
|
+
)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module PbForm
|
5
|
+
module FormBuilder
|
6
|
+
class TextInputBuilder < Module
|
7
|
+
def initialize(method_name)
|
8
|
+
define_method method_name do |name, props: {}, **options, &block|
|
9
|
+
props[:label] = @template.label(@object_name, name) if props[:label] == true
|
10
|
+
options = Hash(options)
|
11
|
+
options[:skip_default_ids] = false unless options.has_key?(:skip_default_ids)
|
12
|
+
input = super(name, **options, &block)
|
13
|
+
|
14
|
+
@template.pb_rails("text_input", props: props) do
|
15
|
+
input
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -1,19 +1,24 @@
|
|
1
|
+
/* @flow */
|
2
|
+
|
1
3
|
import React from 'react';
|
2
|
-
import
|
4
|
+
import {Icon} from "../";
|
3
5
|
|
4
|
-
const
|
5
|
-
className:
|
6
|
-
|
6
|
+
const IconCircleProps = {
|
7
|
+
className: String,
|
8
|
+
icon: String,
|
9
|
+
id: String,
|
10
|
+
size: String,
|
11
|
+
variant: String,
|
7
12
|
};
|
8
13
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
}
|
15
|
-
}
|
16
|
-
|
17
|
-
|
14
|
+
const IconCircle = ({
|
15
|
+
icon,
|
16
|
+
size='md',
|
17
|
+
variant='default'
|
18
|
+
}: IconCircleProps) => (
|
19
|
+
<div className={`pb_icon_circle_kit_${size}_${variant}`}>
|
20
|
+
<Icon icon={icon} />
|
21
|
+
</div>
|
22
|
+
)
|
18
23
|
|
19
|
-
export default IconCircle
|
24
|
+
export default IconCircle
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import classnames from 'classnames'
|
3
|
+
import {IconCircle} from '../../'
|
4
|
+
|
5
|
+
function IconCircleColor() {
|
6
|
+
return (
|
7
|
+
<div>
|
8
|
+
<IconCircle icon="rocket" size="sm" variant="royal" /><br />
|
9
|
+
<IconCircle icon="rocket" size="sm" variant="blue" /><br />
|
10
|
+
<IconCircle icon="rocket" size="sm" variant="purple" /><br />
|
11
|
+
<IconCircle icon="rocket" size="sm" variant="teal" /><br />
|
12
|
+
<IconCircle icon="rocket" size="sm" variant="red" /><br />
|
13
|
+
<IconCircle icon="rocket" size="sm" variant="yellow" /><br />
|
14
|
+
<IconCircle icon="rocket" size="sm" variant="green" />
|
15
|
+
</div>
|
16
|
+
)
|
17
|
+
}
|
18
|
+
|
19
|
+
export default IconCircleColor;
|
@@ -1,12 +1,13 @@
|
|
1
|
-
import React from
|
2
|
-
import
|
1
|
+
import React from 'react'
|
2
|
+
import classnames from 'classnames'
|
3
|
+
import {IconCircle} from '../../'
|
3
4
|
|
4
5
|
function IconCircleDefault() {
|
5
6
|
return (
|
6
7
|
<div>
|
7
|
-
<IconCircle />
|
8
|
+
<IconCircle icon="rocket" size="md"/>
|
8
9
|
</div>
|
9
10
|
)
|
10
11
|
}
|
11
12
|
|
12
|
-
export default IconCircleDefault
|
13
|
+
export default IconCircleDefault;
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import classnames from 'classnames'
|
3
|
+
import {IconCircle} from '../..'
|
4
|
+
|
5
|
+
function IconCircleSize() {
|
6
|
+
return (
|
7
|
+
<div>
|
8
|
+
<IconCircle icon="rocket" size="sm"/><br />
|
9
|
+
<IconCircle icon="rocket" size="md"/><br />
|
10
|
+
<IconCircle icon="rocket" size="lg"/><br />
|
11
|
+
<IconCircle icon="rocket" size="xl"/>
|
12
|
+
</div>
|
13
|
+
)
|
14
|
+
}
|
15
|
+
|
16
|
+
export default IconCircleSize;
|
@@ -1,54 +1,56 @@
|
|
1
|
-
|
2
|
-
import PropTypes from "prop-types";
|
1
|
+
/* @flow */
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
transparent: PropTypes.bool,
|
7
|
-
size: PropTypes.oneOf(["xs", "sm", "md", "base", "lg", "xl"]),
|
8
|
-
collapse: PropTypes.oneOf(["xs", "sm", "md", "lg", "xl"]),
|
9
|
-
full: PropTypes.bool,
|
10
|
-
dark: PropTypes.bool,
|
11
|
-
children: PropTypes.oneOfType([
|
12
|
-
PropTypes.arrayOf(PropTypes.node),
|
13
|
-
PropTypes.node
|
14
|
-
])
|
15
|
-
};
|
3
|
+
import React from 'react'
|
4
|
+
import classnames from 'classnames'
|
16
5
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
full: false,
|
23
|
-
dark: false
|
24
|
-
};
|
6
|
+
import {
|
7
|
+
buildAriaProps,
|
8
|
+
buildDataProps,
|
9
|
+
buildCss,
|
10
|
+
} from '../utilities/props'
|
25
11
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
} = this.props;
|
37
|
-
const dark_class = dark === true ? "_dark" : ""
|
38
|
-
const transparent_class = transparent === true ? "_transparent" : ""
|
39
|
-
const full_class = full === true ? " full" : ""
|
40
|
-
const size_class = "_"+size
|
41
|
-
const position_class = "_"+position
|
42
|
-
const collapse_class = " layout"+position_class+"_collapse_"+collapse
|
43
|
-
return (
|
44
|
-
<div className={`pb_layout${size_class}${position_class}${dark_class}${transparent_class}${full_class}${collapse_class}`}>
|
45
|
-
{children}
|
46
|
-
</div>
|
47
|
-
);
|
48
|
-
}
|
12
|
+
type LayoutProps = {
|
13
|
+
aria?: object,
|
14
|
+
children?: Array<React.ReactChild>,
|
15
|
+
collapse?: 'xs' | 'sm' | 'md' | 'lg' | 'xl',
|
16
|
+
dark?: Boolean,
|
17
|
+
data?: object,
|
18
|
+
full?: Boolean,
|
19
|
+
position?: 'left' | 'right',
|
20
|
+
size?: 'xs' | 'sm' | 'md' | 'base' | 'lg' | 'xl',
|
21
|
+
transparent?: Boolean
|
49
22
|
}
|
50
23
|
|
51
|
-
Layout
|
52
|
-
|
24
|
+
const Layout = ({
|
25
|
+
aria = {},
|
26
|
+
children,
|
27
|
+
collapse = 'md',
|
28
|
+
dark = false,
|
29
|
+
data = {},
|
30
|
+
full = false,
|
31
|
+
gradient = false,
|
32
|
+
position = 'left',
|
33
|
+
transparent = false,
|
34
|
+
size = 'base'
|
35
|
+
}: LayoutProps) => {
|
36
|
+
const ariaProps = buildAriaProps(aria)
|
37
|
+
const dataProps = buildDataProps(data)
|
53
38
|
|
54
|
-
|
39
|
+
const collapse_class = 'layout'+position_class+'_collapse_'+collapse;
|
40
|
+
const css = buildCss({
|
41
|
+
'pb_layout_kit': true,
|
42
|
+
[size]: true,
|
43
|
+
[position]: true,
|
44
|
+
'dark': dark === true,
|
45
|
+
'transparent': transparent === true,
|
46
|
+
'full': full === true
|
47
|
+
})
|
48
|
+
|
49
|
+
return (
|
50
|
+
<div {...ariaProps} {...dataProps} className={classnames(css, collapse_class)}>
|
51
|
+
{children}
|
52
|
+
</div>
|
53
|
+
)
|
54
|
+
}
|
55
|
+
|
56
|
+
export default Layout
|
@@ -3,8 +3,7 @@
|
|
3
3
|
@import "../tokens/screen_sizes";
|
4
4
|
@import "./layout_mixin";
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
[class^=pb_layout_kit] {
|
8
7
|
$layout_sizes: (
|
9
8
|
"xs": 64px,
|
10
9
|
"sm": 200px,
|
@@ -19,16 +18,17 @@
|
|
19
18
|
$colors: (
|
20
19
|
"light",
|
21
20
|
"dark",
|
21
|
+
"gradient",
|
22
22
|
"transparent",
|
23
23
|
);
|
24
24
|
|
25
25
|
// Sections
|
26
|
-
&_section {
|
26
|
+
&[class*=_section] {
|
27
27
|
padding: $space_sm $space_xl;
|
28
|
-
&_border {
|
28
|
+
&[class*=_border] {
|
29
29
|
padding: $space_sm $space_xl;
|
30
30
|
border-bottom: 1px solid $border_light;
|
31
|
-
&_margin {
|
31
|
+
&[class*=_margin] {
|
32
32
|
margin: $space_sm $space_xl;
|
33
33
|
border-bottom: 1px solid $border_light;
|
34
34
|
}
|
@@ -37,16 +37,12 @@
|
|
37
37
|
|
38
38
|
// sidebar and Body
|
39
39
|
@each $name, $size in $layout_sizes {
|
40
|
-
&
|
40
|
+
&[class*=_size_#{$name}] {
|
41
41
|
@each $position in $positions {
|
42
|
-
&_#{$position} {
|
42
|
+
&[class*=_#{$position}] {
|
43
43
|
@each $color in $colors {
|
44
|
-
|
44
|
+
&[class*=_#{$color}] {
|
45
45
|
@include layout_settings($size, $position, $color, "#{&}");
|
46
|
-
} @else {
|
47
|
-
&_#{$color} {
|
48
|
-
@include layout_settings($size, $position, $color, "#{&}");
|
49
|
-
}
|
50
46
|
}
|
51
47
|
}
|
52
48
|
}
|
@@ -36,6 +36,9 @@
|
|
36
36
|
@if $color == 'dark' {
|
37
37
|
background: $bg_dark;
|
38
38
|
border-color: $border_dark;
|
39
|
+
} @else if $color == 'gradient' {
|
40
|
+
border-color: $border_dark;
|
41
|
+
@include gradient;
|
39
42
|
} @else if $color == 'transparent' {
|
40
43
|
border-color: transparent;
|
41
44
|
} @else {
|
@@ -49,6 +52,9 @@
|
|
49
52
|
@if $color == 'dark' {
|
50
53
|
background: $bg_dark;
|
51
54
|
border-color: $border_dark;
|
55
|
+
} @else if $color == 'gradient' {
|
56
|
+
border-color: $border_dark;
|
57
|
+
@include gradient;
|
52
58
|
} @else if $color == 'transparent' {
|
53
59
|
border-color: transparent;
|
54
60
|
} @else {
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<%= pb_rails("layout", props: {position: "left", size: "sm", collapse: "md"}) do %>
|
2
|
+
<%= pb_rails("layout/sidebar") do %>
|
3
|
+
<%= pb_rails("body", props: { text: "Light" }) %>
|
4
|
+
<% end %>
|
5
|
+
<%= pb_rails("layout/body") do %> Body <% end %>
|
6
|
+
<% end %>
|
7
|
+
|
8
|
+
<br/><br/>
|
9
|
+
|
10
|
+
<%= pb_rails("layout", props: {position: "left", size: "sm", collapse: "md", variant: "dark"}) do %>
|
11
|
+
<%= pb_rails("layout/sidebar") do %>
|
12
|
+
<%= pb_rails("body", props: { text: "Dark", dark: true }) %>
|
13
|
+
<% end %>
|
14
|
+
<%= pb_rails("layout/body") do %> Body <% end %>
|
15
|
+
<% end %>
|
16
|
+
|
17
|
+
<br/><br/>
|
18
|
+
|
19
|
+
<%= pb_rails("layout", props: {position: "left", size: "sm", collapse: "md", variant: "gradient"}) do %>
|
20
|
+
<%= pb_rails("layout/sidebar") do %>
|
21
|
+
<%= pb_rails("body", props: { text: "Gradient", dark: true }) %>
|
22
|
+
<% end %>
|
23
|
+
<%= pb_rails("layout/body") do %> Body <% end %>
|
24
|
+
<% end %>
|