@bagelink/vue 1.2.89 → 1.2.97
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/Pagination.vue.d.ts +35 -0
- package/dist/components/Pagination.vue.d.ts.map +1 -0
- package/dist/components/Pill.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/Upload/UploadInput.vue.d.ts +7 -8
- package/dist/components/form/inputs/Upload/UploadInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/Upload/useFileUpload.d.ts +76 -0
- package/dist/components/form/inputs/Upload/useFileUpload.d.ts.map +1 -0
- package/dist/components/form/inputs/index.d.ts +1 -0
- package/dist/components/form/inputs/index.d.ts.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/lightbox/Lightbox.vue.d.ts.map +1 -1
- package/dist/index.cjs +850 -599
- package/dist/index.mjs +850 -599
- package/dist/style.css +88 -67
- package/package.json +1 -1
- package/src/components/Pagination.vue +252 -0
- package/src/components/Pill.vue +1 -1
- package/src/components/form/inputs/Upload/UploadInput.vue +26 -101
- package/src/components/form/inputs/Upload/useFileUpload.ts +144 -0
- package/src/components/form/inputs/index.ts +2 -0
- package/src/components/index.ts +1 -0
- package/src/components/lightbox/Lightbox.vue +41 -26
package/dist/style.css
CHANGED
|
@@ -2549,7 +2549,7 @@ input[type="range"][data-v-46e22f3e]:active::-webkit-slider-thumb {
|
|
|
2549
2549
|
.bgl-toggle input:checked + label[data-v-c5e45931] {
|
|
2550
2550
|
color: var(--bgl-primary) !important;
|
|
2551
2551
|
}
|
|
2552
|
-
.fileUploadWrap[data-v-
|
|
2552
|
+
.fileUploadWrap[data-v-38a4d4a9] {
|
|
2553
2553
|
outline: 1px solid var(--border-color);
|
|
2554
2554
|
border-radius: var(--input-border-radius);
|
|
2555
2555
|
text-align: center;
|
|
@@ -2561,7 +2561,7 @@ input[type="range"][data-v-46e22f3e]:active::-webkit-slider-thumb {
|
|
|
2561
2561
|
background: var(--input-bg);
|
|
2562
2562
|
height: 215px;
|
|
2563
2563
|
}
|
|
2564
|
-
.bagel-input .fileUploadWrap.fileDropZone[data-v-
|
|
2564
|
+
.bagel-input .fileUploadWrap.fileDropZone[data-v-38a4d4a9] {
|
|
2565
2565
|
background: var(--input-bg);
|
|
2566
2566
|
display: flex;
|
|
2567
2567
|
align-items: center;
|
|
@@ -2569,14 +2569,14 @@ input[type="range"][data-v-46e22f3e]:active::-webkit-slider-thumb {
|
|
|
2569
2569
|
color: var(--bgl-gray);
|
|
2570
2570
|
flex-direction: column;
|
|
2571
2571
|
}
|
|
2572
|
-
.fileUploadWrap.dragover[data-v-
|
|
2573
|
-
.fileUploadWrap[data-v-
|
|
2572
|
+
.fileUploadWrap.dragover[data-v-38a4d4a9],
|
|
2573
|
+
.fileUploadWrap[data-v-38a4d4a9]:hover {
|
|
2574
2574
|
box-shadow: inset 0 0 10px #00000012;
|
|
2575
2575
|
}
|
|
2576
|
-
.fileUploadWrap[style*='height: auto;'][data-v-
|
|
2576
|
+
.fileUploadWrap[style*='height: auto;'][data-v-38a4d4a9] {
|
|
2577
2577
|
min-height: 215px;
|
|
2578
2578
|
}
|
|
2579
|
-
.multi-image-item-preview[data-v-
|
|
2579
|
+
.multi-image-item-preview[data-v-38a4d4a9] {
|
|
2580
2580
|
border: 1px solid var(--border-color) !important;
|
|
2581
2581
|
border-radius: var(--input-border-radius);
|
|
2582
2582
|
margin: 0.5rem !important;
|
|
@@ -2590,12 +2590,12 @@ input[type="range"][data-v-46e22f3e]:active::-webkit-slider-thumb {
|
|
|
2590
2590
|
gap: 1rem;
|
|
2591
2591
|
align-items: center;
|
|
2592
2592
|
}
|
|
2593
|
-
.multi-image-item-preview p[data-v-
|
|
2593
|
+
.multi-image-item-preview p[data-v-38a4d4a9] {
|
|
2594
2594
|
overflow: hidden;
|
|
2595
2595
|
text-overflow: ellipsis;
|
|
2596
2596
|
white-space: nowrap;
|
|
2597
2597
|
}
|
|
2598
|
-
.multi-preview[data-v-
|
|
2598
|
+
.multi-preview[data-v-38a4d4a9] {
|
|
2599
2599
|
width: 40px;
|
|
2600
2600
|
height: 40px;
|
|
2601
2601
|
border-radius: var(--input-border-radius);
|
|
@@ -2606,17 +2606,17 @@ input[type="range"][data-v-46e22f3e]:active::-webkit-slider-thumb {
|
|
|
2606
2606
|
align-items: center;
|
|
2607
2607
|
display: flex;
|
|
2608
2608
|
}
|
|
2609
|
-
.bgl-single-preview[data-v-
|
|
2609
|
+
.bgl-single-preview[data-v-38a4d4a9] {
|
|
2610
2610
|
height: 100%;
|
|
2611
2611
|
position: relative;
|
|
2612
2612
|
}
|
|
2613
|
-
.bgl-single-preview + .fileUploadPlaceHolder[data-v-
|
|
2613
|
+
.bgl-single-preview + .fileUploadPlaceHolder[data-v-38a4d4a9] {
|
|
2614
2614
|
position: absolute;
|
|
2615
2615
|
inset: 0;
|
|
2616
2616
|
margin: auto;
|
|
2617
2617
|
top: calc(50% - 2rem);
|
|
2618
2618
|
}
|
|
2619
|
-
.single-image-item-preview[data-v-
|
|
2619
|
+
.single-image-item-preview[data-v-38a4d4a9] {
|
|
2620
2620
|
height: 100%;
|
|
2621
2621
|
min-height: 100%;
|
|
2622
2622
|
position: relative;
|
|
@@ -2624,13 +2624,13 @@ input[type="range"][data-v-46e22f3e]:active::-webkit-slider-thumb {
|
|
|
2624
2624
|
align-items: center;
|
|
2625
2625
|
justify-content: center;
|
|
2626
2626
|
}
|
|
2627
|
-
.fileUploadWrap[style*='height: auto'] .single-image-item-preview[data-v-
|
|
2627
|
+
.fileUploadWrap[style*='height: auto'] .single-image-item-preview[data-v-38a4d4a9] {
|
|
2628
2628
|
min-height: 215px;
|
|
2629
2629
|
}
|
|
2630
|
-
.fileUploadWrap[style*='height: auto'] .single-preview[data-v-
|
|
2630
|
+
.fileUploadWrap[style*='height: auto'] .single-preview[data-v-38a4d4a9] {
|
|
2631
2631
|
margin: 0rem !important;
|
|
2632
2632
|
}
|
|
2633
|
-
.single-preview[data-v-
|
|
2633
|
+
.single-preview[data-v-38a4d4a9] {
|
|
2634
2634
|
border-radius: var(--input-border-radius);
|
|
2635
2635
|
margin: 1rem;
|
|
2636
2636
|
padding: 0px;
|
|
@@ -2640,7 +2640,7 @@ input[type="range"][data-v-46e22f3e]:active::-webkit-slider-thumb {
|
|
|
2640
2640
|
background: var(--bgl-gray-light);
|
|
2641
2641
|
width: 90%;
|
|
2642
2642
|
}
|
|
2643
|
-
.single-image-item-preview[data-v-
|
|
2643
|
+
.single-image-item-preview[data-v-38a4d4a9]:hover::after {
|
|
2644
2644
|
content: 'zoom_in';
|
|
2645
2645
|
font-size: 32px;
|
|
2646
2646
|
font-family: 'Material Symbols Outlined', serif;
|
|
@@ -2650,20 +2650,20 @@ input[type="range"][data-v-46e22f3e]:active::-webkit-slider-thumb {
|
|
|
2650
2650
|
z-index: 9;
|
|
2651
2651
|
pointer-events: none;
|
|
2652
2652
|
}
|
|
2653
|
-
.single-image-item-preview:hover img[data-v-
|
|
2653
|
+
.single-image-item-preview:hover img[data-v-38a4d4a9] {
|
|
2654
2654
|
filter: brightness(70%);
|
|
2655
2655
|
}
|
|
2656
|
-
.bgl_fill-image.single-image-item-preview[data-v-
|
|
2656
|
+
.bgl_fill-image.single-image-item-preview[data-v-38a4d4a9] {
|
|
2657
2657
|
height: 100%;
|
|
2658
2658
|
}
|
|
2659
|
-
.bgl_fill-image.single-image-item-preview .single-preview[data-v-
|
|
2659
|
+
.bgl_fill-image.single-image-item-preview .single-preview[data-v-38a4d4a9] {
|
|
2660
2660
|
border-radius: unset;
|
|
2661
2661
|
object-fit: cover;
|
|
2662
2662
|
box-shadow: unset;
|
|
2663
2663
|
width: 100%;
|
|
2664
2664
|
height: auto;
|
|
2665
2665
|
}
|
|
2666
|
-
.single-image-item-preview .pie[data-v-
|
|
2666
|
+
.single-image-item-preview .pie[data-v-38a4d4a9] {
|
|
2667
2667
|
transform-origin: top;
|
|
2668
2668
|
transform: scale(1.4);
|
|
2669
2669
|
position: absolute;
|
|
@@ -2677,31 +2677,31 @@ input[type="range"][data-v-46e22f3e]:active::-webkit-slider-thumb {
|
|
|
2677
2677
|
border: none !important;
|
|
2678
2678
|
padding: 0 !important;
|
|
2679
2679
|
}
|
|
2680
|
-
.bgl_oval-upload[data-v-
|
|
2680
|
+
.bgl_oval-upload[data-v-38a4d4a9] {
|
|
2681
2681
|
border-radius: 100% !important;
|
|
2682
2682
|
overflow: hidden;
|
|
2683
2683
|
}
|
|
2684
|
-
.bgl_oval-upload p[data-v-
|
|
2684
|
+
.bgl_oval-upload p[data-v-38a4d4a9] {
|
|
2685
2685
|
padding: 0.75rem !important;
|
|
2686
2686
|
font-size: 12px;
|
|
2687
2687
|
}
|
|
2688
|
-
.bgl_oval-upload .fileUploadPlaceHolder[data-v-
|
|
2688
|
+
.bgl_oval-upload .fileUploadPlaceHolder[data-v-38a4d4a9] {
|
|
2689
2689
|
top: 0;
|
|
2690
2690
|
}
|
|
2691
|
-
.bgl_oval-upload .pie[data-v-
|
|
2691
|
+
.bgl_oval-upload .pie[data-v-38a4d4a9] {
|
|
2692
2692
|
transform: scale(1);
|
|
2693
2693
|
}
|
|
2694
|
-
.bgl_oval-upload span.bgl_icon-font.color-primary[data-v-
|
|
2694
|
+
.bgl_oval-upload span.bgl_icon-font.color-primary[data-v-38a4d4a9] {
|
|
2695
2695
|
transform: scale(0.4) !important;
|
|
2696
2696
|
}
|
|
2697
|
-
.bgl_oval-upload .single-image-item-preview[data-v-
|
|
2697
|
+
.bgl_oval-upload .single-image-item-preview[data-v-38a4d4a9] {
|
|
2698
2698
|
height: 100%;
|
|
2699
2699
|
}
|
|
2700
|
-
.bgl_oval-upload .single-preview[data-v-
|
|
2700
|
+
.bgl_oval-upload .single-preview[data-v-38a4d4a9] {
|
|
2701
2701
|
margin: 0;
|
|
2702
2702
|
height: 100% !important;
|
|
2703
2703
|
}
|
|
2704
|
-
.pie[data-v-
|
|
2704
|
+
.pie[data-v-38a4d4a9] {
|
|
2705
2705
|
width: 30px;
|
|
2706
2706
|
height: 30px;
|
|
2707
2707
|
position: relative;
|
|
@@ -2709,7 +2709,7 @@ input[type="range"][data-v-46e22f3e]:active::-webkit-slider-thumb {
|
|
|
2709
2709
|
align-items: center;
|
|
2710
2710
|
justify-content: center;
|
|
2711
2711
|
}
|
|
2712
|
-
.pie[data-v-
|
|
2712
|
+
.pie[data-v-38a4d4a9]:before {
|
|
2713
2713
|
content: '';
|
|
2714
2714
|
position: absolute;
|
|
2715
2715
|
border-radius: 50%;
|
|
@@ -2727,26 +2727,26 @@ input[type="range"][data-v-46e22f3e]:active::-webkit-slider-thumb {
|
|
|
2727
2727
|
#000 calc(100% - var(--b))
|
|
2728
2728
|
);
|
|
2729
2729
|
}
|
|
2730
|
-
.pie .success[data-v-
|
|
2730
|
+
.pie .success[data-v-38a4d4a9] {
|
|
2731
2731
|
transform: scale(0);
|
|
2732
2732
|
opacity: 0;
|
|
2733
2733
|
transition: all 0.3s ease-in-out;
|
|
2734
2734
|
}
|
|
2735
|
-
.pie .progress[data-v-
|
|
2735
|
+
.pie .progress[data-v-38a4d4a9] {
|
|
2736
2736
|
position: absolute;
|
|
2737
2737
|
font-size: 10px;
|
|
2738
2738
|
}
|
|
2739
|
-
.pie.complete .progress[data-v-
|
|
2739
|
+
.pie.complete .progress[data-v-38a4d4a9] {
|
|
2740
2740
|
display: none;
|
|
2741
2741
|
}
|
|
2742
|
-
.pie.complete .success[data-v-
|
|
2742
|
+
.pie.complete .success[data-v-38a4d4a9] {
|
|
2743
2743
|
transform: scale(1.3);
|
|
2744
2744
|
opacity: 1;
|
|
2745
2745
|
}
|
|
2746
|
-
.pie.complete[data-v-
|
|
2746
|
+
.pie.complete[data-v-38a4d4a9]:before {
|
|
2747
2747
|
background: conic-gradient(var(--bgl-green) calc(var(--p) * 1%), #0000 0);
|
|
2748
2748
|
}
|
|
2749
|
-
.pie.complete[data-v-
|
|
2749
|
+
.pie.complete[data-v-38a4d4a9] {
|
|
2750
2750
|
color: var(--bgl-green);
|
|
2751
2751
|
}
|
|
2752
2752
|
|
|
@@ -4368,25 +4368,46 @@ body:has(.bg-dark.is-active) {
|
|
|
4368
4368
|
}
|
|
4369
4369
|
}
|
|
4370
4370
|
|
|
4371
|
-
.
|
|
4371
|
+
.indicator[data-v-0443aea2] {
|
|
4372
|
+
position: absolute;
|
|
4373
|
+
height: 30px;
|
|
4374
|
+
background-color: var(--bgl-primary);
|
|
4375
|
+
transition: all 0.3s ease;
|
|
4376
|
+
z-index: -1;
|
|
4377
|
+
}
|
|
4378
|
+
.selected[data-v-0443aea2] {
|
|
4379
|
+
color: white !important;
|
|
4380
|
+
}
|
|
4381
|
+
.pagination-info[data-v-0443aea2] {
|
|
4382
|
+
min-width: 60px;
|
|
4383
|
+
text-align: center;
|
|
4384
|
+
font-size: 14px;
|
|
4385
|
+
}
|
|
4386
|
+
.pagination-ellipsis[data-v-0443aea2] {
|
|
4387
|
+
display: flex;
|
|
4388
|
+
align-items: center;
|
|
4389
|
+
padding: 0 4px;
|
|
4390
|
+
}
|
|
4391
|
+
|
|
4392
|
+
.bgl_pill-btn[data-v-ae730ec5]{
|
|
4372
4393
|
color: var(--pill-btn-color);
|
|
4373
4394
|
background: var(--pill-btn-bg);
|
|
4374
4395
|
width: calc(var(--pill-height) / 1.25)!important;
|
|
4375
4396
|
height: calc(var(--pill-height) / 1.25)!important;
|
|
4376
4397
|
}
|
|
4377
|
-
.loading[data-v-
|
|
4398
|
+
.loading[data-v-ae730ec5] {
|
|
4378
4399
|
border: 1px solid var(--bgl-light-text);
|
|
4379
4400
|
border-bottom: 2px solid var(--bgl-light-text);
|
|
4380
|
-
animation: spin-
|
|
4401
|
+
animation: spin-ae730ec5 1s linear infinite;
|
|
4381
4402
|
border-radius: 100px;
|
|
4382
4403
|
width: 1rem;
|
|
4383
4404
|
height: 1rem;
|
|
4384
4405
|
margin: auto;
|
|
4385
4406
|
}
|
|
4386
|
-
.bgl_flatPill .loading[data-v-
|
|
4407
|
+
.bgl_flatPill .loading[data-v-ae730ec5] {
|
|
4387
4408
|
border-bottom: 2px solid var(--bgl-text-color);
|
|
4388
4409
|
}
|
|
4389
|
-
@keyframes spin-
|
|
4410
|
+
@keyframes spin-ae730ec5 {
|
|
4390
4411
|
0% {
|
|
4391
4412
|
transform: rotate(0deg);
|
|
4392
4413
|
}
|
|
@@ -4394,11 +4415,11 @@ body:has(.bg-dark.is-active) {
|
|
|
4394
4415
|
transform: rotate(360deg);
|
|
4395
4416
|
}
|
|
4396
4417
|
}
|
|
4397
|
-
.bgl_pill[data-v-
|
|
4418
|
+
.bgl_pill[data-v-ae730ec5] {
|
|
4398
4419
|
padding-inline: 0.25rem;
|
|
4399
4420
|
transition: var(--bgl-transition);
|
|
4400
|
-
background-color: var(--
|
|
4401
|
-
color: var(--
|
|
4421
|
+
background-color: var(--09d70b6a);
|
|
4422
|
+
color: var(--69df9534);
|
|
4402
4423
|
display: inline-block;
|
|
4403
4424
|
margin-inline-end: 0.25rem;
|
|
4404
4425
|
border-radius: var(--pill-border-radius);
|
|
@@ -4406,26 +4427,26 @@ body:has(.bg-dark.is-active) {
|
|
|
4406
4427
|
vertical-align: middle;
|
|
4407
4428
|
margin-bottom: 0.25rem;
|
|
4408
4429
|
}
|
|
4409
|
-
.bgl_pill[disabled="true"][data-v-
|
|
4430
|
+
.bgl_pill[disabled="true"][data-v-ae730ec5] {
|
|
4410
4431
|
opacity: 0.5;
|
|
4411
4432
|
cursor: not-allowed;
|
|
4412
4433
|
}
|
|
4413
|
-
.bgl_pill-flex[data-v-
|
|
4434
|
+
.bgl_pill-flex[data-v-ae730ec5] {
|
|
4414
4435
|
display: flex;
|
|
4415
4436
|
align-items: center;
|
|
4416
4437
|
gap: 0.25rem;
|
|
4417
4438
|
justify-content: center;
|
|
4418
4439
|
height: 100%;
|
|
4419
4440
|
}
|
|
4420
|
-
.bgl_pill.bgl_flatPill[data-v-
|
|
4441
|
+
.bgl_pill.bgl_flatPill[data-v-ae730ec5] {
|
|
4421
4442
|
background: transparent;
|
|
4422
4443
|
}
|
|
4423
|
-
.bgl_pill.round[data-v-
|
|
4444
|
+
.bgl_pill.round[data-v-ae730ec5] {
|
|
4424
4445
|
border-radius: 1000px;
|
|
4425
4446
|
}
|
|
4426
|
-
.bgl_pill-border[data-v-
|
|
4427
|
-
outline: 1px solid var(--
|
|
4428
|
-
color: var(--
|
|
4447
|
+
.bgl_pill-border[data-v-ae730ec5] {
|
|
4448
|
+
outline: 1px solid var(--09d70b6a);
|
|
4449
|
+
color: var(--09d70b6a);
|
|
4429
4450
|
background: transparent;
|
|
4430
4451
|
}
|
|
4431
4452
|
|
|
@@ -4620,22 +4641,22 @@ td[data-v-857ccb8b]:has(:checked){
|
|
|
4620
4641
|
-moz-user-drag: none;
|
|
4621
4642
|
}
|
|
4622
4643
|
|
|
4623
|
-
.bgl-lightbox[data-v-
|
|
4644
|
+
.bgl-lightbox[data-v-4789af69]:has(.bgl_vid) {
|
|
4624
4645
|
width: 90vw;
|
|
4625
4646
|
}
|
|
4626
|
-
.lightbox-image[data-v-
|
|
4647
|
+
.lightbox-image[data-v-4789af69]{
|
|
4627
4648
|
object-fit: contain;
|
|
4628
4649
|
}
|
|
4629
|
-
.bgl-lightbox-overlay[data-v-
|
|
4650
|
+
.bgl-lightbox-overlay[data-v-4789af69] {
|
|
4630
4651
|
background: rgba(0, 0, 0, 0.8);
|
|
4631
4652
|
}
|
|
4632
|
-
.bgl-lightbox[data-v-
|
|
4653
|
+
.bgl-lightbox[data-v-4789af69] {
|
|
4633
4654
|
max-height: 90%;
|
|
4634
4655
|
}
|
|
4635
|
-
.bgl-lightbox-item[data-v-
|
|
4636
|
-
animation: 500ms ease bgl-lightbox-load-
|
|
4656
|
+
.bgl-lightbox-item[data-v-4789af69]{
|
|
4657
|
+
animation: 500ms ease bgl-lightbox-load-4789af69;
|
|
4637
4658
|
}
|
|
4638
|
-
@keyframes bgl-lightbox-load-
|
|
4659
|
+
@keyframes bgl-lightbox-load-4789af69 {
|
|
4639
4660
|
from {
|
|
4640
4661
|
scale:0.7;
|
|
4641
4662
|
}
|
|
@@ -4643,44 +4664,44 @@ to {
|
|
|
4643
4664
|
scale:1;
|
|
4644
4665
|
}
|
|
4645
4666
|
}
|
|
4646
|
-
.bgl-lightbox-item[data-v-
|
|
4667
|
+
.bgl-lightbox-item[data-v-4789af69] * {
|
|
4647
4668
|
max-height: calc(80vh - 90px);
|
|
4648
4669
|
border-radius: 3px;
|
|
4649
4670
|
margin: auto;
|
|
4650
|
-
animation: 200ms ease bgl-lightbox-load-
|
|
4671
|
+
animation: 200ms ease bgl-lightbox-load-4789af69;
|
|
4651
4672
|
transition: max-height 200ms ease;
|
|
4652
4673
|
}
|
|
4653
|
-
.bgl-lightbox-item.zoomed[data-v-
|
|
4674
|
+
.bgl-lightbox-item.zoomed[data-v-4789af69] * {
|
|
4654
4675
|
max-height: calc(100vh - 90px);
|
|
4655
4676
|
height: calc(100vh - 90px);
|
|
4656
4677
|
}
|
|
4657
|
-
.navigation[data-v-
|
|
4678
|
+
.navigation[data-v-4789af69] {
|
|
4658
4679
|
top: 50%;
|
|
4659
4680
|
transform: translateY(-50%);
|
|
4660
4681
|
}
|
|
4661
|
-
.thumbnail[data-v-
|
|
4682
|
+
.thumbnail[data-v-4789af69] {
|
|
4662
4683
|
height: 50px;
|
|
4663
4684
|
width: 50px;
|
|
4664
4685
|
}
|
|
4665
|
-
.thumbnail[data-v-
|
|
4686
|
+
.thumbnail[data-v-4789af69]:hover {
|
|
4666
4687
|
opacity: 1;
|
|
4667
4688
|
}
|
|
4668
|
-
.thumbnail[data-v-
|
|
4689
|
+
.thumbnail[data-v-4789af69]:active {
|
|
4669
4690
|
opacity: 0.8;
|
|
4670
4691
|
}
|
|
4671
|
-
.thumbnail.active[data-v-
|
|
4692
|
+
.thumbnail.active[data-v-4789af69] {
|
|
4672
4693
|
opacity: 1;
|
|
4673
4694
|
outline: 2px solid white;
|
|
4674
4695
|
}
|
|
4675
|
-
.file-info[data-v-
|
|
4696
|
+
.file-info[data-v-4789af69]{
|
|
4676
4697
|
max-width: 420px
|
|
4677
4698
|
}
|
|
4678
4699
|
@media screen and (max-width: 910px) {
|
|
4679
|
-
.file-info[data-v-
|
|
4700
|
+
.file-info[data-v-4789af69]{
|
|
4680
4701
|
max-width: 220px;
|
|
4681
4702
|
text-align: center !important;
|
|
4682
4703
|
}
|
|
4683
|
-
.file-info[data-v-
|
|
4704
|
+
.file-info[data-v-4789af69] *{
|
|
4684
4705
|
text-align: center !important;
|
|
4685
4706
|
margin-inline: 0 !important;
|
|
4686
4707
|
max-width: 100% !important;
|
package/package.json
CHANGED
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { Btn } from '@bagelink/vue'
|
|
3
|
+
import { watch, nextTick } from 'vue'
|
|
4
|
+
|
|
5
|
+
interface Range {
|
|
6
|
+
start: number
|
|
7
|
+
end: number
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface PaginationProps {
|
|
11
|
+
totalItems: number
|
|
12
|
+
perPage?: number
|
|
13
|
+
totalPages?: number
|
|
14
|
+
variant?: 'default' | 'simple'
|
|
15
|
+
rtl?: boolean
|
|
16
|
+
maxVisiblePages?: number
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const props = withDefaults(defineProps<PaginationProps>(), {
|
|
20
|
+
totalItems: 0,
|
|
21
|
+
perPage: 25,
|
|
22
|
+
totalPages: undefined,
|
|
23
|
+
variant: 'default',
|
|
24
|
+
rtl: false,
|
|
25
|
+
maxVisiblePages: 3
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
const page = defineModel<number>('page', { default: 1 })
|
|
29
|
+
const range = defineModel<Range>('range')
|
|
30
|
+
|
|
31
|
+
const paginationContainer = $ref<HTMLElement>()
|
|
32
|
+
let indicatorPosition = $ref(0)
|
|
33
|
+
let indicatorWidth = $ref(0)
|
|
34
|
+
|
|
35
|
+
// Calculate totalPages from totalItems and perPage if not provided directly
|
|
36
|
+
const computedTotalPages = $computed(() => {
|
|
37
|
+
if (props.totalPages !== undefined) return props.totalPages
|
|
38
|
+
const { perPage } = props
|
|
39
|
+
return Math.max(1, Math.ceil(props.totalItems / perPage))
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
watch(
|
|
43
|
+
[() => page.value, () => props.perPage, () => props.totalItems],
|
|
44
|
+
() => {
|
|
45
|
+
if (range.value) {
|
|
46
|
+
const { perPage } = props
|
|
47
|
+
// Calculate zero-based indices
|
|
48
|
+
const start = (page.value - 1) * perPage
|
|
49
|
+
const end = Math.min(start + perPage - 1, props.totalItems - 1)
|
|
50
|
+
range.value = { start, end }
|
|
51
|
+
}
|
|
52
|
+
// Update indicator position when page changes
|
|
53
|
+
nextTick(() => { updateIndicatorPosition() })
|
|
54
|
+
},
|
|
55
|
+
{ immediate: true }
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
// Also watch for RTL changes
|
|
59
|
+
watch(() => props.rtl, updateIndicatorPosition)
|
|
60
|
+
|
|
61
|
+
// Calculate which page numbers to show
|
|
62
|
+
const visiblePages = $computed(() => {
|
|
63
|
+
const { maxVisiblePages } = props
|
|
64
|
+
|
|
65
|
+
// If we have few enough pages, show all of them
|
|
66
|
+
if (computedTotalPages <= maxVisiblePages * 2) {
|
|
67
|
+
return Array.from({ length: computedTotalPages }, (_, i) => i + 1)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Always include current page and adjacent pages for navigation
|
|
71
|
+
const mustInclude = new Set<number>()
|
|
72
|
+
|
|
73
|
+
// Current page is always included
|
|
74
|
+
mustInclude.add(page.value)
|
|
75
|
+
|
|
76
|
+
// Ensure adjacent pages are included for navigation
|
|
77
|
+
if (page.value > 1) mustInclude.add(page.value - 1)
|
|
78
|
+
if (page.value < computedTotalPages) mustInclude.add(page.value + 1)
|
|
79
|
+
|
|
80
|
+
// Always include first and last pages
|
|
81
|
+
mustInclude.add(1)
|
|
82
|
+
mustInclude.add(computedTotalPages)
|
|
83
|
+
|
|
84
|
+
// Start with explicitly required pages
|
|
85
|
+
const pageArray = Array.from(mustInclude).sort((a, b) => a - b)
|
|
86
|
+
|
|
87
|
+
// Now fill remaining slots if there's room within maxVisiblePages
|
|
88
|
+
if (pageArray.length < maxVisiblePages + 2) {
|
|
89
|
+
// Try to add pages between existing ones
|
|
90
|
+
for (let i = 0; i < pageArray.length - 1; i++) {
|
|
91
|
+
const current = pageArray[i]
|
|
92
|
+
const next = pageArray[i + 1]
|
|
93
|
+
|
|
94
|
+
if (next - current > 1) {
|
|
95
|
+
// There's a gap - fill in additional pages
|
|
96
|
+
const pagesToAdd = Math.min(next - current - 1, maxVisiblePages + 2 - pageArray.length)
|
|
97
|
+
|
|
98
|
+
const newPages = Array.from(
|
|
99
|
+
{ length: pagesToAdd },
|
|
100
|
+
(_, idx) => current + idx + 1
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
pageArray.splice(i + 1, 0, ...newPages)
|
|
104
|
+
i += newPages.length // Skip past inserted items
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return pageArray
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
function updateIndicatorPosition() {
|
|
113
|
+
if (!paginationContainer) return
|
|
114
|
+
|
|
115
|
+
const selectedButton = paginationContainer.querySelector('.selected')
|
|
116
|
+
if (!selectedButton) return
|
|
117
|
+
|
|
118
|
+
const containerRect = paginationContainer.getBoundingClientRect()
|
|
119
|
+
const buttonRect = selectedButton.getBoundingClientRect()
|
|
120
|
+
|
|
121
|
+
// Get position and dimensions
|
|
122
|
+
indicatorWidth = buttonRect.width
|
|
123
|
+
|
|
124
|
+
if (props.rtl) {
|
|
125
|
+
// RTL positioning - align to right edge
|
|
126
|
+
const rightOffset = containerRect.right - buttonRect.right
|
|
127
|
+
indicatorPosition = rightOffset
|
|
128
|
+
} else {
|
|
129
|
+
// LTR positioning - align to left edge
|
|
130
|
+
const leftOffset = buttonRect.left - containerRect.left
|
|
131
|
+
indicatorPosition = leftOffset
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function handleClick(p: number) {
|
|
136
|
+
if (p < 1 || p > computedTotalPages) return
|
|
137
|
+
page.value = p
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function next() {
|
|
141
|
+
handleClick(page.value + 1)
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function prev() {
|
|
145
|
+
handleClick(page.value - 1)
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Convert zero-based index to one-based for display
|
|
149
|
+
function displayIndex(index: number | undefined): string {
|
|
150
|
+
return index === undefined ? '-' : (index + 1).toString()
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
interface PageItem {
|
|
154
|
+
type: 'page' | 'ellipsis'
|
|
155
|
+
key: string | number
|
|
156
|
+
number?: number
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// Enhanced rendering - creates UI with ellipses in the right positions
|
|
160
|
+
const renderPageButtons = $computed(() => {
|
|
161
|
+
const items: PageItem[] = []
|
|
162
|
+
|
|
163
|
+
for (let i = 0; i < visiblePages.length; i++) {
|
|
164
|
+
const pageNum = visiblePages[i]
|
|
165
|
+
|
|
166
|
+
// Insert ellipsis before this page if needed
|
|
167
|
+
if (i > 0) {
|
|
168
|
+
const prevPage = visiblePages[i - 1]
|
|
169
|
+
if (pageNum - prevPage > 1) {
|
|
170
|
+
items.push({
|
|
171
|
+
type: 'ellipsis',
|
|
172
|
+
key: `ellipsis-${i}`
|
|
173
|
+
})
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// Add the page button
|
|
178
|
+
items.push({
|
|
179
|
+
type: 'page',
|
|
180
|
+
number: pageNum,
|
|
181
|
+
key: pageNum
|
|
182
|
+
})
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return items
|
|
186
|
+
})
|
|
187
|
+
</script>
|
|
188
|
+
|
|
189
|
+
<template>
|
|
190
|
+
<div v-if="computedTotalPages > 1" ref="paginationContainer" class="relative flex gap-1 justify-content">
|
|
191
|
+
<!-- Default pagination with page numbers -->
|
|
192
|
+
<template v-if="variant !== 'simple'">
|
|
193
|
+
<div
|
|
194
|
+
class="indicator radius-1"
|
|
195
|
+
:style="{
|
|
196
|
+
[rtl ? 'right' : 'left']: `${indicatorPosition}px`,
|
|
197
|
+
width: `${indicatorWidth}px`,
|
|
198
|
+
}"
|
|
199
|
+
/>
|
|
200
|
+
<!-- Render the page buttons and ellipses in order -->
|
|
201
|
+
<template v-for="item in renderPageButtons" :key="item.key">
|
|
202
|
+
<!-- Page button -->
|
|
203
|
+
<Btn
|
|
204
|
+
v-if="item.type === 'page'" flat thin
|
|
205
|
+
:class="{ selected: item.number === page }"
|
|
206
|
+
:value="item.number ? item.number.toString() : ''"
|
|
207
|
+
@click="item.number ? handleClick(item.number) : null"
|
|
208
|
+
/>
|
|
209
|
+
|
|
210
|
+
<!-- Ellipsis -->
|
|
211
|
+
<div v-else-if="item.type === 'ellipsis'" class="pagination-ellipsis">
|
|
212
|
+
...
|
|
213
|
+
</div>
|
|
214
|
+
</template>
|
|
215
|
+
</template>
|
|
216
|
+
|
|
217
|
+
<!-- Simple pagination with prev/next buttons -->
|
|
218
|
+
<template v-else>
|
|
219
|
+
<Btn flat thin :disabled="page <= 1" icon="chevron_left" @click="prev" />
|
|
220
|
+
<span class="pagination-info">
|
|
221
|
+
{{ displayIndex(range?.start) }}-{{ displayIndex(range?.end) }} / {{ props.totalItems }}
|
|
222
|
+
</span>
|
|
223
|
+
<Btn flat thin :disabled="page >= computedTotalPages" icon="chevron_right" @click="next" />
|
|
224
|
+
</template>
|
|
225
|
+
</div>
|
|
226
|
+
</template>
|
|
227
|
+
|
|
228
|
+
<style scoped>
|
|
229
|
+
.indicator {
|
|
230
|
+
position: absolute;
|
|
231
|
+
height: 30px;
|
|
232
|
+
background-color: var(--bgl-primary);
|
|
233
|
+
transition: all 0.3s ease;
|
|
234
|
+
z-index: -1;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.selected {
|
|
238
|
+
color: white !important;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
.pagination-info {
|
|
242
|
+
min-width: 60px;
|
|
243
|
+
text-align: center;
|
|
244
|
+
font-size: 14px;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
.pagination-ellipsis {
|
|
248
|
+
display: flex;
|
|
249
|
+
align-items: center;
|
|
250
|
+
padding: 0 4px;
|
|
251
|
+
}
|
|
252
|
+
</style>
|
package/src/components/Pill.vue
CHANGED
|
@@ -100,7 +100,7 @@ const computedBackgroundColor = $computed(
|
|
|
100
100
|
<div v-if="loading" class="loading" />
|
|
101
101
|
<div v-else>
|
|
102
102
|
<div v-if="btnEnd" class="flex h-100">
|
|
103
|
-
<Btn class="bgl_pill-btn" round thin v-bind="btnEnd" />
|
|
103
|
+
<Btn class="bgl_pill-btn" round thin flat v-bind="btnEnd" />
|
|
104
104
|
</div>
|
|
105
105
|
</div>
|
|
106
106
|
</div>
|