playbook_ui 5.5.1 → 6.0.1.pre.alpha5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +0 -2
  3. data/app/pb_kits/playbook/data/menu.yml +0 -2
  4. data/app/pb_kits/playbook/index.js +0 -1
  5. data/app/pb_kits/playbook/packs/examples.js +0 -4
  6. data/app/pb_kits/playbook/pb_button/_button.jsx +2 -0
  7. data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +3 -0
  8. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.html.erb +21 -11
  9. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.scss +10 -0
  10. data/app/pb_kits/playbook/pb_circle_chart/circle_chart.rb +14 -0
  11. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_block.html.erb +26 -0
  12. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.html.erb +20 -0
  13. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_rounded.html.erb +22 -0
  14. data/app/pb_kits/playbook/pb_circle_chart/docs/example.yml +5 -1
  15. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.html.erb +6 -2
  16. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -0
  17. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -0
  18. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +3 -1
  19. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +3 -1
  20. data/app/pb_kits/playbook/pb_form/form_builder.rb +2 -0
  21. data/app/pb_kits/playbook/pb_form/form_builder/checkbox_field.rb +26 -0
  22. data/app/pb_kits/playbook/pb_form/form_builder/form_field_builder.rb +1 -0
  23. data/app/pb_kits/playbook/pb_image/_image.html.erb +2 -1
  24. data/app/pb_kits/playbook/pb_image/_image.jsx +31 -8
  25. data/app/pb_kits/playbook/pb_image/docs/_default_image.jsx +3 -3
  26. data/app/pb_kits/playbook/pb_label_value/_label_value.html.erb +20 -2
  27. data/app/pb_kits/playbook/pb_label_value/_label_value.jsx +109 -5
  28. data/app/pb_kits/playbook/pb_label_value/_label_value.scss +0 -10
  29. data/app/pb_kits/playbook/pb_label_value/docs/_description.md +3 -1
  30. data/app/pb_kits/playbook/pb_label_value/docs/_label_value_details.html.erb +39 -0
  31. data/app/pb_kits/playbook/pb_label_value/docs/_label_value_details.jsx +50 -0
  32. data/app/pb_kits/playbook/pb_label_value/docs/_label_value_details.md +1 -0
  33. data/app/pb_kits/playbook/pb_label_value/docs/_label_value_details_dark.html.erb +43 -0
  34. data/app/pb_kits/playbook/pb_label_value/docs/_label_value_details_dark.jsx +54 -0
  35. data/app/pb_kits/playbook/pb_label_value/docs/_label_value_details_examples.html.erb +72 -0
  36. data/app/pb_kits/playbook/pb_label_value/docs/_label_value_details_examples.jsx +92 -0
  37. data/app/pb_kits/playbook/pb_label_value/docs/_label_value_details_examples_dark.html.erb +80 -0
  38. data/app/pb_kits/playbook/pb_label_value/docs/_label_value_details_examples_dark.jsx +101 -0
  39. data/app/pb_kits/playbook/pb_label_value/docs/example.yml +9 -0
  40. data/app/pb_kits/playbook/pb_label_value/docs/index.js +5 -0
  41. data/app/pb_kits/playbook/pb_label_value/label_value.rb +19 -2
  42. data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.jsx +5 -1
  43. data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.scss +12 -1
  44. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_variants.html.erb +9 -0
  45. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_variants.jsx +26 -0
  46. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_variants.md +1 -0
  47. data/app/pb_kits/playbook/pb_progress_simple/docs/example.yml +2 -0
  48. data/app/pb_kits/playbook/pb_progress_simple/docs/index.js +2 -0
  49. data/app/pb_kits/playbook/pb_progress_simple/progress_simple.rb +8 -1
  50. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.html.erb +2 -2
  51. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.jsx +24 -10
  52. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +3 -1
  53. data/app/pb_kits/playbook/pb_time_range_inline/time_range_inline.rb +6 -0
  54. data/app/pb_kits/playbook/pb_title/_title.scss +3 -4
  55. data/app/pb_kits/playbook/pb_title/title.rb +2 -2
  56. data/app/pb_kits/playbook/plugins/pb_chart.js +49 -4
  57. data/lib/playbook/version.rb +1 -1
  58. metadata +20 -23
  59. data/app/pb_kits/playbook/pb_installer/_installer.html.erb +0 -16
  60. data/app/pb_kits/playbook/pb_installer/_installer.jsx +0 -54
  61. data/app/pb_kits/playbook/pb_installer/_installer.scss +0 -7
  62. data/app/pb_kits/playbook/pb_installer/docs/_installer_default.html.erb +0 -8
  63. data/app/pb_kits/playbook/pb_installer/docs/_installer_default.jsx +0 -16
  64. data/app/pb_kits/playbook/pb_installer/docs/example.yml +0 -9
  65. data/app/pb_kits/playbook/pb_installer/docs/index.js +0 -1
  66. data/app/pb_kits/playbook/pb_installer/installer.rb +0 -18
  67. data/app/pb_kits/playbook/pb_label_value/docs/index.html.erb +0 -25
  68. data/app/pb_kits/playbook/pb_logistic/_logistic.html.erb +0 -20
  69. data/app/pb_kits/playbook/pb_logistic/_logistic.jsx +0 -111
  70. data/app/pb_kits/playbook/pb_logistic/_logistic.scss +0 -7
  71. data/app/pb_kits/playbook/pb_logistic/docs/_logistic_dark.html.erb +0 -27
  72. data/app/pb_kits/playbook/pb_logistic/docs/_logistic_dark.jsx +0 -39
  73. data/app/pb_kits/playbook/pb_logistic/docs/_logistic_default.html.erb +0 -24
  74. data/app/pb_kits/playbook/pb_logistic/docs/_logistic_default.jsx +0 -35
  75. data/app/pb_kits/playbook/pb_logistic/docs/example.yml +0 -11
  76. data/app/pb_kits/playbook/pb_logistic/docs/index.js +0 -2
  77. data/app/pb_kits/playbook/pb_logistic/logistic.rb +0 -31
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f4ee46775d0d56664c1a9aca3fe5524b0956af82b1067d79104529064855fae
4
- data.tar.gz: 0e36fa5454385af4d344c9cde205c4f9392695f0dbb6e3721eb4447b90871fcd
3
+ metadata.gz: 3758eaffd739857c6d3a7b4f9abb12ab11ea815d798c17f2bbb3a6e6c0f0a6dd
4
+ data.tar.gz: 8b3904ea1cf701bfc759d3d18b3a822530bb25ebf9a30f73ca70f813415e2c10
5
5
  SHA512:
