🔔 a clean and simple notification, input, and selection suite for javascript, with no dependencies

Overview

notie

npm cdnjs

notie is a clean and simple notification, input, and selection suite for javascript, with no dependencies

Live demo: https://jaredreich.com/notie

With notie you can:

  • Alert users
  • Confirm user choices
  • Allow users to input information
  • Allow users to select choices
  • Allow users to select dates

Alt text

Features

  • Pure JavaScript, no dependencies, written in ES6
  • Easily customizable
  • Change colors to match your style/brand
  • Modify styling with the sass file (notie.scss) or overwrite the CSS
  • Font size auto-adjusts based on screen size

Browser Support

  • IE 10+
  • Chrome 11+
  • Firefox 4+
  • Safari 5.1+
  • Opera 11.5+

Installation

HTML:

<head>
  ...
  <link rel="stylesheet" type="text/css" href="https://unpkg.com/notie/dist/notie.min.css">
  <style>
    /* override styles here */
    .notie-container {
      box-shadow: none;
    }
  </style>
</head>
<body>
  ...
  <!-- Bottom of body -->
  <script src="https://unpkg.com/notie"></script>
</body>

npm:

npm install notie

Usage

ES6:

import notie from 'notie'
// or
import { alert, force, confirm, input, select, date, setOptions, hideAlerts } from 'notie'

Browser:

notie
// or
window.notie

Available methods:

notie.alert({
  type: Number|String, // optional, default = 4, enum: [1, 2, 3, 4, 5, 'success', 'warning', 'error', 'info', 'neutral']
  text: String,
  stay: Boolean, // optional, default = false
  time: Number, // optional, default = 3, minimum = 1,
  position: String // optional, default = 'top', enum: ['top', 'bottom']
})

notie.force({
  type: Number|String, // optional, default = 5, enum: [1, 2, 3, 4, 5, 'success', 'warning', 'error', 'info', 'neutral']
  text: String,
  buttonText: String, // optional, default = 'OK'
  position: String, // optional, default = 'top', enum: ['top', 'bottom']
  callback: Function // optional
}, callbackOptional())

notie.confirm({
  text: String,
  submitText: String, // optional, default = 'Yes'
  cancelText: String, // optional, default = 'Cancel'
  position: String, // optional, default = 'top', enum: ['top', 'bottom']
  submitCallback: Function, // optional
  cancelCallback: Function // optional
}, submitCallbackOptional(), cancelCallbackOptional())

notie.input({
  text: String,
  submitText: String, // optional, default = 'Submit'
  cancelText: String, // optional, default = 'Cancel'
  position: String, // optional, default = 'top', enum: ['top', 'bottom']
  submitCallback: Function(value), // optional
  cancelCallback: Function(value), // optional
  autocapitalize: 'words', // default: 'none'
  autocomplete: 'on', // default: 'off'
  autocorrect: 'off', // default: 'off'
  autofocus: 'true', // default: 'true'
  inputmode: 'latin', // default: 'verbatim'
  max: '10000',// default: ''
  maxlength: '10', // default: ''
  min: '5', // default: ''
  minlength: '1', // default: ''
  placeholder: 'Jane Smith', // default: ''
  value: String, // default: ''
  spellcheck: 'false', // default: 'default'
  step: '5', // default: 'any'
  type: 'text', // default: 'text'
  allowed: ['an', 's'] // Default: null, 'an' = alphanumeric, 'a' = alpha, 'n' = numeric, 's' = spaces allowed. Can be custom RegExp, ex. allowed: new RegExp('[^0-9]', 'g')
}, submitCallbackOptional(value), cancelCallbackOptional(value))

notie.select({
  text: String,
  cancelText: String, // optional, default = 'Cancel'
  position: String, // optional, default = 'bottom', enum: ['top', 'bottom']
  choices: [
    {
      type: Number|String, // optional, default = 1
      text: String,
      handler: Function
    }
    ...
  ],
  cancelCallback: Function // optional
}, cancelCallbackOptional())

notie.date({
  value: Date,
  submitText: String, // optional, default = 'OK'
  cancelText: String, // optional, default = 'Cancel'
  position: String, // optional, default = 'top', enum: ['top', 'bottom']
  submitCallback: Function(date), // optional
  cancelCallback: Function(date) // optional
}, submitCallbackOptional(date), cancelCallbackOptional(date))

