Designs Shaped by Britain’s Great Discovery
Our range of Sutton Hoo jewellery includes finely detailed earrings and the distinctive Sutton Hoo necklace, inspired by original finds. For those drawn to historical craftsmanship, the Sutton Hoo helmet replica reflects the skill and symbolism uncovered at the site. Books and keepsakes complete the range, each chosen to provide insight into the discovery and to carry cultural value with lasting resonance. Each piece is carefully selected to ensure authenticity, quality and design integrity. Sutton Hoo gifts are ideal as thoughtful presents or personal mementoes, linking today’s world with one of Britain’s most remarkable finds. Explore more in our Inspired by collections. For delivery details, see our Delivery and FAQs pages.
';
productList.after(div);
this.replaceWithUpdate(
data.bottomCmsBlock,
this.qs('.amshopby-filters-bottom-cms'),
'amshopby-filters-bottom-cms'
);
}
//top nav already exist into categoryProducts
if (!data.categoryProducts || data.categoryProducts.indexOf('block-filter-top') === -1) {
if (!this.qs(this.selectors.top_navigation)) {
const navNode = document.createElement('div'),
topNavNode = document.createElement('div'),
maincontent = this.qs('.column.main');
let childNode;
navNode.className = 'catalog-topnav amasty-catalog-topnav';
topNavNode.className = 'block-filter-top';
navNode.appendChild(topNavNode);
if (this.qs('.search.results')) {
childNode = this.qs('.search.results');
} else {
childNode = this.qs('#amasty-shopby-product-list');
}
if (childNode.parentElement !== maincontent) {
return;
}
maincontent.insertBefore(navNode, childNode);
}
this.replaceWithUpdate(
data.navigationTop,
this.qs(this.selectors.top_navigation),
'top_navigation'
);
}
},
replaceWithUpdate(content, $element, className) {
if (content && $element) {
const parent = $element.parentNode,
regex = /
'+
'
';
if (this.qs('.amwidget-children-categories')) {
childNode = this.qs('.amwidget-children-categories').parentNode;
}
maincontent.insertBefore(catNode, childNode);
}
}
const imageElement = this.qs('.category-image'),
descrElement = this.qs('.category-description');
if (data.image) {
this.replaceWithUpdate(
data.image,
imageElement,
'category-image'
);
} else {
if (imageElement) {
imageElement.innerHTML = '';
}
}
if (data.description) {
this.replaceWithUpdate(
data.description,
descrElement,
'category-description'
);
} else {
if (descrElement) {
descrElement.innerHTML = '';
}
}
this.qs('title').innerHTML = data.title;
if (data.categoryData) {
let categoryViewSelector = '.category-view';
const nodeT = document.createElement('div');
nodeT.innerHTML = data.categoryData;
this.qs(categoryViewSelector).innerHTML = '
';
this.replaceWithUpdate(
nodeT.querySelector(categoryViewSelector).innerHTML,
this.qs(categoryViewSelector + ' div'),
'category-view-data'
);
}
},
/**
* @public
* @return {Object}
*/
getProductBlock() {
let $productsWrappers = this.qsa(this.selectors.products_wrapper),
$productsWrapper = $productsWrappers[$productsWrappers.length - 1];
if ($productsWrapper.closest('.search.results')) {
$productsWrapper = $productsWrapper.closest('.search.results');
}
return $productsWrapper;
},
scrollUpEvent() {
const productList = this.qs(this.selectors.products_wrapper),
topNavBlock = this.qs(this.selectors.top_nav);
if (this.scrollUp && productList) {
const top = this.scrollUp === 1
? (topNavBlock ? topNavBlock.offsetTop : productList.offsetTop)
: 0;
window.scrollTo({
top: top,
behavior: 'smooth'
})
}
},
moveTopFiltersToSidebar() {
if (!this.qs(this.selectors_top_filters.sidebarList)) {
const blockClass = this.qs(this.selectors_top_filters.layeredFilter)
? this.selectors_top_filters.layeredFilter
: this.selectors_top_filters.blockFilter,
$element = document.querySelector(this.selectors.topNav + ' ' + blockClass);
if ($element) {
const $sidebar = this.qs(this.selectors_top_filters.sidebar),
filterOptions = $element.querySelectorAll('.filter-option');
filterOptions.forEach(filter => {
const el = filter.cloneNode(true),
input = el.querySelector('[type="radio"], [type="checkbox"]');
if (input) {
const name = input.getAttribute('name');
el.classList.add('from-top');
if (!$sidebar.querySelectorAll('[name="'+ name +'"]').length) {
$sidebar.querySelector('#layered-filter-block-content').append(el);
}
}
});
}
return;
}
},
/**
* @public
* @returns {void}
*/
removeTopFiltersFromSidebar() {
const $sidebar = this.qs(this.selectors_top_filters.sidebar);
if ($sidebar) {
$sidebar.querySelectorAll('.from-top').forEach(filter => {
filter.remove();
});
}
},
qs(selector) {
return document.querySelector(selector);
},
qsa(selector) {
return document.querySelectorAll(selector);
},
stopEvents(e) {
e.stopPropagation();
e.preventDefault();
},
serializeForm(form) {
const data = new FormData(form)
let array = [];
for (let [key, value] of data) {
array.push({
name: key,
value: value
});
}
return array;
},
excludingElement(elements, excluded) {
let clearing = [],
excludedSelector = this.qs(excluded);
elements.forEach(element => {
if (element !== excludedSelector) {
clearing.push(element);
}
});
return clearing;
},
/**
* @public
* @param {String} text
* @return {String}
*/
escapeHtml(text) {
var map = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
};
return text.replace(/[&<>"']/g, (m) => {
return map[m];
});
},
/**
* @public
* @param {String} link
* @param {Boolean} [clearFilter]
* @return {void}
*/
apply(link, clearFilter) {
let linkParam;
try {
this.options.isAjax = false;
linkParam = clearFilter ? link : null;
link = this.element?.closest('.price-ranges') && link.includes('?')
? link + '&price-ranges=1'
: link;
if (!this.options.collectFilters && this.options.isAjax === true) {
this.prepareTriggerAjax(this.element, linkParam, clearFilter);
} else {
// eslint-disable-next-line no-lonely-if
if (this.options.collectFilters === 1) {
this.prepareTriggerAjax(this.element, linkParam);
} else {
window.location = link;
}
}
} catch (e) {
console.error(e);
window.location = link;
}
},
fixDubbleValue(link) {
let input = link.closest('div').querySelector('input');
if (this.qsa('*[value="'+input.value+'"][name="'+input.getAttribute('name')+'"]').length > 1) {
this.qsa('*[value="'+input.value+'"][name="'+input.getAttribute('name')+'"]').forEach(filter => {
if (filter !== input) {
if (filter.getAttribute('type') === 'radio') {
filter.closest('.am-filter').querySelectorAll('input').forEach(option => {
option.checked = false;
});
} else {
filter.checked = false;
}
}
});
}
if (input.getAttribute('type') !== 'radio' && !input.checked && !this.submitByClick) {
let value = input.getAttribute('value'),
name = input.getAttribute('name').replace('amshopby[','');
name = name.replace('][]', '');
let removeItem = this.qs('.amshopby-remove-item[data-container="'+ name +'"][data-value="'+ value +'"]');
if (removeItem) {
removeItem.remove();
}
}
},
setSwatchToProducts(swatchId, attributeID) {
setTimeout(() => {
const productList = document.getElementById('amasty-shopby-product-list');
if (productList) {
const swatches = productList.querySelectorAll('[name="super_attribute['+ attributeID +']"][value="' + swatchId + '"]'), event = new Event('change');
swatches.forEach(swatch => {
if (!swatch.checked) {
swatch.dispatchEvent(event);
}
});
}
}, 1500);
},
setSwatchMassToProducts(swatchIds, attributeID) {
const swatches = swatchIds.split(',');
this.massSwatchSet(swatches, attributeID);
window.onload = () => {
setTimeout(() => {
this.massSwatchSet(swatches, attributeID);
}, 1000);
}
},
massSwatchSet(swatches, attributeID) {
swatches.map(swatch => {
this.setSwatchToProducts(swatch, attributeID);
});
},
insertAfter(newNode, existingNode) {
existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
},
removeInputByName(input) {
let name = input.getAttribute('name').replace('amshopby[','');
name = name.replace('][]', '');
this.qs('.amshopby-remove-item[data-container="'+ name +'"]').remove();
},
eventListeners: {
['@amshopby-submit-filters.window'](event) {
let self = this,
data = event.detail.data,
clearUrl = self.options.clearUrl,
isSorting = event.detail.isSorting,
pushState = !self.submitByClick;
if (typeof data.clearUrl !== 'undefined') {
clearUrl = data.clearUrl;
delete data.clearUrl;
}
if (self.prevCall) {
this.controller.abort();
this.signal = null;
this.controller = new AbortController();
this.signal = this.controller.signal;
}
let dataAndUrl = data.slice(0);
dataAndUrl.push(clearUrl ? clearUrl : self.clearUrl);
const cacheKey = JSON.stringify(dataAndUrl);
self.cacheKey = cacheKey;
if (self.cached[cacheKey]) {
let response = self.cached[cacheKey];
if (pushState || isSorting) {
if (response.newClearUrl
&& response.newClearUrl.indexOf('?p=') == -1
&& response.newClearUrl.indexOf('&p=') == -1
) {
self.options.clearUrl = response.newClearUrl;
}
window.history.pushState({url: response.url}, '', response.url);
self.reloadHtml(response);
} else {
window.dispatchEvent(new CustomEvent('amApplyButtonData', { detail: {
count: response.productsCount,
disabled: false
} }));
}
return;
}
self.prevCall = self.callAjax(clearUrl, data, pushState, cacheKey, isSorting);
},
['@amSliderValuesUpdated.window'](event) {
this.apply(event.detail.searchParams);
},
['@amApplyButton.window'](event) {
let valid = true,
element = event.detail.element,
navigationSelector = event.detail.navigationSelector,
navigation = element.closest(navigationSelector),
cachedValues = this.cached[this.cacheKey],
cachedKey = this.response,
response = cachedValues ? cachedValues : cachedKey;
if (!response) {
if (this.startAjax) {
this.showButtonClick = true;
this.isLoading = true;
window.dispatchEvent(new CustomEvent('amApplyButtonData', { detail: {
count: '',
disabled: true
} }));
return;
} else {
return;
}
}
if (response.isDisplayModePage ||
(!this.isAjaxSettingEnabled && this.submitByClick)) {
window.location.href = response.url;
return;
}
if (valid && response) {
window.dispatchEvent(new CustomEvent('amApplyButtonData', { detail: {
count: '',
disabled: false
} }));
window.history.pushState({url: response.url}, '', response.url);
this.reloadHtml(response);
this.response = false;
this.showButtonClick = false;
}
window.onpopstate = function () {
location.reload();
};
},
['@amRemoveElement.window'](event) {
const link = event.detail.element;
if (this.isAjax) {
const currentFilterItem = link.closest('.amshopby-remove-item'),
filter = {
attribute: currentFilterItem.getAttribute('data-container'),
value: this.escapeHtml(currentFilterItem.getAttribute('data-value'))
};
this.currentFilters.push(filter);
this.element = undefined;
try {
window.dispatchEvent(
new CustomEvent(
'amSetButtonPosition',
{
detail: {
element: link
}
}
)
);
this.setDefault(filter.attribute, filter.value);
if (!this.submitByClick) {
link.closest('.amshopby-remove-item').remove();
}
this.prepareTriggerAjax(null, null, true);
} catch (e) {
console.error(e)
window.location = link.getAttribute('href');
}
} else {
window.location.href = link.getAttribute('href');
}
},
['@amSwatchClick.window'](event) {
const link = event.detail.element;
if (this.isAjax) {
const href = link.getAttribute('href'),
input = link.closest('div').querySelector('input');
this.element = link;
input.checked = !input.checked;
if (input.getAttribute('type') === 'radio') {
let ring = link.closest('.am-shopby-form').querySelector('.ring');
if (ring) {
this.setSwatchBorder(ring);
if (!this.submitByClick) {
this.removeInputByName(input);
}
if (input.checked) {
this.setSwatchBorder(link);
}
} else {
this.setSwatchBorder(link);
}
} else {
this.setSwatchBorder(link);
}
if (this.isFinderAndCategory(link)) {
location.href = href;
return;
}
setTimeout(() => {
this.fixDubbleValue(link);
window.dispatchEvent(
new CustomEvent(
'amSetButtonPosition',
{
detail: {
element: link
}
}
)
);
this.apply(href);
}, 10);
} else {
window.location.href = link.getAttribute('href');
}
},
['@amFilterElementClick.window'](event) {
let filterElement = event.detail.element;
if (!filterElement.classList.contains('item')) {
filterElement = filterElement.closest('div');
}
const checkbox = filterElement.querySelector('input'),
checkboxLink = filterElement.querySelector('a'),
href = checkboxLink.getAttribute('href');
if (!this.submitByClick &&
checkbox.checked &&
checkbox.getAttribute('type') === 'radio') {
this.removeInputByName(checkbox);
}
this.element = checkboxLink;
setTimeout(() => {
this.fixDubbleValue(checkboxLink);
window.dispatchEvent(
new CustomEvent(
'amSetButtonPosition',
{
detail: {
element: checkboxLink
}
}
)
);
if (this.isFinderAndCategory(checkbox)) {
location.href = href;
return;
}
this.apply(href);
}, 10);
},
['@googleTag.window'](e) {
var tag = 'script',
layer = 'dataLayer',
containerId = "GTM-MW5VCK";
if (containerId) {
window[layer] = window[layer] || [];
window[layer].push({
'gtm.start': new Date().getTime(), event: 'gtm.js'
});
var f = document.getElementsByTagName(tag)[0],
j = document.createElement(tag), dl = layer != 'dataLayer' ? '&l=' + layer : '';
j.async = true;
j.src =
'https://www.googletagmanager.com/gtm.js?id=' + containerId + dl;
f.parentNode.insertBefore(j, f);
f.parentNode.removeChild(f.parentNode.querySelectorAll('script[src="' + j.src + '"]')[0]);
}
}
}
}
}
Recently Viewed
chevron-left
chevron-right