playbook_ui 4.2.0 → 4.3.0
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.
- checksums.yaml +4 -4
- data/app/controllers/playbook/application_controller.rb +1 -0
- data/app/controllers/playbook/pages_controller.rb +0 -4
- data/app/controllers/playbook/samples_controller.rb +40 -0
- data/app/helpers/playbook/pb_doc_helper.rb +7 -1
- data/app/helpers/playbook/pb_sample_helper.rb +19 -0
- data/app/helpers/playbook/redcarpet_helper.rb +1 -1
- data/app/pb_kits/playbook/_playbook.scss +1 -0
- data/app/pb_kits/playbook/config/_kit_samples_list.html.erb +3 -0
- data/app/pb_kits/playbook/config/_kit_ui.html.slim +9 -5
- data/app/pb_kits/playbook/data/menu.yml +4 -0
- data/app/pb_kits/playbook/index.js +2 -0
- data/app/pb_kits/playbook/kits/pb_flex.js +4 -0
- data/app/pb_kits/playbook/kits/pb_highlight.js +4 -0
- data/app/pb_kits/playbook/packs/examples.js +4 -0
- data/app/pb_kits/playbook/packs/kits/pb_highlight.js +2 -0
- data/app/pb_kits/playbook/packs/kits/pb_popover.js +1 -0
- data/app/pb_kits/playbook/packs/main.scss +3 -0
- data/app/pb_kits/playbook/packs/samples.js +50 -0
- data/app/pb_kits/playbook/packs/site_styles/_samples.scss +71 -0
- data/app/pb_kits/playbook/packs/site_styles/_site-style.scss +6 -0
- data/app/pb_kits/playbook/packs/site_styles/docs/_flex_examples.scss +11 -3
- data/app/pb_kits/playbook/pb_body/_body.html.erb +1 -1
- data/app/pb_kits/playbook/pb_body/_body.jsx +10 -1
- data/app/pb_kits/playbook/pb_body/body.rb +17 -1
- data/app/pb_kits/playbook/pb_editor/_editor.html.erb +6 -0
- data/app/pb_kits/playbook/pb_hashtag/_hashtag.jsx +2 -1
- data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_dark.html.erb +4 -0
- data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_dark.jsx +7 -0
- data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_default.html.erb +4 -0
- data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_default.jsx +6 -0
- data/app/pb_kits/playbook/pb_hashtag/hashtag.rb +3 -1
- data/app/pb_kits/playbook/pb_highlight/_highlight.html.erb +6 -0
- data/app/pb_kits/playbook/pb_highlight/_highlight.jsx +38 -0
- data/app/pb_kits/playbook/pb_highlight/_highlight.scss +6 -0
- data/app/pb_kits/playbook/pb_highlight/docs/_highlight_default.html.erb +20 -0
- data/app/pb_kits/playbook/pb_highlight/docs/_highlight_default.jsx +26 -0
- data/app/pb_kits/playbook/pb_highlight/docs/example.yml +9 -0
- data/app/pb_kits/playbook/pb_highlight/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_highlight/highlight.rb +17 -0
- data/app/pb_kits/playbook/pb_popover/_popover.html.erb +1 -1
- data/app/pb_kits/playbook/pb_popover/_popover.js +13 -22
- data/app/pb_kits/playbook/pb_popover/_popover.jsx +121 -0
- data/app/pb_kits/playbook/pb_popover/_popover.scss +4 -0
- data/app/pb_kits/playbook/pb_popover/docs/_popover_default.jsx +29 -0
- data/app/pb_kits/playbook/pb_popover/docs/_popover_list.jsx +46 -0
- data/app/pb_kits/playbook/pb_popover/docs/_popover_portal.jsx +36 -0
- data/app/pb_kits/playbook/pb_popover/docs/_popover_with_button.jsx +35 -0
- data/app/pb_kits/playbook/pb_popover/docs/example.yml +4 -0
- data/app/pb_kits/playbook/pb_popover/docs/index.js +4 -0
- data/app/pb_kits/playbook/pb_popover/popover.rb +1 -1
- data/app/pb_kits/playbook/pb_select/_select.jsx +51 -51
- data/app/pb_kits/playbook/pb_select/docs/_select_blank.jsx +8 -14
- data/app/pb_kits/playbook/pb_select/docs/_select_dark.jsx +17 -15
- data/app/pb_kits/playbook/pb_select/docs/_select_dark_error.jsx +17 -15
- data/app/pb_kits/playbook/pb_select/docs/_select_default.jsx +16 -15
- data/app/pb_kits/playbook/pb_select/docs/_select_disabled.jsx +8 -14
- data/app/pb_kits/playbook/pb_select/docs/_select_disabled_options.jsx +31 -29
- data/app/pb_kits/playbook/pb_select/docs/_select_error.jsx +17 -15
- data/app/pb_kits/playbook/pb_select/docs/_select_required.jsx +7 -11
- data/app/pb_kits/playbook/pb_select/docs/_select_value_text_same.jsx +8 -14
- data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.jsx +2 -2
- data/app/pb_kits/playbook/pb_textarea/_textarea.jsx +2 -2
- data/app/pb_kits/playbook/pb_toggle/_toggle.jsx +3 -3
- data/app/pb_kits/playbook/types.js +1 -1
- data/app/pb_kits/playbook/vendor.js +2 -2
- data/app/views/layouts/playbook/samples.html.erb +37 -0
- data/app/views/playbook/pages/kit_show.html.slim +1 -1
- data/app/views/playbook/pages/principles.html.slim +1 -1
- data/app/views/playbook/samples/dashboards/dashboards.html.erb +82 -0
- data/app/views/playbook/samples/dashboards/dashboards.jsx +35 -0
- data/app/views/playbook/samples/sample_show.html.erb +25 -0
- data/lib/playbook/version.rb +1 -1
- metadata +32 -5
- data/app/pb_kits/playbook/config/_kit_example.html.slim +0 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3a4d73c76588b25b5e3ee3b257516d846582794b6a86e435cad10ecd5dcdc8bc
|
|
4
|
+
data.tar.gz: 57d4d2629084e41b54d0a5d041b80203ef2372718e14d750a680c5b324b18fcf
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 30175126c0b79b3625a628965b0a2869d1e5bbfa46359413335fb9b45246a21d699e65039c9d97de5d6486d6152f350308b0be4c5fee63e530a98c9de03a33d9
|
|
7
|
+
data.tar.gz: 8adec477ac41c310c523f6b526052bde4f6aaa72506d4d5e91a8e591cd34930ff3bca48783c8085704b6d1a318c2ea55aa17cc6165c1ffda08fffcab8385750a
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_dependency "playbook/application_controller"
|
|
4
|
+
require "yaml"
|
|
5
|
+
|
|
6
|
+
module Playbook
|
|
7
|
+
class SamplesController < ApplicationController
|
|
8
|
+
before_action :set_sample, only: %i[sample_show_rails sample_show_react]
|
|
9
|
+
|
|
10
|
+
layout "playbook/samples"
|
|
11
|
+
|
|
12
|
+
def samples
|
|
13
|
+
params[:type] ||= "rails"
|
|
14
|
+
@type = params[:type]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def sample_show_rails
|
|
18
|
+
params[:type] ||= "rails"
|
|
19
|
+
@type = params[:type]
|
|
20
|
+
render template: "playbook/samples/sample_show"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def sample_show_react
|
|
24
|
+
params[:type] ||= "react"
|
|
25
|
+
@type = params[:type]
|
|
26
|
+
render template: "playbook/samples/sample_show"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
def set_sample
|
|
32
|
+
menu = MENU["samples"].map { |link| link.is_a?(Hash) ? link.first.last : link }
|
|
33
|
+
if menu.flatten.include?(params[:name])
|
|
34
|
+
@sample = params[:name]
|
|
35
|
+
else
|
|
36
|
+
redirect_to root_path, flash: { error: "That kit does not exist" }
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -24,7 +24,8 @@ module Playbook
|
|
|
24
24
|
|
|
25
25
|
def pb_kits(type: "rails")
|
|
26
26
|
display_kits = []
|
|
27
|
-
|
|
27
|
+
kits = get_kits()
|
|
28
|
+
kits.each do |kit|
|
|
28
29
|
if kit.is_a?(Hash)
|
|
29
30
|
nav_hash_array(kit).each do |sub_kit|
|
|
30
31
|
display_kits << render_pb_doc_kit(sub_kit, type)
|
|
@@ -36,6 +37,11 @@ module Playbook
|
|
|
36
37
|
raw("<div class='pb--docItem'>" + display_kits.join("</div><div class='pb--docItem'>") + "</div>")
|
|
37
38
|
end
|
|
38
39
|
|
|
40
|
+
def get_kits
|
|
41
|
+
menu = YAML.load_file("#{Playbook::Engine.root}/app/pb_kits/playbook/data/menu.yml")
|
|
42
|
+
return menu['kits']
|
|
43
|
+
end
|
|
44
|
+
|
|
39
45
|
def pb_category_kits(category_kits: [], type: "rails")
|
|
40
46
|
display_kits = []
|
|
41
47
|
category_kits.each do |kit|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Playbook
|
|
4
|
+
module PbSampleHelper
|
|
5
|
+
def has_sample_type?(sample, type)
|
|
6
|
+
type ||= "rails"
|
|
7
|
+
if type == "rails"
|
|
8
|
+
Dir["../../views/playbook/samples/#{sample}/*.html.erb"].empty?
|
|
9
|
+
elsif type == "react"
|
|
10
|
+
Dir["../../views/playbook/samples/#{sample}/*.jsx"].empty?
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def pb_sample(sample: "", type: "rails")
|
|
15
|
+
@type = type
|
|
16
|
+
@sample = sample
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -38,7 +38,7 @@ module Playbook
|
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
def rouge(text, language)
|
|
41
|
-
formatter = Rouge::Formatters::HTML.new(
|
|
41
|
+
formatter = Rouge::Formatters::HTML.new(scope: ".highlight")
|
|
42
42
|
lexer = Rouge::Lexer.find(language)
|
|
43
43
|
formatter.format(lexer.lex(text))
|
|
44
44
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
- type ||= "rails"
|
|
2
2
|
|
|
3
3
|
- if type == "react"
|
|
4
|
-
- contents = "
|
|
4
|
+
- contents = File.read("#{Playbook::Engine.root}/app/pb_kits/playbook/pb_#{@kit_examples[:kit]}/docs/_#{key}.jsx")
|
|
5
5
|
- else
|
|
6
6
|
- contents = File.read("#{Playbook::Engine.root}/app/pb_kits/playbook/pb_#{@kit_examples[:kit]}/docs/_#{key}.html.erb")
|
|
7
7
|
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
= pb_react(key.camelize)
|
|
15
15
|
br
|
|
16
16
|
|
|
17
|
+
- if @samples
|
|
18
|
+
= render partial: "kit_samples_list"
|
|
17
19
|
|
|
18
20
|
- if @show_code
|
|
19
21
|
.pb--codeControls
|
|
@@ -23,7 +25,9 @@
|
|
|
23
25
|
|
|
24
26
|
.pb--codeCopy data-action="toggle" data-togglable="code_example"
|
|
25
27
|
a.pb--close-toggle href="#" data-toggle="false" Close
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
pre.highlight
|
|
29
|
+
- if type == "rails"
|
|
30
|
+
= raw rouge(contents, "erb")
|
|
31
|
+
- elsif type == "react"
|
|
32
|
+
= raw rouge(contents, "react")
|
|
33
|
+
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
samples:
|
|
2
|
+
- dashboards
|
|
1
3
|
kits:
|
|
2
4
|
- avatar
|
|
3
5
|
- badge
|
|
@@ -22,6 +24,7 @@ kits:
|
|
|
22
24
|
- textarea
|
|
23
25
|
- typeahead
|
|
24
26
|
- toggle
|
|
27
|
+
- highlight
|
|
25
28
|
- hashtag
|
|
26
29
|
- icon
|
|
27
30
|
- icon_circle
|
|
@@ -68,3 +71,4 @@ kits:
|
|
|
68
71
|
- title_detail
|
|
69
72
|
- user
|
|
70
73
|
- user_badge
|
|
74
|
+
- editor
|
|
@@ -20,6 +20,7 @@ export FixedConfirmationToast from './pb_fixed_confirmation_toast/_fixed_confirm
|
|
|
20
20
|
export Flex from './pb_flex/_flex.jsx'
|
|
21
21
|
export FlexItem from './pb_flex/_flex_item.jsx'
|
|
22
22
|
export Hashtag from './pb_hashtag/_hashtag.jsx'
|
|
23
|
+
export Highlight from './pb_highlight/_highlight.jsx'
|
|
23
24
|
export HomeAddressStreet from './pb_home_address_street/_home_address_street.jsx'
|
|
24
25
|
export Icon from './pb_icon/_icon.jsx'
|
|
25
26
|
export IconCircle from './pb_icon_circle/_icon_circle.jsx'
|
|
@@ -39,6 +40,7 @@ export MultipleUsersStacked from './pb_multiple_users_stacked/_multiple_users_st
|
|
|
39
40
|
export Nav from './pb_nav/_nav.jsx'
|
|
40
41
|
export NavItem from './pb_nav/_item.jsx'
|
|
41
42
|
export OnlineStatus from './pb_online_status/_online_status.jsx'
|
|
43
|
+
export PbReactPopover from './pb_popover/_popover.jsx'
|
|
42
44
|
export Person from './pb_person/_person.jsx'
|
|
43
45
|
export PersonContact from './pb_person_contact/_person_contact.jsx'
|
|
44
46
|
export Pill from './pb_pill/_pill.jsx'
|
|
@@ -33,6 +33,7 @@ import * as DistributionBar from 'pb_distribution_bar/docs'
|
|
|
33
33
|
import * as FixedConfirmationToast from 'pb_fixed_confirmation_toast/docs'
|
|
34
34
|
import * as Flex from 'pb_flex/docs'
|
|
35
35
|
import * as Hashtag from 'pb_hashtag/docs'
|
|
36
|
+
import * as Highlight from 'pb_highlight/docs'
|
|
36
37
|
import * as HomeAddressStreet from 'pb_home_address_street/docs'
|
|
37
38
|
import * as Icon from 'pb_icon/docs'
|
|
38
39
|
import * as IconCircle from 'pb_icon_circle/docs'
|
|
@@ -50,6 +51,7 @@ import * as MultipleUsers from 'pb_multiple_users/docs'
|
|
|
50
51
|
import * as MultipleUsersStacked from 'pb_multiple_users_stacked/docs'
|
|
51
52
|
import * as Nav from 'pb_nav/docs'
|
|
52
53
|
import * as OnlineStatus from 'pb_online_status/docs'
|
|
54
|
+
import * as PbReactPopover from 'pb_popover/docs'
|
|
53
55
|
import * as Person from 'pb_person/docs'
|
|
54
56
|
import * as PersonContact from 'pb_person_contact/docs'
|
|
55
57
|
import * as Pill from 'pb_pill/docs'
|
|
@@ -99,6 +101,7 @@ WebpackerReact.setup({
|
|
|
99
101
|
...FixedConfirmationToast,
|
|
100
102
|
...Flex,
|
|
101
103
|
...Hashtag,
|
|
104
|
+
...Highlight,
|
|
102
105
|
...HomeAddressStreet,
|
|
103
106
|
...Icon,
|
|
104
107
|
...IconCircle,
|
|
@@ -116,6 +119,7 @@ WebpackerReact.setup({
|
|
|
116
119
|
...MultipleUsersStacked,
|
|
117
120
|
...Nav,
|
|
118
121
|
...OnlineStatus,
|
|
122
|
+
...PbReactPopover,
|
|
119
123
|
...Person,
|
|
120
124
|
...PersonContact,
|
|
121
125
|
...Pill,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '../../pb_popover/_popover.jsx'
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// ===========================================
|
|
2
|
+
// Generated file from kit generator.
|
|
3
|
+
//
|
|
4
|
+
// ===========================================
|
|
5
|
+
|
|
6
|
+
import WebpackerReact from 'webpacker-react'
|
|
7
|
+
|
|
8
|
+
//
|
|
9
|
+
// ===========================================
|
|
10
|
+
// ===========================================
|
|
11
|
+
// Generated file from kit generator.
|
|
12
|
+
|
|
13
|
+
import Dashboards from '../../../views/playbook/samples/dashboards/dashboards.jsx'
|
|
14
|
+
|
|
15
|
+
WebpackerReact.setup({ Dashboards })
|
|
16
|
+
|
|
17
|
+
$(document).ready(() => {
|
|
18
|
+
$('.pb--codeCopy').show()
|
|
19
|
+
$('.compress').hide()
|
|
20
|
+
|
|
21
|
+
window.$(document).on('click', '.toggle-button', (e) => {
|
|
22
|
+
e.preventDefault()
|
|
23
|
+
$('.pb--codeCopy').toggleClass('close')
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
$('.expand').click(() => {
|
|
27
|
+
$('.sample-nav').hide()
|
|
28
|
+
$('.compress').show()
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
$('.compress').click(() => {
|
|
32
|
+
$('.sample-nav').show()
|
|
33
|
+
$('.compress').hide()
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
const setClipboard = (value) => {
|
|
37
|
+
var tempInput = document.createElement('textarea')
|
|
38
|
+
tempInput.style = 'position: absolute; left: -1000px; top: -1000px'
|
|
39
|
+
tempInput.value = value
|
|
40
|
+
document.body.appendChild(tempInput)
|
|
41
|
+
tempInput.select()
|
|
42
|
+
document.execCommand('copy')
|
|
43
|
+
document.body.removeChild(tempInput)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
$('.copy-clipboard').click(() => {
|
|
47
|
+
var copyText = document.querySelector('.hiddenCodeforCopy').textContent
|
|
48
|
+
setClipboard(copyText)
|
|
49
|
+
})
|
|
50
|
+
})
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
.sample-layout {
|
|
2
|
+
overflow-y: hidden;
|
|
3
|
+
.sample {
|
|
4
|
+
padding-left: 50px;
|
|
5
|
+
border-bottom: 0px;
|
|
6
|
+
}
|
|
7
|
+
.code-controls {
|
|
8
|
+
.pb_nav_list_item_text {
|
|
9
|
+
color: white !important;
|
|
10
|
+
}
|
|
11
|
+
.pb_nav_list_kit_item {
|
|
12
|
+
.pb_nav_list_item_link {
|
|
13
|
+
border-color: transparent !important;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.sample-nav {
|
|
19
|
+
padding: 0 25px;
|
|
20
|
+
background: #172257;
|
|
21
|
+
display: flex;
|
|
22
|
+
width: 100%;
|
|
23
|
+
flex-basis: 200px;
|
|
24
|
+
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.sample-actions {
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
justify-content: center;
|
|
31
|
+
|
|
32
|
+
&-right {
|
|
33
|
+
margin-left: auto;
|
|
34
|
+
order: 2;
|
|
35
|
+
display: flex;
|
|
36
|
+
align-items: center;
|
|
37
|
+
justify-content: center;
|
|
38
|
+
.items {
|
|
39
|
+
padding: 5px;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
.pb--doc {
|
|
44
|
+
margin-bottom: 0px;
|
|
45
|
+
}
|
|
46
|
+
.pb--codeCopy {
|
|
47
|
+
border: 0px;
|
|
48
|
+
position: fixed;
|
|
49
|
+
width: 100%;
|
|
50
|
+
height: calc(50vh - 45px);
|
|
51
|
+
bottom: 0;
|
|
52
|
+
left: 0;
|
|
53
|
+
transition: all .4s;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.pb--codeCopy.close {
|
|
57
|
+
top: 100%;
|
|
58
|
+
height: 0px;
|
|
59
|
+
transition: all .4s;
|
|
60
|
+
}
|
|
61
|
+
.compress {
|
|
62
|
+
position: absolute;
|
|
63
|
+
top: 15px;
|
|
64
|
+
right: 30px;
|
|
65
|
+
display: none;
|
|
66
|
+
z-index: 4;
|
|
67
|
+
}
|
|
68
|
+
.hiddenCodeforCopy {
|
|
69
|
+
display: none;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -46,6 +46,12 @@
|
|
|
46
46
|
line-height: 34px;
|
|
47
47
|
border-bottom: 2px solid rgba($border_light, 0.6);
|
|
48
48
|
|
|
49
|
+
&.sample {
|
|
50
|
+
margin: 0;
|
|
51
|
+
border-bottom: 2px solid rgba(228, 232, 240, 0.6);
|
|
52
|
+
background: rgb(23, 34, 87) !important;
|
|
53
|
+
}
|
|
54
|
+
|
|
49
55
|
a {
|
|
50
56
|
padding: 0 10px;
|
|
51
57
|
line-height: 34px;
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
.pb--kit-show.flex-kit {
|
|
1
2
|
[class^=pb_flex_kit] { background: #F3F7FB; }
|
|
2
|
-
|
|
3
|
-
[class^=pb_flex_item_kit] {
|
|
4
|
-
|
|
3
|
+
|
|
4
|
+
.flex-item, [class^=pb_flex_item_kit] {
|
|
5
|
+
background: #E4E8F0;
|
|
6
|
+
min-width: 30px;
|
|
7
|
+
min-height: 30px;
|
|
8
|
+
color: #242B42;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.tall { min-height: 200px; }
|
|
12
|
+
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import React from 'react'
|
|
4
4
|
import classnames from 'classnames'
|
|
5
|
+
import { Highlight } from '../'
|
|
5
6
|
|
|
6
7
|
type BodyProps = {
|
|
7
8
|
className?: String,
|
|
@@ -11,6 +12,8 @@ type BodyProps = {
|
|
|
11
12
|
status?: 'negative' | 'positive',
|
|
12
13
|
tag: String,
|
|
13
14
|
text?: String,
|
|
15
|
+
highlighting?: Boolean,
|
|
16
|
+
highlightedText?: Array<String>
|
|
14
17
|
}
|
|
15
18
|
|
|
16
19
|
const bodyCSS = ({
|
|
@@ -34,13 +37,19 @@ const Body = (props: BodyProps) => {
|
|
|
34
37
|
children,
|
|
35
38
|
text,
|
|
36
39
|
tag = 'div',
|
|
40
|
+
highlightedText,
|
|
41
|
+
highlighting = false,
|
|
37
42
|
} = props
|
|
38
43
|
|
|
39
44
|
const Tag = `${tag}`
|
|
40
45
|
|
|
41
46
|
return (
|
|
42
47
|
<Tag className={classnames(bodyCSS(props), className)}>
|
|
43
|
-
{
|
|
48
|
+
<If condition={highlighting}>
|
|
49
|
+
<Highlight highlightedText={highlightedText}>{text || children}</Highlight>
|
|
50
|
+
<Else />
|
|
51
|
+
{ text || children }
|
|
52
|
+
</If>
|
|
44
53
|
</Tag>
|
|
45
54
|
)
|
|
46
55
|
}
|