For example:

notie.alert({ text: 'Info!' })
notie.alert({ type: 1, text: 'Success!', stay: true }) // Never hides unless clicked, or escape or enter is pressed
notie.alert({ type: 'success', text: 'Success!', time: 2 }) // Hides after 2 seconds
notie.alert({ type: 2, text: 'Warning<br><b>with</b><br><i>HTML</i><br><u>included.</u>' })
notie.alert({ type: 'warning', text: 'Watch it...' })
notie.alert({ type: 3, text: 'Error.', position: 'bottom' })
notie.alert({ type: 'error', text: 'Oops!' })
notie.alert({ type: 4, text: 'Information.' })
notie.alert({ type: 'info', text: 'FYI, blah blah blah.' })

notie.force({
  type: 3,
  text: 'You cannot do that, sending you back.',
  buttonText: 'OK',
  callback: function () {
    notie.alert({ type: 3, text: 'Maybe when you\'re older...' })
  }
})

notie.confirm({
  text: 'Are you sure you want to do that?<br><b>That\'s a bold move...</b>',
  cancelCallback: function () {
    notie.alert({ type: 3, text: 'Aw, why not? :(', time: 2 })
  },
  submitCallback: function () {
    notie.alert({ type: 1, text: 'Good choice! :D', time: 2 })
  }
})
notie.confirm({ text: 'Are you sure?' }, function() {
  notie.confirm({ text: 'Are you <b>really</b> sure?' }, function() {
    notie.confirm({ text: 'Are you <b>really</b> <i>really</i> sure?' }, function() {
      notie.alert({ text: 'Okay, jeez...' })
    })
  })
})

notie.input({
  text: 'Please enter your email:',
  submitText: 'Submit',
  cancelText: 'Cancel',
  cancelCallback: function (value) {
    notie.alert({ type: 3, text: 'You cancelled with this value: ' + value })
  },
  submitCallback: function (value) {
    notie.alert({ type: 1, text: 'You entered: ' + value })
  },
  value: '[email protected]',
  type: 'email',
  placeholder: '[email protected]'
})

notie.input({
  text: 'Please enter your name:',
  type: 'text',
  placeholder: 'Jane Doe',
  allowed: ['a', 's']
}, function(value) {
  notie.alert({ type: 1, text: 'You entered: ' + value })
}, function(value) {
  notie.alert({ type: 3, text: 'You cancelled with this value: ' + value })
})

notie.input({
  text: 'Please enter the price:',
  cancelCallback: function (value) {
    notie.alert({ type: 3, text: 'You cancelled with this value: ' + value })
  },
  submitCallback: function (value) {
    notie.alert({ type: 1, text: 'You entered: ' + value })
  },
  type: 'text',
  placeholder: '500',
  allowed: new RegExp('[^0-9]', 'g')
})

notie.select({
  text: 'Demo item #1, owner is Jane Smith',
  cancelText: 'Close',
  cancelCallback: function () {
    notie.alert({ type: 5, text: 'Cancel!' })
  },
  choices: [
    {
      text: 'Share',
      handler: function () {
        notie.alert({ type: 1, text: 'Share item!' })
      }
    },
    {
      text: 'Open',
      handler: function () {
        notie.alert({ type: 1, text: 'Open item!' })
      }
    },
    {
      type: 2,
      text: 'Edit',
      handler: function () {
        notie.alert({ type: 2, text: 'Edit item!' })
      }
    },
    {
      type: 3,
      text: 'Delete',
      handler: function () {
        notie.alert({ type: 3, text: 'Delete item!' })
      }
    }
  ]
})

function date() {
  notie.date({
    value: new Date(2015, 8, 27),
    cancelCallback: function (date) {
      notie.alert({ type: 3, text: 'You cancelled: ' + date.toISOString() })
    },
    submitCallback: function (date) {
      notie.alert({ type: 1, text: 'You selected: ' + date.toISOString() })
    }
  })
}

Use ES6 for nicer code and to inherit this:

