Skip to content

Commit

Permalink
feat: add documentation for pan-analytics viewer component
Browse files Browse the repository at this point in the history
  • Loading branch information
Capevace committed Oct 20, 2024
1 parent f4c7d89 commit 618bdf7
Showing 1 changed file with 1 addition and 93 deletions.
94 changes: 1 addition & 93 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,101 +86,9 @@ composer require mateffy/color

## Usage

To add the popups to your app, all you have to do is include the `pan-analytics::viewer` component in your blade template:

```blade
{{-- Make sure to verify who has access!
Including this component will expose your analytics data! --}}
@if (auth()->user()?->email === '[email protected]')
<x-pan-analytics::viewer />
@endif
```

The popups should now be appearing when hovering over elements that have a `[data-pan]` attribute.

### Options

You can pass options to the component to change the default behavior:

```blade
<x-pan-analytics::viewer
:toggle="true"
:events="['my-event-1', 'my-event-2']"
:force-all="true"
/>
```

| Option | Description | Default |
|-------------|----------------------------------------------------------------------------------------------|---------|
| `toggle` | Whether to show a toggle button to show/hide the popups | `false` |
| `events` | Specify the events that should be fetched. | `null` |
| `force‑all` | Force all events to get fetched, may be required when dynamically creating tracked elements. | `false` |

### Events

The package will automatically detect what events are being tracked on the current page by querying for `data-pan` attributes. If you are dynamically creating tracked elements after initial render, these may be missed and no popup will be shown.

To fix this, you can either specify the specific `events` you want to show on the page or use the `force-all` option to disable filtering and fetch all events.

<br>

## Security

The package registers a route for the client to be able to access the data. This route required a valid URL signature to be able to access it, which the `pan-analytics::viewer` component will automatically generate (signed URLs are valid for 1h). **If you include this component on a page that is publicly accessible and don't check the user before including the component, anyone can access the analytics data!**

So, make sure to only render this component for users with the necessary permissions.

```blade
@if (auth()->user()?->email === '[email protected]')
<x-pan-analytics::viewer />
@endif
{{-- or --}}
@if (auth()->user()?->can('view-analytics'))
<x-pan-analytics::viewer />
@endif
```

### Tippy.js

This package uses [Tippy.js](https://github.com/atomiks/tippyjs) to create the popups. `tippy.js` is included via `unpkg.com` like this, but only when the component is rendered:

```html
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
```

<br>

## Configuration

You can publish the config file with:

```bash
php artisan vendor:publish --provider="Mateffy\PanAnalyticsViewer\PanAnalyticsViewerServiceProvider" --tag="config"
```

This is the default configuration:

```php
return [
'endpoint' => env('PAN_ANALYTICS_ENDPOINT', '/pan/viewer')
];
```

### Endpoint

You can change the URL that the analytics are being exposed on by changing the `PAN_ANALYTICS_ENDPOINT` environment variable or customizing the `endpoint` config key. The default URL is `example.com/pan/viewer`.

<br>
TODO: Complete documentation

## Changelog

- 1.0.2
- Feature: added Livewire support, the `[data-pan]` search will now be re-run after Livewire `morph.updated` events are fired, to show the popups for newly created elements
- 1.0.1
- Fix: removed livewire specific script inclusion
- 1.0.0
- Initial release

0 comments on commit 618bdf7

Please sign in to comment.