# vikingowls-ts-snippets
## A collection of often used typescript snippets

---

### Utils
#### sleep()
The sleep function takes the time to sleep in milliseconds.
```ts
import { sleep } from "vikingowls-ts-snippets";

sleep(2000).then(any => {
  // do-something
})
```

---

### Dom Utils
#### addGlobalEventListener()
The addGlobalEventListener function takes a type (string), a selector (string), a callback function, options (boolean or AddEventListenerOptions), and a parent (DOM or querySelector, etc)

```ts
import {addGlobalEventListener, qs} from "./domUtils";

addGlobalEventListener(
    "click",
    ".btn",
    () => console.log("Run once"),
    {once: true}
)

addGlobalEventListener(
    "click",
    ".btn",
    () => console.log("Only works inside the wrapper class"),
    {},
    qs(".wrapper")
)
```
#### qs()
The qs function takes a selector (string) and a parent (DOM etc)

```ts
import {qs} from "./domUtils";

// instead of document.querySelector(".btn")
qs(".btn")
```
#### qsa()
The qsa function takes a selector (string) and a parent (DOM etc) and returns an Array of Elements

```ts
import {qsa} from "./domUtils";

// instead of document.querySelectorAll(".btn")
qsa(".btn")
```
---

### Formatters
#### formatCurrency()
The formatCurrency function takes a number and a currency (as shown).
The output defaults to the locale set in the browser but can be set manually.
```ts
import { formatCurrency } from "vikingowls-ts-snippets";

formatCurrency(9_123_456.789123, "EUR", "de-de")
// prints in germany "9.123.456,79 €"
formatCurrency(9_123_456.789123, "USD")
// prints in usa "$9,123,456.79"
```
#### formatNumber()
The formatNumber function takes a number.
The output defaults to the locale set in the browser but can be set manually.
```ts
import { formatNumber } from "vikingowls-ts-snippets";

formatNumber(9_123_456.789123, "de-de")
// prints in germany "9.123.456,789"
formatNumber(9_123_456.789123)
// prints in usa "9,123,456.789"
```
#### formatCompactNumber()
The formatCompactNumber function takes a number.
The output defaults to the locale set in the browser but can be set manually.
```ts
import { formatCompactNumber } from "vikingowls-ts-snippets";

formatCompactNumber(9_123_456.789123, "de-de")
// prints in germany "9,1 Mio."
formatCompactNumber(9_123_456.789123)
// prints in usa "9.1M"
```
#### formatRelativeDate()
The formatRelativeDate function takes a Date (end Date).
You also can set a default 'start Date'.
The output defaults to the locale set in the browser but can be set manually.
```ts
import { formatRelativeDate } from "vikingowls-ts-snippets";

formatRelativeDate(new Date().getSeconds() - 20000, new Date().getSeconds(), "de-de")
// prints in germany "vor 20 Sekunden"
formatRelativeDate(new Date().getSeconds() - 20000, new Date().getSeconds())
// prints in usa "20 seconds ago"
```