6
- metadata.gz: c490cc3202290171c33bff9a68062bf888f0110c02189550eaeafa1f9b3f9e07c3e04ae9bad665aa78095cd5f8f8a9b2564b4dabb0d6b549b0ad11bd12d0c587
7
- data.tar.gz: 5ca5802c390a462833194cb94aaaeaf7dccd10e72174a1abc826b17f19b7c028dab3bb0c7c23c2038e458574f942f826e37a1b742949c376135723196309b565
6
+ metadata.gz: 9a9ea53ae1f6d6bb8af300e24828775554c77bb58a43612fc4faa0d00a48325ed8b6d74cae83e449207861051601e5d0926f98a03f317b89d917c574e563e85a
7
+ data.tar.gz: e3dcec185a93b6a9bb803cde9ec24f55b388e33d74e37d8da26d9fe606b4f3ab83b98294c17560747cd785eac9eff00729d20021446aeb88ad25e04909ce5d7d
@@ -33,7 +33,6 @@
33
33
  @import 'pb_icon_circle/icon_circle';
34
34
  @import 'pb_icon_value/icon_value';
35
35
  @import 'pb_image/image';
36
- @import 'pb_installer/installer';
37
36
  @import 'pb_label_pill/label_pill';
38
37
  @import 'pb_label_value/label_value';
39
38
  @import 'pb_layout/layout';
@@ -41,7 +40,6 @@
41
40
  @import 'pb_line_graph/line_graph';
42
41
  @import 'pb_list/list';
43
42
  @import 'pb_loading_inline/loading_inline';
44
- @import 'pb_logistic/logistic';
45
43
  @import 'pb_message/message';
46
44
  @import 'pb_multiple_users/multiple_users';
