JSFiddle - React, Tailwind, and code Playground

by chikunova_nata

JavaScript

function alertsService($document) {

        var alertsContainer = angular.element($document[0].createElement('einv-alerts-container'));
        angular.element($document.find('body').eq(0)).append(alertsContainer);

        var _warnings = [],
            _errors = [],
            _confirms = [],
            _counter = 0;

        function get(type) {
            switch (type) {
                case 'error':
                    return _errors;
                case 'confirm':
                    return _confirms;
                case 'info':
                default:
                    return _warnings;
            }
        }

        function info(messages) {
            construct('info', messages);
        }

        function error(messages) {
            construct('error', messages);
        }

        function confirm(messages) {
            construct('confirm', messages);
        }

        function close() {
            Array.prototype.slice.call(arguments).forEach(function (type) {
                var alerts = get(type);
                if (alerts) {
                    alerts.splice(0);
                }
            });
        }

        function transform(message) {
            var obj = {};

            obj.value = message.message ? message.message : message;
            obj.correlationId = message.correlationId;
            obj.id = _counter;

            _counter++;

            return obj;
        }

        function construct(type, messages) {
            var alerts = get(type);
            if (Array.isArray(messages)) {
                messages.forEach(function (message) {
                    alerts.unshift(transform(message));
                });
            } else {
                if (alerts.some(function (alert) {
                        return alert.value === messages;
                    })) {
                    return;
                }

                alerts.unshift(transform(messages));
            }
        }

        return {
       ...