notie.confirm({
  text: 'Leave the page?',
  submitCallback: () => this.location.href = 'https://google.com'
})

notie.confirm({
  text: 'Is ES6 great?',
  cancelCallback: () => notie.alert({ type: 3, text: 'Why not?' }),
  submitCallback: () => notie.alert({ type: 1, text: 'I Agree' })
})

notie.force({
  type: 3,
  text: 'You cannot do that, sending you back.',
  buttonText: 'OK',
  callback: () => notie.alert({ type: 3, text: 'Maybe when you\'re older...' })
})

Custom Styles

SASS:

// Before notie is imported:
$notie-color-success: #57BF57;
$notie-color-warning: #D6A14D;
$notie-color-error: #E1715B;
$notie-color-info: #4D82D6;
$notie-color-neutral: #A0A0A0;
// See all overwriteable variables in src/notie.scss

// Then import notie:
@import '../../node_modules/notie/src/notie';

CSS:

/* After notie styles are applied to DOM: */
.notie-container {
  box-shadow: none;
}

Options & Methods

// Showing all available options with defaults
notie.setOptions({
  alertTime: 3,
  dateMonths: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
  overlayClickDismiss: true,
  overlayOpacity: 0.75,
  transitionCurve: 'ease',
  transitionDuration: 0.3,
  transitionSelector: 'all'
  classes: {
    container: 'notie-container',
    textbox: 'notie-textbox',
    textboxInner: 'notie-textbox-inner',
    button: 'notie-button',
    element: 'notie-element',
    elementHalf: 'notie-element-half',
    elementThird: 'notie-element-third',
    overlay: 'notie-overlay',
    backgroundSuccess: 'notie-background-success',
    backgroundWarning: 'notie-background-warning',
    backgroundError: 'notie-background-error',
    backgroundInfo: 'notie-background-info',
    backgroundNeutral: 'notie-background-neutral',
    backgroundOverlay: 'notie-background-overlay',
    alert: 'notie-alert',
    inputField: 'notie-input-field',
    selectChoiceRepeated: 'notie-select-choice-repeated',
    dateSelectorInner: 'notie-date-selector-inner',
    dateSelectorUp: 'notie-date-selector-up'
  },
  ids: {
    overlay: 'notie-overlay'
  },
  positions: {
    alert: 'top',
    force: 'top',
    confirm: 'top',
    input: 'top',
    select: 'bottom',
    date: 'top'
  }
})
// programmatically hide all alerts with an optional callback function
notie.hideAlerts(callbackOptional)

License

MIT