47
45
  @import 'pb_multiple_users_stacked/multiple_users_stacked';
@@ -42,11 +42,9 @@ kits:
42
42
  - icon_circle
43
43
  - icon_value
44
44
  - image
45
- - installer
46
45
  - layout
47
46
  - list
48
47
  - loading_inline
49
- - logistic
50
48
  - multiple_users
51
49
  - multiple_users_stacked
52
50
  - nav
@@ -40,7 +40,6 @@ export LineGraph from './pb_line_graph/_line_graph.jsx'
40
40
  export List from './pb_list/_list.jsx'
41
41
  export ListItem from './pb_list/_list_item.jsx'
42
42
  export LoadingInline from './pb_loading_inline/_loading_inline.jsx'
43
- export Logistic from './pb_logistic/_logistic.jsx'
44
43
  export Message from './pb_message/_message.jsx'
45
44
  export MultipleUsers from './pb_multiple_users/_multiple_users.jsx'
46
45
  export MultipleUsersStacked from './pb_multiple_users_stacked/_multiple_users_stacked.jsx'
@@ -45,7 +45,6 @@ import * as Icon from 'pb_icon/docs'
45
45
  import * as IconCircle from 'pb_icon_circle/docs'
46
46
  import * as IconValue from 'pb_icon_value/docs'
47
47
  import * as Image from 'pb_image/docs'
48
- import * as Installer from 'pb_installer/docs'
49
48
  import * as LabelPill from 'pb_label_pill/docs'
50
49
  import * as LabelValue from 'pb_label_value/docs'
51
50
  import * as Layout from 'pb_layout/docs'
@@ -53,7 +52,6 @@ import * as Legend from 'pb_legend/docs'
53
52
  import * as LineGraph from 'pb_line_graph/docs'
54
53
  import * as List from 'pb_list/docs'
55
54
  import * as LoadingInline from 'pb_loading_inline/docs'
56
- import * as Logistic from 'pb_logistic/docs'
57
55
  import * as Message from 'pb_message/docs'
58
56
  import * as MultipleUsers from 'pb_multiple_users/docs'
59
57
  import * as MultipleUsersStacked from 'pb_multiple_users_stacked/docs'
