polaris_view_components 0.7.0 → 0.9.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.
Files changed (149) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/icons/polaris/AnalyticsMinor.svg +1 -0
  3. data/app/assets/icons/polaris/AppsMinor.svg +1 -0
  4. data/app/assets/icons/polaris/BlockMinor.svg +1 -0
  5. data/app/assets/icons/polaris/ButtonMinor.svg +1 -0
  6. data/app/assets/icons/polaris/CaretDownMinor.svg +1 -1
  7. data/app/assets/icons/polaris/CaretUpMinor.svg +1 -1
  8. data/app/assets/icons/polaris/CircleTickMinor.svg +1 -0
  9. data/app/assets/icons/polaris/Columns3Minor.svg +1 -0
  10. data/app/assets/icons/polaris/CustomersMinor.svg +1 -1
  11. data/app/assets/icons/polaris/DiscountsMinor.svg +1 -0
  12. data/app/assets/icons/polaris/DropdownMinor.svg +1 -1
  13. data/app/assets/icons/polaris/FinancesMajor.svg +1 -0
  14. data/app/assets/icons/polaris/FinancesMinor.svg +1 -0
  15. data/app/assets/icons/polaris/HomeMinor.svg +1 -0
  16. data/app/assets/icons/polaris/MarketingMinor.svg +1 -0
  17. data/app/assets/icons/polaris/OnlineStoreMinor.svg +1 -0
  18. data/app/assets/icons/polaris/OrdersMinor.svg +1 -0
  19. data/app/assets/icons/polaris/ProductsMinor.svg +1 -0
  20. data/app/assets/icons/polaris/QuestionMarkInverseMajor.svg +1 -0
  21. data/app/assets/icons/polaris/QuestionMarkInverseMinor.svg +1 -0
  22. data/app/assets/icons/polaris/SelectMinor.svg +1 -1
  23. data/app/assets/icons/polaris/TitleMinor.svg +1 -0
  24. data/app/assets/icons/polaris/WandMinor.svg +1 -0
  25. data/app/assets/javascripts/polaris_view_components/autocomplete_controller.js +32 -15
  26. data/app/assets/javascripts/polaris_view_components/collapsible_controller.js +19 -0
  27. data/app/assets/javascripts/polaris_view_components/dropzone_controller.js +495 -0
  28. data/app/assets/javascripts/polaris_view_components/index.js +4 -0
  29. data/app/assets/javascripts/polaris_view_components/polaris_controller.js +4 -0
  30. data/app/assets/javascripts/polaris_view_components/popover_controller.js +9 -2
  31. data/app/assets/javascripts/polaris_view_components/toast_controller.js +13 -2
  32. data/app/assets/javascripts/polaris_view_components/utils.js +23 -0
  33. data/app/assets/javascripts/polaris_view_components.js +560 -65
  34. data/app/assets/stylesheets/polaris_view_components/custom.css +38 -6
  35. data/app/assets/stylesheets/polaris_view_components.css +2107 -2021
  36. data/app/assets/stylesheets/polaris_view_components.postcss.css +1 -1
  37. data/app/components/polaris/action_list/item_component.rb +1 -1
  38. data/app/components/polaris/action_list/section_component.rb +1 -1
  39. data/app/components/polaris/action_list_component.rb +1 -1
  40. data/app/components/polaris/autocomplete/action_component.rb +1 -1
  41. data/app/components/polaris/autocomplete/option_component.rb +1 -1
  42. data/app/components/polaris/autocomplete/section_component.rb +1 -1
  43. data/app/components/polaris/autocomplete_component.rb +9 -2
  44. data/app/components/polaris/avatar_component.rb +1 -1
  45. data/app/components/polaris/badge_component.rb +1 -1
  46. data/app/components/polaris/banner_component.rb +2 -2
  47. data/app/components/polaris/base_button.rb +1 -1
  48. data/app/components/polaris/base_checkbox.rb +1 -1
  49. data/app/components/polaris/base_component.rb +1 -1
  50. data/app/components/polaris/base_radio_button.rb +1 -1
  51. data/app/components/polaris/button_group_component.rb +3 -3
  52. data/app/components/polaris/callout_card_component.rb +1 -1
  53. data/app/components/polaris/caption_component.rb +1 -1
  54. data/app/components/polaris/card/header_component.rb +1 -1
  55. data/app/components/polaris/card/section_component.rb +2 -2
  56. data/app/components/polaris/card_component.rb +1 -1
  57. data/app/components/polaris/checkbox_component.rb +1 -1
  58. data/app/components/polaris/choice_component.rb +1 -1
  59. data/app/components/polaris/choice_list_component.rb +1 -1
  60. data/app/components/polaris/collapsible_component.rb +37 -0
  61. data/app/components/polaris/component.rb +6 -1
  62. data/app/components/polaris/data_table/cell_component.rb +1 -1
  63. data/app/components/polaris/data_table/column_component.rb +1 -1
  64. data/app/components/polaris/data_table_component.rb +1 -1
  65. data/app/components/polaris/description_list_component.rb +2 -2
  66. data/app/components/polaris/display_text_component.rb +1 -1
  67. data/app/components/polaris/dropzone_component.html.erb +156 -0
  68. data/app/components/polaris/dropzone_component.rb +150 -0
  69. data/app/components/polaris/empty_state_component.rb +1 -1
  70. data/app/components/polaris/exception_list/item_component.rb +1 -1
  71. data/app/components/polaris/exception_list_component.rb +1 -1
  72. data/app/components/polaris/filters_component.rb +3 -3
  73. data/app/components/polaris/footer_help_component.rb +1 -1
  74. data/app/components/polaris/form_layout/group_component.rb +2 -2
  75. data/app/components/polaris/form_layout/item_component.rb +1 -1
  76. data/app/components/polaris/form_layout_component.rb +1 -1
  77. data/app/components/polaris/frame/save_bar_component.rb +1 -1
  78. data/app/components/polaris/frame/top_bar_component.rb +1 -1
  79. data/app/components/polaris/frame_component.rb +1 -1
  80. data/app/components/polaris/heading_component.rb +1 -1
  81. data/app/components/polaris/headless_button.rb +1 -1
  82. data/app/components/polaris/icon_component.rb +1 -1
  83. data/app/components/polaris/index_table/cell_component.rb +1 -1
  84. data/app/components/polaris/index_table/column_component.rb +1 -1
  85. data/app/components/polaris/index_table_component.rb +1 -1
  86. data/app/components/polaris/inline_error_component.rb +1 -1
  87. data/app/components/polaris/keyboard_key_component.rb +20 -0
  88. data/app/components/polaris/label_component.rb +1 -1
  89. data/app/components/polaris/labelled_component.rb +1 -1
  90. data/app/components/polaris/layout/annotated_section.rb +1 -1
  91. data/app/components/polaris/layout/section.rb +1 -1
  92. data/app/components/polaris/layout_component.rb +1 -1
  93. data/app/components/polaris/link_component.rb +1 -1
  94. data/app/components/polaris/list_component.rb +2 -2
  95. data/app/components/polaris/modal/section_component.rb +1 -1
  96. data/app/components/polaris/modal_component.rb +1 -1
  97. data/app/components/polaris/navigation/item_component.rb +2 -2
  98. data/app/components/polaris/navigation/section_component.rb +2 -2
  99. data/app/components/polaris/navigation_component.rb +1 -1
  100. data/app/components/polaris/option_list/checkbox_component.rb +1 -1
  101. data/app/components/polaris/option_list/option_component.rb +1 -1
  102. data/app/components/polaris/option_list/radio_button_component.rb +1 -1
  103. data/app/components/polaris/option_list/section_component.rb +1 -1
  104. data/app/components/polaris/option_list_component.rb +1 -1
  105. data/app/components/polaris/page_actions_component.rb +1 -1
  106. data/app/components/polaris/page_component.rb +1 -1
  107. data/app/components/polaris/pagination_component.rb +1 -1
  108. data/app/components/polaris/popover/pane_component.rb +1 -1
  109. data/app/components/polaris/popover/section_component.rb +1 -1
  110. data/app/components/polaris/popover_component.rb +10 -4
  111. data/app/components/polaris/progress_bar_component.rb +1 -1
  112. data/app/components/polaris/radio_button_component.rb +1 -1
  113. data/app/components/polaris/resource_item_component.rb +4 -2
  114. data/app/components/polaris/resource_list_component.rb +1 -1
  115. data/app/components/polaris/scrollable_component.rb +1 -1
  116. data/app/components/polaris/select_component.rb +1 -1
  117. data/app/components/polaris/setting_toggle_component.rb +1 -1
  118. data/app/components/polaris/shopify_navigation_component.rb +2 -2
  119. data/app/components/polaris/skeleton_body_text_component.rb +1 -1
  120. data/app/components/polaris/skeleton_display_text_component.rb +32 -0
  121. data/app/components/polaris/skeleton_thumbnail_component.rb +31 -0
  122. data/app/components/polaris/spacer_component.rb +1 -1
  123. data/app/components/polaris/spinner_component.rb +1 -1
  124. data/app/components/polaris/stack/item_component.rb +15 -0
  125. data/app/components/polaris/stack_component.rb +2 -18
  126. data/app/components/polaris/subheading_component.rb +1 -1
  127. data/app/components/polaris/tabs/tab_component.rb +1 -1
  128. data/app/components/polaris/tabs_component.rb +1 -1
  129. data/app/components/polaris/tag_component.rb +3 -2
  130. data/app/components/polaris/text_container_component.rb +1 -1
  131. data/app/components/polaris/text_field_component.rb +2 -2
  132. data/app/components/polaris/text_style_component.rb +1 -1
  133. data/app/components/polaris/thumbnail_component.rb +1 -1
  134. data/app/components/polaris/toast_component.rb +1 -1
  135. data/app/components/polaris/top_bar/user_menu_component.rb +1 -1
  136. data/app/components/polaris/visually_hidden_component.rb +1 -1
  137. data/app/helpers/polaris/form_builder.rb +14 -5
  138. data/app/helpers/polaris/view_helper.rb +6 -1
  139. data/config/locales/en.yml +6 -0
  140. data/lib/polaris/view_components/engine.rb +5 -1
  141. data/lib/polaris/view_components/version.rb +1 -1
  142. metadata +31 -21
  143. data/app/components/polaris/application_component.rb +0 -35
  144. data/app/components/polaris/dropzone/component.html.erb +0 -72
  145. data/app/components/polaris/dropzone/component.rb +0 -128
  146. data/app/components/polaris/dropzone/controller.js +0 -226
  147. data/app/components/polaris/dropzone/utils.js +0 -57
  148. data/app/components/polaris/new_component.rb +0 -10
  149. data/app/helpers/polaris/conditional_helper.rb +0 -11