Comments
  • Make methods return Promises

    Make methods return Promises

    Could you make the methods return a promise, so that devs who want to use Promise#then method could use that over callbacks, so the callbacks would be optional. It'll allow much more flexibility and get rid of spaghetti code

    opened by eorroe 15
  • PHP issue can not run notie

    PHP issue can not run notie

    I'm trying to run notie in my PHP Code but it does not working for me.

    <?php
    
    /* ******************************************************** */
    /* Please visit the help file to set correctly this file :) */
    /* ******************************************************** */
    
    // Set to "mailchimp" or "file"
    $STORE_MODE = "mailchimp";
    
    // MailChimp API Key findable in your Mailchimp's dashboard
    $API_KEY =  "";
    
    // MailChimp List ID  findable in your Mailchimp's dashboard
    $LIST_ID =  "";
    
    // After $_SERVER["DOCUMENT_ROOT"]." , write the path to your .txt to save the emails of the subscribers
    $STORE_FILE = $_SERVER["DOCUMENT_ROOT"]."/subscription-list.txt";
    
    /* ************************************ */
    // Don't forget to check the path below
    /* ************************************ */
    
    require('MailChimp.php');
    
    /* ***************************************************** */
    // For the part below, no interventions are required
    /* ***************************************************** */
    if($_SERVER["REQUEST_METHOD"] == "POST" && !empty($_POST["email"])) {
    	$email = $_POST["email"];
    	header('HTTP/1.1 200 OK');
    	header('Status: 200 OK');
    	header("Content-Type: text/html");
    
    	// Checking if the email writing is good
    	if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
    
    		// The part for the storage in a .txt
    		if ($STORE_MODE == "file") {
    
    			// SUCCESS SENDING
    			if(@file_put_contents($STORE_FILE, strtolower($email)."\r\n", FILE_APPEND)) {
    
    			// ERROR SENDING
    			} else {
    			}
    
    		// The part for the storage in Mailchimp
    		} elseif ($STORE_MODE == "mailchimp") {
    
    			$MailChimp = new \Drewm\MailChimp($API_KEY);
    
    			$result = $MailChimp->call('lists/subscribe', array(
    		                'id'                => $LIST_ID,
    		                'email'             => array('email'=>$email),
    		                'double_optin'      => true,
    		                'update_existing'   => true,
    		                'replace_interests' => false,
    		                'send_welcome'      => false,
    		            ));
    
    			// SUCCESS SENDING
    			if($result["email"] == $email) {
    
    			// ERROR SENDING
    			} else {
    
    			}
    		// ERROR
    		} else {
    
    		}
    	// ERROR DURING THE VALIDATION
    	} else {
    
    	}
    } else {
    	header('HTTP/1.1 403 Forbidden');
    	header('Status: 403 Forbidden');
    }
    
    echo '<link defer href="https://unpkg.com/notie/dist/notie.min.css" rel="stylesheet">';
    echo '<script defer src="../../vendors/jquery/jquery-3.1.1.min.js"></script>';
    echo '<script defer src="https://unpkg.com/notie"></script>';
    echo '<script defer>
    window.notie.alert({ type: "success", text: "Success!", time: 1.5 })
    </script>
    ';
    
    ?>
    
    
    opened by BilalReffas 11
  • Provide Tags

    Provide Tags

    Hi! First of all: great Script - I love it!

    But why don't you provide tags of your plugin? Using bower it would helpful to have version numbers. If I install your script now I get the master branch. It's best practice to have version numbers of your repo, done with the help of git tags. Or am I getting something wrong?

    Thank you.

    opened by LordMidi 10
  • Use notie.alert with an enum for types?

    Use notie.alert with an enum for types?

    I find it easier to remember enums than numbers.

    README.md

    notie.alert(notie.types.SUCCESS, 'Success!', 1.5);
    notie.alert(notie.types.WARNING, 'Warning<br><b>with</b><br><i>HTML</i><br><u>included.</u>', 2);
    notie.alert(notie.types.ERROR, 'Error.', 2.5);
    notie.alert(notie.types.INFO, 'Information.' 2);
    

    notie.js

    var types = {
        SUCCESS: 1,
        WARNING: 2,
        ERROR: 3,
        INFO: 4
    }
    .....
    return {
       alert: alert,
       confirm: confirm,
       input: input,
       types: types
    };
    
    opened by skvale 8
  • Input box on screen

    Input box on screen

    Since updating to 3.0 via npm, there's now a random input box on my screen and the notifications are now unstyled. Any tips?

    I suggest using the tag and release feature of Github so the changes between major releases are clearly laid out.

    Thanks!

    opened by coryhouse 6
  • Make confirms / notie responsive (on mobile)

    Make confirms / notie responsive (on mobile)

    When a notie confirm is displayed on mobile an the text for yes / no is too long, the text is being shown in several rows, but the boxes do not expand. By that issue the user is not able to (clearly) read the whole text when on mobile. Screenshot attached. screenshot_2016-06-01-14-24-00

    opened by ynnckstrm 4
  • Unable to get a specific version of Notie using bower

    Unable to get a specific version of Notie using bower

    Hello,

    We use notie in our project. I have version 2.1.0 on my local server, but version 3.0.0 is now on production server, for it does a bower install upon deployment.

    In bower.json:

    ...
      "dependencies": {
        "jquery": "= 2.1.4",
        "modernizr": "~2.8.2",
        "notie": "*"
      },
    ...
    

    We would like to force to version ~2.1.0 to be sure to not see untested features on production server. But "notie": "~2.1.0" doesn't work as it seems there is no versioning available for Notie.js (bower info notie returns "No versions available", as there is no releases on Notie repository).

    duplicate 
    opened by gnicol-bzh 4
  • Positioning notifications to the bottom window like the

    Positioning notifications to the bottom window like the "select" example?

    First, thanks for this great package. I was looking for something like this and only came across alert/modal scripts that threw in slide in notifications on the side. It's nice to have something dedicated to notifications.

    There was a previous issue asking about positioning the notifications to the window's bottom: https://github.com/jaredreich/notie/issues/78

    Your last message (Dec 28, 2016) said you'd incorporate this into v4. Since version 4 was released a couple days ago and you have an example notifications (select) that does slide up from the bottom window, I'm wondering if the other alerts can do the same?

    Is there an option that I'm missing (documented or undocumented) that'll allow this? This would be great to have so that sticky messages can be presented at the footer without obscuring the nav menu.

    Thanks.

    opened by bridgeport 3
  • notie.input over bootstrap modal window

    notie.input over bootstrap modal window

    Can't focus input element when notie opened over bootstrap modal, seems like bootstrap modal has position:fixed same as notie, thats why z-index does not work there;

    So i should hide bootstrap modal when i open notie input, thats why i suggest you to add some new callback like notie.input(...params, ...,onOpen, onClose) it also should be useful in other times

    opened by artemsky 3
  • notie.confirm

    notie.confirm

    Hi,

    I would like to know if there's a way to avoid the following scenario, when I use notie.confirm, I give the user a choice between Yes and Delete, Yes => will resume and load whatever is inside localStorage & Delete => will delete whatever is inside localStorage.... but if you miss click outside of the confirm box it will always default to delete. Is there any ways to change this behavior without going through a series of notie.alert just to make that the user did not click outside the confirm box by mistake?

    Basically a way to force the user to click YES OR DELETE but unable to dismiss the confirm box so this won't trigger the default behavior or going for the cancel function.

    Thank you

    opened by globz 3
  • Separate Logic and Styles

    Separate Logic and Styles

    This is a nice library but it really suffers when customising. For example, rather than a background colour, I'd like to add bottom border (different colour for each type of alert). This isn't possible without modifying the code. This will make updates painful.

    I'd recommending removing all the settings variables and creating a default CSS file. The code would just need to change classes of the dom elements based on the status. i.e. To show an alert the CSS would have a class (maybe) classed "notie-show" which would have the CSS animation and this class would be added to the notification container. Also, each alert style should have it's own class. etc...

    resizeListener could also be replaced with media queries.

    This gives far more flexibility and easier upgrades

    opened by nojacko 3
  • I see that this was opened in 2018, has there been any updates?

    I see that this was opened in 2018, has there been any updates?

        I see that this was opened in 2018, has there been any updates?
    

    Originally posted by @sgau77 in https://github.com/jaredreich/notie/issues/147#issuecomment-1292299834

    Really need this addition, am having to update accessibility on a site that makes extensive use of notie

    opened by bobfou 0
  • Added full support for accessibility (A11y) according to WCAG 2.1 & W3C AA

    Added full support for accessibility (A11y) according to WCAG 2.1 & W3C AA

    It includes PR #151, needed to be able to develop notie without problems.

    This PR adds full support for accessibility according to WCAG 21 and W3C AA.

    This is a must have nowadays and will enhance the library a lot if you accept the Pull Request.

    HTH.

    opened by jmalarcon 2
  • Modernize tooling

    Modernize tooling

    I've modernized the tooling used to build the tool since it was really outdated. That meant to upgrade to the latest versions of Gulp, Babel, Webpack and everything else, change some obsolete dev dependencies, change some gulp-plugins with tons of vulnerabilities, and rewriting the gulpfile.js file tasks, etc... Now it adds the .map file too.

    Apart the build process adds the Notie version as a banner comment in the .js files inside dist (both minified and non-minified).

    I've removed ESLint since it was really outdated, with vulnerabilities and nowadays VS Code and other IDEs do that for you.

    I've updated the files in dist too to the newly generated ones. I've added the generation of map file for the script for debugging purposes.

    This is the basis for being able to do new development in this great library. I plan to do a new pull request soon with full WCAG 2.1 accessibility support.

    Hope you can merge the PR ad thanks for your great work!

    opened by jmalarcon 0
