├── .eslintrc.js
├── .gitattributes
├── .github
└── workflows
│ ├── ci.yml
│ └── docs.yml
├── .gitignore
├── .npmignore
├── .tool-versions
├── LICENSE
├── README.md
├── babel.config.json
├── docs
├── api.md
├── demos
│ ├── alert-container
│ │ ├── code.example
│ │ ├── description.md
│ │ └── index.js
│ ├── alert-list
│ │ ├── code.example
│ │ ├── description.md
│ │ └── index.js
│ ├── alert
│ │ ├── code.example
│ │ ├── description.md
│ │ └── index.js
│ ├── code-example.js
│ ├── index.js
│ └── themed
│ │ ├── code.example
│ │ ├── description.md
│ │ └── index.js
├── header.js
├── index.html
├── index.js
├── intro.md
├── root.js
└── scroll-text.js
├── package-lock.json
├── package.json
├── src
├── alert-list.js
├── alert-timer.js
├── alert-transition.js
├── alert
│ ├── icon.js
│ └── index.js
├── container.js
├── index.js
└── transition-styles.js
└── webpack.config.js
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable import/no-commonjs */
2 |
3 | module.exports = {
4 | env: {
5 | es6: true,
6 | node: true,
7 | browser: true
8 | },
9 | extends: ["@runly"],
10 | rules: {
11 | "react/jsx-no-bind": "off"
12 | }
13 | };
14 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 | on: push
3 |
4 | jobs:
5 | lint:
6 | name: Lint
7 | runs-on: ubuntu-latest
8 |
9 | steps:
10 | - uses: actions/checkout@v2
11 | - uses: actions/setup-node@v1
12 | with:
13 | node-version: '12.x'
14 |
15 | - name: Cache Dependencies
16 | uses: actions/cache@v2
17 | with:
18 | path: '**/node_modules'
19 | key: ${{ runner.os }}-deps-${{ hashFiles('package-lock.json') }}
20 | restore-keys: |
21 | ${{ runner.os }}-deps-
22 |
23 | - name: Install dependencies
24 | run: npm i
25 |
26 | - run: npm run lint
27 |
28 | build_docs:
29 | name: Build Docs
30 | runs-on: ubuntu-latest
31 |
32 | steps:
33 | - uses: actions/checkout@v2
34 | - uses: actions/setup-node@v1
35 | with:
36 | node-version: '12.x'
37 |
38 | - name: Cache Dependencies
39 | uses: actions/cache@v2
40 | with:
41 | path: '**/node_modules'
42 | key: ${{ runner.os }}-deps-${{ hashFiles('package-lock.json') }}
43 | restore-keys: |
44 | ${{ runner.os }}-deps-
45 |
46 | - name: Install dependencies
47 | run: npm i
48 |
49 | - run: npm run build --production
50 |
--------------------------------------------------------------------------------
/.github/workflows/docs.yml:
--------------------------------------------------------------------------------
1 | name: Documentation
2 | on:
3 | release:
4 | types: [published]
5 |
6 | jobs:
7 | docfx:
8 | name: Deploy Docs
9 | runs-on: ubuntu-latest
10 |
11 | steps:
12 | - name: Checkout Main Branch
13 | uses: actions/checkout@v2
14 |
15 | - name: Get Version
16 | id: get_version
17 | run: echo ::set-output name=version::${GITHUB_REF/refs\/tags\//}
18 |
19 | - uses: actions/setup-node@v1
20 | with:
21 | node-version: '12.x'
22 |
23 | - name: Cache Dependencies
24 | uses: actions/cache@v2
25 | with:
26 | path: '**/node_modules'
27 | key: ${{ runner.os }}-deps-${{ hashFiles('package-lock.json') }}
28 | restore-keys: |
29 | ${{ runner.os }}-deps-
30 |
31 | - name: Install dependencies
32 | run: npm i
33 |
34 | - name: Build Documentation
35 | run: npm run build --production
36 |
37 | - name: Checkout gh-pages Branch
38 | uses: actions/checkout@v2
39 | with:
40 | ref: gh-pages
41 | path: gh-pages
42 |
43 | - name: Stage files for commit
44 | working-directory: gh-pages
45 | run: |
46 | cp ../docs/index.html .
47 | cp ../docs/build.js .
48 | cp ../docs/build.js.map .
49 |
50 | - name: Commit doc assets
51 | working-directory: gh-pages
52 | run: |
53 | git config user.name "${GITHUB_ACTOR}"
54 | git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
55 | git add .
56 | git diff-index --quiet HEAD || git commit -m "Documentation ${{ steps.get_version.outputs.version }}"
57 | git push
58 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | /lib
3 | /es
4 | npm-debug.log
5 | docs/build.*
6 | yarn.lock
7 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | /src
2 | /docs
3 | babel.config.json
4 | webpack.config.js
5 | .eslintrc.js
6 |
--------------------------------------------------------------------------------
/.tool-versions:
--------------------------------------------------------------------------------
1 | nodejs 18.12.1
2 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) Chad Lee
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # React Bootstrap Notifier
2 |
3 | > A react component to show growl-like notifications using [bootstrap alerts](https://getbootstrap.com/docs/4.5/components/alerts/).
4 |
5 | See a [live demo](https://chadly.github.io/react-bs-notifier/).
6 |
7 | ## Usage
8 |
9 | ```
10 | npm install react-bs-notifier --save
11 | ```
12 |
13 | To show a list of different types of alerts in the top right corner of the page:
14 |
15 | ```js
16 | import React from "react";
17 | import ReactDOM from "react-dom";
18 | import { AlertList } from "react-bs-notifier";
19 |
20 | const alerts = [{
21 | id: 1,
22 | type: "info",
23 | message: "Hello, world"
24 | }, {
25 | id: 2,
26 | type: "success",
27 | message: "Oh, hai"
28 | }]
29 |
30 | ReactDOM.render((
31 |
Alert
12 |
13 | }
14 | code={ex}
15 | description={desc}
16 | {...props}
17 | noRender
18 | />
19 | );
20 |
21 | export default AlertDemo;
22 |
--------------------------------------------------------------------------------
/docs/demos/code-example.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom";
3 |
4 | import { LiveProvider, LiveEditor, LiveError, LivePreview } from "react-live";
5 | import theme from "prism-react-renderer/themes/vsDark";
6 |
7 | import { Alert, AlertList, AlertContainer } from "../../src";
8 | import { createUseStyles } from "react-jss";
9 | import Markdown from "react-remarkable";
10 |
11 | const CodeExample = ({ title, description, ...props }) => {
12 | const classes = useStyles();
13 |
14 | return (
15 | You can view and edit the code for each demo inline.
11 | 12 |Alert
12 |
13 | }
14 | code={ex}
15 | description={desc}
16 | noInline
17 | {...props}
18 | />
19 | );
20 |
21 | export default ThemedAlertDemo;
22 |
--------------------------------------------------------------------------------
/docs/header.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const Header = () => (
4 | 8 | A react component to show bootstrap alert notifications. 9 | View on GitHub 10 |
11 |7 | This is boilerplate text to show how the alert stays fixed to the top of 8 | the page as you scroll. 9 |
10 | 11 |12 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae 13 | justo vel tellus ultricies luctus. Mauris ac malesuada tellus. Morbi 14 | gravida pellentesque ultricies. Praesent hendrerit cursus lectus commodo 15 | malesuada. Pellentesque elit ex, accumsan ut velit suscipit, pellentesque 16 | interdum augue. Vestibulum quis nisl ut nisl varius hendrerit. Proin 17 | facilisis luctus ipsum, vitae molestie tellus mattis dapibus. 18 |
19 |20 | Duis eget urna vel nulla auctor ullamcorper at sit amet enim. Proin sed 21 | pretium risus. Aenean ac quam at dui tincidunt tristique. Class aptent 22 | taciti sociosqu ad litora torquent per conubia nostra, per inceptos 23 | himenaeos. Donec viverra quam quam. Etiam mattis quam et venenatis auctor. 24 | Maecenas lectus ipsum, luctus et varius a, pharetra id risus. Curabitur ac 25 | nibh vitae mauris volutpat varius id eget risus. Donec sem quam, dapibus 26 | vitae convallis ut, tempus eget dolor. Nulla facilisi. Phasellus eget 27 | viverra odio. Aenean finibus justo vitae dui ornare ultrices. 28 |
29 |30 | Sed sed dapibus diam. Suspendisse in viverra orci. Aliquam eu velit orci. 31 | Nunc interdum odio id dolor sodales vehicula nec sit amet tortor. Morbi 32 | efficitur tristique ipsum hendrerit vehicula. Aenean nec semper lectus. 33 | Vivamus efficitur velit massa, vitae condimentum eros tristique vitae. 34 | Vivamus cursus est magna, a scelerisque massa ultricies eget. Duis dictum 35 | nibh lectus, in venenatis est vehicula ut. Nam interdum magna in tortor 36 | bibendum suscipit. Nullam at luctus nisl. 37 |
38 |39 | Integer ornare tellus non nisl porta, non lacinia ex eleifend. Donec ex 40 | nisi, maximus id justo nec, condimentum rutrum metus. Pellentesque 41 | scelerisque molestie diam, sed dignissim lacus. Nulla vestibulum efficitur 42 | egestas. Ut ut nisi eu augue dignissim tincidunt eu quis turpis. 43 | Pellentesque in egestas sem. Suspendisse non nunc sed nulla commodo 44 | laoreet. Pellentesque gravida sit amet enim eget vestibulum. Integer sed 45 | sollicitudin turpis, eget aliquam neque. Ut sit amet eros lorem. Aliquam 46 | aliquet eleifend enim. Nullam vulputate libero vel lectus placerat, et 47 | pretium ipsum cursus. Cras vel velit purus. Fusce laoreet augue ac nibh 48 | varius ultricies. 49 |
50 |51 | Proin risus risus, vehicula semper augue vel, aliquet tincidunt arcu. Sed 52 | at luctus libero, vel varius urna. Donec fermentum sodales sem, vel 53 | bibendum mauris tempor a. Proin consectetur risus at massa rutrum 54 | ultricies. Sed sagittis dictum pretium. Nam congue libero in nisl 55 | vestibulum sollicitudin. Fusce pharetra sollicitudin orci, eget viverra 56 | nisl. Duis finibus finibus vehicula. Vivamus efficitur, nunc eu tincidunt 57 | consequat, massa sapien bibendum nibh, et placerat ante ante vel ligula. 58 | Suspendisse potenti. Mauris malesuada consequat porttitor. 59 |
60 |61 | Donec in lorem in nibh tincidunt pulvinar. Aenean eget egestas magna. 62 | Morbi sit amet ligula imperdiet, volutpat nunc venenatis, porttitor nisl. 63 | Sed nec tortor a quam aliquam volutpat ut vitae nibh. Maecenas in mollis 64 | risus, in auctor enim. Aenean consectetur dui ut eros cursus pellentesque. 65 | Morbi facilisis vitae sem non imperdiet. Phasellus eget blandit enim. 66 |
67 |68 | Duis varius et sapien in consequat. Cras ex ex, efficitur ac tellus vel, 69 | ornare volutpat turpis. Suspendisse finibus in purus eget pharetra. 70 | Pellentesque risus dui, cursus non fringilla eu, egestas a felis. Etiam 71 | vulputate scelerisque felis id mollis. Ut auctor tristique eros, a finibus 72 | augue vehicula at. Phasellus consectetur sagittis est, a fermentum quam 73 | rutrum et. Etiam finibus commodo sem vel fringilla. 74 |
75 |76 | Duis vel felis imperdiet, feugiat nulla id, fermentum velit. Ut pretium 77 | dapibus eros quis feugiat. Etiam nec vulputate purus. Suspendisse sit amet 78 | leo in enim cursus semper sagittis eget enim. Integer vestibulum pulvinar 79 | dui ac lobortis. Nam euismod lectus id nibh cursus pulvinar vel et risus. 80 | Curabitur sit amet interdum orci, at imperdiet ex. Ut cursus est sed ex 81 | ultricies, a pulvinar tellus volutpat. Sed lacus lorem, mollis et 82 | malesuada sit amet, pulvinar non libero. Aliquam viverra et mi sed 83 | dignissim. Quisque vel facilisis augue. Nam vel imperdiet ipsum, at 84 | sagittis nunc. Duis tincidunt libero ac elementum bibendum. Nulla quis 85 | auctor neque. Nullam ac tempor velit. 86 |
87 |88 | Pellentesque vitae ante vestibulum, rutrum est quis, pellentesque erat. 89 | Praesent fringilla ac ex ac aliquam. Nulla venenatis risus eget velit 90 | maximus porta. In venenatis orci ut nibh lacinia commodo. Fusce euismod 91 | egestas libero nec cursus. Ut faucibus porttitor auctor. Nam fringilla 92 | condimentum imperdiet. 93 |
94 |95 | Donec bibendum convallis sem in sodales. Aenean eget ultrices enim, ac 96 | suscipit eros. Sed laoreet urna sem, sit amet sagittis enim bibendum non. 97 | Vivamus quis dignissim dolor. Sed est metus, bibendum at mi ut, tincidunt 98 | ultricies ligula. Nam a pharetra dolor, nec laoreet ligula. Nunc fermentum 99 | massa a nisi posuere, ut semper velit volutpat. Maecenas convallis, neque 100 | et tempus aliquam, enim elit scelerisque diam, in malesuada odio enim non 101 | tellus. Duis porttitor ipsum erat, ac fringilla diam egestas pretium. 102 | Maecenas molestie venenatis arcu sed mollis. Pellentesque pulvinar odio 103 | dolor, placerat pharetra elit tempor eu. Maecenas venenatis dignissim 104 | velit a ornare. Integer sapien risus, commodo eu velit quis, finibus 105 | malesuada velit. Mauris eget dui eu tortor bibendum pharetra vel quis 106 | lectus. 107 |
108 |