@@ -1,4 +1,4 @@
1
- @import "@shopify/polaris/dist/styles.css";
1
+ @import "@shopify/polaris/build/esm/styles.css";
2
2
  @import "./polaris_view_components/shopify_navigation.css";
3
3
  @import "./polaris_view_components/spacer_component.css";
4
4
  @import "./polaris_view_components/custom.css";
@@ -1,4 +1,4 @@
1
- class Polaris::ActionList::ItemComponent < Polaris::NewComponent
1
+ class Polaris::ActionList::ItemComponent < Polaris::Component
2
2
  renders_one :prefix
3
3
  renders_one :suffix
4
4
 
@@ -1,4 +1,4 @@
1
- class Polaris::ActionList::SectionComponent < Polaris::NewComponent
1
+ class Polaris::ActionList::SectionComponent < Polaris::Component
2
2
  renders_many :items, Polaris::ActionList::ItemComponent
3
3
 
4
4
  def initialize(position: 1, title: nil, **system_arguments)
@@ -1,5 +1,5 @@
1
1
  module Polaris
2
- class ActionListComponent < Polaris::NewComponent
2
+ class ActionListComponent < Polaris::Component
3
3
  renders_many :items, Polaris::ActionList::ItemComponent
4
4
  renders_many :sections, ->(**system_arguments) do
