Skip to content

Instantly share code, notes, and snippets.

View oscarmarina's full-sized avatar

Oscar Marina oscarmarina

  • BBVA
  • Madrid, Spain
View GitHub Profile
@oscarmarina
oscarmarina / PePe.js
Created July 15, 2024 13:01
Creates an object with a getter for properties, allowing for the dynamic creation of properties.
import { html, LitElement } from 'lit';
import { styles } from './styles/pe-pe-styles.css.js';
// https://github.com/KonnorRogers/form-associated-helpers/blob/main/exports/mixins/lit-form-associated-mixin.js
/**
* Creates an object with a getter for properties, allowing for the dynamic creation of properties.
* @param {Object} props - The properties to be included in the object.
* @returns {Object} An object with a `properties` getter that returns a new objec.
*/
import tseslint from 'typescript-eslint';
import html from '@html-eslint/eslint-plugin';
// import htmlParser from '@html-eslint/parser';
import eslintConfigPrettier from 'eslint-config-prettier';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import js from '@eslint/js';
import { FlatCompat } from '@eslint/eslintrc';
const __filename = fileURLToPath(import.meta.url);
@oscarmarina
oscarmarina / isFocusable.js
Last active May 24, 2024 09:28
Checks if an element is focusable - treewalker = walkComposedTree(this, NodeFilter.SHOW_ELEMENT, isFocusable);
/**
* Checks if an element should be ignored.
* @param {Element} element - The DOM element to check.
* @param {Array} [exceptions=['dialog', '[popover]']] - Array of Elements to ignore when checking the element.
* @returns {boolean} True if the element should be ignored by a screen reader, false otherwise.
*/
const isElementInvisible = (element, exceptions = ['dialog', '[popover]']) => {
if (!element || !(element instanceof HTMLElement)) {
return false;
}
@oscarmarina
oscarmarina / urlToPlainObject.js
Created April 9, 2024 09:03
converting-a-url-object-to-a-plain-object-in-java-scrip
// https://www.abeautifulsite.net/posts/converting-a-url-object-to-a-plain-object-in-java-script/
const url = new URL('https://api.chucknorris.io/jokes/random');
function urlToPlainObject(url) {
const plainObject = {};
for (const key in url) {
if (typeof url[key] === 'string') {
plainObject[key] = url[key];
@oscarmarina
oscarmarina / context-meta.ts
Last active April 4, 2024 15:15
Lit playground context-consume-provide
import { ReactiveController, ReactiveControllerHost } from 'lit';
import {
createContext,
ContextProvider,
ContextConsumer,
Context,
ContextType,
} from '@lit/context';
@oscarmarina
oscarmarina / moveRowsWithKeywordToNewSheet.gs
Created November 14, 2023 21:05
Move Rows with Keyword
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Custom Menu')
.addItem('Move Rows with Keyword', 'moveRowsWithKeywordToNewSheet')
.addToUi();
}
function moveRowsWithKeywordToNewSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = ss.getActiveSheet();
@oscarmarina
oscarmarina / request-submit-polyfill.js
Created July 14, 2023 10:17
Requests to submit the form. Unlike submit(), this method includes interactive constraint validation and firing a submit event, either of which can cancel submission.
(prototype => {
if (typeof prototype.requestSubmit === 'function') {
return;
}
const validateSubmitter = (submitter, form) => {
if (!(submitter instanceof HTMLElement)) {
throw new TypeError('The submitter element is not of type HTMLElement');
}
if (submitter.type !== 'submit') {
- name: Check object
run: |
cat << OBJECT
${{ toJson(github.event) }}
OBJECT
@oscarmarina
oscarmarina / toggle-ytp.js
Created May 29, 2023 21:16
Bookmark - Toggle the YouTube Bar/Controls
javascript: (function () {
var style = document.querySelector('#toggle-ytp');
if (style) {
style.remove();
} else {
var selector = '.ytp-chrome-top,.ytp-chrome-bottom';
style = document.createElement('style');
style.id = 'toggle-ytp';
style.textContent = selector + '{display:none;}';
document.head.appendChild(style);
@oscarmarina
oscarmarina / index.html
Created April 23, 2023 17:44 — forked from e111077/index.html
MWC Select working inside an MWC dialog
<!DOCTYPE html>
<head>
<script type="module" src="./simple-greeting.js"></script>
</head>
<body>
<simple-greeting name="World"></simple-greeting>
</body>