Releases(v4.3.0)
Owner
Jared Reich
Professional bug introducer.
Jared Reich
A simple, modern, browser notification system

humane.js This project was heavily inspired by humanmsg project for jQuery. I really liked the project but I wanted to remove the jQuery dependency, a

Marc Harter 2.1k Dec 10, 2022
Pure JavaScript library for better notification messages

Toastify Toastify is a lightweight, vanilla JS toast notification library. Demo Click here Features Multiple stacked notifications Customizable No blo

Varun A P 1.3k Dec 30, 2022
⛔️ DEPRECATED - Dependency-free notification library that makes it easy to create alert - success - error - warning - information - confirmation messages as an alternative the standard alert dialog.

DEPRECATED This repository is no longer supported, please consider using alternatives. Dependency-free notification library. Documentation » Hi NOTY i

Nedim Arabacı 6.7k Dec 21, 2022
Simple javascript toast notifications

toastr toastr is a Javascript library for non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be cust

null 11.5k Jan 6, 2023
Beautiful JavaScript notifications with Web Notifications support.

v4: v5: A JavaScript/TypeScript notification, confirmation, and prompt library. Notifications can display as toast style, snackbar style, banners, dia

SciActive 3.6k Dec 30, 2022
framework-agnostic styled alert system for javascript

