@depict-ai/ui 4.10.13 → 4.10.15
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 +167 -42
- package/ES10/index.d.ts +1 -1
- package/ES10/index.js +167 -42
- package/latest/index.cjs +163 -42
- package/latest/index.d.ts +1 -1
- package/latest/index.js +163 -42
- package/package.json +4 -4
- package/server/ES10/index.cjs +95 -21
- package/server/ES10/index.d.ts +1 -1
- package/server/ES10/index.js +95 -21
- package/server/latest/index.cjs +94 -21
- package/server/latest/index.d.ts +1 -1
- package/server/latest/index.js +94 -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.15";
|
|
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,40 @@ 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 a11y for desktop panels (DOM order: after the grid). Keyboard opens move focus into the panel and
|
|
4986
|
+
// restore it to the toggle on close; mouse opens skip the focus move (already visible, and it'd jump the viewport).
|
|
4987
|
+
// `user_opened_panel` is set only on keyboard activation - `filters_open`/`sorting_open` also change
|
|
4988
|
+
// programmatically (undo toast, history restore, SDK consumers), which 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) {
|
|
5000
|
+
var _panel$querySelector;
|
|
5001
|
+
// Focus the first interactive control (often a group's <summary>), not the <section>: the section has no
|
|
5002
|
+
// visible focus ring and is flex-stretched to full grid height (scrolling it mis-aligns). The first
|
|
5003
|
+
// control keeps focus visible and lets Tab walk through the panel. `summary` is focusable but not matched
|
|
5004
|
+
// by the input/button/etc. selectors, so it must be listed explicitly.
|
|
5005
|
+
const focus_target = (_panel$querySelector = panel.querySelector("summary, input:not([type='hidden']):not(:disabled), button:not(:disabled), a[href], select:not(:disabled), [tabindex]:not([tabindex='-1'])")) !== null && _panel$querySelector !== void 0 ? _panel$querySelector : panel;
|
|
5006
|
+
focus_target.focus({
|
|
5007
|
+
preventScroll: true
|
|
5008
|
+
});
|
|
5009
|
+
focus_target.scrollIntoView({
|
|
5010
|
+
block: "nearest"
|
|
5011
|
+
});
|
|
5012
|
+
}
|
|
5013
|
+
})();
|
|
5014
|
+
const register_desktop_panel = (el, toggle_button, should_focus) => {
|
|
5015
|
+
current_panel = el;
|
|
5016
|
+
current_panel_toggle_button = toggle_button;
|
|
5017
|
+
if (should_focus) focus_panel_when_in_dom(el);
|
|
5018
|
+
};
|
|
4980
5019
|
const make_open_filters_button = function () {
|
|
4981
5020
|
let adhere_to_width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
4982
5021
|
let is_tabbable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
@@ -4987,7 +5026,11 @@ function $7396052a1484264f$export$d7841e452f2e59a8(_ref) {
|
|
|
4987
5026
|
search_sorting_open_: search_sorting_open_,
|
|
4988
5027
|
number_of_rendered_selected_filters_items_: number_of_rendered_selected_filters_items_,
|
|
4989
5028
|
filter_button_width_: adhere_to_width ? filter_button_width_ : undefined,
|
|
4990
|
-
hide_button_: hide_filters
|
|
5029
|
+
hide_button_: hide_filters,
|
|
5030
|
+
on_user_open_: keyboard_activated => {
|
|
5031
|
+
if (keyboard_activated) user_opened_panel = true;
|
|
5032
|
+
},
|
|
5033
|
+
button_ref_: is_tabbable ? el => filter_toggle_button = el : undefined
|
|
4991
5034
|
});
|
|
4992
5035
|
};
|
|
4993
5036
|
const make_open_sorting_button = function () {
|
|
@@ -5001,7 +5044,11 @@ function $7396052a1484264f$export$d7841e452f2e59a8(_ref) {
|
|
|
5001
5044
|
search_sorting_open_: search_sorting_open_,
|
|
5002
5045
|
available_sortings_: available_sortings_,
|
|
5003
5046
|
sort_button_width_: adhere_to_width ? sort_button_width_ : undefined,
|
|
5004
|
-
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_
|
|
5047
|
+
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_,
|
|
5048
|
+
on_user_open_: keyboard_activated => {
|
|
5049
|
+
if (keyboard_activated) user_opened_panel = true;
|
|
5050
|
+
},
|
|
5051
|
+
button_ref_: is_tabbable ? el => sort_toggle_button = el : undefined
|
|
5005
5052
|
});
|
|
5006
5053
|
};
|
|
5007
5054
|
let open_modal_;
|
|
@@ -5021,10 +5068,37 @@ function $7396052a1484264f$export$d7841e452f2e59a8(_ref) {
|
|
|
5021
5068
|
grid_is_in_original_state = true;
|
|
5022
5069
|
}
|
|
5023
5070
|
});
|
|
5071
|
+
// Restore focus to the relevant toggle button when a desktop panel is torn down while focus is still inside it.
|
|
5072
|
+
const restore_focus_to_toggle_on_close = () => {
|
|
5073
|
+
const button_to_restore = current_panel_toggle_button;
|
|
5074
|
+
const focus_was_in_panel = !!current_panel && current_panel.contains(document.activeElement);
|
|
5075
|
+
current_panel = undefined;
|
|
5076
|
+
current_panel_toggle_button = undefined;
|
|
5077
|
+
if (focus_was_in_panel && button_to_restore) button_to_restore.focus({
|
|
5078
|
+
preventScroll: true
|
|
5079
|
+
});
|
|
5080
|
+
};
|
|
5081
|
+
// `<section>` + `aria-label` so the panel announces itself ("Filters"/"Sort") when we move focus to it; the bare
|
|
5082
|
+
// tabindex=-1 container would otherwise give screen readers nothing to read on focus. A semantic <section> avoids
|
|
5083
|
+
// an ARIA role and the UA styling pitfalls of <fieldset>; the existing CSS targets the `.filters`/`.sorting` class.
|
|
5084
|
+
const FiltersPanel = should_focus => $b8hua$createComponent((0, $b8hua$Show), {
|
|
5085
|
+
get when() {
|
|
5086
|
+
return !hide_filters();
|
|
5087
|
+
},
|
|
5088
|
+
get children() {
|
|
5089
|
+
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)));
|
|
5090
|
+
}
|
|
5091
|
+
});
|
|
5092
|
+
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
5093
|
$b8hua$createEffect(() => {
|
|
5094
|
+
// Consume the user-intent flag once per run, in every branch, so a stale flag can't leak into a later
|
|
5095
|
+
// resize-triggered re-render and steal focus.
|
|
5096
|
+
const should_focus_panel = user_opened_panel;
|
|
5097
|
+
user_opened_panel = false;
|
|
5025
5098
|
if (!filters_open() && !sorting_open()) {
|
|
5026
5099
|
var _close_modal_;
|
|
5027
5100
|
(_close_modal_ = close_modal_) === null || _close_modal_ === void 0 || _close_modal_();
|
|
5101
|
+
restore_focus_to_toggle_on_close();
|
|
5028
5102
|
set_extra_els_in_results_container_("");
|
|
5029
5103
|
} else if (isSmall()()) {
|
|
5030
5104
|
var _open_modal_;
|
|
@@ -5034,19 +5108,15 @@ function $7396052a1484264f$export$d7841e452f2e59a8(_ref) {
|
|
|
5034
5108
|
set_sorting_open(false);
|
|
5035
5109
|
return;
|
|
5036
5110
|
}
|
|
5111
|
+
// The modal manages its own focus; just drop the desktop panel reference.
|
|
5112
|
+
current_panel = undefined;
|
|
5113
|
+
current_panel_toggle_button = undefined;
|
|
5037
5114
|
(_open_modal_ = open_modal_) === null || _open_modal_ === void 0 || _open_modal_();
|
|
5038
5115
|
set_extra_els_in_results_container_("");
|
|
5039
5116
|
} else {
|
|
5040
5117
|
var _close_modal_2;
|
|
5041
5118
|
(_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))));
|
|
5119
|
+
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
5120
|
}
|
|
5051
5121
|
});
|
|
5052
5122
|
$b8hua$catchify1(async () => {
|
|
@@ -5097,7 +5167,9 @@ function $7396052a1484264f$var$OpenFiltersButton(_ref3) {
|
|
|
5097
5167
|
filter_button_width_: filter_button_width_,
|
|
5098
5168
|
tabindex_: tabindex_,
|
|
5099
5169
|
number_of_rendered_selected_filters_items_: [num_selected_filters],
|
|
5100
|
-
hide_button_: hide_button_
|
|
5170
|
+
hide_button_: hide_button_,
|
|
5171
|
+
on_user_open_: on_user_open_,
|
|
5172
|
+
button_ref_: button_ref_
|
|
5101
5173
|
} = _ref3;
|
|
5102
5174
|
const filters_closed = $b8hua$createMemo(() => !search_filters_open_[0]());
|
|
5103
5175
|
// We assume in embedded_num_products that this is a single HTMLElement so pls change there if you change it here
|
|
@@ -5110,7 +5182,7 @@ function $7396052a1484264f$var$OpenFiltersButton(_ref3) {
|
|
|
5110
5182
|
get children() {
|
|
5111
5183
|
return $b8hua$ssr($7396052a1484264f$var$_tmpl$4, $b8hua$ssrHydrationKey(), $b8hua$ssrStyle(filters_closed() ? "" : "opacity:0"), $b8hua$escape(num_selected_filters()));
|
|
5112
5184
|
}
|
|
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_() ? {
|
|
5185
|
+
})), $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
5186
|
width: filter_button_width_() + "px"
|
|
5115
5187
|
} : {}), $b8hua$escape($b8hua$createComponent((0, $b8hua$Show), {
|
|
5116
5188
|
get when() {
|
|
@@ -5134,11 +5206,13 @@ function $7396052a1484264f$var$OpenSortingButton(_ref4) {
|
|
|
5134
5206
|
search_sorting_open_: search_sorting_open_,
|
|
5135
5207
|
sort_button_width_: sort_button_width_,
|
|
5136
5208
|
tabindex_: tabindex_,
|
|
5137
|
-
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_
|
|
5209
|
+
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_,
|
|
5210
|
+
on_user_open_: on_user_open_,
|
|
5211
|
+
button_ref_: button_ref_
|
|
5138
5212
|
} = _ref4;
|
|
5139
5213
|
const sorting_closed = $b8hua$createMemo(() => !search_sorting_open_[0]());
|
|
5140
5214
|
// 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_() ? {
|
|
5215
|
+
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
5216
|
width: sort_button_width_() + "px"
|
|
5143
5217
|
} : {}),
|
|
5144
5218
|
// 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.15";
|
|
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,39 @@ 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 a11y for desktop panels (DOM order: after the grid). Keyboard opens move focus into the panel and
|
|
4787
|
+
// restore it to the toggle on close; mouse opens skip the focus move (already visible, and it'd jump the viewport).
|
|
4788
|
+
// `user_opened_panel` is set only on keyboard activation - `filters_open`/`sorting_open` also change
|
|
4789
|
+
// programmatically (undo toast, history restore, SDK consumers), which 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) {
|
|
4801
|
+
// Focus the first interactive control (often a group's <summary>), not the <section>: the section has no
|
|
4802
|
+
// visible focus ring and is flex-stretched to full grid height (scrolling it mis-aligns). The first
|
|
4803
|
+
// control keeps focus visible and lets Tab walk through the panel. `summary` is focusable but not matched
|
|
4804
|
+
// by the input/button/etc. selectors, so it must be listed explicitly.
|
|
4805
|
+
const focus_target = panel.querySelector("summary, input:not([type='hidden']):not(:disabled), button:not(:disabled), a[href], select:not(:disabled), [tabindex]:not([tabindex='-1'])") ?? panel;
|
|
4806
|
+
focus_target.focus({
|
|
4807
|
+
preventScroll: true
|
|
4808
|
+
});
|
|
4809
|
+
focus_target.scrollIntoView({
|
|
4810
|
+
block: "nearest"
|
|
4811
|
+
});
|
|
4812
|
+
}
|
|
4813
|
+
})();
|
|
4814
|
+
const register_desktop_panel = (el, toggle_button, should_focus) => {
|
|
4815
|
+
current_panel = el;
|
|
4816
|
+
current_panel_toggle_button = toggle_button;
|
|
4817
|
+
if (should_focus) focus_panel_when_in_dom(el);
|
|
4818
|
+
};
|
|
4781
4819
|
const make_open_filters_button = (adhere_to_width = false, is_tabbable = false) => $5vyXB$solidjsweb.createComponent($f8f64d05c525825b$var$OpenFiltersButton, {
|
|
4782
4820
|
tabindex_: is_tabbable ? 0 : -1,
|
|
4783
4821
|
i18n_: i18n_,
|
|
@@ -4785,7 +4823,11 @@ function $f8f64d05c525825b$export$d7841e452f2e59a8({
|
|
|
4785
4823
|
search_sorting_open_: search_sorting_open_,
|
|
4786
4824
|
number_of_rendered_selected_filters_items_: number_of_rendered_selected_filters_items_,
|
|
4787
4825
|
filter_button_width_: adhere_to_width ? filter_button_width_ : undefined,
|
|
4788
|
-
hide_button_: hide_filters
|
|
4826
|
+
hide_button_: hide_filters,
|
|
4827
|
+
on_user_open_: keyboard_activated => {
|
|
4828
|
+
if (keyboard_activated) user_opened_panel = true;
|
|
4829
|
+
},
|
|
4830
|
+
button_ref_: is_tabbable ? el => filter_toggle_button = el : undefined
|
|
4789
4831
|
});
|
|
4790
4832
|
const make_open_sorting_button = (adhere_to_width = false, is_tabbable = false) => $5vyXB$solidjsweb.createComponent($f8f64d05c525825b$var$OpenSortingButton, {
|
|
4791
4833
|
tabindex_: is_tabbable ? 0 : -1,
|
|
@@ -4795,7 +4837,11 @@ function $f8f64d05c525825b$export$d7841e452f2e59a8({
|
|
|
4795
4837
|
search_sorting_open_: search_sorting_open_,
|
|
4796
4838
|
available_sortings_: available_sortings_,
|
|
4797
4839
|
sort_button_width_: adhere_to_width ? sort_button_width_ : undefined,
|
|
4798
|
-
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_
|
|
4840
|
+
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_,
|
|
4841
|
+
on_user_open_: keyboard_activated => {
|
|
4842
|
+
if (keyboard_activated) user_opened_panel = true;
|
|
4843
|
+
},
|
|
4844
|
+
button_ref_: is_tabbable ? el => sort_toggle_button = el : undefined
|
|
4799
4845
|
});
|
|
4800
4846
|
let open_modal_;
|
|
4801
4847
|
let close_modal_;
|
|
@@ -4814,9 +4860,36 @@ function $f8f64d05c525825b$export$d7841e452f2e59a8({
|
|
|
4814
4860
|
grid_is_in_original_state = true;
|
|
4815
4861
|
}
|
|
4816
4862
|
});
|
|
4863
|
+
// Restore focus to the relevant toggle button when a desktop panel is torn down while focus is still inside it.
|
|
4864
|
+
const restore_focus_to_toggle_on_close = () => {
|
|
4865
|
+
const button_to_restore = current_panel_toggle_button;
|
|
4866
|
+
const focus_was_in_panel = !!current_panel && current_panel.contains(document.activeElement);
|
|
4867
|
+
current_panel = undefined;
|
|
4868
|
+
current_panel_toggle_button = undefined;
|
|
4869
|
+
if (focus_was_in_panel && button_to_restore) button_to_restore.focus({
|
|
4870
|
+
preventScroll: true
|
|
4871
|
+
});
|
|
4872
|
+
};
|
|
4873
|
+
// `<section>` + `aria-label` so the panel announces itself ("Filters"/"Sort") when we move focus to it; the bare
|
|
4874
|
+
// tabindex=-1 container would otherwise give screen readers nothing to read on focus. A semantic <section> avoids
|
|
4875
|
+
// an ARIA role and the UA styling pitfalls of <fieldset>; the existing CSS targets the `.filters`/`.sorting` class.
|
|
4876
|
+
const FiltersPanel = should_focus => $5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.Show), {
|
|
4877
|
+
get when() {
|
|
4878
|
+
return !hide_filters();
|
|
4879
|
+
},
|
|
4880
|
+
get children() {
|
|
4881
|
+
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)));
|
|
4882
|
+
}
|
|
4883
|
+
});
|
|
4884
|
+
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
4885
|
$5vyXB$solidjs.createEffect(() => {
|
|
4886
|
+
// Consume the user-intent flag once per run, in every branch, so a stale flag can't leak into a later
|
|
4887
|
+
// resize-triggered re-render and steal focus.
|
|
4888
|
+
const should_focus_panel = user_opened_panel;
|
|
4889
|
+
user_opened_panel = false;
|
|
4818
4890
|
if (!filters_open() && !sorting_open()) {
|
|
4819
4891
|
close_modal_?.();
|
|
4892
|
+
restore_focus_to_toggle_on_close();
|
|
4820
4893
|
set_extra_els_in_results_container_("");
|
|
4821
4894
|
} else if (isSmall()()) {
|
|
4822
4895
|
if ($5vyXB$solidjs.untrack(() => input_modal_open_?.())) {
|
|
@@ -4825,18 +4898,14 @@ function $f8f64d05c525825b$export$d7841e452f2e59a8({
|
|
|
4825
4898
|
set_sorting_open(false);
|
|
4826
4899
|
return;
|
|
4827
4900
|
}
|
|
4901
|
+
// The modal manages its own focus; just drop the desktop panel reference.
|
|
4902
|
+
current_panel = undefined;
|
|
4903
|
+
current_panel_toggle_button = undefined;
|
|
4828
4904
|
open_modal_?.();
|
|
4829
4905
|
set_extra_els_in_results_container_("");
|
|
4830
4906
|
} else {
|
|
4831
4907
|
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))));
|
|
4908
|
+
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
4909
|
}
|
|
4841
4910
|
});
|
|
4842
4911
|
$5vyXB$depictaiutilishared.catchify(async () => {
|
|
@@ -4886,7 +4955,9 @@ function $f8f64d05c525825b$var$OpenFiltersButton({
|
|
|
4886
4955
|
filter_button_width_: filter_button_width_,
|
|
4887
4956
|
tabindex_: tabindex_,
|
|
4888
4957
|
number_of_rendered_selected_filters_items_: [num_selected_filters],
|
|
4889
|
-
hide_button_: hide_button_
|
|
4958
|
+
hide_button_: hide_button_,
|
|
4959
|
+
on_user_open_: on_user_open_,
|
|
4960
|
+
button_ref_: button_ref_
|
|
4890
4961
|
}) {
|
|
4891
4962
|
const filters_closed = $5vyXB$solidjs.createMemo(() => !search_filters_open_[0]());
|
|
4892
4963
|
// We assume in embedded_num_products that this is a single HTMLElement so pls change there if you change it here
|
|
@@ -4899,7 +4970,7 @@ function $f8f64d05c525825b$var$OpenFiltersButton({
|
|
|
4899
4970
|
get children() {
|
|
4900
4971
|
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
4972
|
}
|
|
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_?.() ? {
|
|
4973
|
+
})), $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
4974
|
width: filter_button_width_() + "px"
|
|
4904
4975
|
} : {}), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.Show), {
|
|
4905
4976
|
get when() {
|
|
@@ -4921,11 +4992,13 @@ function $f8f64d05c525825b$var$OpenSortingButton({
|
|
|
4921
4992
|
search_sorting_open_: search_sorting_open_,
|
|
4922
4993
|
sort_button_width_: sort_button_width_,
|
|
4923
4994
|
tabindex_: tabindex_,
|
|
4924
|
-
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_
|
|
4995
|
+
meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_,
|
|
4996
|
+
on_user_open_: on_user_open_,
|
|
4997
|
+
button_ref_: button_ref_
|
|
4925
4998
|
}) {
|
|
4926
4999
|
const sorting_closed = $5vyXB$solidjs.createMemo(() => !search_sorting_open_[0]());
|
|
4927
5000
|
// 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_?.() ? {
|
|
5001
|
+
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
5002
|
width: sort_button_width_() + "px"
|
|
4930
5003
|
} : {}),
|
|
4931
5004
|
// 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.15";
|
|
15
15
|
/**
|
|
16
16
|
* Use `javascript_media_query` but return a reactive accessor instead of taking a callback function
|
|
17
17
|
*/
|