@@ -125,7 +123,6 @@ WebpackerReact.setup({
125
123
  ...IconCircle,
126
124
  ...IconValue,
127
125
  ...Image,
128
- ...Installer,
129
126
  ...LabelPill,
130
127
  ...LabelValue,
131
128
  ...Layout,
@@ -133,7 +130,6 @@ WebpackerReact.setup({
133
130
  ...LineGraph,
134
131
  ...List,
135
132
  ...LoadingInline,
136
- ...Logistic,
137
133
  ...Message,
138
134
  ...MultipleUsers,
139
135
  ...MultipleUsersStacked,
@@ -72,6 +72,7 @@ const Button = (props: ButtonPropTypes) => {
72
72
  const {
73
73
  children,
74
74
  className,
75
+ disabled,
75
76
  icon = null,
76
77
  id,
77
78
  loading = false,
@@ -120,6 +121,7 @@ const Button = (props: ButtonPropTypes) => {
120
121
  <button
121
122
  {...buttonAria}
122
123
  className={css}
124
+ disabled={disabled}
123
125
  id={id}
124
126
  onClick={onClick}
125
127
  type={htmlType}
@@ -18,6 +18,9 @@ module Playbook
18
18
  prop :value
19
19
  prop :name
20
20
 
21
+ prop :required, type: Playbook::Props::Boolean,
22
+ default: false
23
+
21
24
  def checked_html
22
25
  checked ? "checked='true'" : nil
23
26
  end
@@ -1,12 +1,22 @@
1
- <%= content_tag(:div, "",
2
- aria: object.aria,
3
- id: object.id,
4
- data: object.data,
5
- class: object.classname) %>
6
- <% content_for :pb_js do %>
7
- <%= javascript_tag do %>
8
- window.addEventListener('DOMContentLoaded', function() {
9
- new pbChart('.selector', <%= object.chart_options %>)
10
- })
1
+ <div id="wrapper-circle-chart-<%= object.id %>">
2
+ <%= content_tag(:div, "",
3
+ aria: object.aria,
4
+ id: object.id,
5
+ data: object.data,
6
+ class: object.classname) do %>
7
+ <% content_for :pb_js do %>
8
+ <%= javascript_tag do %>
9
+ window.addEventListener('DOMContentLoaded', function() {
10
+ new pbChart('.selector', <%= object.chart_options %>)
11
+
12
+ });
13
+ <% end %>
14
+ <% end %>
11
15
  <% end %>
12
- <% end %>
16
+
17
+ <% if object.children %>
18
+ <div class="pb_circle_chart_block">
19
+ <%= capture(&object.children) %>
20
+ </div>
21
+ <% end %>
22
+ </div>
@@ -4,3 +4,13 @@
4
4
  .pb_circle_chart {
5
5
 
6
6
  }
7
+
8
+ .pb_circle_chart_block {
9
+ position:absolute;
10
+ display: flex;
11
+ justify-content: center;
12
+ align-items: center;
13
+ z-index: 1;
14
+ text-align: center;
15
+ pointer-events: none;
16
+ }
@@ -29,6 +29,10 @@ module Playbook
29
29
  prop :use_html, type: Playbook::Props::Boolean, default: false
30
30
  prop :legend, type: Playbook::Props::Boolean, default: false
31
31
  prop :title, default: ''
32
+ prop :rounded, type: Playbook::Props::Boolean, default: false
33
+ prop :colors, type: Playbook::Props::Array,
34
+ default: []
35
+
32
36
 
33
37
  def chart_type
34
38
  style == "variablepie" ? "variablepie" : "pie"
@@ -50,12 +54,22 @@ module Playbook
50
54
  when "md"
51
55
  "50%"
52
56
  end
57
+ end
58
+
59
+ def rounded_border_width
60
+ rounded ? 20 : nil
61
+ end
53
62
 
63
+ def rounded_border_color
64
+ rounded == true ? 'null' : nil
54
65
  end
55
66
 
56
67
  def chart_options
57
68
  {
58
69
  id: id,
70
+ colors: colors,
71
+ borderColor: rounded_border_color,
72
+ borderWidth: rounded_border_width,
59
73
  chartData: chart_data_formatted,
60
74
  title: title,
61
75
  type: chart_type,
@@ -0,0 +1,26 @@
1
+ <% data_51 = [{
2
+ name: 'Waiting for Calls',
3
+ value: 41,
4
+ },
5
+ {
6
+ name: 'On Call',
7
+ value: 49,
8
+ },
9
+ {
10
+ name: 'After call',
11
+ value: 10,
12
+ }
13
+ ] %>
14
+
15
+ <br><br>
16
+
17
+ <%= pb_rails("circle_chart", props: {
18
+ chart_data: data_51,
19
+ id: "with-a-block-2",
20
+ rounded: true,
21
+ }) do %>
22
+ <%= pb_rails('title', props: {text: "83", size: 1, tag: 'div'}) %>
23
+ <% end %>
24
+
25
+
26
+
@@ -0,0 +1,20 @@
1
+ <% data_set = [{
2
+ name: 'Waiting for Calls',
3
+ value: 41,
4
+ },
5
+ {
6
+ name: 'On Call',
7
+ value: 49,
8
+ },
9
+ {
10
+ name: 'After call',
11
+ value: 10,
12
+ }
13
+ ] %>
14
+
15
+
16
+ <%= pb_rails("circle_chart", props: {
17
+ chart_data: data_set,
18
+ id: "default-test-colors",
19
+ colors: ['data-6', 'data-4', 'data-2']
20
+ }) %>
@@ -0,0 +1,22 @@
1
+ <% data_rounded = [{
2
+ name: 'Waiting for Calls',
3
+ value: 20,
4
+ },
5
+ {
6
+ name: 'On Call',
7
+ value: 49,
8
+ },
9
+ {
10
+ name: 'After call',
11
+ value: 10,
12
+ }
13
+ ] %>
14
+
15
+
16
+ <%= pb_rails("circle_chart", props: {
17
+ chart_data: data_rounded,
18
+ id: "default-test-rounded",
19
+ inner_size: "lg",
20
+ rounded: true,
21
+
22
+ }) %>
@@ -2,8 +2,12 @@ examples:
2
2
 
3
3
  rails:
4
4
  - circle_chart_default: Default Style
5
+ - circle_chart_rounded: Rounded Corners
6
+ - circle_chart_block: Accepts Any Block
7
+ - circle_chart_colors: Color Overrides
5
8
  - circle_chart_with_labels: Data Labels
6
9
  - circle_chart_with_legend_kit: Legend
7
10
  - circle_chart_with_title: Title
8
- - circle_chart_inner_sizes: Inner Circle Size Options
11
+ - circle_chart_inner_sizes: Inner Circle Size Options
12
+
9
13
 
@@ -28,8 +28,12 @@
28
28
  ]
29
29
  %>
30
30
  <%= pb_rails("form", props: { form_system_options: { scope: :example, method: :get } }) do |form| %>
31
- <%= form.text_field :example_text_field, props: { label: true } %>
32
- <%= form.collection_select :example_collection_select, example_collection, :value, :name, props: { label: true } %>
31
+ <%# <%= form.text_field :example_text_field, props: { label: true } %>
32
+ <%# <%= form.collection_select :example_collection_select, example_collection, :value, :name, props: { label: true } %>
33
+ <%= pb_rails("caption", props: { text: "Status", margin_bottom: "sm" }) %>
34
+ <%= form.check_box :example_checkbox, props: { text: "Delivered", margin_right: "md" } %>
35
+ <%= form.check_box :example_checkbox, props: { text: "Unsubscribed", margin_right: "md" } %>
36
+ <%= form.check_box :example_checkbox, props: { text: "Failed", margin_right: "md" } %>
33
37
 
34
38
  <%= form.actions do |action| %>
35
39
  <%= action.submit props: { text: "Apply", data: { disable_with: "<i class='far fa-spinner fa-spin mr-3'></i>Searching...".html_safe },}%>
@@ -24,6 +24,7 @@
24
24
  <%= form.text_area :example_text_area, props: { label: true } %>
25
25
  <%= form.select :example_select, [ ["Yes", 1], ["No", 2] ], props: { label: true } %>
26
26
  <%= form.collection_select :example_collection_select, example_collection, :value, :name, props: { label: true } %>
27
+ <%= form.check_box :example_checkbox, data: { field1: "value1", field2: "value2" }, props: { text: "Example Checkbox", label: true, value: "test-val" } %>
27
28
 
28
29
  <%= form.actions do |action| %>
29
30
  <%= action.submit %>
@@ -27,6 +27,7 @@
27
27
  <%= form.text_area :example_text_area, props: { label: true, required: true } %>
28
28
  <%= form.select :example_select, [ ["Yes", 1], ["No", 2] ], props: { label: true, blank_selection: "Select One...", required: true } %>
29
29
  <%= form.collection_select :example_collection_select, example_collection, :value, :name, props: { label: true, blank_selection: "Select One...", required: true } %>
30
+ <%= form.check_box :example_checkbox, props: { text: "Example Checkbox", label: true, required: true } %>
30
31
 
31
32
  <%= form.actions do |action| %>
32
33
  <%= action.submit %>
@@ -13,7 +13,8 @@
13
13
  :example_url_field,
14
14
  :example_text_area,
15
15
  :example_select_field,
16
- :example_collection_select_field
16
+ :example_collection_select_field,
17
+ :example_checkbox_field
17
18
 
18
19
 
19
20
  def self.model_name
@@ -49,6 +50,7 @@
49
50
  <%= form.input :example_text_area, as: :text %>
50
51
  <%= form.select :example_select_field, [["Yes", 1], ["No", 2]], props: { label: true } %>
51
52
  <%= form.collection_select :example_collection_select_field, example_collection, :value, :name, props: { label: true } %>
53
+ <%= form.check_box :example_checkbox_field, props: { text: "Example Checkbox", label: true } %>
52
54
 
53
55
  <%= form.actions do |action| %>
54
56
  <%= action.submit %>
@@ -13,7 +13,8 @@
13
13
  :example_url_field,
14
14
  :example_text_area,
15
15
  :example_select_field,
16
- :example_collection_select_field
16
+ :example_collection_select_field,
17
+ :example_checkbox_field
17
18
 
18
19
 
19
20
  def self.model_name
@@ -49,6 +50,7 @@
49
50
  <%= form.input :example_text_area, {as: :text, input_html: {props: {required: true}}} %>
50
51
  <%= form.select :example_select_field, [["Yes", 1], ["No", 2]], props: { required: true, blank_selection: "Select One...", label: true } %>
51
52
  <%= form.collection_select :example_collection_select_field, example_collection, :value, :name, props: { required: true, blank_selection: "Select One...", label: true } %>
53
+ <%= form.check_box :example_checkbox_field, props: { text: "Example Checkbox", label: true, required: true } %>
52
54
 
53
55
  <%= form.actions do |action| %>
54
56
  <%= action.submit %>
@@ -14,9 +14,11 @@ module Playbook
14
14
  prepend(FormFieldBuilder.new(:password_field, kit_name: "text_input"))
15
15
  prepend(FormFieldBuilder.new(:url_field, kit_name: "text_input"))
16
16
  prepend(FormFieldBuilder.new(:text_area, kit_name: "textarea"))
17
+ # prepend(FormFieldBuilder.new(:check_box, kit_name: "checkbox"))
17
18
  prepend(TypeaheadField)
18
19
  prepend(SelectField)
19
20
  prepend(CollectionSelectField)
21
+ prepend(CheckboxField)
20
22
 
21
23
  def actions(&block)
22
24
  ActionArea.new(self).wrapper(&block)
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbForm
5
+ module FormBuilder
6
+ module CheckboxField
7
+ def check_box(name, data: {}, props: {})
8
+ value = props[:value] ||= 1
9
+ input = super(name, { required: props[:required], data: data }, value)
10
+ label_text = name.to_s.gsub("_", " ")
11
+
12
+ if props[:label]
13
+ @template.pb_rails("caption", props: { text: label_text, margin_bottom: "xs" }) +
14
+ @template.pb_rails("checkbox", props: props) do
15
+ input
16
+ end
17
+ else
18
+ @template.pb_rails("checkbox", props: props) do
19
+ input
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -12,6 +12,7 @@ module Playbook
12
12
  options[:skip_default_ids] = false unless options.key?(:skip_default_ids)
13
13
  options[:required] = true if props[:required]
14
14
  options[:placeholder] = props[:placeholder] || ""
15
+ options[:value] = props[:value]
15
16
 
16
17
  if props.key?(:validation)
17
18
  validation = props[:validation]
@@ -3,4 +3,5 @@
3
3
  data: object.data.merge(src: object.url),
4
4
  class: object.classname,
5
5
  aria: object.aria,
6
- alt: object.alt) %>
6
+ src: object.url,
7
+ alt: object.alt) %>
@@ -2,21 +2,44 @@
2
2
 
3
3
  import React from 'react'
4
4
  import classnames from 'classnames'
5
+ import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
5
6
  import { spacing } from '../utilities/spacing.js'
6
7
 
7
8
  type ImageProps = {
8
- url: string,
9
- alt?: string,
9
+ alt?: String,
10
+ aria?: object,
11
+ className?: String,
12
+ data?: object,
13
+ id?: String,
14
+ url: String,
10
15
  }
11
16
 
12
17
  const Image = (props: ImageProps) => {
13
- const { alt = '', url = '' } = props
18
+ const {
19
+ alt = '',
20
+ aria = {},
21
+ className,
22
+ data = {},
23
+ id,
24
+ url = '',
25
+ } = props
26
+
27
+ const ariaProps = buildAriaProps(aria)
28
+ const classes = classnames(buildCss('pb_image lazyload blur_up'), className, spacing(props))
29
+ const dataProps = buildDataProps(data)
30
+
14
31
  return (
15
- <img
16
- alt={alt}
17
- className={classnames('pb_image_kit lazyload blur_up', spacing(props))}
18
- data-src={url}
19
- />
32
+ <div>
33
+ <img
34
+ {...ariaProps}
35
+ {...dataProps}
36
+ alt={alt}
37
+ className={classes}
38
+ data-src={url}
39
+ id={id}
40
+ src={url}
41
+ />
42
+ </div>
20
43
  )
21
44
  }
22
45