SMOKE.JS - 0.1.3 Notify or get approval from your users quickly and with style. This alert system uses css animations and background (so there are no

j youngblood 934 Dec 25, 2022
Growl-style alerts and messages for your app. #hubspot-open-source

Messenger Demo and Usage Docs Show messages in your app. Wrap AJAX requests with progress, success and error messages, and add retry to your failed re

HubSpot 4k Jan 2, 2023
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
An enhanced HTML 5 file input for Bootstrap 5.x/4.x./3.x with file preview, multiple selection, and more features.

bootstrap-fileinput An enhanced HTML 5 file input for Bootstrap 5.x, 4.x, and 3.x with file preview for various files, offers multiple selection, resu

Kartik Visweswaran 5.2k Jan 3, 2023
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Elegant, responsive, flexible and lightweight notification plugin with no dependencies.

iziToast Elegant, responsive, flexible and lightweight notification plugin with no dependencies. izitoast.marcelodolza.com Fast Responsive Animated Li

Marcelo Dolza 2.5k Jan 2, 2023
Personal project to a student schedule classes according his course level. Using GraphQL, Clean Code e Clean Architecture.

classes-scheduler-graphql This is a personal project for student scheduling, with classes according his course level. I intend to make just the backen

Giovanny Lucas 6 Jul 9, 2022
[DISCONTINUED] jQuery plugin that makes it easy to validate user input while keeping your HTML markup clean from javascript code.

jQuery Form Validator [DISCONTINUED] Validation framework that let's you configure, rather than code, your validation logic. I started writing this pl

Victor Jonsson 976 Dec 30, 2022
➷ A robust Javascript library for capturing keyboard input. It has no dependencies.

Hotkeys HotKeys.js is an input capture library with some very special features, it is easy to pick up and use, has a reasonable footprint (~3kb) (gzip

小弟调调™ 5.7k Jan 4, 2023
A simple but powerful tweening / animation library for Javascript. Part of the CreateJS suite of libraries.

TweenJS TweenJS is a simple tweening library for use in Javascript. It was developed to integrate well with the EaselJS library, but is not dependent

CreateJS 3.5k Jan 3, 2023
Tag-input - A versetile tag input component built with Vue 3 Composition API

TagInput A versetile tag input component built with Vue 3 Composition API. Please read this article to learn how to build this package step by step an

Mayank 12 Oct 12, 2022
Vue-input-validator - 🛡️ Highly extensible & customizable input validator for Vue 2

??️ Vue-input-validator demo! What is this package all about? By using this package, you can create input validators only with the help of a single di

null 14 May 26, 2022
A Bootstrap plugin to create input spinner elements for number input

bootstrap-input-spinner A Bootstrap / jQuery plugin to create input spinner elements for number input. Demo page with examples Examples with floating-

Stefan Haack 220 Nov 7, 2022
A phone input component that uses intl-tel-input for Laravel Filament

Filament Phone Input This package provides a phone input component for Laravel Filament. It uses International Telephone Input to provide a dropdown o

Yusuf Kaya 24 Nov 29, 2022