front_findstr-search_src_fields.js

document.addEventListener('findstrLoaded', function (e) {
	const findstr = window.findstr || {};

	const { getField } = window.findstr.helpers;

	findstr.getField = getField;

	/**
	 * Translating field value labels
	 */
	findstr.hooks.addFilter(
		'findstrFieldValueLabel',
		'findstrTranslateFieldValueLabel',
		function (key, field, selected) {
			const source = field?.options?.sourceName || 'findstr';

			if (
				findstr.translations[source] &&
				findstr.translations[source][key]
			) {
				return findstr.translations[source][key];
			}

			return key;
		}
	);
});

function initFields(findstr) {
	//get all findstr items
	const items = document.querySelectorAll('[data-findstr]');

	findstr.groups = {};
	const { itemsToFields } = window.findstr.helpers;

	itemsToFields(items, findstr);

	//for each group, get the default query
	Object.keys(findstr.groups).forEach((group) => {
		const resultWrapper = document.querySelector(
			`[data-findstr-results="${group}"]`
		);
		if (resultWrapper) {
			findstr.groups[group].defaultQuery = JSON.parse(
				resultWrapper.dataset.findstrQuery
			);
		}
	});

	/**
	 * Triggered when the fields are initialized.
	 * @hook findstrFieldsInit
	 *
	 * @param {Object} groups - The groups object
	 */
	findstr.hooks.doAction('findstrFieldsInit', findstr.groups);
}

document.addEventListener('findstrInit', function (e) {
	const findstr = e.detail;
	initFields(findstr);
});