Skip to content

Instantly share code, notes, and snippets.

View johnnyferreiradev's full-sized avatar

Johnny Ferreira johnnyferreiradev

View GitHub Profile
@johnnyferreiradev
johnnyferreiradev / local-gitignore.md
Last active March 26, 2024 17:37 — forked from kelvinst/local-gitignore.md
Como fazer um .gitignore local?

Como fazer um .gitignore local?

Bom, este é um recurso, como muitos outros, bem escondido do git. Então resolvi fazer um post para explicar a situação em que pode-se usar e como fazer essa magia negra. 👻

O problema

Você provavelmente já adicionou algum dia um arquivo no projeto que não deveria ser commitado certo? E como você fez para ignorar esse arquivo mesmo? Provavelmente adicionou no arquivo .gitignore.

OK então, aí você commitou esse arquivo .gitignore e pronto, mais ninguém poderá criar um arquivo com o mesmo nome e commitar. Mas espera aí! Não era isso que você queria! Você só queria ignorar esse arquivo na sua máquina, se alguém, algum dia por obséquio achar esse um nome bom para seu arquivo, que assim seja.

@johnnyferreiradev
johnnyferreiradev / questions.py
Created January 31, 2024 20:12
Exercice FACCAT - Questions soluctions
# question 5
def getPredecessor():
try:
value = int(input("Digite um número inteiro: "))
return value - 1
except:
print("Tipo inválido. Você deve inserir um número inteiro.")
# question 6
@johnnyferreiradev
johnnyferreiradev / settings.json
Created January 31, 2024 10:33
My vscode settings
{
"workbench.colorTheme": "Min Dark",
"window.titleBarStyle": "custom",
"workbench.iconTheme": "symbols",
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
@johnnyferreiradev
johnnyferreiradev / fetch-combobox.tsx
Last active January 3, 2024 12:30
Fetch Combobox Component using radix-ui, react-query, tailwindcss and axios.
import React, { useMemo, useState } from 'react';
import { useInfiniteQuery } from '@tanstack/react-query';
import { Button, Loader, Popover, ButtonSizes, ButtonThemes } from 'nemea-ui';
import { CaretDown, Check, MagnifyingGlass } from '@phosphor-icons/react';
import { AxiosResponse } from 'axios';
import DebouncedInput from '../DebouncedInput';
import { InfiniteScroll } from '../InfiniteScroll';
import { cn } from '@/utils/cn';
@johnnyferreiradev
johnnyferreiradev / convert-to-file.js
Created May 10, 2022 21:54
Convert base64 to File and add to input file
const dataURLtoFile = (dataurl, filename) => {
var arr = dataurl.split(','),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
@johnnyferreiradev
johnnyferreiradev / infinite-scroll-react.js
Created February 15, 2022 13:08
Hook that helps to create the infinite scroll effect on a page or element
import { useEffect } from 'react';
const InfiniteScroll = ({ fetchMore, disabled, scrollElement }) => {
const elementScroll = ({ target }) => {
if (!disabled) {
const max = target.scrollHeight - target.clientHeight;
if (target.scrollTop >= max) {
fetchMore();
}
@johnnyferreiradev
johnnyferreiradev / useOutsideEvent.js
Created March 25, 2021 23:36
Hook para aplicar o evento mouseover nos componentes react
import { useEffect } from 'react';
const useOutsideEvent = (ref, onAction) => {
useEffect(() => {
function handleClickOutside(event) {
if (ref.current && !ref.current.contains(event.target)) {
onAction();
}
}
@johnnyferreiradev
johnnyferreiradev / limiteCharCss.css
Last active May 5, 2022 02:43
Limita o número de caracteres de um texto e adiciona três pontos (...) no final do texto
/* Horizontal */
p {
max-width: 15ch;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/* Vertical */
p {
@johnnyferreiradev
johnnyferreiradev / convert_css_string_to_object.js
Created October 15, 2020 17:15
Function to convert css string to object
const convertCssStringToObject = (cssString) => {
const cssObject = {};
const clearCssString = cssString[cssString.length - 1] === ';'
? cssString.substr(0, cssString.length - 1)
: cssString;
const cssRules = clearCssString.split(';');
cssRules.forEach((cssRule) => {
@johnnyferreiradev
johnnyferreiradev / createElement.js
Created September 24, 2020 16:39
Function for creating DOM elements
const createElement = (elementName, attributes) => {
const element = document.createElement(elementName);
const attributeAsArray = Object.entries(attributes);
attributeAsArray.forEach(([key, value]) => element.setAttribute(key, value));
return element;
};
// Example of use