Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/nhsuk/user-feedback-form

Javascript library for collecting simple user feedback
https://github.com/nhsuk/user-feedback-form

Last synced: 3 months ago
JSON representation

Javascript library for collecting simple user feedback

Awesome Lists containing this project

README

        

# User Feedback Form

A javascript plugin to add a user feedback form to your website.

You will also need a backend data store. See [user-feedback-store](https://github.com/nhsuk/user-feedback-store).

## Quickstart

### npm

Install from npm
```bash
npm install @nhsuk/user-feedback-form
```

Use script in your javascript build

```js
import userFeedbackForm from '@nhsuk/user-feedback-form';

userFeedbackForm({
cssSelector: "#my-div-id",
formEndpoint: "https://example.com/my-api-endpoint/",
enableTextResponse: false,
});
```

### script

If you do not have a node-based javascript frontend build, you can use the minified javascript distribution.

The latest javascript file can be found in github releases https://github.com/nhsuk/user-feedback-form/releases

```html

...


```

#### Attributes

`data-form-endpoint` - (required) An HTTP data store endpoint to POST data to. Include the trailing slash. The endpoint setting should probably be this:

```html


```

`data-enable-text-response` - (optional) Include to enable text responses on the feedback form.

## API

- `userFeedbackForm(settings)`

Adds the user feedback form inside a `

` element. `settings.cssSelector` will be used to select the div from the DOM.

`settings` should be an object containing:

* `formEndpoint` - (required) An HTTP data store endpoint to POST data to.
* `cssSelector` - (optional) HTML selector insert the form into. `'#nhsuk-user-feedback-form'` by default.

### Events

An `onFeedback` event is emitted when the user gives satisfied or unsatisfied feedback by clicking on the yes or no buttons.

You can listen to this event to trigger custom javascript code.

```js
// Listen to the event on the container div
document.querySelector("#nhsuk-user-feedback-form").addEventListener('onFeedback', (event) => {
// custom code using the boolean `isSatisfied` value.
console.log(event.detail.isSatisfied)
});
```

## Contributing

### Development

Run `npm install` followed by `npm start` to start a development server. A test site will be available at http://localhost:8080/tests/example/

### Style

For now, this app is very simple, so we don't use any libraries like Vue or React.
The `App` class in `src/index.js` represents the app as a whole.
Each screen has it's own class which can be instantiated and rendered with the `render` method when the screen should be displayed.
The screen classes are responsible for screen-level interactions such as rendering, attaching event listeners and input validation.

Run `npm run lint` to run eslint code linting.

### Tests

Run `npm test` to run all tests.