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,226 +0,0 @@
1
- import { Controller } from "@hotwired/stimulus"
2
-
3
- import { fileAccepted, getDataTransferFiles } from './utils'
4
-
5
- // eslint-disable-next-line import/no-default-export
6
- export default class extends Controller {
7
- static targets = ['container', 'fileUpload', 'input', 'itemTemplate', 'itemsTemplate', 'overlay']
8
- static values = {
9
- accept: String,
10
- allowMultiple: Boolean,
11
- disabled: Boolean,
12
- dropOnPage: Boolean,
13
- focused: Boolean,
14
- }
15
-
16
- _files = []
17
- _acceptedFiles = []
18
- _rejectedFiles = []
19
- _dragging = false
20
- dragTargets = []
21
- filesRendered = false
22
-
23
- onBlur () {
24
- this.focusedValue = false
25
- }
26
-
27
- onChange (e) {
28
- this.stopEvent(e)
29
- if (this.disabled) return
30
-
31
- this.clearFiles()
32
-
33
- const fileList = getDataTransferFiles(e)
34
- const { files, acceptedFiles, rejectedFiles } = this.getValidatedFiles(fileList)
35
- this.dragTargets = []
36
-
37
- this.files = files
38
- this.acceptedFiles = acceptedFiles
39
- this.rejectedFiles = rejectedFiles
40
- }
41
-
42
- onDragOver (e) {
43
- this.stopEvent(e)
44
- if (this.disabled) return
45
- }
46
-
47
- onDragEnter (e) {
48
- this.stopEvent(e)
49
- if (this.disabled) return
50
-
51
- if (e.target && !this.dragTargets.includes(e.target)) {
52
- this.dragTargets.push(e.target)
53
- }
54
-
55
- if (this.dragging) return
56
-
57
- this.dragging = true
58
- }
59
-
60
- onDragLeave (e) {
61
- this.stopEvent(e)
62
- if (this.disabled) return
63
-
64
- this.dragTargets = this.dragTargets.filter(el => {
65
- const compareNode = this.element
66
-
67
- return el !== e.target && compareNode && compareNode.contains(el)
68
- })
69
-
70
- if (this.dragTargets.length > 0) return
71
-
72
- this.dragging = false
73
- }
74
-
75
- onDrop (e) {
76
- this.stopEvent(e)
77
- if (this.disabled) return
78
-
79
- this.dragging = false
80
-
81
- this.onChange(e)
82
- }
83
-
84
- onFocus () {
85
- this.focusedValue = true
86
- }
87
-
88
- onClick () {
89
- if (this.disabledValue) return
90
-
91
- this.open()
92
- }
93
-
94
- open () {
95
- this.inputTarget.click()
96
- }
97
-
98
- focusedValueChanged () {
99
- this.element.classList.toggle('Polaris-DropZone--focused', this.focusedValue)
100
- }
101
-
102
- stopEvent (e) {
103
- e.preventDefault()
104
- e.stopPropagation()
105
- }
106
-
107
- getValidatedFiles (files) {
108
- const acceptedFiles = []
109
- const rejectedFiles = []
110
-
111
- Array.from(files).forEach(file => {
112
- if (!fileAccepted(file, this.acceptValue)) {
113
- return rejectedFiles.push(file)
114
- }
115
-
116
- acceptedFiles.push(file)
117
- })
118
-
119
- if (!this.allowMultipleValue) {
120
- acceptedFiles.splice(1, acceptedFiles.length)
121
- rejectedFiles.push(...acceptedFiles.slice(1))
122
- }
123
-
124
- return { files, acceptedFiles, rejectedFiles }
125
- }
126
-
127
- renderUploadedFiles () {
128
- if (this.files.length === 0) return
129
-
130
- const clone = this.itemsTemplateTarget.content.cloneNode(true)
131
- const filesTarget = clone.querySelector('.target')
132
-
133
- this.files
134
- .map(file => this.renderFile(file))
135
- .forEach(fragment => filesTarget.parentNode.appendChild(fragment))
136
- filesTarget.remove()
137
-
138
- this.containerTarget.prepend(clone)
139
-
140
- this.filesRendered = true
141
- }
142
-
143
- renderFile (file) {
144
- const clone = this.itemTemplateTarget.content.cloneNode(true)
145
- const [image, content, caption] = [
146
- clone.querySelector('img'),
147
- clone.querySelector('.content'),
148
- clone.querySelector('.Polaris-Caption'),
149
- ]
150
- image.alt = file.name
151
- image.src = window.URL.createObjectURL(file)
152
- content.insertAdjacentText('afterbegin', file.name)
153
- caption.textContent = `${file.size} bytes`
154
-
155
- return clone
156
- }
157
-
158
- clearFiles () {
159
- if (!this.filesRendered) return
160
-
161
- this.acceptedFiles = []
162
- this.files = []
163
- this.rejectedFiles = []
164
-
165
- const rendered = this.element.querySelector('[data-rendered]')
166
- if (!rendered) return
167
-
168
- rendered.remove()
169
- this.filesRendered = false
170
- }
171
-
172
- get dropNode () {
173
- return this.dropOnPageValue ? document : this.element
174
- }
175
-
176
- get disabled () {
177
- return this.disabledValue
178
- }
179
-
180
- set disabled (val) {
181
- this.disabledValue = val
182
- }
183
-
184
- get dragging () {
185
- return this._dragging
186
- }
187
-
188
- set dragging (val) {
189
- this._dragging = val
190
-
191
- this.element.classList.toggle('Polaris-DropZone--isDragging', val)
192
- this.overlayTarget.classList.toggle('Polaris-VisuallyHidden', !val)
193
- }
194
-
195
- get files () {
196
- return this._files
197
- }
198
-
199
- set files (val) {
200
- this._files = val
201
-
202
- const hasFiles = val.length > 0
203
-
204
- this.fileUploadTarget.classList.toggle('Polaris-VisuallyHidden', hasFiles)
205
-
206
- if (hasFiles && !this.filesRendered) {
207
- this.renderUploadedFiles()
208
- }
209
- }
210
-
211
- get acceptedFiles () {
212
- return this._acceptedFiles
213
- }
214
-
215
- set acceptedFiles (val) {
216
- this._acceptedFiles = val
217
- }
218
-
219
- get rejectedFiles () {
220
- return this._rejectedFiles
221
- }
222
-
223
- set rejectedFiles (val) {
224
- this._rejectedFiles = val
225
- }
226
- }
@@ -1,57 +0,0 @@
1
- const dragEvents = ['dragover', 'dragenter', 'drop']
2
-
3
- export function fileAccepted (file, accept) {
4
- return file.type === 'application/x-moz-file' || accepts(file, accept)
5
- }
6
-
7
- export function getDataTransferFiles (event) {
8
- if (isDragEvent(event) && event.dataTransfer) {
9
- const dt = event.dataTransfer
10
-
11
- if (dt.files && dt.files.length) {
12
- return Array.from(dt.files)
13
- } else if (dt.items && dt.items.length) {
14
- // Chrome is the only browser that allows to read the file list on drag
15
- // events and uses `items` instead of `files` in this case.
16
- return Array.from(dt.items)
17
- }
18
- } else if (isChangeEvent(event) && event.target.files) {
19
- // Return files from even when a file was selected from an upload dialog
20
- return Array.from(event.target.files)
21
- }
22
-
23
- return []
24
- }
25
-
26
- function accepts (file, acceptedFiles = ['']) {
27
- if (file && acceptedFiles) {
28
- const fileName = file.name || ''
29
- const mimeType = file.type || ''
30
- const baseMimeType = mimeType.replace(/\/.*$/, '')
31
- const acceptedFilesArray = Array.isArray(acceptedFiles)
32
- ? acceptedFiles
33
- : acceptedFiles.split(',')
34
-
35
- return acceptedFilesArray.some((type) => {
36
- const validType = type.trim()
37
- if (validType.startsWith('.')) {
38
- return fileName.toLowerCase().endsWith(validType.toLowerCase())
39
- } else if (validType.endsWith('/*')) {
40
- // This is something like a image/* mime type
41
- return baseMimeType === validType.replace(/\/.*$/, '')
42
- }
43
-
44
- return mimeType === validType
45
- })
46
- }
47
-
48
- return true
49
- }
50
-
51
- function isDragEvent (event) {
52
- return dragEvents.indexOf(event.type) > 0
53
- }
54
-
55
- function isChangeEvent (event) {
56
- return event.type === 'change'
57
- }
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Polaris
4
- class NewComponent < ViewComponent::Base
5
- include ClassNameHelper
6
- include FetchOrFallbackHelper
7
- include OptionHelper
8
- include ViewHelper
9
- end
10
- end
@@ -1,11 +0,0 @@
1
- module Polaris
2
- module ConditionalHelper
3
- def conditional_wrapping_element(tag, options = {}, &block)
4
- if options.delete(:show)
5
- content_tag(tag, capture(&block), options)
6
- else
7
- capture(&block)
8
- end
9
- end
10
- end
11
- end