npm package: @joaobelotwt/pwa-install
Description: PWA install dialog.
Author: twistag
Latest version: 0.0.5

## \<pwa-install\>

Installation dialog for Progressive web application. Provides more convenience user experience and fix lack of native dialogs in some browsers. **13.5kB brotli** compressed bundle. Translation/localization is supported.

## Install

```bash
npm i @joaobelotwt/pwa-install
```

Alternatively, you can use [unpkg](https://unpkg.com).


## Import

```js
import '@joaobelotwt/pwa-install';
```

## Use

```html
<pwa-install></pwa-install>
```

## Supported params
```html
<pwa-install
  manual-apple="true"
  manual-chrome="true"
  disable-chrome="true"

  install-description="Custom call to install text"
  disable-install-description="true"

  manifest-url="/manifest.json"
  name="PWA"
  description="Progressive web application"         
  icon="/icon.png">
</pwa-install>
<!-- 
  manual-apple/chrome params means you want to show the Dialog manually by showDialog().
  disable-chrome param is for completely disabling custom logic and interception for Chominum browsers (will work built-in browser logic).
--->
```
*Make a good manifest file and don't use name/descr/icon params. Boolean attributes needs to be removed to act like "false"*

<br>

## Supported events
- pwa-install-success-event
- pwa-install-fail-event
- pwa-install-available-event
- pwa-user-choice-result-event

```html
<script type="text/javascript">
  var pwaInstall = document.getElementsByTagName('pwa-install')[0];

  pwaInstall.addEventListener('pwa-install-success-event', (event) => {console.log(event.detail.message)});
</script>
```
*⚠️ success/fail/choice events is Chromium only, iOS don't have them.*

<br>

## Supported properties (readonly)
- userChoiceResult: string;
- isDialogHidden: boolean
- isInstallAvailable: boolean
- isAppleMobilePlatform: boolean
- isUnderStandaloneMode: boolean
- isRelatedAppsInstalled: boolean

```html
<script type="text/javascript">
  var pwaInstall = document.getElementsByTagName('pwa-install')[0];

  console.log(pwaInstall.isUnderStandaloneMode);
</script>
```
<br>

## Supported methods
- install
- hideDialog
- showDialog
- getInstalledRelatedApps: async

```html
<script type="text/javascript">
  var pwaInstall = document.getElementsByTagName('pwa-install')[0];

  pwaInstall.install();
</script>
```

*getInstalledRelatedApps is Chromium only, always empty on iOS.*

<br>

## Supported localization

At this time *EN*, *PT*, *RU*, *TR*, *DE*, *ES* and *NL* languages available. Language should change automatically based on browser settings. Please create the pull-request if you want to help with translation to your language. It's an easy process.

-  Define proper [locale code](https://lit.dev/docs/localization/overview/#locale-codes) for your language.
-  Find `lit-localize.json` config file and add new lang code to **targetLocales**.
-  Execute `npm run localize` to generate **XLF** file for new language.
-  Find new file in `i18n` folder.
-  Do translation inside `<target>` tags below `<source>` tag of each string.
-  Execute `npm run localize-build` to generate new locale files.- 
-  Find `/src/localization/index.ts` and import new locale like the rest of the languages.
-  Execute `npm run build` to update bundle and prepare changes for pull request.

<br>

## ROADMAP
- style customization