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.
- checksums.yaml +4 -4
- data/app/assets/icons/polaris/AnalyticsMinor.svg +1 -0
- data/app/assets/icons/polaris/AppsMinor.svg +1 -0
- data/app/assets/icons/polaris/BlockMinor.svg +1 -0
- data/app/assets/icons/polaris/ButtonMinor.svg +1 -0
- data/app/assets/icons/polaris/CaretDownMinor.svg +1 -1
- data/app/assets/icons/polaris/CaretUpMinor.svg +1 -1
- data/app/assets/icons/polaris/CircleTickMinor.svg +1 -0
- data/app/assets/icons/polaris/Columns3Minor.svg +1 -0
- data/app/assets/icons/polaris/CustomersMinor.svg +1 -1
- data/app/assets/icons/polaris/DiscountsMinor.svg +1 -0
- data/app/assets/icons/polaris/DropdownMinor.svg +1 -1
- data/app/assets/icons/polaris/FinancesMajor.svg +1 -0
- data/app/assets/icons/polaris/FinancesMinor.svg +1 -0
- data/app/assets/icons/polaris/HomeMinor.svg +1 -0
- data/app/assets/icons/polaris/MarketingMinor.svg +1 -0
- data/app/assets/icons/polaris/OnlineStoreMinor.svg +1 -0
- data/app/assets/icons/polaris/OrdersMinor.svg +1 -0
- data/app/assets/icons/polaris/ProductsMinor.svg +1 -0
- data/app/assets/icons/polaris/QuestionMarkInverseMajor.svg +1 -0
- data/app/assets/icons/polaris/QuestionMarkInverseMinor.svg +1 -0
- data/app/assets/icons/polaris/SelectMinor.svg +1 -1
- data/app/assets/icons/polaris/TitleMinor.svg +1 -0
- data/app/assets/icons/polaris/WandMinor.svg +1 -0
- data/app/assets/javascripts/polaris_view_components/autocomplete_controller.js +32 -15
- data/app/assets/javascripts/polaris_view_components/collapsible_controller.js +19 -0
- data/app/assets/javascripts/polaris_view_components/dropzone_controller.js +495 -0
- data/app/assets/javascripts/polaris_view_components/index.js +4 -0
- data/app/assets/javascripts/polaris_view_components/polaris_controller.js +4 -0
- data/app/assets/javascripts/polaris_view_components/popover_controller.js +9 -2
- data/app/assets/javascripts/polaris_view_components/toast_controller.js +13 -2
- data/app/assets/javascripts/polaris_view_components/utils.js +23 -0
- data/app/assets/javascripts/polaris_view_components.js +560 -65
- data/app/assets/stylesheets/polaris_view_components/custom.css +38 -6
- data/app/assets/stylesheets/polaris_view_components.css +2107 -2021
- data/app/assets/stylesheets/polaris_view_components.postcss.css +1 -1
- data/app/components/polaris/action_list/item_component.rb +1 -1
- data/app/components/polaris/action_list/section_component.rb +1 -1
- data/app/components/polaris/action_list_component.rb +1 -1
- data/app/components/polaris/autocomplete/action_component.rb +1 -1
- data/app/components/polaris/autocomplete/option_component.rb +1 -1
- data/app/components/polaris/autocomplete/section_component.rb +1 -1
- data/app/components/polaris/autocomplete_component.rb +9 -2
- data/app/components/polaris/avatar_component.rb +1 -1
- data/app/components/polaris/badge_component.rb +1 -1
- data/app/components/polaris/banner_component.rb +2 -2
- data/app/components/polaris/base_button.rb +1 -1
- data/app/components/polaris/base_checkbox.rb +1 -1
- data/app/components/polaris/base_component.rb +1 -1
- data/app/components/polaris/base_radio_button.rb +1 -1
- data/app/components/polaris/button_group_component.rb +3 -3
- data/app/components/polaris/callout_card_component.rb +1 -1
- data/app/components/polaris/caption_component.rb +1 -1
- data/app/components/polaris/card/header_component.rb +1 -1
- data/app/components/polaris/card/section_component.rb +2 -2
- data/app/components/polaris/card_component.rb +1 -1
- data/app/components/polaris/checkbox_component.rb +1 -1
- data/app/components/polaris/choice_component.rb +1 -1
- data/app/components/polaris/choice_list_component.rb +1 -1
- data/app/components/polaris/collapsible_component.rb +37 -0
- data/app/components/polaris/component.rb +6 -1
- data/app/components/polaris/data_table/cell_component.rb +1 -1
- data/app/components/polaris/data_table/column_component.rb +1 -1
- data/app/components/polaris/data_table_component.rb +1 -1
- data/app/components/polaris/description_list_component.rb +2 -2
- data/app/components/polaris/display_text_component.rb +1 -1
- data/app/components/polaris/dropzone_component.html.erb +156 -0
- data/app/components/polaris/dropzone_component.rb +150 -0
- data/app/components/polaris/empty_state_component.rb +1 -1
- data/app/components/polaris/exception_list/item_component.rb +1 -1
- data/app/components/polaris/exception_list_component.rb +1 -1
- data/app/components/polaris/filters_component.rb +3 -3
- data/app/components/polaris/footer_help_component.rb +1 -1
- data/app/components/polaris/form_layout/group_component.rb +2 -2
- data/app/components/polaris/form_layout/item_component.rb +1 -1
- data/app/components/polaris/form_layout_component.rb +1 -1
- data/app/components/polaris/frame/save_bar_component.rb +1 -1
- data/app/components/polaris/frame/top_bar_component.rb +1 -1
- data/app/components/polaris/frame_component.rb +1 -1
- data/app/components/polaris/heading_component.rb +1 -1
- data/app/components/polaris/headless_button.rb +1 -1
- data/app/components/polaris/icon_component.rb +1 -1
- data/app/components/polaris/index_table/cell_component.rb +1 -1
- data/app/components/polaris/index_table/column_component.rb +1 -1
- data/app/components/polaris/index_table_component.rb +1 -1
- data/app/components/polaris/inline_error_component.rb +1 -1
- data/app/components/polaris/keyboard_key_component.rb +20 -0
- data/app/components/polaris/label_component.rb +1 -1
- data/app/components/polaris/labelled_component.rb +1 -1
- data/app/components/polaris/layout/annotated_section.rb +1 -1
- data/app/components/polaris/layout/section.rb +1 -1
- data/app/components/polaris/layout_component.rb +1 -1
- data/app/components/polaris/link_component.rb +1 -1
- data/app/components/polaris/list_component.rb +2 -2
- data/app/components/polaris/modal/section_component.rb +1 -1
- data/app/components/polaris/modal_component.rb +1 -1
- data/app/components/polaris/navigation/item_component.rb +2 -2
- data/app/components/polaris/navigation/section_component.rb +2 -2
- data/app/components/polaris/navigation_component.rb +1 -1
- data/app/components/polaris/option_list/checkbox_component.rb +1 -1
- data/app/components/polaris/option_list/option_component.rb +1 -1
- data/app/components/polaris/option_list/radio_button_component.rb +1 -1
- data/app/components/polaris/option_list/section_component.rb +1 -1
- data/app/components/polaris/option_list_component.rb +1 -1
- data/app/components/polaris/page_actions_component.rb +1 -1
- data/app/components/polaris/page_component.rb +1 -1
- data/app/components/polaris/pagination_component.rb +1 -1
- data/app/components/polaris/popover/pane_component.rb +1 -1
- data/app/components/polaris/popover/section_component.rb +1 -1
- data/app/components/polaris/popover_component.rb +10 -4
- data/app/components/polaris/progress_bar_component.rb +1 -1
- data/app/components/polaris/radio_button_component.rb +1 -1
- data/app/components/polaris/resource_item_component.rb +4 -2
- data/app/components/polaris/resource_list_component.rb +1 -1
- data/app/components/polaris/scrollable_component.rb +1 -1
- data/app/components/polaris/select_component.rb +1 -1
- data/app/components/polaris/setting_toggle_component.rb +1 -1
- data/app/components/polaris/shopify_navigation_component.rb +2 -2
- data/app/components/polaris/skeleton_body_text_component.rb +1 -1
- data/app/components/polaris/skeleton_display_text_component.rb +32 -0
- data/app/components/polaris/skeleton_thumbnail_component.rb +31 -0
- data/app/components/polaris/spacer_component.rb +1 -1
- data/app/components/polaris/spinner_component.rb +1 -1
- data/app/components/polaris/stack/item_component.rb +15 -0
- data/app/components/polaris/stack_component.rb +2 -18
- data/app/components/polaris/subheading_component.rb +1 -1
- data/app/components/polaris/tabs/tab_component.rb +1 -1
- data/app/components/polaris/tabs_component.rb +1 -1
- data/app/components/polaris/tag_component.rb +3 -2
- data/app/components/polaris/text_container_component.rb +1 -1
- data/app/components/polaris/text_field_component.rb +2 -2
- data/app/components/polaris/text_style_component.rb +1 -1
- data/app/components/polaris/thumbnail_component.rb +1 -1
- data/app/components/polaris/toast_component.rb +1 -1
- data/app/components/polaris/top_bar/user_menu_component.rb +1 -1
- data/app/components/polaris/visually_hidden_component.rb +1 -1
- data/app/helpers/polaris/form_builder.rb +14 -5
- data/app/helpers/polaris/view_helper.rb +6 -1
- data/config/locales/en.yml +6 -0
- data/lib/polaris/view_components/engine.rb +5 -1
- data/lib/polaris/view_components/version.rb +1 -1
- metadata +31 -21
- data/app/components/polaris/application_component.rb +0 -35
- data/app/components/polaris/dropzone/component.html.erb +0 -72
- data/app/components/polaris/dropzone/component.rb +0 -128
- data/app/components/polaris/dropzone/controller.js +0 -226
- data/app/components/polaris/dropzone/utils.js +0 -57
- data/app/components/polaris/new_component.rb +0 -10
- data/app/helpers/polaris/conditional_helper.rb +0 -11
|
@@ -2,10 +2,25 @@ import { Controller } from "@hotwired/stimulus";
|
|
|
2
2
|
|
|
3
3
|
import { get } from "@rails/request.js";
|
|
4
4
|
|
|
5
|
+
function debounce$1(fn, wait) {
|
|
6
|
+
let timeoutId;
|
|
7
|
+
return (...args) => {
|
|
8
|
+
clearTimeout(timeoutId);
|
|
9
|
+
timeoutId = setTimeout((() => fn.apply(this, args)), wait);
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function formatBytes(bytes, decimals) {
|
|
14
|
+
if (bytes == 0) return "0 Bytes";
|
|
15
|
+
const k = 1024, dm = decimals || 2, sizes = [ "Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" ], i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
16
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
|
|
17
|
+
}
|
|
18
|
+
|
|
5
19
|
class Autocomplete extends Controller {
|
|
6
20
|
static targets=[ "popover", "input", "results", "option", "emptyState" ];
|
|
7
21
|
static values={
|
|
8
|
-
url: String
|
|
22
|
+
url: String,
|
|
23
|
+
selected: Array
|
|
9
24
|
};
|
|
10
25
|
connect() {
|
|
11
26
|
this.inputTarget.addEventListener("input", this.onInputChange);
|
|
@@ -14,13 +29,10 @@ class Autocomplete extends Controller {
|
|
|
14
29
|
this.inputTarget.removeEventListener("input", this.onInputChange);
|
|
15
30
|
}
|
|
16
31
|
toggle() {
|
|
17
|
-
if (this.visibleOptions.length
|
|
18
|
-
this.
|
|
19
|
-
this.popoverController.show();
|
|
20
|
-
} else if (this.value.length > 0 && this.hasEmptyStateTarget) {
|
|
21
|
-
this.showEmptyState();
|
|
32
|
+
if (this.isRemote && this.visibleOptions.length == 0 && this.value.length == 0) {
|
|
33
|
+
this.fetchResults();
|
|
22
34
|
} else {
|
|
23
|
-
this.
|
|
35
|
+
this.handleResults();
|
|
24
36
|
}
|
|
25
37
|
}
|
|
26
38
|
select(event) {
|
|
@@ -42,6 +54,13 @@ class Autocomplete extends Controller {
|
|
|
42
54
|
this.filterOptions();
|
|
43
55
|
}
|
|
44
56
|
}), 200);
|
|
57
|
+
reset() {
|
|
58
|
+
this.inputTarget.value = "";
|
|
59
|
+
this.optionTargets.forEach((option => {
|
|
60
|
+
option.classList.add("Polaris--hidden");
|
|
61
|
+
}));
|
|
62
|
+
this.handleResults();
|
|
63
|
+
}
|
|
45
64
|
get isRemote() {
|
|
46
65
|
return this.urlValue.length > 0;
|
|
47
66
|
}
|
|
@@ -54,6 +73,17 @@ class Autocomplete extends Controller {
|
|
|
54
73
|
get visibleOptions() {
|
|
55
74
|
return this.optionTargets.filter((option => !option.classList.contains("Polaris--hidden")));
|
|
56
75
|
}
|
|
76
|
+
handleResults() {
|
|
77
|
+
if (this.visibleOptions.length > 0) {
|
|
78
|
+
this.hideEmptyState();
|
|
79
|
+
this.popoverController.show();
|
|
80
|
+
this.checkSelected();
|
|
81
|
+
} else if (this.value.length > 0 && this.hasEmptyStateTarget) {
|
|
82
|
+
this.showEmptyState();
|
|
83
|
+
} else {
|
|
84
|
+
this.popoverController.forceHide();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
57
87
|
filterOptions() {
|
|
58
88
|
if (this.value === "") {
|
|
59
89
|
this.optionTargets.forEach((option => {
|
|
@@ -69,7 +99,7 @@ class Autocomplete extends Controller {
|
|
|
69
99
|
}
|
|
70
100
|
}));
|
|
71
101
|
}
|
|
72
|
-
this.
|
|
102
|
+
this.handleResults();
|
|
73
103
|
}
|
|
74
104
|
async fetchResults() {
|
|
75
105
|
const response = await get(this.urlValue, {
|
|
@@ -80,7 +110,7 @@ class Autocomplete extends Controller {
|
|
|
80
110
|
if (response.ok) {
|
|
81
111
|
const results = await response.html;
|
|
82
112
|
this.resultsTarget.innerHTML = results;
|
|
83
|
-
this.
|
|
113
|
+
this.handleResults();
|
|
84
114
|
}
|
|
85
115
|
}
|
|
86
116
|
showEmptyState() {
|
|
@@ -95,16 +125,15 @@ class Autocomplete extends Controller {
|
|
|
95
125
|
this.resultsTarget.classList.remove("Polaris--hidden");
|
|
96
126
|
}
|
|
97
127
|
}
|
|
128
|
+
checkSelected() {
|
|
129
|
+
this.visibleOptions.forEach((option => {
|
|
130
|
+
const input = option.querySelector("input");
|
|
131
|
+
if (!input) return;
|
|
132
|
+
input.checked = this.selectedValue.includes(input.value);
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
98
135
|
}
|
|
99
136
|
|
|
100
|
-
const debounce$1 = (fn, delay = 10) => {
|
|
101
|
-
let timeoutId = null;
|
|
102
|
-
return (...args) => {
|
|
103
|
-
clearTimeout(timeoutId);
|
|
104
|
-
timeoutId = setTimeout(fn, delay);
|
|
105
|
-
};
|
|
106
|
-
};
|
|
107
|
-
|
|
108
137
|
class Button extends Controller {
|
|
109
138
|
disable(event) {
|
|
110
139
|
if (this.button.disabled) {
|
|
@@ -136,6 +165,405 @@ class Button extends Controller {
|
|
|
136
165
|
}
|
|
137
166
|
}
|
|
138
167
|
|
|
168
|
+
class Collapsible extends Controller {
|
|
169
|
+
toggle() {
|
|
170
|
+
if (this.isClosed) {
|
|
171
|
+
this.element.style.maxHeight = "none";
|
|
172
|
+
this.element.style.overflow = "visible";
|
|
173
|
+
this.element.classList.remove("Polaris-Collapsible--isFullyClosed");
|
|
174
|
+
} else {
|
|
175
|
+
this.element.style.maxHeight = "0px";
|
|
176
|
+
this.element.style.overflow = "hidden";
|
|
177
|
+
this.element.classList.add("Polaris-Collapsible--isFullyClosed");
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
get isClosed() {
|
|
181
|
+
return this.element.classList.contains("Polaris-Collapsible--isFullyClosed");
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
const dragEvents = [ "dragover", "dragenter", "drop" ];
|
|
186
|
+
|
|
187
|
+
const SIZES = {
|
|
188
|
+
SMALL: "small",
|
|
189
|
+
MEDIUM: "medium",
|
|
190
|
+
LARGE: "large",
|
|
191
|
+
EXTRA_LARGE: "extraLarge"
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
class Dropzone extends Controller {
|
|
195
|
+
static targets=[ "container", "fileUpload", "loader", "input", "preview", "previewTemplate", "itemTemplate", "overlay", "errorOverlay" ];
|
|
196
|
+
static classes=[ "disabled" ];
|
|
197
|
+
static values={
|
|
198
|
+
accept: String,
|
|
199
|
+
allowMultiple: Boolean,
|
|
200
|
+
disabled: Boolean,
|
|
201
|
+
dropOnPage: Boolean,
|
|
202
|
+
focused: Boolean,
|
|
203
|
+
renderPreview: Boolean,
|
|
204
|
+
size: String
|
|
205
|
+
};
|
|
206
|
+
files=[];
|
|
207
|
+
acceptedFiles=[];
|
|
208
|
+
rejectedFiles=[];
|
|
209
|
+
_dragging=false;
|
|
210
|
+
dragTargets=[];
|
|
211
|
+
previewRendered=false;
|
|
212
|
+
_size="large";
|
|
213
|
+
connect() {
|
|
214
|
+
document.body.addEventListener("click", this.onExternalTriggerClick);
|
|
215
|
+
addEventListener("resize", this.onWindowResize);
|
|
216
|
+
addEventListener("direct-uploads:start", this.onDirectUploadsStart);
|
|
217
|
+
addEventListener("direct-uploads:end", this.onDirectUploadsEnd);
|
|
218
|
+
addEventListener("direct-upload:initialize", this.onDirectUploadInitialize);
|
|
219
|
+
addEventListener("direct-upload:start", this.onDirectUploadStart);
|
|
220
|
+
addEventListener("direct-upload:progress", this.onDirectUploadProgress);
|
|
221
|
+
addEventListener("direct-upload:error", this.onDirectUploadError);
|
|
222
|
+
addEventListener("direct-upload:end", this.onDirectUploadEnd);
|
|
223
|
+
this.onWindowResize();
|
|
224
|
+
}
|
|
225
|
+
disconnect() {
|
|
226
|
+
document.body.removeEventListener("click", this.onExternalTriggerClick);
|
|
227
|
+
removeEventListener("resize", this.onWindowResize);
|
|
228
|
+
removeEventListener("direct-uploads:start", this.onDirectUploadsStart);
|
|
229
|
+
removeEventListener("direct-uploads:end", this.onDirectUploadsEnd);
|
|
230
|
+
removeEventListener("direct-upload:initialize", this.onDirectUploadInitialize);
|
|
231
|
+
removeEventListener("direct-upload:start", this.onDirectUploadStart);
|
|
232
|
+
removeEventListener("direct-upload:progress", this.onDirectUploadProgress);
|
|
233
|
+
removeEventListener("direct-upload:error", this.onDirectUploadError);
|
|
234
|
+
removeEventListener("direct-upload:end", this.onDirectUploadEnd);
|
|
235
|
+
}
|
|
236
|
+
onExternalTriggerClick=event => {
|
|
237
|
+
const trigger = event.target.closest(`[data-${this.identifier}-external-target="trigger"]`);
|
|
238
|
+
if (!trigger) return;
|
|
239
|
+
event.preventDefault();
|
|
240
|
+
this.onClick();
|
|
241
|
+
};
|
|
242
|
+
onWindowResize=debounce$1((() => {
|
|
243
|
+
const size = this.calculateSize();
|
|
244
|
+
if (size !== this.size) {
|
|
245
|
+
this.size = size;
|
|
246
|
+
}
|
|
247
|
+
}), 50);
|
|
248
|
+
onBlur() {
|
|
249
|
+
this.focusedValue = false;
|
|
250
|
+
}
|
|
251
|
+
onChange(e) {
|
|
252
|
+
this.stopEvent(e);
|
|
253
|
+
if (this.disabled) return;
|
|
254
|
+
this.clearFiles();
|
|
255
|
+
const fileList = getDataTransferFiles(e);
|
|
256
|
+
const {files: files, acceptedFiles: acceptedFiles, rejectedFiles: rejectedFiles} = this.getValidatedFiles(fileList);
|
|
257
|
+
this.dragTargets = [];
|
|
258
|
+
this.files = files;
|
|
259
|
+
this.acceptedFiles = acceptedFiles;
|
|
260
|
+
this.rejectedFiles = rejectedFiles;
|
|
261
|
+
this.render();
|
|
262
|
+
}
|
|
263
|
+
onDragOver(e) {
|
|
264
|
+
this.stopEvent(e);
|
|
265
|
+
if (this.disabled) return;
|
|
266
|
+
}
|
|
267
|
+
onDragEnter(e) {
|
|
268
|
+
this.stopEvent(e);
|
|
269
|
+
if (this.disabled) return;
|
|
270
|
+
if (e.target && !this.dragTargets.includes(e.target)) {
|
|
271
|
+
this.dragTargets.push(e.target);
|
|
272
|
+
}
|
|
273
|
+
if (this.dragging) return;
|
|
274
|
+
this.dragging = true;
|
|
275
|
+
}
|
|
276
|
+
onDragLeave(e) {
|
|
277
|
+
this.stopEvent(e);
|
|
278
|
+
if (this.disabled) return;
|
|
279
|
+
this.dragTargets = this.dragTargets.filter((el => {
|
|
280
|
+
const compareNode = this.element;
|
|
281
|
+
return el !== e.target && compareNode && compareNode.contains(el);
|
|
282
|
+
}));
|
|
283
|
+
if (this.dragTargets.length > 0) return;
|
|
284
|
+
this.dragging = false;
|
|
285
|
+
}
|
|
286
|
+
onDrop(e) {
|
|
287
|
+
this.stopEvent(e);
|
|
288
|
+
if (this.disabled) return;
|
|
289
|
+
this.dragging = false;
|
|
290
|
+
this.onChange(e);
|
|
291
|
+
}
|
|
292
|
+
onFocus() {
|
|
293
|
+
this.focusedValue = true;
|
|
294
|
+
}
|
|
295
|
+
onClick() {
|
|
296
|
+
if (this.disabledValue) return;
|
|
297
|
+
this.open();
|
|
298
|
+
}
|
|
299
|
+
onDirectUploadsStart=() => {
|
|
300
|
+
this.disable();
|
|
301
|
+
};
|
|
302
|
+
onDirectUploadsEnd=() => {
|
|
303
|
+
this.enable();
|
|
304
|
+
this.clearFiles();
|
|
305
|
+
this.loaderTarget.classList.remove("Polaris--hidden");
|
|
306
|
+
};
|
|
307
|
+
onDirectUploadInitialize=event => {
|
|
308
|
+
const {target: target, detail: detail} = event;
|
|
309
|
+
const {id: id, file: file} = detail;
|
|
310
|
+
const dropzone = target.closest(".Polaris-DropZone");
|
|
311
|
+
if (!dropzone) return;
|
|
312
|
+
const content = dropzone.querySelector(`[data-file-name="${file.name}"]`);
|
|
313
|
+
const progressBar = content.parentElement.querySelector('[data-target="progress-bar"]');
|
|
314
|
+
progressBar.id = `direct-upload-${id}`;
|
|
315
|
+
};
|
|
316
|
+
onDirectUploadStart=event => {
|
|
317
|
+
const {id: id} = event.detail;
|
|
318
|
+
const progressBar = document.getElementById(`direct-upload-${id}`);
|
|
319
|
+
if (!progressBar) return;
|
|
320
|
+
progressBar.classList.remove("Polaris--hidden");
|
|
321
|
+
};
|
|
322
|
+
onDirectUploadProgress=event => {
|
|
323
|
+
const {id: id, progress: progress} = event.detail;
|
|
324
|
+
const progressBar = document.getElementById(`direct-upload-${id}`);
|
|
325
|
+
if (!progressBar) return;
|
|
326
|
+
const progressElement = progressBar.querySelector(".Polaris-ProgressBar__Indicator");
|
|
327
|
+
progressElement.style.width = `${progress}%`;
|
|
328
|
+
};
|
|
329
|
+
onDirectUploadError=event => {
|
|
330
|
+
const {id: id, error: error} = event.detail;
|
|
331
|
+
const progressBar = document.getElementById(`direct-upload-${id}`);
|
|
332
|
+
if (!progressBar) return;
|
|
333
|
+
event.preventDefault();
|
|
334
|
+
progressBar.classList.add("Polaris--hidden");
|
|
335
|
+
const uploadError = progressBar.parentElement.querySelector('[data-target="upload-error"]');
|
|
336
|
+
const errorIcon = uploadError.querySelector(".Polaris-InlineError__Icon");
|
|
337
|
+
if (errorIcon) errorIcon.remove();
|
|
338
|
+
uploadError.classList.remove("Polaris--hidden");
|
|
339
|
+
};
|
|
340
|
+
onDirectUploadEnd=event => {
|
|
341
|
+
const {id: id} = event.detail;
|
|
342
|
+
const progressBar = document.getElementById(`direct-upload-${id}`);
|
|
343
|
+
if (!progressBar) return;
|
|
344
|
+
progressBar.classList.add("Polaris-ProgressBar--colorSuccess");
|
|
345
|
+
};
|
|
346
|
+
open() {
|
|
347
|
+
this.inputTarget.click();
|
|
348
|
+
}
|
|
349
|
+
focusedValueChanged() {
|
|
350
|
+
this.element.classList.toggle("Polaris-DropZone--focused", this.focusedValue);
|
|
351
|
+
}
|
|
352
|
+
stopEvent(e) {
|
|
353
|
+
e.preventDefault();
|
|
354
|
+
e.stopPropagation();
|
|
355
|
+
}
|
|
356
|
+
getValidatedFiles(files) {
|
|
357
|
+
const acceptedFiles = [];
|
|
358
|
+
const rejectedFiles = [];
|
|
359
|
+
Array.from(files).forEach((file => {
|
|
360
|
+
if (fileAccepted(file, this.acceptValue)) {
|
|
361
|
+
acceptedFiles.push(file);
|
|
362
|
+
} else {
|
|
363
|
+
rejectedFiles.push(file);
|
|
364
|
+
}
|
|
365
|
+
}));
|
|
366
|
+
if (!this.allowMultipleValue) {
|
|
367
|
+
acceptedFiles.splice(1, acceptedFiles.length);
|
|
368
|
+
rejectedFiles.push(...acceptedFiles.slice(1));
|
|
369
|
+
}
|
|
370
|
+
return {
|
|
371
|
+
files: files,
|
|
372
|
+
acceptedFiles: acceptedFiles,
|
|
373
|
+
rejectedFiles: rejectedFiles
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
render() {
|
|
377
|
+
if (this.files.length === 0) {
|
|
378
|
+
this.toggleFileUpload(true);
|
|
379
|
+
this.toggleErrorOverlay(false);
|
|
380
|
+
} else if (this.rejectedFiles.length > 0) {
|
|
381
|
+
this.toggleFileUpload(false);
|
|
382
|
+
this.toggleErrorOverlay(true);
|
|
383
|
+
const dropRejectedEvent = new CustomEvent("polaris-dropzone:drop-rejected", {
|
|
384
|
+
detail: {
|
|
385
|
+
rejectedFiles: this.rejectedFiles
|
|
386
|
+
}
|
|
387
|
+
});
|
|
388
|
+
this.element.dispatchEvent(dropRejectedEvent);
|
|
389
|
+
} else if (this.acceptedFiles.length > 0) {
|
|
390
|
+
if (this.renderPreviewValue) {
|
|
391
|
+
this.renderUploadedFiles();
|
|
392
|
+
this.toggleFileUpload(false);
|
|
393
|
+
}
|
|
394
|
+
this.toggleErrorOverlay(false);
|
|
395
|
+
const dropAcceptedEvent = new CustomEvent("polaris-dropzone:drop-accepted", {
|
|
396
|
+
detail: {
|
|
397
|
+
acceptedFiles: this.acceptedFiles
|
|
398
|
+
}
|
|
399
|
+
});
|
|
400
|
+
this.element.dispatchEvent(dropAcceptedEvent);
|
|
401
|
+
}
|
|
402
|
+
const dropEvent = new CustomEvent("polaris-dropzone:drop", {
|
|
403
|
+
detail: {
|
|
404
|
+
files: this.files,
|
|
405
|
+
acceptedFiles: this.acceptedFiles,
|
|
406
|
+
rejectedFiles: this.rejectedFiles
|
|
407
|
+
}
|
|
408
|
+
});
|
|
409
|
+
this.element.dispatchEvent(dropEvent);
|
|
410
|
+
}
|
|
411
|
+
renderUploadedFiles() {
|
|
412
|
+
if (this.acceptedFiles.length === 0) return;
|
|
413
|
+
const clone = this.previewTemplateTarget.content.cloneNode(true);
|
|
414
|
+
const filesTarget = clone.querySelector(".target");
|
|
415
|
+
let files = this.acceptedFiles;
|
|
416
|
+
if (this.sizeValue == "small") files = [ files[0] ];
|
|
417
|
+
files.map((file => this.renderFile(file))).forEach((fragment => filesTarget.parentNode.appendChild(fragment)));
|
|
418
|
+
filesTarget.remove();
|
|
419
|
+
this.containerTarget.prepend(clone);
|
|
420
|
+
this.previewRendered = true;
|
|
421
|
+
}
|
|
422
|
+
toggleFileUpload(show = false) {
|
|
423
|
+
this.fileUploadTarget.classList.toggle("Polaris-VisuallyHidden", !show);
|
|
424
|
+
}
|
|
425
|
+
toggleErrorOverlay(show = false) {
|
|
426
|
+
this.errorOverlayTarget.classList.toggle("Polaris-VisuallyHidden", !show);
|
|
427
|
+
this.element.classList.toggle("Polaris-DropZone--hasError", show);
|
|
428
|
+
}
|
|
429
|
+
renderFile(file) {
|
|
430
|
+
const validImageTypes = [ "image/gif", "image/jpeg", "image/png" ];
|
|
431
|
+
const clone = this.itemTemplateTarget.content.cloneNode(true);
|
|
432
|
+
const [icon, thumbnail, content, fileSize] = [ clone.querySelector('[data-target="icon"]'), clone.querySelector('[data-target="thumbnail"]'), clone.querySelector('[data-target="content"]'), clone.querySelector('[data-target="file-size"]') ];
|
|
433
|
+
if (validImageTypes.includes(file.type)) {
|
|
434
|
+
const img = thumbnail.querySelector("img");
|
|
435
|
+
img.alt = file.name;
|
|
436
|
+
img.src = window.URL.createObjectURL(file);
|
|
437
|
+
icon.remove();
|
|
438
|
+
} else {
|
|
439
|
+
thumbnail.remove();
|
|
440
|
+
}
|
|
441
|
+
if (this.sizeValue != "small") {
|
|
442
|
+
content.insertAdjacentText("afterbegin", file.name);
|
|
443
|
+
content.setAttribute("data-file-name", file.name);
|
|
444
|
+
fileSize.textContent = formatBytes(file.size);
|
|
445
|
+
}
|
|
446
|
+
return clone;
|
|
447
|
+
}
|
|
448
|
+
clearFiles() {
|
|
449
|
+
if (!this.previewRendered) return;
|
|
450
|
+
this.acceptedFiles = [];
|
|
451
|
+
this.files = [];
|
|
452
|
+
this.rejectedFiles = [];
|
|
453
|
+
if (!this.hasPreviewTarget) return;
|
|
454
|
+
this.previewTarget.remove();
|
|
455
|
+
this.previewRendered = false;
|
|
456
|
+
}
|
|
457
|
+
calculateSize() {
|
|
458
|
+
const width = this.element.getBoundingClientRect().width;
|
|
459
|
+
let size = SIZES.LARGE;
|
|
460
|
+
if (width < 100) {
|
|
461
|
+
size = SIZES.SMALL;
|
|
462
|
+
} else if (width < 160) {
|
|
463
|
+
size = SIZES.MEDIUM;
|
|
464
|
+
} else if (width > 300) {
|
|
465
|
+
size = SIZES.EXTRA_LARGE;
|
|
466
|
+
}
|
|
467
|
+
this.size = size;
|
|
468
|
+
return size;
|
|
469
|
+
}
|
|
470
|
+
getSizeClass(size = "large") {
|
|
471
|
+
return this.sizeClassesSchema[size] || this.sizeClassesSchema.large;
|
|
472
|
+
}
|
|
473
|
+
disable() {
|
|
474
|
+
this.disabled = true;
|
|
475
|
+
this.element.classList.add(this.disabledClass);
|
|
476
|
+
this.inputTarget.disabled = true;
|
|
477
|
+
}
|
|
478
|
+
enable() {
|
|
479
|
+
this.disabled = false;
|
|
480
|
+
this.element.classList.remove(this.disabledClass);
|
|
481
|
+
this.inputTarget.disabled = false;
|
|
482
|
+
}
|
|
483
|
+
get fileListRendered() {
|
|
484
|
+
return this.element.querySelector("[data-rendered]");
|
|
485
|
+
}
|
|
486
|
+
get dropNode() {
|
|
487
|
+
return this.dropOnPageValue ? document : this.element;
|
|
488
|
+
}
|
|
489
|
+
get disabled() {
|
|
490
|
+
return this.disabledValue;
|
|
491
|
+
}
|
|
492
|
+
set disabled(val) {
|
|
493
|
+
this.disabledValue = val;
|
|
494
|
+
}
|
|
495
|
+
get dragging() {
|
|
496
|
+
return this._dragging;
|
|
497
|
+
}
|
|
498
|
+
set dragging(val) {
|
|
499
|
+
this._dragging = val;
|
|
500
|
+
this.element.classList.toggle("Polaris-DropZone--isDragging", val);
|
|
501
|
+
this.overlayTarget.classList.toggle("Polaris-VisuallyHidden", !val);
|
|
502
|
+
}
|
|
503
|
+
get sizeClassesSchema() {
|
|
504
|
+
return {
|
|
505
|
+
[SIZES.SMALL]: "Polaris-DropZone--sizeSmall",
|
|
506
|
+
[SIZES.MEDIUM]: "Polaris-DropZone--sizeMedium",
|
|
507
|
+
[SIZES.LARGE]: "Polaris-DropZone--sizeLarge",
|
|
508
|
+
[SIZES.EXTRA_LARGE]: "Polaris-DropZone--sizeExtraLarge"
|
|
509
|
+
};
|
|
510
|
+
}
|
|
511
|
+
get size() {
|
|
512
|
+
return this._size;
|
|
513
|
+
}
|
|
514
|
+
set size(val) {
|
|
515
|
+
this._size = val;
|
|
516
|
+
const sizeClassesToRemove = Object.values(this.sizeClassesSchema);
|
|
517
|
+
sizeClassesToRemove.forEach((className => this.element.classList.remove(className)));
|
|
518
|
+
this.element.classList.add(this.getSizeClass(val));
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
function fileAccepted(file, accept) {
|
|
523
|
+
return file.type === "application/x-moz-file" || accepts(file, accept);
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
function getDataTransferFiles(event) {
|
|
527
|
+
if (isDragEvent(event) && event.dataTransfer) {
|
|
528
|
+
const dt = event.dataTransfer;
|
|
529
|
+
if (dt.files && dt.files.length) {
|
|
530
|
+
return Array.from(dt.files);
|
|
531
|
+
} else if (dt.items && dt.items.length) {
|
|
532
|
+
return Array.from(dt.items);
|
|
533
|
+
}
|
|
534
|
+
} else if (isChangeEvent(event) && event.target.files) {
|
|
535
|
+
return Array.from(event.target.files);
|
|
536
|
+
}
|
|
537
|
+
return [];
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
function accepts(file, acceptedFiles = [ "" ]) {
|
|
541
|
+
if (file && acceptedFiles) {
|
|
542
|
+
const fileName = file.name || "";
|
|
543
|
+
const mimeType = file.type || "";
|
|
544
|
+
const baseMimeType = mimeType.replace(/\/.*$/, "");
|
|
545
|
+
const acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(",");
|
|
546
|
+
return acceptedFilesArray.some((type => {
|
|
547
|
+
const validType = type.trim();
|
|
548
|
+
if (validType.startsWith(".")) {
|
|
549
|
+
return fileName.toLowerCase().endsWith(validType.toLowerCase());
|
|
550
|
+
} else if (validType.endsWith("/*")) {
|
|
551
|
+
return baseMimeType === validType.replace(/\/.*$/, "");
|
|
552
|
+
}
|
|
553
|
+
return mimeType === validType;
|
|
554
|
+
}));
|
|
555
|
+
}
|
|
556
|
+
return true;
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
function isDragEvent(event) {
|
|
560
|
+
return dragEvents.indexOf(event.type) > 0;
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
function isChangeEvent(event) {
|
|
564
|
+
return event.type === "change";
|
|
565
|
+
}
|
|
566
|
+
|
|
139
567
|
const alpineNames = {
|
|
140
568
|
enterFromClass: "enter",
|
|
141
569
|
enterActiveClass: "enterStart",
|
|
@@ -392,6 +820,9 @@ class Polaris extends Controller {
|
|
|
392
820
|
showToast() {
|
|
393
821
|
this.findElement("toast").show();
|
|
394
822
|
}
|
|
823
|
+
toggleCollapsible() {
|
|
824
|
+
this.findElement("collapsible").toggle();
|
|
825
|
+
}
|
|
395
826
|
findElement(type) {
|
|
396
827
|
const targetId = this.element.dataset.target.replace("#", "");
|
|
397
828
|
const target = document.getElementById(targetId);
|
|
@@ -558,10 +989,29 @@ function getBasePlacement(placement) {
|
|
|
558
989
|
return placement.split("-")[0];
|
|
559
990
|
}
|
|
560
991
|
|
|
992
|
+
var max = Math.max;
|
|
993
|
+
|
|
994
|
+
var min = Math.min;
|
|
995
|
+
|
|
996
|
+
var round = Math.round;
|
|
997
|
+
|
|
561
998
|
function getBoundingClientRect(element, includeScale) {
|
|
999
|
+
if (includeScale === void 0) {
|
|
1000
|
+
includeScale = false;
|
|
1001
|
+
}
|
|
562
1002
|
var rect = element.getBoundingClientRect();
|
|
563
1003
|
var scaleX = 1;
|
|
564
1004
|
var scaleY = 1;
|
|
1005
|
+
if (isHTMLElement(element) && includeScale) {
|
|
1006
|
+
var offsetHeight = element.offsetHeight;
|
|
1007
|
+
var offsetWidth = element.offsetWidth;
|
|
1008
|
+
if (offsetWidth > 0) {
|
|
1009
|
+
scaleX = round(rect.width) / offsetWidth || 1;
|
|
1010
|
+
}
|
|
1011
|
+
if (offsetHeight > 0) {
|
|
1012
|
+
scaleY = round(rect.height) / offsetHeight || 1;
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
565
1015
|
return {
|
|
566
1016
|
width: rect.width / scaleX,
|
|
567
1017
|
height: rect.height / scaleY,
|
|
@@ -671,16 +1121,15 @@ function getMainAxisFromPlacement(placement) {
|
|
|
671
1121
|
return [ "top", "bottom" ].indexOf(placement) >= 0 ? "x" : "y";
|
|
672
1122
|
}
|
|
673
1123
|
|
|
674
|
-
var max = Math.max;
|
|
675
|
-
|
|
676
|
-
var min = Math.min;
|
|
677
|
-
|
|
678
|
-
var round = Math.round;
|
|
679
|
-
|
|
680
1124
|
function within(min$1, value, max$1) {
|
|
681
1125
|
return max(min$1, min(value, max$1));
|
|
682
1126
|
}
|
|
683
1127
|
|
|
1128
|
+
function withinMaxClamp(min, value, max) {
|
|
1129
|
+
var v = within(min, value, max);
|
|
1130
|
+
return v > max ? max : v;
|
|
1131
|
+
}
|
|
1132
|
+
|
|
684
1133
|
function getFreshSideObject() {
|
|
685
1134
|
return {
|
|
686
1135
|
top: 0,
|
|
@@ -782,15 +1231,24 @@ function roundOffsetsByDPR(_ref) {
|
|
|
782
1231
|
var win = window;
|
|
783
1232
|
var dpr = win.devicePixelRatio || 1;
|
|
784
1233
|
return {
|
|
785
|
-
x: round(
|
|
786
|
-
y: round(
|
|
1234
|
+
x: round(x * dpr) / dpr || 0,
|
|
1235
|
+
y: round(y * dpr) / dpr || 0
|
|
787
1236
|
};
|
|
788
1237
|
}
|
|
789
1238
|
|
|
790
1239
|
function mapToStyles(_ref2) {
|
|
791
1240
|
var _Object$assign2;
|
|
792
|
-
var popper = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets;
|
|
793
|
-
var
|
|
1241
|
+
var popper = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
|
|
1242
|
+
var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;
|
|
1243
|
+
var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
|
|
1244
|
+
x: x,
|
|
1245
|
+
y: y
|
|
1246
|
+
}) : {
|
|
1247
|
+
x: x,
|
|
1248
|
+
y: y
|
|
1249
|
+
};
|
|
1250
|
+
x = _ref3.x;
|
|
1251
|
+
y = _ref3.y;
|
|
794
1252
|
var hasX = offsets.hasOwnProperty("x");
|
|
795
1253
|
var hasY = offsets.hasOwnProperty("y");
|
|
796
1254
|
var sideX = left;
|
|
@@ -810,18 +1268,29 @@ function mapToStyles(_ref2) {
|
|
|
810
1268
|
offsetParent = offsetParent;
|
|
811
1269
|
if (placement === top || (placement === left || placement === right) && variation === end) {
|
|
812
1270
|
sideY = bottom;
|
|
813
|
-
|
|
1271
|
+
var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : offsetParent[heightProp];
|
|
1272
|
+
y -= offsetY - popperRect.height;
|
|
814
1273
|
y *= gpuAcceleration ? 1 : -1;
|
|
815
1274
|
}
|
|
816
1275
|
if (placement === left || (placement === top || placement === bottom) && variation === end) {
|
|
817
1276
|
sideX = right;
|
|
818
|
-
|
|
1277
|
+
var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : offsetParent[widthProp];
|
|
1278
|
+
x -= offsetX - popperRect.width;
|
|
819
1279
|
x *= gpuAcceleration ? 1 : -1;
|
|
820
1280
|
}
|
|
821
1281
|
}
|
|
822
1282
|
var commonStyles = Object.assign({
|
|
823
1283
|
position: position
|
|
824
1284
|
}, adaptive && unsetSides);
|
|
1285
|
+
var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
|
|
1286
|
+
x: x,
|
|
1287
|
+
y: y
|
|
1288
|
+
}) : {
|
|
1289
|
+
x: x,
|
|
1290
|
+
y: y
|
|
1291
|
+
};
|
|
1292
|
+
x = _ref4.x;
|
|
1293
|
+
y = _ref4.y;
|
|
825
1294
|
if (gpuAcceleration) {
|
|
826
1295
|
var _Object$assign;
|
|
827
1296
|
return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "",
|
|
@@ -832,15 +1301,16 @@ function mapToStyles(_ref2) {
|
|
|
832
1301
|
_Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
|
|
833
1302
|
}
|
|
834
1303
|
|
|
835
|
-
function computeStyles(
|
|
836
|
-
var state =
|
|
1304
|
+
function computeStyles(_ref5) {
|
|
1305
|
+
var state = _ref5.state, options = _ref5.options;
|
|
837
1306
|
var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
|
|
838
1307
|
var commonStyles = {
|
|
839
1308
|
placement: getBasePlacement(state.placement),
|
|
840
1309
|
variation: getVariation(state.placement),
|
|
841
1310
|
popper: state.elements.popper,
|
|
842
1311
|
popperRect: state.rects.popper,
|
|
843
|
-
gpuAcceleration: gpuAcceleration
|
|
1312
|
+
gpuAcceleration: gpuAcceleration,
|
|
1313
|
+
isFixed: state.options.strategy === "fixed"
|
|
844
1314
|
};
|
|
845
1315
|
if (state.modifiersData.popperOffsets != null) {
|
|
846
1316
|
state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
|
|
@@ -1042,7 +1512,7 @@ function getInnerBoundingClientRect(element) {
|
|
|
1042
1512
|
}
|
|
1043
1513
|
|
|
1044
1514
|
function getClientRectFromMixedType(element, clippingParent) {
|
|
1045
|
-
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) :
|
|
1515
|
+
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
|
1046
1516
|
}
|
|
1047
1517
|
|
|
1048
1518
|
function getClippingParents(element) {
|
|
@@ -1444,6 +1914,14 @@ function preventOverflow(_ref) {
|
|
|
1444
1914
|
var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, {
|
|
1445
1915
|
placement: state.placement
|
|
1446
1916
|
})) : tetherOffset;
|
|
1917
|
+
var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
|
|
1918
|
+
mainAxis: tetherOffsetValue,
|
|
1919
|
+
altAxis: tetherOffsetValue
|
|
1920
|
+
} : Object.assign({
|
|
1921
|
+
mainAxis: 0,
|
|
1922
|
+
altAxis: 0
|
|
1923
|
+
}, tetherOffsetValue);
|
|
1924
|
+
var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
|
|
1447
1925
|
var data = {
|
|
1448
1926
|
x: 0,
|
|
1449
1927
|
y: 0
|
|
@@ -1451,13 +1929,14 @@ function preventOverflow(_ref) {
|
|
|
1451
1929
|
if (!popperOffsets) {
|
|
1452
1930
|
return;
|
|
1453
1931
|
}
|
|
1454
|
-
if (checkMainAxis
|
|
1932
|
+
if (checkMainAxis) {
|
|
1933
|
+
var _offsetModifierState$;
|
|
1455
1934
|
var mainSide = mainAxis === "y" ? top : left;
|
|
1456
1935
|
var altSide = mainAxis === "y" ? bottom : right;
|
|
1457
1936
|
var len = mainAxis === "y" ? "height" : "width";
|
|
1458
1937
|
var offset = popperOffsets[mainAxis];
|
|
1459
|
-
var min$1 =
|
|
1460
|
-
var max$1 =
|
|
1938
|
+
var min$1 = offset + overflow[mainSide];
|
|
1939
|
+
var max$1 = offset - overflow[altSide];
|
|
1461
1940
|
var additive = tether ? -popperRect[len] / 2 : 0;
|
|
1462
1941
|
var minLen = variation === start ? referenceRect[len] : popperRect[len];
|
|
1463
1942
|
var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];
|
|
@@ -1470,28 +1949,32 @@ function preventOverflow(_ref) {
|
|
|
1470
1949
|
var arrowPaddingMin = arrowPaddingObject[mainSide];
|
|
1471
1950
|
var arrowPaddingMax = arrowPaddingObject[altSide];
|
|
1472
1951
|
var arrowLen = within(0, referenceRect[len], arrowRect[len]);
|
|
1473
|
-
var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin -
|
|
1474
|
-
var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax +
|
|
1952
|
+
var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
|
|
1953
|
+
var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
|
|
1475
1954
|
var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
|
|
1476
1955
|
var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
|
|
1477
|
-
var offsetModifierValue =
|
|
1478
|
-
var tetherMin =
|
|
1479
|
-
var tetherMax =
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1956
|
+
var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
|
|
1957
|
+
var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;
|
|
1958
|
+
var tetherMax = offset + maxOffset - offsetModifierValue;
|
|
1959
|
+
var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1);
|
|
1960
|
+
popperOffsets[mainAxis] = preventedOffset;
|
|
1961
|
+
data[mainAxis] = preventedOffset - offset;
|
|
1962
|
+
}
|
|
1963
|
+
if (checkAltAxis) {
|
|
1964
|
+
var _offsetModifierState$2;
|
|
1965
|
+
var _mainSide = mainAxis === "x" ? top : left;
|
|
1966
|
+
var _altSide = mainAxis === "x" ? bottom : right;
|
|
1967
|
+
var _offset = popperOffsets[altAxis];
|
|
1968
|
+
var _len = altAxis === "y" ? "height" : "width";
|
|
1969
|
+
var _min = _offset + overflow[_mainSide];
|
|
1970
|
+
var _max = _offset - overflow[_altSide];
|
|
1971
|
+
var isOriginSide = [ top, left ].indexOf(basePlacement) !== -1;
|
|
1972
|
+
var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
|
|
1973
|
+
var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
|
|
1974
|
+
var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
|
|
1975
|
+
var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
|
|
1976
|
+
popperOffsets[altAxis] = _preventedOffset;
|
|
1977
|
+
data[altAxis] = _preventedOffset - _offset;
|
|
1495
1978
|
}
|
|
1496
1979
|
state.modifiersData[name] = data;
|
|
1497
1980
|
}
|
|
@@ -1521,8 +2004,8 @@ function getNodeScroll(node) {
|
|
|
1521
2004
|
|
|
1522
2005
|
function isElementScaled(element) {
|
|
1523
2006
|
var rect = element.getBoundingClientRect();
|
|
1524
|
-
var scaleX = rect.width / element.offsetWidth || 1;
|
|
1525
|
-
var scaleY = rect.height / element.offsetHeight || 1;
|
|
2007
|
+
var scaleX = round(rect.width) / element.offsetWidth || 1;
|
|
2008
|
+
var scaleY = round(rect.height) / element.offsetHeight || 1;
|
|
1526
2009
|
return scaleX !== 1 || scaleY !== 1;
|
|
1527
2010
|
}
|
|
1528
2011
|
|
|
@@ -1531,9 +2014,9 @@ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
|
|
1531
2014
|
isFixed = false;
|
|
1532
2015
|
}
|
|
1533
2016
|
var isOffsetParentAnElement = isHTMLElement(offsetParent);
|
|
1534
|
-
isHTMLElement(offsetParent) && isElementScaled(offsetParent);
|
|
2017
|
+
var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
|
|
1535
2018
|
var documentElement = getDocumentElement(offsetParent);
|
|
1536
|
-
var rect = getBoundingClientRect(elementOrVirtualElement);
|
|
2019
|
+
var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);
|
|
1537
2020
|
var scroll = {
|
|
1538
2021
|
scrollLeft: 0,
|
|
1539
2022
|
scrollTop: 0
|
|
@@ -1547,7 +2030,7 @@ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
|
|
1547
2030
|
scroll = getNodeScroll(offsetParent);
|
|
1548
2031
|
}
|
|
1549
2032
|
if (isHTMLElement(offsetParent)) {
|
|
1550
|
-
offsets = getBoundingClientRect(offsetParent);
|
|
2033
|
+
offsets = getBoundingClientRect(offsetParent, true);
|
|
1551
2034
|
offsets.x += offsetParent.clientLeft;
|
|
1552
2035
|
offsets.y += offsetParent.clientTop;
|
|
1553
2036
|
} else if (documentElement) {
|
|
@@ -1775,13 +2258,18 @@ class Popover extends Controller {
|
|
|
1775
2258
|
active: Boolean
|
|
1776
2259
|
};
|
|
1777
2260
|
connect() {
|
|
1778
|
-
createPopper(this.activatorTarget, this.popoverTarget, {
|
|
2261
|
+
this.popper = createPopper(this.activatorTarget, this.popoverTarget, {
|
|
1779
2262
|
placement: this.placementValue,
|
|
1780
2263
|
modifiers: [ {
|
|
1781
2264
|
name: "offset",
|
|
1782
2265
|
options: {
|
|
1783
2266
|
offset: [ 0, 5 ]
|
|
1784
2267
|
}
|
|
2268
|
+
}, {
|
|
2269
|
+
name: "flip",
|
|
2270
|
+
options: {
|
|
2271
|
+
allowedAutoPlacements: [ "top-start", "bottom-start", "top-end", "bottom-end" ]
|
|
2272
|
+
}
|
|
1785
2273
|
} ]
|
|
1786
2274
|
});
|
|
1787
2275
|
if (this.activeValue) {
|
|
@@ -1792,9 +2280,10 @@ class Popover extends Controller {
|
|
|
1792
2280
|
this.popoverTarget.classList.toggle(this.closedClass);
|
|
1793
2281
|
this.popoverTarget.classList.toggle(this.openClass);
|
|
1794
2282
|
}
|
|
1795
|
-
show() {
|
|
2283
|
+
async show() {
|
|
1796
2284
|
this.popoverTarget.classList.remove(this.closedClass);
|
|
1797
2285
|
this.popoverTarget.classList.add(this.openClass);
|
|
2286
|
+
await this.popper.update();
|
|
1798
2287
|
}
|
|
1799
2288
|
hide(event) {
|
|
1800
2289
|
if (!this.element.contains(event.target) && !this.popoverTarget.classList.contains(this.closedClass)) {
|
|
@@ -1996,8 +2485,9 @@ class Toast extends Controller {
|
|
|
1996
2485
|
this.element.removeEventListener("transitionend", this.updatePositions, false);
|
|
1997
2486
|
};
|
|
1998
2487
|
getStyle(position) {
|
|
1999
|
-
const
|
|
2000
|
-
const
|
|
2488
|
+
const height = this.element.offsetHeight + this.heightOffset;
|
|
2489
|
+
const translateIn = height * -1;
|
|
2490
|
+
const translateOut = 150 - height;
|
|
2001
2491
|
return `--toast-translate-y-in: ${translateIn}px; --toast-translate-y-out: ${translateOut}px;`;
|
|
2002
2492
|
}
|
|
2003
2493
|
get timeoutDuration() {
|
|
@@ -2018,11 +2508,16 @@ class Toast extends Controller {
|
|
|
2018
2508
|
get position() {
|
|
2019
2509
|
return this.visibleToasts.filter((el => !this.element.isEqualNode(el))).length + 1;
|
|
2020
2510
|
}
|
|
2511
|
+
get heightOffset() {
|
|
2512
|
+
return this.visibleToasts.filter((el => !this.element.isEqualNode(el) && this.element.dataset.position > el.dataset.position)).map((el => el.offsetHeight)).reduce(((a, b) => a + b), 0);
|
|
2513
|
+
}
|
|
2021
2514
|
}
|
|
2022
2515
|
|
|
2023
2516
|
function registerPolarisControllers(application) {
|
|
2024
2517
|
application.register("polaris-autocomplete", Autocomplete);
|
|
2025
2518
|
application.register("polaris-button", Button);
|
|
2519
|
+
application.register("polaris-collapsible", Collapsible);
|
|
2520
|
+
application.register("polaris-dropzone", Dropzone);
|
|
2026
2521
|
application.register("polaris-frame", Frame);
|
|
2027
2522
|
application.register("polaris-modal", Modal);
|
|
2028
2523
|
application.register("polaris-option-list", OptionList);
|