Skip to content

Instantly share code, notes, and snippets.

View TiagoFuelber's full-sized avatar

Tiago Fuelber TiagoFuelber

View GitHub Profile
const debounce = (callback, wait) => {
let timeout;
return (...args) => {
const context = this;
clearTimeout(timeout);
timeout = setTimeout(() => callback.apply(context, args), wait);
};
};
export default debounce;
const objetToQueryString = params => Object.keys(params)
.map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k]))
.join('&');
export default objetToQueryString;
@TiagoFuelber
TiagoFuelber / createUser.js
Created December 17, 2018 14:12
How to manage use cases to not return promises.
export default ({ validateUser, userRepository }) => async (userData, { onSuccess, onError, onValidationError }) => {
if(!validateUser(userData)) {
return onValidationError(new Error('Invalid user'));
}
try {
const user = await userRepository.add(userData);
onSuccess(user);
} catch(error) {
@TiagoFuelber
TiagoFuelber / example.md
Created November 8, 2018 17:57
Service Now - How to import a widget inside another widget

In the HTML template:

 <sp-widget widget="widgetData"></sp-widget>

Client script

function(spUtil) {
@TiagoFuelber
TiagoFuelber / lazy-loader.js
Created April 10, 2018 20:17
Lazy-loader function
const lazies = Array.from(document.querySelectorAll('.lazy'));
function isInViewport(elem) {
const rect = elem.getBoundingClientRect();
return (
rect.bottom >= 0 &&
rect.right >= 0 &&
rect.top <= (
@TiagoFuelber
TiagoFuelber / example.js
Created April 5, 2018 13:48
Multiple promises asyn/away example.
// exemplo de async await com multiplas promises
async function getUsers(users) {
const promises = users
.map(user => fetch(`https://api.github.com/users/${user}`).then(response => response.json()));
const people = await Promise.all(promises);
console.log(people);
}
@TiagoFuelber
TiagoFuelber / base.css
Created March 13, 2018 16:45
CSS REM configuration
html {font-size: 62.5%;}
@media screen and (max-width: 1024px) {
html {font-size: 55%;}
}
@media screen and (max-width: 940px) {
html {font-size: 50%;}
}
@TiagoFuelber
TiagoFuelber / selfHidingMenu.js
Last active March 8, 2018 13:09
Mobile menu that scrolls down when user scrolls up.
<style>
.nav-up {
top: -70px; //height of the header
transition: top .2s;
}
.na-down {
top: 0;
transition: top .2s;
}
@TiagoFuelber
TiagoFuelber / .editorconfig
Created February 21, 2018 09:31
.editorconfig boilerplate
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
@TiagoFuelber
TiagoFuelber / ObjectFitPolyfill.js
Created December 7, 2017 17:29
IE and Edge simple polyfill for Object-fit: cover
export class ObjectFitPolyfill {
constructor() {
throw new Error('Não é possivel instanciar ObjectFitolyfill');
}
static init () {
let html = document.querySelector('html');
let noObjectFit = html.classList.contains('ie') || html.classList.contains('edge');