@depict-ai/ui 4.10.13 → 4.10.14
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.
- package/ES10/index.cjs +137 -40
- package/ES10/index.d.ts +1 -1
- package/ES10/index.js +137 -40
- package/latest/index.cjs +134 -40
- package/latest/index.d.ts +1 -1
- package/latest/index.js +134 -40
- package/package.json +4 -4
- package/server/ES10/index.cjs +76 -21
- package/server/ES10/index.d.ts +1 -1
- package/server/ES10/index.js +76 -21
- package/server/latest/index.cjs +76 -21
- package/server/latest/index.d.ts +1 -1
- package/server/latest/index.js +76 -21
package/server/ES10/index.js
CHANGED
|
@@ -10,7 +10,7 @@ import $b8hua$babelruntimehelpersclassPrivateFieldGet from "@babel/runtime/helpe
|
|
|
10
10
|
/*! Depict.ai search and product listing SDK */
|
|
11
11
|
import { register_es_version } from "../../multi_import_deduplicator.mjs";
|
|
12
12
|
register_es_version("ui", "ES10");
|
|
13
|
-
const $8db9a15135765c11$export$83d89fbfd8236492 = "4.10.
|
|
13
|
+
const $8db9a15135765c11$export$83d89fbfd8236492 = "4.10.14";
|
|
14
14
|
function $00a5b94f0c11efbb$export$d9f36cf74e24d595(media_query) {
|
|
15
15
|
const signal = $b8hua$createSignal(false);
|
|
16
16
|
$b8hua$onCleanup($b8hua$javascript_media_query(media_query, _ref => {
|
|
@@ -2210,8 +2210,10 @@ var $3e850b2f2cca761f$var$_tmpl$ = ["<button", ' type="button" class="', '"', ">
|
|
|
2210
2210
|
function $3e850b2f2cca761f$export$ca21a16d65b3dd8(_ref) {
|
|
2211
2211
|
let {
|
|
2212
2212
|
show_extras_: [get_show_extras, set_show_extras],
|
|
2213
|
-
i18n_: i18n_
|
|
2213
|
+
i18n_: i18n_,
|
|
2214
|
+
expanding_container_element_: expanding_container_element_
|
|
2214
2215
|
} = _ref;
|
|
2216
|
+
let button;
|
|
2215
2217
|
return $b8hua$ssr($3e850b2f2cca761f$var$_tmpl$, $b8hua$ssrHydrationKey(), "expand-filter ".concat(get_show_extras() ? "expanded" : ""), $b8hua$ssrAttribute("aria-expanded", $b8hua$escape(get_show_extras(), true), false), $b8hua$escape($b8hua$createComponent((0, $ff3225aef892a467$export$f21ab0717a89c77f), {})), get_show_extras() ? $b8hua$escape(i18n_.view_less_()) : $b8hua$escape(i18n_.view_more_()));
|
|
2216
2218
|
}
|
|
2217
2219
|
var $02b6641aa50ce528$var$_tmpl$ = ["<span", ' class="highlighted-part">', "</span>"],
|
|
@@ -2373,7 +2375,8 @@ function $133484ef10e4e954$export$dd948f91abc3a1c4(_ref) {
|
|
|
2373
2375
|
$b8hua$createRenderEffect(() => {
|
|
2374
2376
|
set_view_more_button_below_group_(togglable_rest() ? $b8hua$createComponent((0, $3e850b2f2cca761f$export$ca21a16d65b3dd8), {
|
|
2375
2377
|
show_extras_: show_extras_signal,
|
|
2376
|
-
i18n_: i18n_
|
|
2378
|
+
i18n_: i18n_,
|
|
2379
|
+
expanding_container_element_: expanding_container_els
|
|
2377
2380
|
}) : []);
|
|
2378
2381
|
});
|
|
2379
2382
|
$b8hua$onCleanup(() => set_view_more_button_below_group_());
|
|
@@ -3090,7 +3093,8 @@ function $0ae614c5c7babb43$export$a32086fa6616eafd(_ref) {
|
|
|
3090
3093
|
$b8hua$createRenderEffect(() => {
|
|
3091
3094
|
set_view_more_button_below_group(some_top_level_are_hidden() ? $b8hua$createComponent((0, $3e850b2f2cca761f$export$ca21a16d65b3dd8), {
|
|
3092
3095
|
show_extras_: show_extras,
|
|
3093
|
-
i18n_: i18n_
|
|
3096
|
+
i18n_: i18n_,
|
|
3097
|
+
expanding_container_element_: expanding_container_els
|
|
3094
3098
|
}) : []);
|
|
3095
3099
|
});
|
|
3096
3100
|
$b8hua$onCleanup(() => set_view_more_button_below_group());
|
|
@@ -3816,7 +3820,8 @@ function $2cb856c297c53e6c$export$82ed4b28ecb67608(_ref) {
|
|
|
3816
3820
|
$b8hua$createRenderEffect(() => {
|
|
3817
3821
|
set_view_more_button_below_group_(togglable_rest() ? $b8hua$createComponent((0, $3e850b2f2cca761f$export$ca21a16d65b3dd8), {
|
|
3818
3822
|
show_extras_: show_extras_signal,
|
|
3819
|
-
i18n_: i18n_
|
|
3823
|
+
i18n_: i18n_,
|
|
3824
|
+
expanding_container_element_: expanding_container_els
|
|
3820
3825
|
}) : []);
|
|
3821
3826
|
});
|
|
3822
3827
|
$b8hua$onCleanup(() => set_view_more_button_below_group_());
|
|
@@ -4899,8 +4904,8 @@ var $bce10e104a1dd893$var$_tmpl$ = ["<svg", ' xmlns="http://www.w3.org/2000/svg"
|
|
|
4899
4904
|
function $bce10e104a1dd893$export$cb808a3c41736d8e() {
|
|
4900
4905
|
return $b8hua$ssr($bce10e104a1dd893$var$_tmpl$, $b8hua$ssrHydrationKey());
|
|
4901
4906
|
}
|
|
4902
|
-
var $7396052a1484264f$var$_tmpl$ = ["<
|
|
4903
|
-
$7396052a1484264f$var$_tmpl$2 = ["<
|
|
4907
|
+
var $7396052a1484264f$var$_tmpl$ = ["<section", ' class="filters"', '><div class="body">', "</div></section>"],
|
|
4908
|
+
$7396052a1484264f$var$_tmpl$2 = ["<section", ' class="sorting"', '><div class="body">', "</div></section>"],
|
|
4904
4909
|
$7396052a1484264f$var$_tmpl$3 = ["<div", ' class="sort-and-filter-buttons"><div class="outer"><div class="inner"><!--$-->', "<!--/--><!--$-->", "<!--/--><!--$-->", "<!--/--></div></div></div>"],
|
|
4905
4910
|
$7396052a1484264f$var$_tmpl$4 = ["<span", ' class="num-filters" style="', '">', "</span>"],
|
|
4906
4911
|
$7396052a1484264f$var$_tmpl$5 = ["<div", ' class="open-filters-button-container" style="', '"><!--$-->', "<!--/--><button", ' class="', '" type="button"', ' style="', '"><!--$-->', "<!--/--><span>", "</span></button></div>"],
|
|
@@ -4977,6 +4982,27 @@ function $7396052a1484264f$export$d7841e452f2e59a8(_ref) {
|
|
|
4977
4982
|
available_sortings_: available_sortings_,
|
|
4978
4983
|
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_
|
|
4979
4984
|
};
|
|
4985
|
+
// Keyboard accessibility for the desktop panels (rendered after the product grid in the DOM): when the user
|
|
4986
|
+
// opens a panel we move focus into it, and restore focus to the toggle button on close. Intent is tracked with
|
|
4987
|
+
// a plain flag set in the buttons' click handlers - `filters_open`/`sorting_open` also change programmatically
|
|
4988
|
+
// (undo toast, history-state restore, SDK consumers), and those must not steal focus.
|
|
4989
|
+
let user_opened_panel = false;
|
|
4990
|
+
let filter_toggle_button;
|
|
4991
|
+
let sort_toggle_button;
|
|
4992
|
+
let current_panel;
|
|
4993
|
+
let current_panel_toggle_button;
|
|
4994
|
+
const focus_panel_when_in_dom = panel => $b8hua$catchify1(async () => {
|
|
4995
|
+
// Bounded wait: if the panel never lands in the DOM (e.g. it's superseded by a rapid re-render before
|
|
4996
|
+
// insertion), the timeout lets this promise resolve instead of keeping `panel` - and the observer
|
|
4997
|
+
// listener it registers - referenced forever.
|
|
4998
|
+
await (0, $b8hua$observer).wait_for_element(panel, 4000);
|
|
4999
|
+
if (panel.isConnected) panel.focus();
|
|
5000
|
+
})();
|
|
5001
|
+
const register_desktop_panel = (el, toggle_button, should_focus) => {
|
|
5002
|
+
current_panel = el;
|
|
5003
|
+
current_panel_toggle_button = toggle_button;
|
|
5004
|
+
if (should_focus) focus_panel_when_in_dom(el);
|
|
5005
|
+
};
|
|
4980
5006
|
const make_open_filters_button = function () {
|
|
4981
5007
|
let adhere_to_width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
4982
5008
|
let is_tabbable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
@@ -4987,7 +5013,9 @@ function $7396052a1484264f$export$d7841e452f2e59a8(_ref) {
|
|
|
4987
5013
|
search_sorting_open_: search_sorting_open_,
|
|
4988
5014
|
number_of_rendered_selected_filters_items_: number_of_rendered_selected_filters_items_,
|
|
4989
5015
|
filter_button_width_: adhere_to_width ? filter_button_width_ : undefined,
|
|
4990
|
-
hide_button_: hide_filters
|
|
5016
|
+
hide_button_: hide_filters,
|
|
5017
|
+
on_user_open_: () => user_opened_panel = true,
|
|
5018
|
+
button_ref_: is_tabbable ? el => filter_toggle_button = el : undefined
|
|
4991
5019
|
});
|
|
4992
5020
|
};
|
|
4993
5021
|
const make_open_sorting_button = function () {
|
|
@@ -5001,7 +5029,9 @@ function $7396052a1484264f$export$d7841e452f2e59a8(_ref) {
|
|
|
5001
5029
|
search_sorting_open_: search_sorting_open_,
|
|
5002
5030
|
available_sortings_: available_sortings_,
|
|
5003
5031
|
sort_button_width_: adhere_to_width ? sort_button_width_ : undefined,
|
|
5004
|
-
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_
|
|
5032
|
+
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_,
|
|
5033
|
+
on_user_open_: () => user_opened_panel = true,
|
|
5034
|
+
button_ref_: is_tabbable ? el => sort_toggle_button = el : undefined
|
|
5005
5035
|
});
|
|
5006
5036
|
};
|
|
5007
5037
|
let open_modal_;
|
|
@@ -5021,10 +5051,35 @@ function $7396052a1484264f$export$d7841e452f2e59a8(_ref) {
|
|
|
5021
5051
|
grid_is_in_original_state = true;
|
|
5022
5052
|
}
|
|
5023
5053
|
});
|
|
5054
|
+
// Restore focus to the relevant toggle button when a desktop panel is torn down while focus is still inside it.
|
|
5055
|
+
const restore_focus_to_toggle_on_close = () => {
|
|
5056
|
+
const button_to_restore = current_panel_toggle_button;
|
|
5057
|
+
const focus_was_in_panel = !!current_panel && current_panel.contains(document.activeElement);
|
|
5058
|
+
current_panel = undefined;
|
|
5059
|
+
current_panel_toggle_button = undefined;
|
|
5060
|
+
if (focus_was_in_panel) button_to_restore === null || button_to_restore === void 0 || button_to_restore.focus();
|
|
5061
|
+
};
|
|
5062
|
+
// `<section>` + `aria-label` so the panel announces itself ("Filters"/"Sort") when we move focus to it; the bare
|
|
5063
|
+
// tabindex=-1 container would otherwise give screen readers nothing to read on focus. A semantic <section> avoids
|
|
5064
|
+
// an ARIA role and the UA styling pitfalls of <fieldset>; the existing CSS targets the `.filters`/`.sorting` class.
|
|
5065
|
+
const FiltersPanel = should_focus => $b8hua$createComponent((0, $b8hua$Show), {
|
|
5066
|
+
get when() {
|
|
5067
|
+
return !hide_filters();
|
|
5068
|
+
},
|
|
5069
|
+
get children() {
|
|
5070
|
+
return $b8hua$ssr($7396052a1484264f$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$ssrAttribute("tabindex", -1, false) + $b8hua$ssrAttribute("aria-label", $b8hua$escape(i18n_.filters_(), true), false), $b8hua$escape($b8hua$createComponent((0, $f6b0500577e1b210$export$3f1a388cc0d8fed7), filter_options)));
|
|
5071
|
+
}
|
|
5072
|
+
});
|
|
5073
|
+
const SortingPanel = should_focus => $b8hua$ssr($7396052a1484264f$var$_tmpl$2, $b8hua$ssrHydrationKey(), $b8hua$ssrAttribute("tabindex", -1, false) + $b8hua$ssrAttribute("aria-label", $b8hua$escape(i18n_.sorting_text_(), true), false), $b8hua$escape($b8hua$createComponent((0, $cfdbd124dd09d713$export$1f1775a58da589b5), sorting_options)));
|
|
5024
5074
|
$b8hua$createEffect(() => {
|
|
5075
|
+
// Consume the user-intent flag once per run, in every branch, so a stale flag can't leak into a later
|
|
5076
|
+
// resize-triggered re-render and steal focus.
|
|
5077
|
+
const should_focus_panel = user_opened_panel;
|
|
5078
|
+
user_opened_panel = false;
|
|
5025
5079
|
if (!filters_open() && !sorting_open()) {
|
|
5026
5080
|
var _close_modal_;
|
|
5027
5081
|
(_close_modal_ = close_modal_) === null || _close_modal_ === void 0 || _close_modal_();
|
|
5082
|
+
restore_focus_to_toggle_on_close();
|
|
5028
5083
|
set_extra_els_in_results_container_("");
|
|
5029
5084
|
} else if (isSmall()()) {
|
|
5030
5085
|
var _open_modal_;
|
|
@@ -5034,19 +5089,15 @@ function $7396052a1484264f$export$d7841e452f2e59a8(_ref) {
|
|
|
5034
5089
|
set_sorting_open(false);
|
|
5035
5090
|
return;
|
|
5036
5091
|
}
|
|
5092
|
+
// The modal manages its own focus; just drop the desktop panel reference.
|
|
5093
|
+
current_panel = undefined;
|
|
5094
|
+
current_panel_toggle_button = undefined;
|
|
5037
5095
|
(_open_modal_ = open_modal_) === null || _open_modal_ === void 0 || _open_modal_();
|
|
5038
5096
|
set_extra_els_in_results_container_("");
|
|
5039
5097
|
} else {
|
|
5040
5098
|
var _close_modal_2;
|
|
5041
5099
|
(_close_modal_2 = close_modal_) === null || _close_modal_2 === void 0 || _close_modal_2();
|
|
5042
|
-
if (filters_open()) set_extra_els_in_results_container_(() =>
|
|
5043
|
-
get when() {
|
|
5044
|
-
return !hide_filters();
|
|
5045
|
-
},
|
|
5046
|
-
get children() {
|
|
5047
|
-
return $b8hua$ssr($7396052a1484264f$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$escape($b8hua$createComponent((0, $f6b0500577e1b210$export$3f1a388cc0d8fed7), filter_options)));
|
|
5048
|
-
}
|
|
5049
|
-
}));else set_extra_els_in_results_container_($b8hua$ssr($7396052a1484264f$var$_tmpl$2, $b8hua$ssrHydrationKey(), $b8hua$escape($b8hua$createComponent((0, $cfdbd124dd09d713$export$1f1775a58da589b5), sorting_options))));
|
|
5100
|
+
if (filters_open()) set_extra_els_in_results_container_(() => FiltersPanel(should_focus_panel));else set_extra_els_in_results_container_(SortingPanel(should_focus_panel));
|
|
5050
5101
|
}
|
|
5051
5102
|
});
|
|
5052
5103
|
$b8hua$catchify1(async () => {
|
|
@@ -5097,7 +5148,9 @@ function $7396052a1484264f$var$OpenFiltersButton(_ref3) {
|
|
|
5097
5148
|
filter_button_width_: filter_button_width_,
|
|
5098
5149
|
tabindex_: tabindex_,
|
|
5099
5150
|
number_of_rendered_selected_filters_items_: [num_selected_filters],
|
|
5100
|
-
hide_button_: hide_button_
|
|
5151
|
+
hide_button_: hide_button_,
|
|
5152
|
+
on_user_open_: on_user_open_,
|
|
5153
|
+
button_ref_: button_ref_
|
|
5101
5154
|
} = _ref3;
|
|
5102
5155
|
const filters_closed = $b8hua$createMemo(() => !search_filters_open_[0]());
|
|
5103
5156
|
// We assume in embedded_num_products that this is a single HTMLElement so pls change there if you change it here
|
|
@@ -5110,7 +5163,7 @@ function $7396052a1484264f$var$OpenFiltersButton(_ref3) {
|
|
|
5110
5163
|
get children() {
|
|
5111
5164
|
return $b8hua$ssr($7396052a1484264f$var$_tmpl$4, $b8hua$ssrHydrationKey(), $b8hua$ssrStyle(filters_closed() ? "" : "opacity:0"), $b8hua$escape(num_selected_filters()));
|
|
5112
5165
|
}
|
|
5113
|
-
})), $b8hua$ssrAttribute("tabindex", $b8hua$escape(tabindex_, true), false), "".concat(!filters_closed() ? "major" : "", " ").concat(filters_closed() ? "minor" : "").concat("filter toggle-button major-minor-transition" + ((0, $b8hua$isServer) ? " minor" : "")), $b8hua$ssrAttribute("aria-label", $b8hua$escape((filters_closed() ? i18n_.open_filters_ : i18n_.close_filters_)(), true), false), $b8hua$ssrStyle(filter_button_width_ !== null && filter_button_width_ !== void 0 && filter_button_width_() ? {
|
|
5166
|
+
})), $b8hua$ssrAttribute("tabindex", $b8hua$escape(tabindex_, true), false), "".concat(!filters_closed() ? "major" : "", " ").concat(filters_closed() ? "minor" : "").concat("filter toggle-button major-minor-transition" + ((0, $b8hua$isServer) ? " minor" : "")), $b8hua$ssrAttribute("aria-label", $b8hua$escape((filters_closed() ? i18n_.open_filters_ : i18n_.close_filters_)(), true), false) + $b8hua$ssrAttribute("aria-expanded", !filters_closed(), false), $b8hua$ssrStyle(filter_button_width_ !== null && filter_button_width_ !== void 0 && filter_button_width_() ? {
|
|
5114
5167
|
width: filter_button_width_() + "px"
|
|
5115
5168
|
} : {}), $b8hua$escape($b8hua$createComponent((0, $b8hua$Show), {
|
|
5116
5169
|
get when() {
|
|
@@ -5134,11 +5187,13 @@ function $7396052a1484264f$var$OpenSortingButton(_ref4) {
|
|
|
5134
5187
|
search_sorting_open_: search_sorting_open_,
|
|
5135
5188
|
sort_button_width_: sort_button_width_,
|
|
5136
5189
|
tabindex_: tabindex_,
|
|
5137
|
-
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_
|
|
5190
|
+
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_,
|
|
5191
|
+
on_user_open_: on_user_open_,
|
|
5192
|
+
button_ref_: button_ref_
|
|
5138
5193
|
} = _ref4;
|
|
5139
5194
|
const sorting_closed = $b8hua$createMemo(() => !search_sorting_open_[0]());
|
|
5140
5195
|
// We assume in embedded_num_products that this is a single HTMLElement so pls change there if you change it here
|
|
5141
|
-
return $b8hua$ssr($7396052a1484264f$var$_tmpl$6, $b8hua$ssrHydrationKey(), "".concat(!sorting_closed() ? "major" : "", " ").concat(sorting_closed() ? "minor" : "", " toggle-button for-sorting major-minor-transition"), $b8hua$ssrAttribute("tabindex", $b8hua$escape(tabindex_, true), false) + $b8hua$ssrAttribute("aria-label", $b8hua$escape((sorting_closed() ? i18n_.open_sorting_ : i18n_.close_sorting_)(), true), false), $b8hua$ssrStyle(sort_button_width_ !== null && sort_button_width_ !== void 0 && sort_button_width_() ? {
|
|
5196
|
+
return $b8hua$ssr($7396052a1484264f$var$_tmpl$6, $b8hua$ssrHydrationKey(), "".concat(!sorting_closed() ? "major" : "", " ").concat(sorting_closed() ? "minor" : "", " toggle-button for-sorting major-minor-transition"), $b8hua$ssrAttribute("tabindex", $b8hua$escape(tabindex_, true), false) + $b8hua$ssrAttribute("aria-label", $b8hua$escape((sorting_closed() ? i18n_.open_sorting_ : i18n_.close_sorting_)(), true), false) + $b8hua$ssrAttribute("aria-expanded", !sorting_closed(), false), $b8hua$ssrStyle(sort_button_width_ !== null && sort_button_width_ !== void 0 && sort_button_width_() ? {
|
|
5142
5197
|
width: sort_button_width_() + "px"
|
|
5143
5198
|
} : {}),
|
|
5144
5199
|
// Show the title of the currently selected sorting when the sorting is closed, if there's currently a sorting selected
|
package/server/latest/index.cjs
CHANGED
|
@@ -109,7 +109,7 @@ $parcel$export(module.exports, "BreadCrumbs", () => $1f4925833f07df29$export$5b7
|
|
|
109
109
|
$parcel$export(module.exports, "QuickLinks", () => $1f4925833f07df29$export$de035477d6fef996);
|
|
110
110
|
$parcel$export(module.exports, "CategoryPage", () => $14f289047713d67a$export$e2bf8ce7779e827e);
|
|
111
111
|
/*! Depict.ai search and product listing SDK */
|
|
112
|
-
const $b757f75811f3261f$export$83d89fbfd8236492 = "4.10.
|
|
112
|
+
const $b757f75811f3261f$export$83d89fbfd8236492 = "4.10.14";
|
|
113
113
|
function $b54e6192d0caa293$export$d9f36cf74e24d595(media_query) {
|
|
114
114
|
const signal = $5vyXB$solidjs.createSignal(false);
|
|
115
115
|
$5vyXB$solidjs.onCleanup($5vyXB$depictaiutilishared.javascript_media_query(media_query, ({
|
|
@@ -2213,8 +2213,10 @@ function $cc43b6428000c4bf$export$f21ab0717a89c77f(props) {
|
|
|
2213
2213
|
var $0fe1e7efdf4200d6$var$_tmpl$ = ["<button", ' type="button" class="', '"', "><!--$-->", "<!--/--><span>", "</span></button>"];
|
|
2214
2214
|
function $0fe1e7efdf4200d6$export$ca21a16d65b3dd8({
|
|
2215
2215
|
show_extras_: [get_show_extras, set_show_extras],
|
|
2216
|
-
i18n_: i18n_
|
|
2216
|
+
i18n_: i18n_,
|
|
2217
|
+
expanding_container_element_: expanding_container_element_
|
|
2217
2218
|
}) {
|
|
2219
|
+
let button;
|
|
2218
2220
|
return $5vyXB$solidjsweb.ssr($0fe1e7efdf4200d6$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), `expand-filter ${get_show_extras() ? "expanded" : ""}`, $5vyXB$solidjsweb.ssrAttribute("aria-expanded", $5vyXB$solidjsweb.escape(get_show_extras(), true), false), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $cc43b6428000c4bf$export$f21ab0717a89c77f), {})), get_show_extras() ? $5vyXB$solidjsweb.escape(i18n_.view_less_()) : $5vyXB$solidjsweb.escape(i18n_.view_more_()));
|
|
2219
2221
|
}
|
|
2220
2222
|
var $d023ed916c84e75d$var$_tmpl$ = ["<span", ' class="highlighted-part">', "</span>"],
|
|
@@ -2367,7 +2369,8 @@ function $d94869c80e337a3d$export$dd948f91abc3a1c4({
|
|
|
2367
2369
|
$5vyXB$solidjs.createRenderEffect(() => {
|
|
2368
2370
|
set_view_more_button_below_group_(togglable_rest() ? $5vyXB$solidjsweb.createComponent((0, $0fe1e7efdf4200d6$export$ca21a16d65b3dd8), {
|
|
2369
2371
|
show_extras_: show_extras_signal,
|
|
2370
|
-
i18n_: i18n_
|
|
2372
|
+
i18n_: i18n_,
|
|
2373
|
+
expanding_container_element_: expanding_container_els
|
|
2371
2374
|
}) : []);
|
|
2372
2375
|
});
|
|
2373
2376
|
$5vyXB$solidjs.onCleanup(() => set_view_more_button_below_group_());
|
|
@@ -3044,7 +3047,8 @@ function $3bdc00a1353c1150$export$a32086fa6616eafd({
|
|
|
3044
3047
|
$5vyXB$solidjs.createRenderEffect(() => {
|
|
3045
3048
|
set_view_more_button_below_group(some_top_level_are_hidden() ? $5vyXB$solidjsweb.createComponent((0, $0fe1e7efdf4200d6$export$ca21a16d65b3dd8), {
|
|
3046
3049
|
show_extras_: show_extras,
|
|
3047
|
-
i18n_: i18n_
|
|
3050
|
+
i18n_: i18n_,
|
|
3051
|
+
expanding_container_element_: expanding_container_els
|
|
3048
3052
|
}) : []);
|
|
3049
3053
|
});
|
|
3050
3054
|
$5vyXB$solidjs.onCleanup(() => set_view_more_button_below_group());
|
|
@@ -3709,7 +3713,8 @@ function $b51a2b8b9355e66c$export$82ed4b28ecb67608({
|
|
|
3709
3713
|
$5vyXB$solidjs.createRenderEffect(() => {
|
|
3710
3714
|
set_view_more_button_below_group_(togglable_rest() ? $5vyXB$solidjsweb.createComponent((0, $0fe1e7efdf4200d6$export$ca21a16d65b3dd8), {
|
|
3711
3715
|
show_extras_: show_extras_signal,
|
|
3712
|
-
i18n_: i18n_
|
|
3716
|
+
i18n_: i18n_,
|
|
3717
|
+
expanding_container_element_: expanding_container_els
|
|
3713
3718
|
}) : []);
|
|
3714
3719
|
});
|
|
3715
3720
|
$5vyXB$solidjs.onCleanup(() => set_view_more_button_below_group_());
|
|
@@ -4708,8 +4713,8 @@ var $f49857214f7675b1$var$_tmpl$ = ["<svg", ' xmlns="http://www.w3.org/2000/svg"
|
|
|
4708
4713
|
function $f49857214f7675b1$export$cb808a3c41736d8e() {
|
|
4709
4714
|
return $5vyXB$solidjsweb.ssr($f49857214f7675b1$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey());
|
|
4710
4715
|
}
|
|
4711
|
-
var $f8f64d05c525825b$var$_tmpl$ = ["<
|
|
4712
|
-
$f8f64d05c525825b$var$_tmpl$2 = ["<
|
|
4716
|
+
var $f8f64d05c525825b$var$_tmpl$ = ["<section", ' class="filters"', '><div class="body">', "</div></section>"],
|
|
4717
|
+
$f8f64d05c525825b$var$_tmpl$2 = ["<section", ' class="sorting"', '><div class="body">', "</div></section>"],
|
|
4713
4718
|
$f8f64d05c525825b$var$_tmpl$3 = ["<div", ' class="sort-and-filter-buttons"><div class="outer"><div class="inner"><!--$-->', "<!--/--><!--$-->", "<!--/--><!--$-->", "<!--/--></div></div></div>"],
|
|
4714
4719
|
$f8f64d05c525825b$var$_tmpl$4 = ["<span", ' class="num-filters" style="', '">', "</span>"],
|
|
4715
4720
|
$f8f64d05c525825b$var$_tmpl$5 = ["<div", ' class="open-filters-button-container" style="', '"><!--$-->', "<!--/--><button", ' class="', '" type="button"', ' style="', '"><!--$-->', "<!--/--><span>", "</span></button></div>"],
|
|
@@ -4778,6 +4783,27 @@ function $f8f64d05c525825b$export$d7841e452f2e59a8({
|
|
|
4778
4783
|
available_sortings_: available_sortings_,
|
|
4779
4784
|
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_
|
|
4780
4785
|
};
|
|
4786
|
+
// Keyboard accessibility for the desktop panels (rendered after the product grid in the DOM): when the user
|
|
4787
|
+
// opens a panel we move focus into it, and restore focus to the toggle button on close. Intent is tracked with
|
|
4788
|
+
// a plain flag set in the buttons' click handlers - `filters_open`/`sorting_open` also change programmatically
|
|
4789
|
+
// (undo toast, history-state restore, SDK consumers), and those must not steal focus.
|
|
4790
|
+
let user_opened_panel = false;
|
|
4791
|
+
let filter_toggle_button;
|
|
4792
|
+
let sort_toggle_button;
|
|
4793
|
+
let current_panel;
|
|
4794
|
+
let current_panel_toggle_button;
|
|
4795
|
+
const focus_panel_when_in_dom = panel => $5vyXB$depictaiutilishared.catchify(async () => {
|
|
4796
|
+
// Bounded wait: if the panel never lands in the DOM (e.g. it's superseded by a rapid re-render before
|
|
4797
|
+
// insertion), the timeout lets this promise resolve instead of keeping `panel` - and the observer
|
|
4798
|
+
// listener it registers - referenced forever.
|
|
4799
|
+
await (0, $5vyXB$depictaiutilishared.observer).wait_for_element(panel, 4000);
|
|
4800
|
+
if (panel.isConnected) panel.focus();
|
|
4801
|
+
})();
|
|
4802
|
+
const register_desktop_panel = (el, toggle_button, should_focus) => {
|
|
4803
|
+
current_panel = el;
|
|
4804
|
+
current_panel_toggle_button = toggle_button;
|
|
4805
|
+
if (should_focus) focus_panel_when_in_dom(el);
|
|
4806
|
+
};
|
|
4781
4807
|
const make_open_filters_button = (adhere_to_width = false, is_tabbable = false) => $5vyXB$solidjsweb.createComponent($f8f64d05c525825b$var$OpenFiltersButton, {
|
|
4782
4808
|
tabindex_: is_tabbable ? 0 : -1,
|
|
4783
4809
|
i18n_: i18n_,
|
|
@@ -4785,7 +4811,9 @@ function $f8f64d05c525825b$export$d7841e452f2e59a8({
|
|
|
4785
4811
|
search_sorting_open_: search_sorting_open_,
|
|
4786
4812
|
number_of_rendered_selected_filters_items_: number_of_rendered_selected_filters_items_,
|
|
4787
4813
|
filter_button_width_: adhere_to_width ? filter_button_width_ : undefined,
|
|
4788
|
-
hide_button_: hide_filters
|
|
4814
|
+
hide_button_: hide_filters,
|
|
4815
|
+
on_user_open_: () => user_opened_panel = true,
|
|
4816
|
+
button_ref_: is_tabbable ? el => filter_toggle_button = el : undefined
|
|
4789
4817
|
});
|
|
4790
4818
|
const make_open_sorting_button = (adhere_to_width = false, is_tabbable = false) => $5vyXB$solidjsweb.createComponent($f8f64d05c525825b$var$OpenSortingButton, {
|
|
4791
4819
|
tabindex_: is_tabbable ? 0 : -1,
|
|
@@ -4795,7 +4823,9 @@ function $f8f64d05c525825b$export$d7841e452f2e59a8({
|
|
|
4795
4823
|
search_sorting_open_: search_sorting_open_,
|
|
4796
4824
|
available_sortings_: available_sortings_,
|
|
4797
4825
|
sort_button_width_: adhere_to_width ? sort_button_width_ : undefined,
|
|
4798
|
-
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_
|
|
4826
|
+
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_,
|
|
4827
|
+
on_user_open_: () => user_opened_panel = true,
|
|
4828
|
+
button_ref_: is_tabbable ? el => sort_toggle_button = el : undefined
|
|
4799
4829
|
});
|
|
4800
4830
|
let open_modal_;
|
|
4801
4831
|
let close_modal_;
|
|
@@ -4814,9 +4844,34 @@ function $f8f64d05c525825b$export$d7841e452f2e59a8({
|
|
|
4814
4844
|
grid_is_in_original_state = true;
|
|
4815
4845
|
}
|
|
4816
4846
|
});
|
|
4847
|
+
// Restore focus to the relevant toggle button when a desktop panel is torn down while focus is still inside it.
|
|
4848
|
+
const restore_focus_to_toggle_on_close = () => {
|
|
4849
|
+
const button_to_restore = current_panel_toggle_button;
|
|
4850
|
+
const focus_was_in_panel = !!current_panel && current_panel.contains(document.activeElement);
|
|
4851
|
+
current_panel = undefined;
|
|
4852
|
+
current_panel_toggle_button = undefined;
|
|
4853
|
+
if (focus_was_in_panel) button_to_restore?.focus();
|
|
4854
|
+
};
|
|
4855
|
+
// `<section>` + `aria-label` so the panel announces itself ("Filters"/"Sort") when we move focus to it; the bare
|
|
4856
|
+
// tabindex=-1 container would otherwise give screen readers nothing to read on focus. A semantic <section> avoids
|
|
4857
|
+
// an ARIA role and the UA styling pitfalls of <fieldset>; the existing CSS targets the `.filters`/`.sorting` class.
|
|
4858
|
+
const FiltersPanel = should_focus => $5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.Show), {
|
|
4859
|
+
get when() {
|
|
4860
|
+
return !hide_filters();
|
|
4861
|
+
},
|
|
4862
|
+
get children() {
|
|
4863
|
+
return $5vyXB$solidjsweb.ssr($f8f64d05c525825b$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.ssrAttribute("tabindex", -1, false) + $5vyXB$solidjsweb.ssrAttribute("aria-label", $5vyXB$solidjsweb.escape(i18n_.filters_(), true), false), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $aff9a96d30ed3563$export$3f1a388cc0d8fed7), filter_options)));
|
|
4864
|
+
}
|
|
4865
|
+
});
|
|
4866
|
+
const SortingPanel = should_focus => $5vyXB$solidjsweb.ssr($f8f64d05c525825b$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.ssrAttribute("tabindex", -1, false) + $5vyXB$solidjsweb.ssrAttribute("aria-label", $5vyXB$solidjsweb.escape(i18n_.sorting_text_(), true), false), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $be89be42ce9ea60f$export$1f1775a58da589b5), sorting_options)));
|
|
4817
4867
|
$5vyXB$solidjs.createEffect(() => {
|
|
4868
|
+
// Consume the user-intent flag once per run, in every branch, so a stale flag can't leak into a later
|
|
4869
|
+
// resize-triggered re-render and steal focus.
|
|
4870
|
+
const should_focus_panel = user_opened_panel;
|
|
4871
|
+
user_opened_panel = false;
|
|
4818
4872
|
if (!filters_open() && !sorting_open()) {
|
|
4819
4873
|
close_modal_?.();
|
|
4874
|
+
restore_focus_to_toggle_on_close();
|
|
4820
4875
|
set_extra_els_in_results_container_("");
|
|
4821
4876
|
} else if (isSmall()()) {
|
|
4822
4877
|
if ($5vyXB$solidjs.untrack(() => input_modal_open_?.())) {
|
|
@@ -4825,18 +4880,14 @@ function $f8f64d05c525825b$export$d7841e452f2e59a8({
|
|
|
4825
4880
|
set_sorting_open(false);
|
|
4826
4881
|
return;
|
|
4827
4882
|
}
|
|
4883
|
+
// The modal manages its own focus; just drop the desktop panel reference.
|
|
4884
|
+
current_panel = undefined;
|
|
4885
|
+
current_panel_toggle_button = undefined;
|
|
4828
4886
|
open_modal_?.();
|
|
4829
4887
|
set_extra_els_in_results_container_("");
|
|
4830
4888
|
} else {
|
|
4831
4889
|
close_modal_?.();
|
|
4832
|
-
if (filters_open()) set_extra_els_in_results_container_(() =>
|
|
4833
|
-
get when() {
|
|
4834
|
-
return !hide_filters();
|
|
4835
|
-
},
|
|
4836
|
-
get children() {
|
|
4837
|
-
return $5vyXB$solidjsweb.ssr($f8f64d05c525825b$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $aff9a96d30ed3563$export$3f1a388cc0d8fed7), filter_options)));
|
|
4838
|
-
}
|
|
4839
|
-
}));else set_extra_els_in_results_container_($5vyXB$solidjsweb.ssr($f8f64d05c525825b$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $be89be42ce9ea60f$export$1f1775a58da589b5), sorting_options))));
|
|
4890
|
+
if (filters_open()) set_extra_els_in_results_container_(() => FiltersPanel(should_focus_panel));else set_extra_els_in_results_container_(SortingPanel(should_focus_panel));
|
|
4840
4891
|
}
|
|
4841
4892
|
});
|
|
4842
4893
|
$5vyXB$depictaiutilishared.catchify(async () => {
|
|
@@ -4886,7 +4937,9 @@ function $f8f64d05c525825b$var$OpenFiltersButton({
|
|
|
4886
4937
|
filter_button_width_: filter_button_width_,
|
|
4887
4938
|
tabindex_: tabindex_,
|
|
4888
4939
|
number_of_rendered_selected_filters_items_: [num_selected_filters],
|
|
4889
|
-
hide_button_: hide_button_
|
|
4940
|
+
hide_button_: hide_button_,
|
|
4941
|
+
on_user_open_: on_user_open_,
|
|
4942
|
+
button_ref_: button_ref_
|
|
4890
4943
|
}) {
|
|
4891
4944
|
const filters_closed = $5vyXB$solidjs.createMemo(() => !search_filters_open_[0]());
|
|
4892
4945
|
// We assume in embedded_num_products that this is a single HTMLElement so pls change there if you change it here
|
|
@@ -4899,7 +4952,7 @@ function $f8f64d05c525825b$var$OpenFiltersButton({
|
|
|
4899
4952
|
get children() {
|
|
4900
4953
|
return $5vyXB$solidjsweb.ssr($f8f64d05c525825b$var$_tmpl$4, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.ssrStyle(filters_closed() ? `` : `opacity:0`), $5vyXB$solidjsweb.escape(num_selected_filters()));
|
|
4901
4954
|
}
|
|
4902
|
-
})), $5vyXB$solidjsweb.ssrAttribute("tabindex", $5vyXB$solidjsweb.escape(tabindex_, true), false), `${!filters_closed() ? "major" : ""} ${filters_closed() ? "minor" : ""} ${"filter toggle-button major-minor-transition" + ((0, $5vyXB$solidjsweb.isServer) ? " minor" : "")}`, $5vyXB$solidjsweb.ssrAttribute("aria-label", $5vyXB$solidjsweb.escape((filters_closed() ? i18n_.open_filters_ : i18n_.close_filters_)(), true), false), $5vyXB$solidjsweb.ssrStyle(filter_button_width_?.() ? {
|
|
4955
|
+
})), $5vyXB$solidjsweb.ssrAttribute("tabindex", $5vyXB$solidjsweb.escape(tabindex_, true), false), `${!filters_closed() ? "major" : ""} ${filters_closed() ? "minor" : ""} ${"filter toggle-button major-minor-transition" + ((0, $5vyXB$solidjsweb.isServer) ? " minor" : "")}`, $5vyXB$solidjsweb.ssrAttribute("aria-label", $5vyXB$solidjsweb.escape((filters_closed() ? i18n_.open_filters_ : i18n_.close_filters_)(), true), false) + $5vyXB$solidjsweb.ssrAttribute("aria-expanded", !filters_closed(), false), $5vyXB$solidjsweb.ssrStyle(filter_button_width_?.() ? {
|
|
4903
4956
|
width: filter_button_width_() + "px"
|
|
4904
4957
|
} : {}), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.Show), {
|
|
4905
4958
|
get when() {
|
|
@@ -4921,11 +4974,13 @@ function $f8f64d05c525825b$var$OpenSortingButton({
|
|
|
4921
4974
|
search_sorting_open_: search_sorting_open_,
|
|
4922
4975
|
sort_button_width_: sort_button_width_,
|
|
4923
4976
|
tabindex_: tabindex_,
|
|
4924
|
-
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_
|
|
4977
|
+
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_,
|
|
4978
|
+
on_user_open_: on_user_open_,
|
|
4979
|
+
button_ref_: button_ref_
|
|
4925
4980
|
}) {
|
|
4926
4981
|
const sorting_closed = $5vyXB$solidjs.createMemo(() => !search_sorting_open_[0]());
|
|
4927
4982
|
// We assume in embedded_num_products that this is a single HTMLElement so pls change there if you change it here
|
|
4928
|
-
return $5vyXB$solidjsweb.ssr($f8f64d05c525825b$var$_tmpl$6, $5vyXB$solidjsweb.ssrHydrationKey(), `${!sorting_closed() ? "major" : ""} ${sorting_closed() ? "minor" : ""} toggle-button for-sorting major-minor-transition`, $5vyXB$solidjsweb.ssrAttribute("tabindex", $5vyXB$solidjsweb.escape(tabindex_, true), false) + $5vyXB$solidjsweb.ssrAttribute("aria-label", $5vyXB$solidjsweb.escape((sorting_closed() ? i18n_.open_sorting_ : i18n_.close_sorting_)(), true), false), $5vyXB$solidjsweb.ssrStyle(sort_button_width_?.() ? {
|
|
4983
|
+
return $5vyXB$solidjsweb.ssr($f8f64d05c525825b$var$_tmpl$6, $5vyXB$solidjsweb.ssrHydrationKey(), `${!sorting_closed() ? "major" : ""} ${sorting_closed() ? "minor" : ""} toggle-button for-sorting major-minor-transition`, $5vyXB$solidjsweb.ssrAttribute("tabindex", $5vyXB$solidjsweb.escape(tabindex_, true), false) + $5vyXB$solidjsweb.ssrAttribute("aria-label", $5vyXB$solidjsweb.escape((sorting_closed() ? i18n_.open_sorting_ : i18n_.close_sorting_)(), true), false) + $5vyXB$solidjsweb.ssrAttribute("aria-expanded", !sorting_closed(), false), $5vyXB$solidjsweb.ssrStyle(sort_button_width_?.() ? {
|
|
4929
4984
|
width: sort_button_width_() + "px"
|
|
4930
4985
|
} : {}),
|
|
4931
4986
|
// Show the title of the currently selected sorting when the sorting is closed, if there's currently a sorting selected
|
package/server/latest/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ import { GetListingRequest } from "@depict-ai/types/api/GetListingRequest";
|
|
|
11
11
|
import { BaseSearchRequestV3 } from "@depict-ai/types/api/BaseSearchRequestV3";
|
|
12
12
|
import { FeaturedInDisplay } from "@depict-ai/types/api/FeaturedInResponseV3";
|
|
13
13
|
import { SearchFilter as _SearchFilter3 } from "@depict-ai/types/api/SearchRequestV2";
|
|
14
|
-
export const version = "4.10.
|
|
14
|
+
export const version = "4.10.14";
|
|
15
15
|
/**
|
|
16
16
|
* Use `javascript_media_query` but return a reactive accessor instead of taking a callback function
|
|
17
17
|
*/
|
package/server/latest/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import { createStore as $i7OB2$createStore, reconcile as $i7OB2$reconcile } from
|
|
|
7
7
|
/*! Depict.ai search and product listing SDK */
|
|
8
8
|
import { register_es_version } from "../../multi_import_deduplicator.mjs";
|
|
9
9
|
register_es_version("ui", "latest");
|
|
10
|
-
const $ec291e0010116877$export$83d89fbfd8236492 = "4.10.
|
|
10
|
+
const $ec291e0010116877$export$83d89fbfd8236492 = "4.10.14";
|
|
11
11
|
function $dc9262ef6f786812$export$d9f36cf74e24d595(media_query) {
|
|
12
12
|
const signal = $i7OB2$createSignal(false);
|
|
13
13
|
$i7OB2$onCleanup($i7OB2$javascript_media_query(media_query, ({
|
|
@@ -2111,8 +2111,10 @@ function $f8a56ba74eedd0c6$export$f21ab0717a89c77f(props) {
|
|
|
2111
2111
|
var $67b173f9db427028$var$_tmpl$ = ["<button", ' type="button" class="', '"', "><!--$-->", "<!--/--><span>", "</span></button>"];
|
|
2112
2112
|
function $67b173f9db427028$export$ca21a16d65b3dd8({
|
|
2113
2113
|
show_extras_: [get_show_extras, set_show_extras],
|
|
2114
|
-
i18n_: i18n_
|
|
2114
|
+
i18n_: i18n_,
|
|
2115
|
+
expanding_container_element_: expanding_container_element_
|
|
2115
2116
|
}) {
|
|
2117
|
+
let button;
|
|
2116
2118
|
return $i7OB2$ssr($67b173f9db427028$var$_tmpl$, $i7OB2$ssrHydrationKey(), `expand-filter ${get_show_extras() ? "expanded" : ""}`, $i7OB2$ssrAttribute("aria-expanded", $i7OB2$escape(get_show_extras(), true), false), $i7OB2$escape($i7OB2$createComponent((0, $f8a56ba74eedd0c6$export$f21ab0717a89c77f), {})), get_show_extras() ? $i7OB2$escape(i18n_.view_less_()) : $i7OB2$escape(i18n_.view_more_()));
|
|
2117
2119
|
}
|
|
2118
2120
|
var $f3213c0640246d58$var$_tmpl$ = ["<span", ' class="highlighted-part">', "</span>"],
|
|
@@ -2265,7 +2267,8 @@ function $a4601e6bea3ed1e6$export$dd948f91abc3a1c4({
|
|
|
2265
2267
|
$i7OB2$createRenderEffect(() => {
|
|
2266
2268
|
set_view_more_button_below_group_(togglable_rest() ? $i7OB2$createComponent((0, $67b173f9db427028$export$ca21a16d65b3dd8), {
|
|
2267
2269
|
show_extras_: show_extras_signal,
|
|
2268
|
-
i18n_: i18n_
|
|
2270
|
+
i18n_: i18n_,
|
|
2271
|
+
expanding_container_element_: expanding_container_els
|
|
2269
2272
|
}) : []);
|
|
2270
2273
|
});
|
|
2271
2274
|
$i7OB2$onCleanup(() => set_view_more_button_below_group_());
|
|
@@ -2942,7 +2945,8 @@ function $1c8cac76cb67e9af$export$a32086fa6616eafd({
|
|
|
2942
2945
|
$i7OB2$createRenderEffect(() => {
|
|
2943
2946
|
set_view_more_button_below_group(some_top_level_are_hidden() ? $i7OB2$createComponent((0, $67b173f9db427028$export$ca21a16d65b3dd8), {
|
|
2944
2947
|
show_extras_: show_extras,
|
|
2945
|
-
i18n_: i18n_
|
|
2948
|
+
i18n_: i18n_,
|
|
2949
|
+
expanding_container_element_: expanding_container_els
|
|
2946
2950
|
}) : []);
|
|
2947
2951
|
});
|
|
2948
2952
|
$i7OB2$onCleanup(() => set_view_more_button_below_group());
|
|
@@ -3607,7 +3611,8 @@ function $e731d52d97444b7c$export$82ed4b28ecb67608({
|
|
|
3607
3611
|
$i7OB2$createRenderEffect(() => {
|
|
3608
3612
|
set_view_more_button_below_group_(togglable_rest() ? $i7OB2$createComponent((0, $67b173f9db427028$export$ca21a16d65b3dd8), {
|
|
3609
3613
|
show_extras_: show_extras_signal,
|
|
3610
|
-
i18n_: i18n_
|
|
3614
|
+
i18n_: i18n_,
|
|
3615
|
+
expanding_container_element_: expanding_container_els
|
|
3611
3616
|
}) : []);
|
|
3612
3617
|
});
|
|
3613
3618
|
$i7OB2$onCleanup(() => set_view_more_button_below_group_());
|
|
@@ -4606,8 +4611,8 @@ var $11d594c749b76228$var$_tmpl$ = ["<svg", ' xmlns="http://www.w3.org/2000/svg"
|
|
|
4606
4611
|
function $11d594c749b76228$export$cb808a3c41736d8e() {
|
|
4607
4612
|
return $i7OB2$ssr($11d594c749b76228$var$_tmpl$, $i7OB2$ssrHydrationKey());
|
|
4608
4613
|
}
|
|
4609
|
-
var $cdea4cf8c5c071ef$var$_tmpl$ = ["<
|
|
4610
|
-
$cdea4cf8c5c071ef$var$_tmpl$2 = ["<
|
|
4614
|
+
var $cdea4cf8c5c071ef$var$_tmpl$ = ["<section", ' class="filters"', '><div class="body">', "</div></section>"],
|
|
4615
|
+
$cdea4cf8c5c071ef$var$_tmpl$2 = ["<section", ' class="sorting"', '><div class="body">', "</div></section>"],
|
|
4611
4616
|
$cdea4cf8c5c071ef$var$_tmpl$3 = ["<div", ' class="sort-and-filter-buttons"><div class="outer"><div class="inner"><!--$-->', "<!--/--><!--$-->", "<!--/--><!--$-->", "<!--/--></div></div></div>"],
|
|
4612
4617
|
$cdea4cf8c5c071ef$var$_tmpl$4 = ["<span", ' class="num-filters" style="', '">', "</span>"],
|
|
4613
4618
|
$cdea4cf8c5c071ef$var$_tmpl$5 = ["<div", ' class="open-filters-button-container" style="', '"><!--$-->', "<!--/--><button", ' class="', '" type="button"', ' style="', '"><!--$-->', "<!--/--><span>", "</span></button></div>"],
|
|
@@ -4676,6 +4681,27 @@ function $cdea4cf8c5c071ef$export$d7841e452f2e59a8({
|
|
|
4676
4681
|
available_sortings_: available_sortings_,
|
|
4677
4682
|
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_
|
|
4678
4683
|
};
|
|
4684
|
+
// Keyboard accessibility for the desktop panels (rendered after the product grid in the DOM): when the user
|
|
4685
|
+
// opens a panel we move focus into it, and restore focus to the toggle button on close. Intent is tracked with
|
|
4686
|
+
// a plain flag set in the buttons' click handlers - `filters_open`/`sorting_open` also change programmatically
|
|
4687
|
+
// (undo toast, history-state restore, SDK consumers), and those must not steal focus.
|
|
4688
|
+
let user_opened_panel = false;
|
|
4689
|
+
let filter_toggle_button;
|
|
4690
|
+
let sort_toggle_button;
|
|
4691
|
+
let current_panel;
|
|
4692
|
+
let current_panel_toggle_button;
|
|
4693
|
+
const focus_panel_when_in_dom = panel => $i7OB2$catchify1(async () => {
|
|
4694
|
+
// Bounded wait: if the panel never lands in the DOM (e.g. it's superseded by a rapid re-render before
|
|
4695
|
+
// insertion), the timeout lets this promise resolve instead of keeping `panel` - and the observer
|
|
4696
|
+
// listener it registers - referenced forever.
|
|
4697
|
+
await (0, $i7OB2$observer).wait_for_element(panel, 4000);
|
|
4698
|
+
if (panel.isConnected) panel.focus();
|
|
4699
|
+
})();
|
|
4700
|
+
const register_desktop_panel = (el, toggle_button, should_focus) => {
|
|
4701
|
+
current_panel = el;
|
|
4702
|
+
current_panel_toggle_button = toggle_button;
|
|
4703
|
+
if (should_focus) focus_panel_when_in_dom(el);
|
|
4704
|
+
};
|
|
4679
4705
|
const make_open_filters_button = (adhere_to_width = false, is_tabbable = false) => $i7OB2$createComponent($cdea4cf8c5c071ef$var$OpenFiltersButton, {
|
|
4680
4706
|
tabindex_: is_tabbable ? 0 : -1,
|
|
4681
4707
|
i18n_: i18n_,
|
|
@@ -4683,7 +4709,9 @@ function $cdea4cf8c5c071ef$export$d7841e452f2e59a8({
|
|
|
4683
4709
|
search_sorting_open_: search_sorting_open_,
|
|
4684
4710
|
number_of_rendered_selected_filters_items_: number_of_rendered_selected_filters_items_,
|
|
4685
4711
|
filter_button_width_: adhere_to_width ? filter_button_width_ : undefined,
|
|
4686
|
-
hide_button_: hide_filters
|
|
4712
|
+
hide_button_: hide_filters,
|
|
4713
|
+
on_user_open_: () => user_opened_panel = true,
|
|
4714
|
+
button_ref_: is_tabbable ? el => filter_toggle_button = el : undefined
|
|
4687
4715
|
});
|
|
4688
4716
|
const make_open_sorting_button = (adhere_to_width = false, is_tabbable = false) => $i7OB2$createComponent($cdea4cf8c5c071ef$var$OpenSortingButton, {
|
|
4689
4717
|
tabindex_: is_tabbable ? 0 : -1,
|
|
@@ -4693,7 +4721,9 @@ function $cdea4cf8c5c071ef$export$d7841e452f2e59a8({
|
|
|
4693
4721
|
search_sorting_open_: search_sorting_open_,
|
|
4694
4722
|
available_sortings_: available_sortings_,
|
|
4695
4723
|
sort_button_width_: adhere_to_width ? sort_button_width_ : undefined,
|
|
4696
|
-
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_
|
|
4724
|
+
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_,
|
|
4725
|
+
on_user_open_: () => user_opened_panel = true,
|
|
4726
|
+
button_ref_: is_tabbable ? el => sort_toggle_button = el : undefined
|
|
4697
4727
|
});
|
|
4698
4728
|
let open_modal_;
|
|
4699
4729
|
let close_modal_;
|
|
@@ -4712,9 +4742,34 @@ function $cdea4cf8c5c071ef$export$d7841e452f2e59a8({
|
|
|
4712
4742
|
grid_is_in_original_state = true;
|
|
4713
4743
|
}
|
|
4714
4744
|
});
|
|
4745
|
+
// Restore focus to the relevant toggle button when a desktop panel is torn down while focus is still inside it.
|
|
4746
|
+
const restore_focus_to_toggle_on_close = () => {
|
|
4747
|
+
const button_to_restore = current_panel_toggle_button;
|
|
4748
|
+
const focus_was_in_panel = !!current_panel && current_panel.contains(document.activeElement);
|
|
4749
|
+
current_panel = undefined;
|
|
4750
|
+
current_panel_toggle_button = undefined;
|
|
4751
|
+
if (focus_was_in_panel) button_to_restore?.focus();
|
|
4752
|
+
};
|
|
4753
|
+
// `<section>` + `aria-label` so the panel announces itself ("Filters"/"Sort") when we move focus to it; the bare
|
|
4754
|
+
// tabindex=-1 container would otherwise give screen readers nothing to read on focus. A semantic <section> avoids
|
|
4755
|
+
// an ARIA role and the UA styling pitfalls of <fieldset>; the existing CSS targets the `.filters`/`.sorting` class.
|
|
4756
|
+
const FiltersPanel = should_focus => $i7OB2$createComponent((0, $i7OB2$Show), {
|
|
4757
|
+
get when() {
|
|
4758
|
+
return !hide_filters();
|
|
4759
|
+
},
|
|
4760
|
+
get children() {
|
|
4761
|
+
return $i7OB2$ssr($cdea4cf8c5c071ef$var$_tmpl$, $i7OB2$ssrHydrationKey(), $i7OB2$ssrAttribute("tabindex", -1, false) + $i7OB2$ssrAttribute("aria-label", $i7OB2$escape(i18n_.filters_(), true), false), $i7OB2$escape($i7OB2$createComponent((0, $fab07f52c9861732$export$3f1a388cc0d8fed7), filter_options)));
|
|
4762
|
+
}
|
|
4763
|
+
});
|
|
4764
|
+
const SortingPanel = should_focus => $i7OB2$ssr($cdea4cf8c5c071ef$var$_tmpl$2, $i7OB2$ssrHydrationKey(), $i7OB2$ssrAttribute("tabindex", -1, false) + $i7OB2$ssrAttribute("aria-label", $i7OB2$escape(i18n_.sorting_text_(), true), false), $i7OB2$escape($i7OB2$createComponent((0, $68a258a92b88f02f$export$1f1775a58da589b5), sorting_options)));
|
|
4715
4765
|
$i7OB2$createEffect(() => {
|
|
4766
|
+
// Consume the user-intent flag once per run, in every branch, so a stale flag can't leak into a later
|
|
4767
|
+
// resize-triggered re-render and steal focus.
|
|
4768
|
+
const should_focus_panel = user_opened_panel;
|
|
4769
|
+
user_opened_panel = false;
|
|
4716
4770
|
if (!filters_open() && !sorting_open()) {
|
|
4717
4771
|
close_modal_?.();
|
|
4772
|
+
restore_focus_to_toggle_on_close();
|
|
4718
4773
|
set_extra_els_in_results_container_("");
|
|
4719
4774
|
} else if (isSmall()()) {
|
|
4720
4775
|
if ($i7OB2$untrack(() => input_modal_open_?.())) {
|
|
@@ -4723,18 +4778,14 @@ function $cdea4cf8c5c071ef$export$d7841e452f2e59a8({
|
|
|
4723
4778
|
set_sorting_open(false);
|
|
4724
4779
|
return;
|
|
4725
4780
|
}
|
|
4781
|
+
// The modal manages its own focus; just drop the desktop panel reference.
|
|
4782
|
+
current_panel = undefined;
|
|
4783
|
+
current_panel_toggle_button = undefined;
|
|
4726
4784
|
open_modal_?.();
|
|
4727
4785
|
set_extra_els_in_results_container_("");
|
|
4728
4786
|
} else {
|
|
4729
4787
|
close_modal_?.();
|
|
4730
|
-
if (filters_open()) set_extra_els_in_results_container_(() =>
|
|
4731
|
-
get when() {
|
|
4732
|
-
return !hide_filters();
|
|
4733
|
-
},
|
|
4734
|
-
get children() {
|
|
4735
|
-
return $i7OB2$ssr($cdea4cf8c5c071ef$var$_tmpl$, $i7OB2$ssrHydrationKey(), $i7OB2$escape($i7OB2$createComponent((0, $fab07f52c9861732$export$3f1a388cc0d8fed7), filter_options)));
|
|
4736
|
-
}
|
|
4737
|
-
}));else set_extra_els_in_results_container_($i7OB2$ssr($cdea4cf8c5c071ef$var$_tmpl$2, $i7OB2$ssrHydrationKey(), $i7OB2$escape($i7OB2$createComponent((0, $68a258a92b88f02f$export$1f1775a58da589b5), sorting_options))));
|
|
4788
|
+
if (filters_open()) set_extra_els_in_results_container_(() => FiltersPanel(should_focus_panel));else set_extra_els_in_results_container_(SortingPanel(should_focus_panel));
|
|
4738
4789
|
}
|
|
4739
4790
|
});
|
|
4740
4791
|
$i7OB2$catchify1(async () => {
|
|
@@ -4784,7 +4835,9 @@ function $cdea4cf8c5c071ef$var$OpenFiltersButton({
|
|
|
4784
4835
|
filter_button_width_: filter_button_width_,
|
|
4785
4836
|
tabindex_: tabindex_,
|
|
4786
4837
|
number_of_rendered_selected_filters_items_: [num_selected_filters],
|
|
4787
|
-
hide_button_: hide_button_
|
|
4838
|
+
hide_button_: hide_button_,
|
|
4839
|
+
on_user_open_: on_user_open_,
|
|
4840
|
+
button_ref_: button_ref_
|
|
4788
4841
|
}) {
|
|
4789
4842
|
const filters_closed = $i7OB2$createMemo(() => !search_filters_open_[0]());
|
|
4790
4843
|
// We assume in embedded_num_products that this is a single HTMLElement so pls change there if you change it here
|
|
@@ -4797,7 +4850,7 @@ function $cdea4cf8c5c071ef$var$OpenFiltersButton({
|
|
|
4797
4850
|
get children() {
|
|
4798
4851
|
return $i7OB2$ssr($cdea4cf8c5c071ef$var$_tmpl$4, $i7OB2$ssrHydrationKey(), $i7OB2$ssrStyle(filters_closed() ? `` : `opacity:0`), $i7OB2$escape(num_selected_filters()));
|
|
4799
4852
|
}
|
|
4800
|
-
})), $i7OB2$ssrAttribute("tabindex", $i7OB2$escape(tabindex_, true), false), `${!filters_closed() ? "major" : ""} ${filters_closed() ? "minor" : ""} ${"filter toggle-button major-minor-transition" + ((0, $i7OB2$isServer) ? " minor" : "")}`, $i7OB2$ssrAttribute("aria-label", $i7OB2$escape((filters_closed() ? i18n_.open_filters_ : i18n_.close_filters_)(), true), false), $i7OB2$ssrStyle(filter_button_width_?.() ? {
|
|
4853
|
+
})), $i7OB2$ssrAttribute("tabindex", $i7OB2$escape(tabindex_, true), false), `${!filters_closed() ? "major" : ""} ${filters_closed() ? "minor" : ""} ${"filter toggle-button major-minor-transition" + ((0, $i7OB2$isServer) ? " minor" : "")}`, $i7OB2$ssrAttribute("aria-label", $i7OB2$escape((filters_closed() ? i18n_.open_filters_ : i18n_.close_filters_)(), true), false) + $i7OB2$ssrAttribute("aria-expanded", !filters_closed(), false), $i7OB2$ssrStyle(filter_button_width_?.() ? {
|
|
4801
4854
|
width: filter_button_width_() + "px"
|
|
4802
4855
|
} : {}), $i7OB2$escape($i7OB2$createComponent((0, $i7OB2$Show), {
|
|
4803
4856
|
get when() {
|
|
@@ -4819,11 +4872,13 @@ function $cdea4cf8c5c071ef$var$OpenSortingButton({
|
|
|
4819
4872
|
search_sorting_open_: search_sorting_open_,
|
|
4820
4873
|
sort_button_width_: sort_button_width_,
|
|
4821
4874
|
tabindex_: tabindex_,
|
|
4822
|
-
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_
|
|
4875
|
+
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_,
|
|
4876
|
+
on_user_open_: on_user_open_,
|
|
4877
|
+
button_ref_: button_ref_
|
|
4823
4878
|
}) {
|
|
4824
4879
|
const sorting_closed = $i7OB2$createMemo(() => !search_sorting_open_[0]());
|
|
4825
4880
|
// We assume in embedded_num_products that this is a single HTMLElement so pls change there if you change it here
|
|
4826
|
-
return $i7OB2$ssr($cdea4cf8c5c071ef$var$_tmpl$6, $i7OB2$ssrHydrationKey(), `${!sorting_closed() ? "major" : ""} ${sorting_closed() ? "minor" : ""} toggle-button for-sorting major-minor-transition`, $i7OB2$ssrAttribute("tabindex", $i7OB2$escape(tabindex_, true), false) + $i7OB2$ssrAttribute("aria-label", $i7OB2$escape((sorting_closed() ? i18n_.open_sorting_ : i18n_.close_sorting_)(), true), false), $i7OB2$ssrStyle(sort_button_width_?.() ? {
|
|
4881
|
+
return $i7OB2$ssr($cdea4cf8c5c071ef$var$_tmpl$6, $i7OB2$ssrHydrationKey(), `${!sorting_closed() ? "major" : ""} ${sorting_closed() ? "minor" : ""} toggle-button for-sorting major-minor-transition`, $i7OB2$ssrAttribute("tabindex", $i7OB2$escape(tabindex_, true), false) + $i7OB2$ssrAttribute("aria-label", $i7OB2$escape((sorting_closed() ? i18n_.open_sorting_ : i18n_.close_sorting_)(), true), false) + $i7OB2$ssrAttribute("aria-expanded", !sorting_closed(), false), $i7OB2$ssrStyle(sort_button_width_?.() ? {
|
|
4827
4882
|
width: sort_button_width_() + "px"
|
|
4828
4883
|
} : {}),
|
|
4829
4884
|
// Show the title of the currently selected sorting when the sorting is closed, if there's currently a sorting selected
|