@patternplate/client
Version:
Universal javascript client application for patternplate
84 lines (65 loc) • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.type = exports.default = void 0;
var _ = require("./");
var _default = toggleSearch;
exports.default = _default;
const type = "TOGGLE_SEARCH_ENABLED";
exports.type = type;
function toggleSearch(payload = {}) {
return (dispatch, getState) => {
const state = getState();
if (payload.sync) {
focus(state.searchEnabled);
return;
}
const next = "focus" in payload ? payload.focus : !state.searchEnabled;
if (!next) {
dispatch((0, _.search)({
persist: true,
value: value()
}));
}
dispatch((0, _.patchLocation)({
query: {
"search-enabled": next,
"search-preview": 0
}
}));
};
}
toggleSearch.type = type;
toggleSearch.key = "search-enabled";
toggleSearch.property = "searchEnabled";
function focus(next) {
if (!next) {
return;
}
if (!("document" in global)) {
return;
}
setTimeout(() => {
const el = global.document.querySelector("input[data-search]");
if (!el) {
return;
}
if (global.document.activeElement !== el) {
el.focus();
}
const range = el.value.length;
el.setSelectionRange(range, range);
}, 100);
}
function value() {
if (!("document" in global)) {
return;
}
const el = global.document.querySelector("input[data-search]");
if (!el) {
return;
}
return el.value;
}
//# sourceMappingURL=toggle-search.js.map