5
5
  @counter += 1
@@ -1,5 +1,5 @@
1
1
  module Polaris
2
- class Autocomplete::ActionComponent < NewComponent
2
+ class Autocomplete::ActionComponent < Component
3
3
  def initialize(**system_arguments)
4
4
  @system_arguments = system_arguments
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Polaris
2
- class Autocomplete::OptionComponent < NewComponent
2
+ class Autocomplete::OptionComponent < Component
3
3
  def initialize(
4
4
  label:,
5
5
  multiple: false,
@@ -1,5 +1,5 @@
1
1
  module Polaris
2
- class Autocomplete::SectionComponent < NewComponent
2
+ class Autocomplete::SectionComponent < Component
3
3
  renders_many :options, ->(**system_arguments) do
4
4
  Autocomplete::OptionComponent.new(multiple: @multiple, **system_arguments)
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Polaris
2
- class AutocompleteComponent < NewComponent
2
+ class AutocompleteComponent < Component
3
3
  renders_one :text_field, ->(**system_arguments) do
4
4
  system_arguments[:data] ||= {}
5
5
  prepend_option(system_arguments[:data], :action, %w[
@@ -21,9 +21,15 @@ module Polaris
21
21
  end
22
22
  renders_one :empty_state
23
23
 
24
- def initialize(multiple: false, url: nil, **system_arguments)
24
+ def initialize(
25
+ multiple: false,
26
+ url: nil,
27
+ selected: [],
28
+ **system_arguments
29
+ )
25
30
  @multiple = multiple
26
31
  @url = url
32
+ @selected = selected
27
33
  @system_arguments = system_arguments
28
34
  end
29
35
 
@@ -35,6 +41,7 @@ module Polaris
35
41
  if @url.present?
36
42
  opts[:data][:polaris_autocomplete_url_value] = @url
37
43
  end
44
+ opts[:data][:polaris_autocomplete_selected_value] = @selected
38
45
  end
39
46
  end
40
47
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polaris
4
- class AvatarComponent < Polaris::NewComponent
4
+ class AvatarComponent < Polaris::Component
5
5
  SIZE_DEFAULT = :medium
6
6
  SIZE_MAPPINGS = {
7
7
  small: "Polaris-Avatar--sizeSmall",
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polaris
4
- class BadgeComponent < Polaris::NewComponent
4
+ class BadgeComponent < Polaris::Component
5
5
  PROGRESS_DEFAULT = :default
6
6
  PROGRESS_MAPPINGS = {
7
7
  PROGRESS_DEFAULT => "",
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polaris
4
- class BannerComponent < Polaris::NewComponent
4
+ class BannerComponent < Polaris::Component
5
5
  STATUS_DEFAULT = :default
6
6
  STATUS_MAPPINGS = {
7
7
  STATUS_DEFAULT => "",
@@ -72,7 +72,7 @@ module Polaris
72
72
  end
73
73
  end
74
74
 
75
- class SecondaryAction < Polaris::NewComponent
75
+ class SecondaryAction < Polaris::Component
76
76
  def initialize(**system_arguments)
77
77
  @system_arguments = system_arguments
78
78
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polaris
4
- class BaseButton < Polaris::NewComponent
4
+ class BaseButton < Polaris::Component
5
5
  def initialize(
6
6
  url: nil,
7
7
  external: false,
@@ -1,5 +1,5 @@
1
1
  module Polaris
2
- class BaseCheckbox < Polaris::NewComponent
2
+ class BaseCheckbox < Polaris::Component
3
3
  def initialize(
4
4
  form: nil,
5
5
  attribute: nil,
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polaris
4
- class BaseComponent < Polaris::NewComponent
4
+ class BaseComponent < Polaris::Component
5
5
  def initialize(tag:, classes: nil, **system_arguments)
6
6
  @tag = tag
7
7
  @system_arguments = system_arguments
@@ -1,5 +1,5 @@
1
1
  module Polaris
2
- class BaseRadioButton < Polaris::NewComponent
2
+ class BaseRadioButton < Polaris::Component
3
3
  def initialize(
4
4
  form: nil,
5
5
  attribute: nil,
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polaris
4
- class ButtonGroupComponent < Polaris::NewComponent
4
+ class ButtonGroupComponent < Polaris::Component
5
5
  SPACING_DEFAULT = :default
6
6
  SPACING_MAPPINGS = {
7
7
  SPACING_DEFAULT => "",
@@ -63,7 +63,7 @@ module Polaris
63
63
  all_items.sort_by(&:position)
64
64
  end
65
65
 
66
- class ButtonGroupItemButtonComponent < Polaris::NewComponent
66
+ class ButtonGroupItemButtonComponent < Polaris::Component
67
67
  attr_reader :position
68
68
 
69
69
  def initialize(position:, **system_arguments)
@@ -87,7 +87,7 @@ module Polaris
87
87
  end
88
88
  end
89
89
 
90
- class ButtonGroupItemComponent < Polaris::NewComponent
90
+ class ButtonGroupItemComponent < Polaris::Component
91
91
  attr_reader :position
92
92
 
93
93
  def initialize(position:, **system_arguments)
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polaris
4
- class CalloutCardComponent < Polaris::NewComponent
4
+ class CalloutCardComponent < Polaris::Component
5
5
  renders_one :primary_action, Polaris::ButtonComponent
6
6
  renders_one :secondary_action, ->(plain: true, **system_arguments) do
7
7
  Polaris::ButtonComponent.new(plain: plain, **system_arguments)
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polaris
4
- class CaptionComponent < Polaris::NewComponent
4
+ class CaptionComponent < Polaris::Component
5
5
  def initialize(**system_arguments)
6
6
  @system_arguments = system_arguments
7
7
  @system_arguments[:tag] = "p"
@@ -1,4 +1,4 @@
1
- class Polaris::Card::HeaderComponent < Polaris::NewComponent
1
+ class Polaris::Card::HeaderComponent < Polaris::Component
2
2
  def initialize(
3
3
  title: "",
4
4
  actions: [],
@@ -1,4 +1,4 @@
1
- class Polaris::Card::SectionComponent < Polaris::NewComponent
1
+ class Polaris::Card::SectionComponent < Polaris::Component
2
2
  renders_many :subsections, "Polaris::Card::SubsectionComponent"
3
3
 
4
4
  def initialize(
@@ -28,7 +28,7 @@ class Polaris::Card::SectionComponent < Polaris::NewComponent
28
28
  @actions = actions.map { |a| a.merge(plain: true) }
29
29
  end
30
30
 
31
- class Polaris::Card::SubsectionComponent < Polaris::NewComponent
31
+ class Polaris::Card::SubsectionComponent < Polaris::Component
32
32
  def initialize(**system_arguments)
33
33
  @system_arguments = system_arguments
34
34
  @system_arguments[:tag] = :div
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polaris
4
- class CardComponent < Polaris::NewComponent
4
+ class CardComponent < Polaris::Component
5
5
  FOOTER_ACTION_ALIGNMENT_DEFAULT = :right
6
6
  FOOTER_ACTION_ALIGNMENT_MAPPINGS = {
7
7
  FOOTER_ACTION_ALIGNMENT_DEFAULT => "",
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polaris
4
- class CheckboxComponent < Polaris::NewComponent
4
+ class CheckboxComponent < Polaris::Component
5
5
  include ActiveModel::Validations
6
6
 
7
7
  attr_reader :checked
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polaris
4
- class ChoiceComponent < Polaris::NewComponent
4
+ class ChoiceComponent < Polaris::Component
5
5
  def initialize(
6
6
  label:,
7
7
  label_hidden:,
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polaris
4
- class ChoiceListComponent < Polaris::NewComponent
4
+ class ChoiceListComponent < Polaris::Component
5
5
  renders_many :checkboxes, ->(value:, disabled: false, **system_arguments) do
6
6
  Polaris::CheckboxComponent.new(
7
7
  form: @form,
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Polaris
4
+ class CollapsibleComponent < Polaris::Component
5
+ def initialize(
6
+ expand_on_print: false,
7
+ open: false,
8
+ **system_arguments
9
+ )
10
+ @expand_on_print = expand_on_print
11
+ @open = open
12
+ @system_arguments = system_arguments
13
+ end
14
+
15
+ def system_arguments
16
+ @system_arguments.tap do |opts|
17
+ opts[:tag] = "div"
18
+ opts[:data] ||= {}
19
+ prepend_option(opts[:data], :controller, "polaris-collapsible")
20
+ opts[:classes] = class_names(
21
+ @system_arguments[:classes],
22
+ "Polaris-Collapsible",
23
+ "Polaris-Collapsible--isFullyClosed": !@open,
24
+ "Polaris-Collapsible--expandOnPrint": @expand_on_print
25
+ )
26
+ opts[:style] = class_names(
27
+ @open ? "max-height: none;" : "max-height: 0px;",
28
+ @open ? "overflow: visible;" : "overflow: hidden;"
29
+ )
30
+ end
31
+ end
32
+
33
+ def call
34
+ render(Polaris::BaseComponent.new(**system_arguments)) { content }
35
+ end
36
+ end
37
+ end
@@ -1,5 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Polaris
2
- class Component < ApplicationComponent
4
+ class Component < ViewComponent::Base
5
+ include ClassNameHelper
6
+ include FetchOrFallbackHelper
7
+ include OptionHelper
3
8
  include ViewHelper
4
9
  end
5
10
  end
@@ -1,4 +1,4 @@
1
- class Polaris::DataTable::CellComponent < Polaris::NewComponent
1
+ class Polaris::DataTable::CellComponent < Polaris::Component
2
2
  ALIGNMENT_DEFAULT = :top
3
3
  ALIGNMENT_MAPPINGS = {
4
4
  top: "Polaris-DataTable__Cell--verticalAlignTop",
@@ -1,4 +1,4 @@
1
- class Polaris::DataTable::ColumnComponent < Polaris::NewComponent
1
+ class Polaris::DataTable::ColumnComponent < Polaris::Component
2
2
  SORT_DEFAULT = false
3
3
  SORT_OPTIONS = [false, :asc, :desc]
4
4
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polaris
4
- class DataTableComponent < Polaris::NewComponent
4
+ class DataTableComponent < Polaris::Component
5
5
  ALIGNMENT_DEFAULT = :top
6
6
  ALIGNMENT_OPTIONS = [:top, :bottom, :middle, :baseline]
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polaris
4
- class DescriptionListComponent < Polaris::NewComponent
4
+ class DescriptionListComponent < Polaris::Component
5
5
  SPACING_DEFAULT = :loose
6
6
  SPACING_MAPPINGS = {
7
7
  SPACING_DEFAULT => "",
@@ -25,7 +25,7 @@ module Polaris
25
25
  items.any?
26
26
  end
27
27
 
28
- class DescriptionListItemComponent < Polaris::NewComponent
28
+ class DescriptionListItemComponent < Polaris::Component
29
29
  def initialize(term:)
30
30
  @term = term
31
31
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polaris
4
- class DisplayTextComponent < Polaris::NewComponent
4
+ class DisplayTextComponent < Polaris::Component
5
5
  ELEMENT_DEFAULT = :p
6
6
  ELEMENT_OPTIONS = %i[p h1 h2 h3 h4 h5 h6]
7
7
 
@@ -0,0 +1,156 @@
1
+ <%= render Polaris::LabelledComponent.new(**wrapper_arguments) do %>
2
+ <%= render Polaris::BaseComponent.new(**system_arguments) do %>
3
+ <div
4
+ class="Polaris-DropZone__Overlay Polaris-VisuallyHidden"
5
+ data-polaris-dropzone-target="overlay"
6
+ >
7
+ <%= render Polaris::StackComponent.new(vertical: true, spacing: :tight) do |stack| %>
8
+ <% stack.item do %>
9
+ <%= render Polaris::DisplayTextComponent.new(size: :small) do %>
10
+ <%= @overlay_text %>
11
+ <% end %>
12
+ <% end %>
13
+ <% end %>
14
+ </div>
15
+
16
+ <div
17
+ class="Polaris-DropZone__Overlay Polaris-VisuallyHidden"
18
+ data-polaris-dropzone-target="errorOverlay"
19
+ >
20
+ <%= render Polaris::StackComponent.new(vertical: true, spacing: :tight) do |stack| %>
21
+ <% stack.item do %>
22
+ <%= render Polaris::DisplayTextComponent.new(size: :small) do %>
23
+ <%= @error_overlay_text %>
24
+ <% end %>
25
+ <% end %>
26
+ <% end %>
27
+ </div>
28
+
29
+ <div class="Polaris-DropZone__Container" data-polaris-dropzone-target="container">
30
+ <%= render Polaris::BaseComponent.new(**file_upload_arguments) do %>
31
+ <%= render Polaris::StackComponent.new(vertical: true, spacing: :tight) do |stack| %>
32
+ <% unless @size == :medium %>
33
+ <% stack.item do %>
34
+ <img width="<%= @size == :small ? 20 : 40 %>" src="data:image/svg+xml,%3csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M20 10a10 10 0 11-20 0 10 10 0 0120 0zM5.3 8.3l4-4a1 1 0 011.4 0l4 4a1 1 0 01-1.4 1.4L11 7.4V15a1 1 0 11-2 0V7.4L6.7 9.7a1 1 0 01-1.4-1.4z' fill='%235C5F62'/%3e%3c/svg%3e" alt="">
35
+ <% end %>
36
+ <% end %>
37
+
38
+ <% unless @size == :small %>
39
+ <% stack.item do %>
40
+ <% if @size == :medium %>
41
+ <div class="Polaris-DropZone-FileUpload__ActionTitle">
42
+ <%= @file_upload_button %>
43
+ </div>
44
+ <% else %>
45
+ <div class="Polaris-DropZone-FileUpload__Button">
46
+ <%= @file_upload_button %>
47
+ </div>
48
+ <% end %>
49
+ <% end %>
50
+ <% end %>
51
+
52
+ <% unless @size == :small %>
53
+ <% stack.item do %>
54
+ <% help_text = capture do %>
55
+ <%= render Polaris::TextStyleComponent.new(variation: :subdued) do %>
56
+ <%= @file_upload_help %>
57
+ <% end %>
58
+ <% end %>
59
+
60
+ <% if @size == :medium %>
61
+ <%= polaris_caption { help_text } %>
62
+ <% else %>
63
+ <%= help_text %>
64
+ <% end %>
65
+ <% end %>
66
+ <% end %>
67
+ <% end %>
68
+ <% end %>
69
+
70
+ <div class="Polaris-DropZone__Loader Polaris--hidden" data-polaris-dropzone-target="loader">
71
+ <%= polaris_spinner %>
72
+ </div>
73
+ </div>
74
+
75
+ <%= render Polaris::VisuallyHiddenComponent.new do %>
76
+ <% if @form.present? && @attribute.present? %>
77
+ <%= @form.file_field(@attribute, **input_options) %>
78
+ <% else %>
79
+ <%= file_field_tag(@name, **input_options) %>
80
+ <% end %>
81
+ <% end %>
82
+
83
+ <template data-polaris-dropzone-target="previewTemplate">
84
+ <%= tag.div(
85
+ data: { polaris_dropzone_target: "preview" },
86
+ class: [
87
+ "Polaris-DropZone__Preview",
88
+ "Polaris-DropZone__Preview--singleFile": !@multiple,
89
+ "Polaris-DropZone__Preview--sizeSmall": @size == :small
90
+ ]
91
+ ) do %>
92
+ <% if @size.in?(%i[small]) %>
93
+ <span class="target"></span>
94
+ <% else %>
95
+ <%= polaris_stack(vertical: true) do %>
96
+ <span class="target"></span>
97
+ <% end %>
98
+ <% end %>
99
+ <% end %>
100
+ </template>
101
+
102
+ <template data-polaris-dropzone-target="itemTemplate">
103
+ <% if @size.in?(%i[small]) %>
104
+ <%= polaris_thumbnail(
105
+ size: :small,
106
+ data: { target: "icon" },
107
+ style: "border: none; background: none;"
108
+ ) do |thumbnail| %>
109
+ <%= thumbnail.icon(name: "TimelineAttachmentMajor") %>
110
+ <% end %>
111
+ <%= polaris_thumbnail(source: "#", size: :small, data: { target: "thumbnail" }) %>
112
+ <% else %>
113
+ <%= polaris_stack_item do %>
114
+ <%= polaris_stack(
115
+ alignment: :center,
116
+ vertical: !@multiple,
117
+ spacing: @multiple ? :default : :tight,
118
+ ) do |stack| %>
119
+ <% stack.item do %>
120
+ <%= polaris_thumbnail(
121
+ size: :small,
122
+ data: { target: "icon" },
123
+ style: "border: none; background: none;"
124
+ ) do |thumbnail| %>
125
+ <%= thumbnail.icon(name: "TimelineAttachmentMajor") %>
126
+ <% end %>
127
+ <%= polaris_thumbnail(source: "#", size: :small, data: { target: "thumbnail" }) %>
128
+ <% end %>
129
+
130
+ <% stack.item(fill: true) do %>
131
+ <div data-target="content">
132
+ <%= polaris_caption do %>
133
+ <%= polaris_text_subdued(data: { target: "file-size" }) { "SIZE" } %>
134
+ <% end %>
135
+ </div>
136
+
137
+ <%= polaris_progress_bar(
138
+ progress: 0,
139
+ size: :small,
140
+ data: { target: "progress-bar" },
141
+ classes: "Polaris--hidden",
142
+ style: "margin-top: 4px;"
143
+ ) %>
144
+
145
+ <%= polaris_inline_error(
146
+ data: { target: "upload-error" },
147
+ classes: "Polaris--hidden",
148
+ style: "margin-top: 4px;"
149
+ ) { @upload_error_text } %>
150
+ <% end %>
151
+ <% end %>
152
+ <% end %>
153
+ <% end %>
154
+ </template>
155
+ <% end %>
156
+ <% end %>