https://github.com/coderaiser/smalltalk
Promise-based Alert, Confirm and Prompt replacement
https://github.com/coderaiser/smalltalk
alert confirm hacktoberfest modal promise prompt
Last synced: 7 months ago
JSON representation
Promise-based Alert, Confirm and Prompt replacement
- Host: GitHub
- URL: https://github.com/coderaiser/smalltalk
- Owner: coderaiser
- License: mit
- Created: 2015-09-19T12:35:25.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-12-03T21:37:27.000Z (about 2 years ago)
- Last Synced: 2025-05-21T01:12:51.829Z (9 months ago)
- Topics: alert, confirm, hacktoberfest, modal, promise, prompt
- Language: JavaScript
- Homepage:
- Size: 396 KB
- Stars: 90
- Watchers: 3
- Forks: 21
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog
- License: LICENSE
Awesome Lists containing this project
README
# Smalltalk [![License][LicenseIMGURL]][LicenseURL] [![NPM version][NPMIMGURL]][NPMURL] [![Build Status][BuildStatusIMGURL]][BuildStatusURL] [![Coverage][CoverageIMGURL]][CoverageURL]
Simple [Promise](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise)-based replacement of native Alert, Confirm and Prompt.
# Install
```
npm i smalltalk
```
# API
First things first, require `smalltalk` with:
```js
const smalltalk = require('smalltalk');
```
You can also use native version with:
```js
const smalltalk = require('smalltalk/native');
```
When you need a bundled verseion use
```js
import smalltalk from 'smalltalk/bundle';
```
In every method of `smalltalk` last parameter *options* is optional and could be used
to prevent handling of cancel event and to specify custom button label.
```js
({
cancel: true, /* default */
});
```
## smalltalk.alert(title, message [, options])

```js
smalltalk
.alert('Error', 'There was an error!')
.then(() => {
console.log('ok');
});
```
## smalltalk.confirm(title, message [, options])

```js
smalltalk
.confirm('Question', 'Are you sure?')
.then(() => {
console.log('yes');
})
.catch(() => {
console.log('no');
});
```
## smalltalk.prompt(title, message, value [, options])

```js
smalltalk
.prompt('Question', 'How old are you?', '10')
.then((value) => {
console.log(value);
})
.catch(() => {
console.log('cancel');
});
```
Use `type='password'` for `password` fields:
```js
smalltalk
.prompt('Question', 'How old are you?', '10', {
type: 'password',
})
.then((value) => {
console.log(value);
})
.catch(() => {
console.log('cancel');
});
```
## smalltalk.progress(title, message)

```js
const progress = smalltalk.progress('Cloud Commander', 'Copy /home/coderaiser -> /home/coderaiser/2');
progress
.setProgress(41)
.catch(() => {
console.log('abort');
});
```
## Custom label
You can use custom label passing into options param the buttons specification. For example :
```js
const tryToCatch = require('try-to-catch');
const OK = 2;
const result = await tryToCatch(smalltalk.confirm, 'Question', 'Are you sure?', {
buttons: {
ok: 'Ok Label',
cancel: 'Cancel Label',
},
});
if (result.length === OK)
console.log('yes');
else
console.log('no');
```
# License
MIT
[NPMIMGURL]: https://img.shields.io/npm/v/smalltalk.svg?style=flat&longCache=true
[BuildStatusIMGURL]: https://img.shields.io/travis/coderaiser/smalltalk/master.svg?style=flat&longCache=true
[LicenseIMGURL]: https://img.shields.io/badge/license-MIT-317BF9.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/smalltalk "npm"
[BuildStatusURL]: https://travis-ci.org/coderaiser/smalltalk "Build Status"
[LicenseURL]: https://tldrlegal.com/license/mit-license "MIT License"
[CoverageURL]: https://coveralls.io/github/coderaiser/smalltalk?branch=master
[CoverageIMGURL]: https://coveralls.io/repos/coderaiser/smalltalk/badge.svg?branch=master&service=github