@bagelink/vue 0.0.1167 → 0.0.1174
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Carousel.vue.d.ts.map +1 -1
- package/dist/components/DataTable/DataTable.vue.d.ts.map +1 -1
- package/dist/components/ModalForm.vue.d.ts +23 -114
- package/dist/components/ModalForm.vue.d.ts.map +1 -1
- package/dist/components/form/BagelForm.vue.d.ts +28 -35
- package/dist/components/form/BagelForm.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/RichText/composables/useEditor.d.ts +5 -10
- package/dist/components/form/inputs/RichText/composables/useEditor.d.ts.map +1 -1
- package/dist/index.cjs +37 -33
- package/dist/index.mjs +37 -33
- package/dist/plugins/modal.d.ts +5 -59
- package/dist/plugins/modal.d.ts.map +1 -1
- package/dist/plugins/modalTypes.d.ts +66 -0
- package/dist/plugins/modalTypes.d.ts.map +1 -0
- package/dist/style.css +58 -58
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/BagelFormUtils.d.ts +3 -1
- package/dist/utils/BagelFormUtils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/Carousel.vue +3 -9
- package/src/components/DataTable/DataTable.vue +2 -3
- package/src/components/ModalForm.vue +20 -30
- package/src/components/form/BagelForm.vue +34 -28
- package/src/plugins/modal.ts +7 -59
- package/src/plugins/modalTypes.ts +58 -0
- package/src/types/index.ts +1 -3
- package/src/utils/BagelFormUtils.ts +5 -2
package/dist/style.css
CHANGED
|
@@ -356,13 +356,13 @@ display: block;
|
|
|
356
356
|
padding: 0;
|
|
357
357
|
}
|
|
358
358
|
|
|
359
|
-
.BglCarousel[data-v-
|
|
359
|
+
.BglCarousel[data-v-519e4d32] {
|
|
360
360
|
position: relative;
|
|
361
361
|
width: 100%;
|
|
362
362
|
overflow: hidden;
|
|
363
363
|
touch-action: pan-y pinch-zoom; /* Allow vertical scrolling */
|
|
364
364
|
}
|
|
365
|
-
.bgl-slider[data-v-
|
|
365
|
+
.bgl-slider[data-v-519e4d32] {
|
|
366
366
|
display: flex;
|
|
367
367
|
position: relative;
|
|
368
368
|
width: 100%;
|
|
@@ -375,26 +375,26 @@ display: block;
|
|
|
375
375
|
-webkit-user-select: none;
|
|
376
376
|
user-select: none;
|
|
377
377
|
}
|
|
378
|
-
.bgl-slider[data-v-
|
|
378
|
+
.bgl-slider[data-v-519e4d32] > * {
|
|
379
379
|
flex: 0 0 calc((100% - (var(--item-count) - 1) * 1%) / var(--item-count));
|
|
380
380
|
width: calc((100% - (var(--item-count) - 1) * 1%) / var(--item-count));
|
|
381
381
|
min-width: calc((100% - (var(--item-count) - 1) * 1%) / var(--item-count));
|
|
382
382
|
position: relative;
|
|
383
383
|
overflow: hidden;
|
|
384
384
|
}
|
|
385
|
-
.bgl-slider.slides-1[data-v-
|
|
385
|
+
.bgl-slider.slides-1[data-v-519e4d32] > * {
|
|
386
386
|
flex: 0 0 100%;
|
|
387
387
|
width: 100%;
|
|
388
388
|
min-width: 100%;
|
|
389
389
|
}
|
|
390
|
-
.dragging .bgl-slider[data-v-
|
|
390
|
+
.dragging .bgl-slider[data-v-519e4d32] > * {
|
|
391
391
|
pointer-events: none;
|
|
392
392
|
user-select: none;
|
|
393
393
|
}
|
|
394
|
-
.autoHeight[data-v-
|
|
394
|
+
.autoHeight[data-v-519e4d32] {
|
|
395
395
|
transition: height ease 0.7s;
|
|
396
396
|
}
|
|
397
|
-
.dots[data-v-
|
|
397
|
+
.dots[data-v-519e4d32] {
|
|
398
398
|
display: flex;
|
|
399
399
|
justify-content: center;
|
|
400
400
|
align-items: center;
|
|
@@ -402,7 +402,7 @@ display: block;
|
|
|
402
402
|
margin-top: 1rem;
|
|
403
403
|
gap: 8px;
|
|
404
404
|
}
|
|
405
|
-
.dot[data-v-
|
|
405
|
+
.dot[data-v-519e4d32] {
|
|
406
406
|
height: 10px;
|
|
407
407
|
width: 10px;
|
|
408
408
|
border-radius: 50%;
|
|
@@ -411,10 +411,10 @@ display: block;
|
|
|
411
411
|
transition: opacity 0.3s ease;
|
|
412
412
|
cursor: pointer;
|
|
413
413
|
}
|
|
414
|
-
.dot[data-v-
|
|
414
|
+
.dot[data-v-519e4d32]:hover {
|
|
415
415
|
opacity: 0.6;
|
|
416
416
|
}
|
|
417
|
-
.dot.current[data-v-
|
|
417
|
+
.dot.current[data-v-519e4d32] {
|
|
418
418
|
opacity: 0.8;
|
|
419
419
|
}
|
|
420
420
|
|
|
@@ -472,22 +472,22 @@ display: block;
|
|
|
472
472
|
font-size: 0.95rem;
|
|
473
473
|
}
|
|
474
474
|
|
|
475
|
-
.table-list-wrap[data-v-
|
|
475
|
+
.table-list-wrap[data-v-a1cf8002] {
|
|
476
476
|
min-height: 150px;
|
|
477
477
|
}
|
|
478
|
-
.selected[data-v-
|
|
478
|
+
.selected[data-v-a1cf8002] {
|
|
479
479
|
background: var(--bgl-primary-tint);
|
|
480
480
|
}
|
|
481
|
-
tbody tr.selected[data-v-
|
|
481
|
+
tbody tr.selected[data-v-a1cf8002]:hover {
|
|
482
482
|
background: var(--bgl-primary-light);
|
|
483
483
|
}
|
|
484
|
-
.loading-table[data-v-
|
|
484
|
+
.loading-table[data-v-a1cf8002] {
|
|
485
485
|
position: relative;
|
|
486
486
|
}
|
|
487
|
-
.inset[data-v-
|
|
487
|
+
.inset[data-v-a1cf8002] {
|
|
488
488
|
inset: 0;
|
|
489
489
|
}
|
|
490
|
-
.loading-table-animation[data-v-
|
|
490
|
+
.loading-table-animation[data-v-a1cf8002] {
|
|
491
491
|
--size: 60px;
|
|
492
492
|
top: 30vh;
|
|
493
493
|
inset-inline-start: calc(50% - var(--size));
|
|
@@ -495,9 +495,9 @@ tbody tr.selected[data-v-18572328]:hover {
|
|
|
495
495
|
border-top: 4px solid var(--bgl-primary);
|
|
496
496
|
width: var(--size);
|
|
497
497
|
height: var(--size);
|
|
498
|
-
animation: loading-table-
|
|
498
|
+
animation: loading-table-a1cf8002 1s linear infinite;
|
|
499
499
|
}
|
|
500
|
-
@keyframes loading-table-
|
|
500
|
+
@keyframes loading-table-a1cf8002 {
|
|
501
501
|
0% {
|
|
502
502
|
transform: translate(-50%, -50%) rotate(0deg);
|
|
503
503
|
}
|
|
@@ -505,51 +505,51 @@ tbody tr.selected[data-v-18572328]:hover {
|
|
|
505
505
|
transform: translate(-50%, -50%) rotate(360deg);
|
|
506
506
|
}
|
|
507
507
|
}
|
|
508
|
-
.list-arrows[data-v-
|
|
508
|
+
.list-arrows[data-v-a1cf8002] {
|
|
509
509
|
opacity: 0;
|
|
510
510
|
}
|
|
511
|
-
.list-arrows .bgl_icon-font[data-v-
|
|
511
|
+
.list-arrows .bgl_icon-font[data-v-a1cf8002] {
|
|
512
512
|
transition: all ease-in-out 0.2s;
|
|
513
513
|
}
|
|
514
|
-
.list-arrows.sorted[data-v-
|
|
514
|
+
.list-arrows.sorted[data-v-a1cf8002] {
|
|
515
515
|
opacity: 1;
|
|
516
516
|
}
|
|
517
|
-
.col img[data-v-
|
|
517
|
+
.col img[data-v-a1cf8002] {
|
|
518
518
|
height: 35px;
|
|
519
519
|
margin-top: -14px;
|
|
520
520
|
margin-bottom: -14px;
|
|
521
521
|
border-radius: 5px;
|
|
522
522
|
}
|
|
523
|
-
.list-arrows.sorted .desc[data-v-
|
|
523
|
+
.list-arrows.sorted .desc[data-v-a1cf8002] {
|
|
524
524
|
transform: rotate(180deg);
|
|
525
525
|
display: inline-block;
|
|
526
526
|
}
|
|
527
|
-
table[data-v-
|
|
527
|
+
table[data-v-a1cf8002] {
|
|
528
528
|
border-spacing: 0 15px;
|
|
529
529
|
border-collapse: collapse;
|
|
530
530
|
width: 100%;
|
|
531
531
|
}
|
|
532
|
-
th[data-v-
|
|
532
|
+
th[data-v-a1cf8002] {
|
|
533
533
|
font-size: 0.8rem;
|
|
534
534
|
color: var(--bgl-black-tint);
|
|
535
535
|
position: sticky;
|
|
536
536
|
top: 0;
|
|
537
537
|
z-index: 2;
|
|
538
538
|
background: var(--bgl-box-bg);
|
|
539
|
-
height: var(--
|
|
539
|
+
height: var(--0c6a620a);
|
|
540
540
|
vertical-align: bottom;
|
|
541
541
|
font-weight: 400;
|
|
542
542
|
text-align: start;
|
|
543
543
|
}
|
|
544
|
-
.embedded-field[data-v-
|
|
544
|
+
.embedded-field[data-v-a1cf8002] {
|
|
545
545
|
margin-bottom: -0.2rem;
|
|
546
546
|
margin-top: -0.2rem;
|
|
547
547
|
}
|
|
548
|
-
.row[data-v-
|
|
548
|
+
.row[data-v-a1cf8002] {
|
|
549
549
|
border-bottom: 1px solid var(--border-color);
|
|
550
550
|
cursor: pointer;
|
|
551
551
|
}
|
|
552
|
-
.row.first-row[data-v-
|
|
552
|
+
.row.first-row[data-v-a1cf8002] {
|
|
553
553
|
font-size: 0.8rem;
|
|
554
554
|
color: var(--bgl-black-tint);
|
|
555
555
|
position: sticky;
|
|
@@ -558,7 +558,7 @@ th[data-v-18572328] {
|
|
|
558
558
|
background: var(--bgl-box-bg);
|
|
559
559
|
vertical-align: bottom;
|
|
560
560
|
}
|
|
561
|
-
.row.first-row[data-v-
|
|
561
|
+
.row.first-row[data-v-a1cf8002]::after {
|
|
562
562
|
content: '';
|
|
563
563
|
border-bottom: 1px solid var(--border-color);
|
|
564
564
|
position: absolute;
|
|
@@ -566,11 +566,11 @@ th[data-v-18572328] {
|
|
|
566
566
|
right: 0;
|
|
567
567
|
bottom: -1px;
|
|
568
568
|
}
|
|
569
|
-
.first-row .col[data-v-
|
|
569
|
+
.first-row .col[data-v-a1cf8002] {
|
|
570
570
|
cursor: pointer;
|
|
571
571
|
background: var(--bgl-box-bg);
|
|
572
572
|
}
|
|
573
|
-
.col[data-v-
|
|
573
|
+
.col[data-v-a1cf8002] {
|
|
574
574
|
white-space: nowrap;
|
|
575
575
|
padding: 0.75rem 1rem;
|
|
576
576
|
transition: var(--bgl-transition);
|
|
@@ -580,19 +580,19 @@ th[data-v-18572328] {
|
|
|
580
580
|
overflow: hidden;
|
|
581
581
|
max-width: 30vw;
|
|
582
582
|
}
|
|
583
|
-
.col[data-v-
|
|
583
|
+
.col[data-v-a1cf8002]:has(.bagel-input) {
|
|
584
584
|
padding: 0rem 0.25rem;
|
|
585
585
|
}
|
|
586
|
-
.col > div[data-v-
|
|
586
|
+
.col > div[data-v-a1cf8002] {
|
|
587
587
|
display: flex;
|
|
588
588
|
gap: 0.5rem;
|
|
589
589
|
}
|
|
590
|
-
.max-col-width[data-v-
|
|
590
|
+
.max-col-width[data-v-a1cf8002] {
|
|
591
591
|
max-width: 30vw;
|
|
592
592
|
overflow: hidden;
|
|
593
593
|
text-overflow: ellipsis;
|
|
594
594
|
}
|
|
595
|
-
.col.check .bgl_icon-font[data-v-
|
|
595
|
+
.col.check .bgl_icon-font[data-v-a1cf8002] {
|
|
596
596
|
border-radius: 100%;
|
|
597
597
|
background: var(--bgl-blue-20);
|
|
598
598
|
color: var(--bgl-primary);
|
|
@@ -603,35 +603,35 @@ th[data-v-18572328] {
|
|
|
603
603
|
justify-content: center;
|
|
604
604
|
margin-top: -2px;
|
|
605
605
|
}
|
|
606
|
-
.rows[data-v-
|
|
606
|
+
.rows[data-v-a1cf8002] {
|
|
607
607
|
font-size: 0.88em;
|
|
608
608
|
}
|
|
609
|
-
.table-list[data-v-
|
|
609
|
+
.table-list[data-v-a1cf8002] {
|
|
610
610
|
height: 100%;
|
|
611
611
|
position: relative;
|
|
612
612
|
padding-left: 0 !important;
|
|
613
613
|
padding-right: 0 !important;
|
|
614
614
|
overflow: auto;
|
|
615
615
|
}
|
|
616
|
-
.BagelTable .table-list[data-v-
|
|
616
|
+
.BagelTable .table-list[data-v-a1cf8002] {
|
|
617
617
|
overflow: unset;
|
|
618
618
|
}
|
|
619
|
-
.row-item[data-v-
|
|
620
|
-
height: var(--
|
|
619
|
+
.row-item[data-v-a1cf8002] {
|
|
620
|
+
height: var(--0c6a620a);
|
|
621
621
|
transition: all 200ms ease;
|
|
622
622
|
}
|
|
623
|
-
.row-item[data-v-
|
|
623
|
+
.row-item[data-v-a1cf8002]:hover {
|
|
624
624
|
background: var(--bgl-gray-light);
|
|
625
625
|
}
|
|
626
|
-
.row-item input[type='checkbox'][data-v-
|
|
626
|
+
.row-item input[type='checkbox'][data-v-a1cf8002] {
|
|
627
627
|
margin-top: 0.45rem !important;
|
|
628
628
|
accent-color: var(--bgl-accent-color);
|
|
629
629
|
}
|
|
630
|
-
.infinite-wrapper[data-v-
|
|
630
|
+
.infinite-wrapper[data-v-a1cf8002] {
|
|
631
631
|
overflow-y: auto;
|
|
632
632
|
width: 100%;
|
|
633
633
|
}
|
|
634
|
-
input[type='checkbox'][data-v-
|
|
634
|
+
input[type='checkbox'][data-v-a1cf8002] {
|
|
635
635
|
margin-top: 0.3rem !important;
|
|
636
636
|
accent-color: var(--bgl-accent-color);
|
|
637
637
|
transform: scale(1.2);
|
|
@@ -643,7 +643,7 @@ input[type='checkbox'][data-v-18572328] {
|
|
|
643
643
|
height: 0.85rem;
|
|
644
644
|
width: 0.85rem;
|
|
645
645
|
}
|
|
646
|
-
input[type='checkbox'][data-v-
|
|
646
|
+
input[type='checkbox'][data-v-a1cf8002]::before {
|
|
647
647
|
content: '';
|
|
648
648
|
height: 0.85rem;
|
|
649
649
|
width: 0.85rem;
|
|
@@ -656,18 +656,18 @@ input[type='checkbox'][data-v-18572328]::before {
|
|
|
656
656
|
transform: scale(1);
|
|
657
657
|
position: absolute;
|
|
658
658
|
}
|
|
659
|
-
input[type='checkbox'][data-v-
|
|
659
|
+
input[type='checkbox'][data-v-a1cf8002]:hover::before {
|
|
660
660
|
opacity: 0.2;
|
|
661
661
|
transform: scale(2);
|
|
662
662
|
}
|
|
663
|
-
[lang='he'] [dir='ltr'][data-v-
|
|
663
|
+
[lang='he'] [dir='ltr'][data-v-a1cf8002] {
|
|
664
664
|
text-align: right;
|
|
665
665
|
}
|
|
666
|
-
th input[type='checkbox'][data-v-
|
|
666
|
+
th input[type='checkbox'][data-v-a1cf8002] {
|
|
667
667
|
transform: translateY(0.2rem) scale(1.2);
|
|
668
668
|
accent-color: var(--bgl-accent-color);
|
|
669
669
|
}
|
|
670
|
-
th[data-v-
|
|
670
|
+
th[data-v-a1cf8002]::after {
|
|
671
671
|
content: '';
|
|
672
672
|
border-bottom: 1px solid var(--border-color);
|
|
673
673
|
position: absolute;
|
|
@@ -675,24 +675,24 @@ th[data-v-18572328]::after {
|
|
|
675
675
|
right: 0;
|
|
676
676
|
bottom: -1px;
|
|
677
677
|
}
|
|
678
|
-
tr[data-v-
|
|
678
|
+
tr[data-v-a1cf8002] {
|
|
679
679
|
border-bottom: 1px solid var(--border-color);
|
|
680
680
|
cursor: pointer;
|
|
681
681
|
align-items: center;
|
|
682
682
|
}
|
|
683
|
-
td[data-v-
|
|
684
|
-
th[data-v-
|
|
683
|
+
td[data-v-a1cf8002],
|
|
684
|
+
th[data-v-a1cf8002] {
|
|
685
685
|
white-space: nowrap;
|
|
686
686
|
padding: 0.75rem 0.65rem;
|
|
687
687
|
transition: var(--bgl-transition);
|
|
688
688
|
line-height: 1;
|
|
689
689
|
}
|
|
690
|
-
tbody tr[data-v-
|
|
690
|
+
tbody tr[data-v-a1cf8002] {
|
|
691
691
|
font-size: 0.88em;
|
|
692
|
-
height: var(--
|
|
692
|
+
height: var(--0c6a620a);
|
|
693
693
|
transition: all 200ms ease;
|
|
694
694
|
}
|
|
695
|
-
tbody tr[data-v-
|
|
695
|
+
tbody tr[data-v-a1cf8002]:hover {
|
|
696
696
|
background: var(--bgl-gray-light);
|
|
697
697
|
}
|
|
698
698
|
|
|
@@ -3437,11 +3437,11 @@ body:has(.bg-dark.is-active) {
|
|
|
3437
3437
|
border-radius: var(--card-border-radius);
|
|
3438
3438
|
}
|
|
3439
3439
|
|
|
3440
|
-
.modal-title[data-v-
|
|
3440
|
+
.modal-title[data-v-1c0f6894] {
|
|
3441
3441
|
margin-top: 0.5rem;
|
|
3442
3442
|
}
|
|
3443
3443
|
@media screen and (max-width: 910px) {
|
|
3444
|
-
.modal-title[data-v-
|
|
3444
|
+
.modal-title[data-v-1c0f6894] {
|
|
3445
3445
|
margin-top: 1rem;
|
|
3446
3446
|
}
|
|
3447
3447
|
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IconType, MaterialIcons } from '../components/Icon/types';
|
|
2
|
-
export type {
|
|
2
|
+
export type { ModalComponentProps, ModalComponentProps as ModalFormComponentProps, ModalOptions, } from '../plugins/modalTypes';
|
|
3
3
|
export type { IconType, MaterialIcons };
|
|
4
4
|
export * from './BagelForm';
|
|
5
5
|
export * from './BtnOptions';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,mBAAmB,EACnB,mBAAmB,IAAI,uBAAuB,EAC9C,YAAY,GACZ,MAAM,uBAAuB,CAAA;AAE9B,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAEvE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAA;AAEvC,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,YAAY,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEzC,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,YAAY,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAE/D,MAAM,MAAM,GAAG,GAAG;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,QAAQ,CAAA;CACf,GAAG,MAAM,CAAA;AAEV,MAAM,MAAM,SAAS,GACpB,OAAO,GACL,OAAO,GACP,KAAK,GACL,MAAM,GACN,YAAY,GACZ,OAAO,GACP,OAAO,GACP,QAAQ,GACR,SAAS,GACT,MAAM,CAAA;AAET,MAAM,MAAM,MAAM,GACf,MAAM,GACN,MAAM,GACN;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GACtB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAA;AAE5C,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA"}
|
|
@@ -29,7 +29,9 @@ interface NumFieldOptions extends InputOptions {
|
|
|
29
29
|
center?: boolean;
|
|
30
30
|
}
|
|
31
31
|
type RichTextOptions = InputOptions;
|
|
32
|
-
export declare function getBaseField<T
|
|
32
|
+
export declare function getBaseField<T extends {
|
|
33
|
+
[key: string]: any;
|
|
34
|
+
}>(id?: keyof T extends string ? keyof T : string, labelOrRest?: string | Partial<Field<T>>, rest?: Partial<Field<T>>): Field<T>;
|
|
33
35
|
export declare function richText(id: string, label?: string, options?: RichTextOptions): {
|
|
34
36
|
$el: string;
|
|
35
37
|
class: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BagelFormUtils.d.ts","sourceRoot":"","sources":["../../src/utils/BagelFormUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAIlE,UAAU,YAAY;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,CAAA;CAClD;AAED,KAAK,WAAW,GAAG,YAAY,CAAA;AAE/B,UAAU,gBAAiB,SAAQ,YAAY;IAC9C,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,UAAU,gBAAiB,SAAQ,YAAY;IAC9C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,CAAA;CAClC;AAED,UAAU,eAAgB,SAAQ,YAAY;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,CAAA;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,KAAK,eAAe,GAAG,YAAY,CAAA;AAEnC,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"BagelFormUtils.d.ts","sourceRoot":"","sources":["../../src/utils/BagelFormUtils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -53,12 +53,11 @@ let startY = $ref(0)
|
|
|
53
53
|
let translateX = $ref(0)
|
|
54
54
|
let lastX = $ref(0)
|
|
55
55
|
let lastTime = $ref(0)
|
|
56
|
-
let swipeVelocity = $ref(0)
|
|
57
56
|
let accumulatedDeltaX = $ref(0)
|
|
58
57
|
|
|
59
|
-
let timeout: NodeJS.Timeout
|
|
60
|
-
let wheelTimeout: NodeJS.Timeout
|
|
61
|
-
let autoPlayInterval: NodeJS.Timeout
|
|
58
|
+
let timeout: NodeJS.Timeout | undefined
|
|
59
|
+
let wheelTimeout: NodeJS.Timeout | undefined
|
|
60
|
+
let autoPlayInterval: NodeJS.Timeout | undefined
|
|
62
61
|
|
|
63
62
|
// Add interface for velocity tracking
|
|
64
63
|
interface VelocitySample {
|
|
@@ -319,7 +318,6 @@ function onTouchStart(e: TouchEvent) {
|
|
|
319
318
|
lastTime = Date.now()
|
|
320
319
|
translateX = getCurrentTransform()
|
|
321
320
|
velocityTracker = [{ time: lastTime, position: lastX }]
|
|
322
|
-
swipeVelocity = 0
|
|
323
321
|
isPressed = true
|
|
324
322
|
hasScrollDirectionLock = false
|
|
325
323
|
|
|
@@ -368,9 +366,6 @@ function onTouchMove(e: TouchEvent) {
|
|
|
368
366
|
const cutoffTime = now - VELOCITY_SAMPLE_DURATION
|
|
369
367
|
velocityTracker = velocityTracker.filter((sample: VelocitySample) => sample.time >= cutoffTime)
|
|
370
368
|
|
|
371
|
-
// Calculate instantaneous velocity for immediate feedback
|
|
372
|
-
swipeVelocity = getAverageVelocity()
|
|
373
|
-
|
|
374
369
|
if (Math.abs(deltaX) > THRESHOLDS.TOUCH) {
|
|
375
370
|
isDragging = true
|
|
376
371
|
e.preventDefault() // Only prevent default if we're sure it's a horizontal drag
|
|
@@ -486,7 +481,6 @@ function onTouchEnd() {
|
|
|
486
481
|
}, duration)
|
|
487
482
|
|
|
488
483
|
velocityTracker = []
|
|
489
|
-
swipeVelocity = 0
|
|
490
484
|
isDragging = false
|
|
491
485
|
hasScrollDirectionLock = false
|
|
492
486
|
}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
Icon,
|
|
7
7
|
keyToLabel,
|
|
8
8
|
} from '@bagelink/vue'
|
|
9
|
-
import { useSlots, watch, computed
|
|
9
|
+
import { useSlots, watch, computed } from 'vue'
|
|
10
10
|
import { useSchemaField } from '../../composables/useSchemaField'
|
|
11
11
|
import { useTableData } from './useTableData'
|
|
12
12
|
import { useTableSelection } from './useTableSelection'
|
|
@@ -37,7 +37,6 @@ const selectedItems = defineModel<string[]>(
|
|
|
37
37
|
)
|
|
38
38
|
|
|
39
39
|
const data = computed(() => props.data)
|
|
40
|
-
const currentRowId = ref<string>('')
|
|
41
40
|
|
|
42
41
|
const {
|
|
43
42
|
computedSchema,
|
|
@@ -89,7 +88,7 @@ function renderFieldForRow(field: BaseBagelField<T>, row: T) {
|
|
|
89
88
|
mode: 'table',
|
|
90
89
|
getRowData: () => row
|
|
91
90
|
})
|
|
92
|
-
return renderField(field, slots)
|
|
91
|
+
return renderField({ ...field, label: '' }, slots)
|
|
93
92
|
}
|
|
94
93
|
|
|
95
94
|
const computedItemHeight = $computed(() => `${itemHeight.value}px`)
|
|
@@ -1,42 +1,31 @@
|
|
|
1
|
-
<script lang="ts" setup>
|
|
2
|
-
import type {
|
|
1
|
+
<script lang="ts" setup generic="T extends {[key:string]:any}">
|
|
2
|
+
import type { ModalFormOptions } from '../plugins/modalTypes'
|
|
3
3
|
import { Btn, Modal, useBagel, BagelForm } from '@bagelink/vue'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
title?: string
|
|
8
|
-
width?: string
|
|
9
|
-
dismissable?: boolean
|
|
10
|
-
actions?: BtnOptions[]
|
|
11
|
-
schema: BglFormSchemaFnT<any>
|
|
5
|
+
// eslint-disable-next-line vue/prop-name-casing
|
|
6
|
+
const props = defineProps<ModalFormOptions<T>>()
|
|
12
7
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
cancelText?: string
|
|
17
|
-
deleteText?: string
|
|
18
|
-
duplicateText?: string
|
|
19
|
-
onDelete?: (formData: any) => void
|
|
20
|
-
visible?: boolean
|
|
21
|
-
onError?: (err: any) => void
|
|
22
|
-
modelValue?: { [key: string]: any }
|
|
8
|
+
const emit = defineEmits<{
|
|
9
|
+
'update:modelValue': [value: T]
|
|
10
|
+
'update:visible': [value: boolean]
|
|
23
11
|
}>()
|
|
24
12
|
|
|
25
|
-
const emit = defineEmits(['update:visible'])
|
|
26
|
-
|
|
27
13
|
const bagel = useBagel()
|
|
28
14
|
|
|
29
15
|
const modal = $ref<InstanceType<typeof Modal>>()
|
|
30
16
|
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
return props.schema
|
|
17
|
+
const formData = defineModel<T>('modelValue', {
|
|
18
|
+
default: {} as Partial<T>,
|
|
34
19
|
})
|
|
35
20
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
21
|
+
interface BagelFormInstance<T> {
|
|
22
|
+
validateForm: () => boolean
|
|
23
|
+
deleteItem?: () => void
|
|
24
|
+
isDirty?: boolean
|
|
25
|
+
clearForm?: () => void
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const form = $ref<BagelFormInstance<T>>()
|
|
40
29
|
const closeModal = () => modal?.closeModal()
|
|
41
30
|
|
|
42
31
|
let submitting = $ref(false)
|
|
@@ -81,7 +70,8 @@ defineExpose({ setFormValues })
|
|
|
81
70
|
v-if="visible"
|
|
82
71
|
ref="form"
|
|
83
72
|
v-model="formData"
|
|
84
|
-
:schema="
|
|
73
|
+
:schema="schema"
|
|
74
|
+
@update:modelValue="emit('update:modelValue', $event)"
|
|
85
75
|
@submit="runSubmit"
|
|
86
76
|
/>
|
|
87
77
|
<template v-if="onDelete || onSubmit" #footer>
|
|
@@ -105,7 +95,7 @@ defineExpose({ setFormValues })
|
|
|
105
95
|
icon="copy_all"
|
|
106
96
|
flat
|
|
107
97
|
:value="duplicateText || 'Duplicate'"
|
|
108
|
-
@click="onDuplicate"
|
|
98
|
+
@click="onDuplicate?.(formData)"
|
|
109
99
|
/>
|
|
110
100
|
<Btn v-if="onSubmit" :value="submitText || 'Submit'" @click="runSubmit" />
|
|
111
101
|
</div>
|
|
@@ -1,79 +1,85 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import type {
|
|
1
|
+
<script setup lang="ts" generic="T extends {[key:string]:any}">
|
|
2
|
+
import type { BglFormSchemaFnT, Field } from '@bagelink/vue'
|
|
3
3
|
import type { VNode } from 'vue'
|
|
4
|
-
import { watch } from 'vue'
|
|
4
|
+
import { onMounted, watch, ref } from 'vue'
|
|
5
5
|
import { useSchemaField } from '../../composables/useSchemaField'
|
|
6
6
|
|
|
7
|
-
interface
|
|
8
|
-
modelValue?:
|
|
9
|
-
schema?: BglFormSchemaFnT
|
|
7
|
+
export interface BagelFormProps<T extends { [key: string]: any }> {
|
|
8
|
+
modelValue?: T
|
|
9
|
+
schema?: BglFormSchemaFnT<T>
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
const props = withDefaults(defineProps<
|
|
12
|
+
const props = withDefaults(defineProps<BagelFormProps<T>>(), {
|
|
13
13
|
modelValue: undefined,
|
|
14
14
|
schema: undefined
|
|
15
15
|
})
|
|
16
16
|
|
|
17
17
|
const emit = defineEmits<{
|
|
18
|
-
(e: 'update:modelValue', value:
|
|
19
|
-
(e: 'submit', value:
|
|
18
|
+
(e: 'update:modelValue', value: T): void
|
|
19
|
+
(e: 'submit', value: T): void
|
|
20
20
|
}>()
|
|
21
21
|
|
|
22
|
-
const form =
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
const form = ref<HTMLFormElement>()
|
|
23
|
+
const formData = ref<T>(structuredClone(props.modelValue ?? {} as T))
|
|
24
|
+
const initialFormData = ref<T>(structuredClone(props.modelValue ?? {} as T))
|
|
25
|
+
|
|
26
|
+
onMounted(() => {
|
|
27
|
+
if (props.modelValue) {
|
|
28
|
+
initialFormData.value = structuredClone(props.modelValue)
|
|
29
|
+
}
|
|
30
|
+
})
|
|
25
31
|
|
|
26
32
|
// Keep formData in sync with modelValue prop only if it's provided
|
|
27
33
|
watch(() => props.modelValue, (newValue) => {
|
|
28
34
|
if (newValue !== undefined) {
|
|
29
|
-
formData =
|
|
35
|
+
formData.value = structuredClone(newValue)
|
|
30
36
|
}
|
|
31
37
|
}, { immediate: true, deep: true })
|
|
32
38
|
|
|
33
|
-
const resolvedSchema = $computed<
|
|
39
|
+
const resolvedSchema = $computed<BglFormSchemaFnT<T> | undefined>(() => {
|
|
34
40
|
if (!props.schema) return undefined
|
|
35
41
|
return typeof props.schema === 'function' ? props.schema() : props.schema
|
|
36
42
|
})
|
|
37
43
|
|
|
38
44
|
const isDirty = $computed(() => {
|
|
39
|
-
const current = JSON.stringify(formData)
|
|
40
|
-
const initial = JSON.stringify(initialFormData)
|
|
45
|
+
const current = JSON.stringify(formData.value)
|
|
46
|
+
const initial = JSON.stringify(initialFormData.value)
|
|
41
47
|
return current !== initial
|
|
42
48
|
})
|
|
43
49
|
|
|
44
50
|
function updateFormData(fieldId: string, value: any) {
|
|
45
|
-
formData = {
|
|
46
|
-
...formData,
|
|
51
|
+
formData.value = {
|
|
52
|
+
...formData.value,
|
|
47
53
|
[fieldId]: value
|
|
48
54
|
}
|
|
49
|
-
emit('update:modelValue', formData)
|
|
55
|
+
emit('update:modelValue', formData.value)
|
|
50
56
|
}
|
|
51
57
|
|
|
52
58
|
function handleSubmit() {
|
|
53
|
-
emit('submit', formData)
|
|
54
|
-
initialFormData =
|
|
59
|
+
emit('submit', formData.value)
|
|
60
|
+
initialFormData.value = structuredClone(formData.value)
|
|
55
61
|
}
|
|
56
62
|
|
|
57
63
|
function shouldRenderField(field: Field): boolean {
|
|
58
64
|
const condition = field.vIf ?? field['v-if']
|
|
59
65
|
if (condition === undefined) return true
|
|
60
66
|
return typeof condition === 'function'
|
|
61
|
-
? condition(formData[field.id as
|
|
67
|
+
? condition(formData.value[field.id as keyof T], formData.value)
|
|
62
68
|
: !!condition
|
|
63
69
|
}
|
|
64
70
|
|
|
65
71
|
function validateForm() {
|
|
66
|
-
if (!form) return false
|
|
67
|
-
return form.reportValidity()
|
|
72
|
+
if (!form.value) return false
|
|
73
|
+
return form.value.reportValidity()
|
|
68
74
|
}
|
|
69
75
|
|
|
70
|
-
const { renderField } = useSchemaField<
|
|
76
|
+
const { renderField } = useSchemaField<T>({
|
|
71
77
|
mode: 'form',
|
|
72
|
-
getRowData: () => formData,
|
|
78
|
+
getRowData: () => formData.value,
|
|
73
79
|
onUpdate: (field, value) => {
|
|
74
80
|
if (!field.id) return
|
|
75
81
|
updateFormData(field.id, value)
|
|
76
|
-
field.onUpdate?.(value, formData)
|
|
82
|
+
field.onUpdate?.(value, formData.value)
|
|
77
83
|
}
|
|
78
84
|
})
|
|
79
85
|
|
|
@@ -88,7 +94,7 @@ defineExpose({ form, isDirty, validateForm })
|
|
|
88
94
|
<template>
|
|
89
95
|
<form ref="form" @submit.prevent="handleSubmit">
|
|
90
96
|
<template v-if="resolvedSchema">
|
|
91
|
-
<template v-for="
|
|
97
|
+
<template v-for="field in (resolvedSchema as Field[])" :key="field.id">
|
|
92
98
|
<component :is="renderSchemaField(field)" />
|
|
93
99
|
</template>
|
|
94
100
|
</template>
|