@@ -310,4 +310,60 @@ export class Toast {
310310 document . body . appendChild ( newToast ) ;
311311 }
312312 }
313+ }
314+
315+ /**
316+ * @class ProgressBar
317+ * @description Create a new Neptune Progress Bar
318+ *
319+ * @param {any } config Add your configuration
320+ *
321+ * parent -> class or id of your target element, when null its document.body
322+ *
323+ * size -> xs, s, m, l, xl
324+ *
325+ * style -> primary, cta, information, success, warning, error
326+ *
327+ * progress -> set the progress of the par width a number
328+ *
329+ * @example
330+ * const myProgressBAr = new ProgressBar({
331+ * size: "l",
332+ * style: "primary",
333+ * progress: 30
334+ * });
335+ */
336+ export class ProgressBar {
337+ constructor ( config ) {
338+ // Create Progress Bar
339+ const newProgressBar = document . createElement ( 'div' ) ;
340+ newProgressBar . classList . add ( 'progress' ) ;
341+
342+ // Create Bar
343+ const newBar = document . createElement ( 'div' ) ;
344+ newBar . classList . add ( 'progress-bar' ) ;
345+ newProgressBar . appendChild ( newBar ) ;
346+
347+ // Setup Size
348+ if ( config . size != null ) {
349+ newProgressBar . classList . add ( 'progress-' + config . size ) ;
350+ }
351+
352+ // Setup Style
353+ if ( config . style != null ) {
354+ newProgressBar . classList . add ( 'progress-' + config . style ) ;
355+ }
356+
357+ // Handle Progress
358+ if ( config . progress != null ) {
359+ newBar . style . width = config . progress + '%' ;
360+ }
361+
362+ // Append to parent element
363+ if ( config . parent != null ) {
364+ document . querySelector ( config . parent ) . appendChild ( newProgressBar ) ;
365+ } else {
366+ document . body . appendChild ( newProgressBar ) ;
367+ }
368+ }
313369}
0 commit comments