Skip to content

Commit 4adfade

Browse files
bgelineaubobylito
authored andcommitted
fix(search-box): fix magnifier and reset customization
1 parent 2753683 commit 4adfade

File tree

2 files changed

+68
-9
lines changed

2 files changed

+68
-9
lines changed

src/widgets/search-box/__tests__/search-box-test.js

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,63 @@ describe('searchBox()', () => {
236236
expect(helper.setQuery.called).toBe(true);
237237
expect(helper.search.called).toBe(true);
238238
});
239+
240+
it('should let the user define its own string template', () => {
241+
// Given
242+
widget = searchBox({
243+
...defaultWidgetOptions,
244+
reset: {
245+
template: '<button type="reset">Foobar</button>',
246+
},
247+
});
248+
249+
// When
250+
widget.init(defaultInitOptions);
251+
252+
// Then
253+
expect(container.innerHTML).toContain('Foobar');
254+
});
255+
256+
it('should not exist when it is disabled', () => {
257+
// Given
258+
widget = searchBox({
259+
...defaultWidgetOptions,
260+
reset: false,
261+
});
262+
263+
// When
264+
widget.init(defaultInitOptions);
265+
266+
// Then
267+
expect($('button[type="reset"]').length).toEqual(0);
268+
});
269+
});
270+
271+
describe('magnifier', () => {
272+
let defaultInitOptions;
273+
let defaultWidgetOptions;
274+
275+
beforeEach(() => {
276+
container = document.createElement('div');
277+
defaultWidgetOptions = {container};
278+
defaultInitOptions = {state, helper, onHistoryChange};
279+
});
280+
281+
it('should let the user define its own string template', () => {
282+
// Given
283+
widget = searchBox({
284+
...defaultWidgetOptions,
285+
magnifier: {
286+
template: '<div>Foobar</button>',
287+
},
288+
});
289+
290+
// When
291+
widget.init(defaultInitOptions);
292+
293+
// Then
294+
expect(container.innerHTML).toContain('Foobar');
295+
});
239296
});
240297

241298
describe('poweredBy', () => {

src/widgets/search-box/search-box.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -105,13 +105,15 @@ const renderer = ({
105105
}
106106
}
107107

108-
const resetButtonContainer = containerNode.tagName === 'INPUT'
109-
? containerNode.parentNode
110-
: containerNode;
111-
112-
// hide reset button when there is no query
113-
const resetButton = resetButtonContainer.querySelector('button[type="reset"]');
114-
resetButton.style.display = query && query.trim() ? 'block' : 'none';
108+
if (reset) {
109+
const resetButtonContainer = containerNode.tagName === 'INPUT'
110+
? containerNode.parentNode
111+
: containerNode;
112+
113+
// hide reset button when there is no query
114+
const resetButton = resetButtonContainer.querySelector('button[type="reset"]');
115+
resetButton.style.display = query && query.trim() ? 'block' : 'none';
116+
}
115117
};
116118

117119
const usage = `Usage:
@@ -328,7 +330,7 @@ function addReset(input, reset, {reset: resetTemplate}, clearFunction) {
328330
};
329331

330332
const resetCSSClasses = {root: cx(bem('reset'), reset.cssClasses.root)};
331-
const stringNode = processTemplate(resetTemplate, {cssClasses: resetCSSClasses});
333+
const stringNode = processTemplate(reset.template, {cssClasses: resetCSSClasses});
332334

333335
const htmlNode = createNodeFromString(stringNode);
334336
input.parentNode.appendChild(htmlNode);
@@ -347,7 +349,7 @@ function addMagnifier(input, magnifier, {magnifier: magnifierTemplate}) {
347349
};
348350

349351
const magnifierCSSClasses = {root: cx(bem('magnifier'), magnifier.cssClasses.root)};
350-
const stringNode = processTemplate(magnifierTemplate, {cssClasses: magnifierCSSClasses});
352+
const stringNode = processTemplate(magnifier.template, {cssClasses: magnifierCSSClasses});
351353

352354
const htmlNode = createNodeFromString(stringNode);
353355
input.parentNode.appendChild(htmlNode);

0 commit comments

Comments
 (0)