@@ -310,4 +310,60 @@ export class Toast {
310
310
document . body . appendChild ( newToast ) ;
311
311
}
312
312
}
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
+ }
313
369
}
0 commit comments