Skip to content

Instantly share code, notes, and snippets.

@ryanlucas
Last active July 4, 2023 11:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save ryanlucas/835159643e87e95c679294dd6b139e91 to your computer and use it in GitHub Desktop.
Save ryanlucas/835159643e87e95c679294dd6b139e91 to your computer and use it in GitHub Desktop.
Search Bar*
Search Bar*
Inactive*
focused -> Active
Active
typed -> Text Entry
canceled -> Inactive
cleared -> Empty
Empty*
Text Entry
submitted -> Results
Results
function render(model){
var active_state = model.active_states[0].name;
return $('div', {style: {display: 'flex', justifyContent: 'center', height: '100%'}},
render_search_bar(active_state, model))}
function render_search_bar(active_state, model){
if (active_state == 'Inactive') {
return $('div',
$('input', {type: 'text',
placeholder: 'Enter a search term...',
style: {border: '1px solid grey', borderRadius: '8px', padding: '8px', marginRight: '12px'},
onFocus: function(){ model.emit("focused") }}),
$('button', {disabled: true, style: {border: 'none', borderRadius: '8px', padding: '8px 12px', backgroundColor: 'lightgrey'}}, 'Search'))
}
if (active_state == 'Empty') {
return $('div',
$('input', {value: '',
style: {backgroundColor: 'papayaWhip', border: '1px solid grey', borderRadius: '8px', padding: '8px', marginRight: '12px'},
onChange: function(){ model.emit("typed") }}),
$('button', {disabled: true, style: {border: 'none', borderRadius: '8px', padding: '8px 12px', backgroundColor: 'lightgrey'}}, 'Search'),
$('button', {style: {border: 'none', borderRadius: '8px', padding: '8px 12px', marginLeft: '6px', backgroundColor: 'tomato', color: 'white'},
onClick: function(){ model.emit("canceled") }}, 'Cancel'))
}
if (active_state == 'Text Entry') {
return $('div',
$('input', {style: {backgroundColor: 'papayaWhip', border: '1px solid grey', borderRadius: '8px', padding: '8px', marginRight: '12px'}}),
$('button', {style: {border: 'none', borderRadius: '8px', padding: '8px 12px', backgroundColor: '#449bd1', color: 'white'},
onClick: function(){ model.emit("submitted") }}, 'Search'),
$('button', {style: {border: 'none', borderRadius: '8px', padding: '8px 12px', marginLeft: '6px', backgroundColor: 'tomato', color: 'white'},
onClick: function(){ model.emit("cleared") }}, 'Clear'))
}
if (active_state == 'Results') {
return $('div',
$('input', {style: {backgroundColor: 'papayaWhip', border: '1px solid grey', borderRadius: '8px', padding: '8px', marginRight: '12px'},
onChange: function(){ model.emit("typed") }}),
$('button', {disabled: true, style: {border: 'none', borderRadius: '8px', padding: '8px 12px', backgroundColor: 'lightgrey'}}, 'Search'),
$('button', {style: {border: 'none', borderRadius: '8px', padding: '8px 12px', marginLeft: '6px', backgroundColor: 'tomato', color: 'white'},
onClick: function(){ model.emit("cleared") }}, 'Clear'),
$('ul',
$('li', 'Search result 1'),
$('li', 'Search result 2'),
$('li', 'Search result 3')))
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment