polaris_view_components 0.7.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
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