funuicss 3.8.17 → 3.9.1
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/css/fun.css +326 -101
- package/package.json +1 -1
- package/ui/drop/Dropdown.d.ts +1 -0
- package/ui/drop/Dropdown.js +207 -25
- package/ui/form/Form.js +0 -2
- package/ui/sidebar/SideBar.js +19 -17
- package/ui/table/Table.js +2 -1
- package/ui/tooltip/ToolTip.d.ts +7 -1
- package/ui/tooltip/ToolTip.js +69 -2
package/css/fun.css
CHANGED
|
@@ -2145,14 +2145,17 @@ z-index: 9999 !important;
|
|
|
2145
2145
|
top: 0;
|
|
2146
2146
|
}
|
|
2147
2147
|
|
|
2148
|
+
|
|
2148
2149
|
/* Dropdown Item */
|
|
2149
2150
|
.dropdown-item {
|
|
2150
|
-
padding: 0.
|
|
2151
|
+
padding: 0.4rem 0.8rem;
|
|
2151
2152
|
cursor: pointer;
|
|
2152
2153
|
display: flex;
|
|
2153
2154
|
align-items: center;
|
|
2155
|
+
border-bottom: var(--border);
|
|
2154
2156
|
gap: 0.5rem;
|
|
2155
2157
|
flex-wrap: nowrap;
|
|
2158
|
+
font-size: var(--smallFont);
|
|
2156
2159
|
transition: background-color 0.15s ease;
|
|
2157
2160
|
}
|
|
2158
2161
|
|
|
@@ -4525,101 +4528,62 @@ filter: brightness(90%);
|
|
|
4525
4528
|
background-color: rgba(0, 0, 0, 0.1);
|
|
4526
4529
|
}
|
|
4527
4530
|
|
|
4528
|
-
|
|
4529
|
-
|
|
4530
|
-
|
|
4531
|
-
|
|
4532
|
-
|
|
4533
|
-
|
|
4534
|
-
|
|
4535
|
-
|
|
4536
|
-
|
|
4537
|
-
color: var(--white);
|
|
4538
|
-
text-align: center;
|
|
4539
|
-
border-radius: var(--radius);
|
|
4540
|
-
padding: 0.2rem 0.5rem !important;
|
|
4541
|
-
font-weight: 500 !important;
|
|
4542
|
-
position: absolute;
|
|
4543
|
-
z-index: 10;
|
|
4544
|
-
transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out;
|
|
4531
|
+
/* Portal tooltip specific styles */
|
|
4532
|
+
.tip[style*="position: fixed"] {
|
|
4533
|
+
position: fixed !important;
|
|
4534
|
+
z-index: 9999 !important;
|
|
4535
|
+
background-color: var(--dark) !important;
|
|
4536
|
+
color: var(--white) !important;
|
|
4537
|
+
padding: 0.4rem 0.75rem !important;
|
|
4538
|
+
border-radius: var(--radius) !important;
|
|
4539
|
+
box-shadow: var(--raised) !important;
|
|
4545
4540
|
font-size: var(--smallFont) !important;
|
|
4546
|
-
|
|
4547
|
-
|
|
4548
|
-
|
|
4549
|
-
white-space: nowrap; /* prevents line breaks */
|
|
4550
|
-
opacity: 0;
|
|
4551
|
-
pointer-events: none;
|
|
4541
|
+
max-width: 200px !important;
|
|
4542
|
+
white-space: nowrap !important;
|
|
4543
|
+
pointer-events: none !important;
|
|
4552
4544
|
}
|
|
4553
4545
|
|
|
4554
|
-
|
|
4555
|
-
|
|
4556
|
-
|
|
4557
|
-
|
|
4558
|
-
|
|
4559
|
-
pointer-events: auto;
|
|
4546
|
+
/* Arrow for portal tooltips */
|
|
4547
|
+
.tip[style*="position: fixed"]::after {
|
|
4548
|
+
content: "" !important;
|
|
4549
|
+
position: absolute !important;
|
|
4550
|
+
border-style: solid !important;
|
|
4560
4551
|
}
|
|
4561
4552
|
|
|
4562
|
-
/*
|
|
4563
|
-
.
|
|
4564
|
-
|
|
4565
|
-
|
|
4566
|
-
|
|
4567
|
-
|
|
4568
|
-
|
|
4569
|
-
/* Top Tooltip */
|
|
4570
|
-
.tooltip .tip-top {
|
|
4571
|
-
bottom: 125%;
|
|
4572
|
-
left: 50%;
|
|
4573
|
-
transform: translateX(-50%);
|
|
4574
|
-
}
|
|
4575
|
-
.tooltip .tip-top::after {
|
|
4576
|
-
top: 100%;
|
|
4577
|
-
left: 50%;
|
|
4578
|
-
transform: translateX(-50%);
|
|
4579
|
-
border-width: 6px 6px 0 6px;
|
|
4580
|
-
border-color: var(--dark) transparent transparent transparent;
|
|
4553
|
+
/* Top arrow */
|
|
4554
|
+
.tip-top[style*="position: fixed"]::after {
|
|
4555
|
+
bottom: -6px !important;
|
|
4556
|
+
left: 50% !important;
|
|
4557
|
+
transform: translateX(-50%) !important;
|
|
4558
|
+
border-width: 6px 6px 0 6px !important;
|
|
4559
|
+
border-color: var(--dark) transparent transparent transparent !important;
|
|
4581
4560
|
}
|
|
4582
4561
|
|
|
4583
|
-
/* Bottom
|
|
4584
|
-
.
|
|
4585
|
-
top:
|
|
4586
|
-
left: 50
|
|
4587
|
-
transform: translateX(-50%);
|
|
4588
|
-
|
|
4589
|
-
|
|
4590
|
-
bottom: 100%;
|
|
4591
|
-
left: 50%;
|
|
4592
|
-
transform: translateX(-50%);
|
|
4593
|
-
border-width: 0 6px 6px 6px;
|
|
4594
|
-
border-color: transparent transparent var(--dark) transparent;
|
|
4562
|
+
/* Bottom arrow */
|
|
4563
|
+
.tip-bottom[style*="position: fixed"]::after {
|
|
4564
|
+
top: -6px !important;
|
|
4565
|
+
left: 50% !important;
|
|
4566
|
+
transform: translateX(-50%) !important;
|
|
4567
|
+
border-width: 0 6px 6px 6px !important;
|
|
4568
|
+
border-color: transparent transparent var(--dark) transparent !important;
|
|
4595
4569
|
}
|
|
4596
4570
|
|
|
4597
|
-
/*
|
|
4598
|
-
.
|
|
4599
|
-
|
|
4600
|
-
|
|
4601
|
-
transform: translateY(-50%);
|
|
4602
|
-
|
|
4603
|
-
|
|
4604
|
-
top: 50%;
|
|
4605
|
-
left: -6px;
|
|
4606
|
-
transform: translateY(-50%);
|
|
4607
|
-
border-width: 6px 6px 6px 0;
|
|
4608
|
-
border-color: transparent var(--dark) transparent transparent;
|
|
4571
|
+
/* Left arrow */
|
|
4572
|
+
.tip-left[style*="position: fixed"]::after {
|
|
4573
|
+
right: -6px !important;
|
|
4574
|
+
top: 50% !important;
|
|
4575
|
+
transform: translateY(-50%) !important;
|
|
4576
|
+
border-width: 6px 0 6px 6px !important;
|
|
4577
|
+
border-color: transparent transparent transparent var(--dark) !important;
|
|
4609
4578
|
}
|
|
4610
4579
|
|
|
4611
|
-
/*
|
|
4612
|
-
.
|
|
4613
|
-
|
|
4614
|
-
|
|
4615
|
-
transform: translateY(-50%);
|
|
4616
|
-
|
|
4617
|
-
|
|
4618
|
-
top: 50%;
|
|
4619
|
-
right: -6px;
|
|
4620
|
-
transform: translateY(-50%);
|
|
4621
|
-
border-width: 6px 0 6px 6px;
|
|
4622
|
-
border-color: transparent transparent transparent var(--dark);
|
|
4580
|
+
/* Right arrow */
|
|
4581
|
+
.tip-right[style*="position: fixed"]::after {
|
|
4582
|
+
left: -6px !important;
|
|
4583
|
+
top: 50% !important;
|
|
4584
|
+
transform: translateY(-50%) !important;
|
|
4585
|
+
border-width: 6px 6px 6px 0 !important;
|
|
4586
|
+
border-color: transparent var(--dark) transparent transparent !important;
|
|
4623
4587
|
}
|
|
4624
4588
|
|
|
4625
4589
|
.snackbar {
|
|
@@ -11806,12 +11770,15 @@ z-index: 10;
|
|
|
11806
11770
|
.fade-in-down { animation: fadeInDown 0.8s ease-out !important; }
|
|
11807
11771
|
.fade-in-left { animation: fadeInLeft 0.8s ease-out !important; }
|
|
11808
11772
|
.fade-in-right { animation: fadeInRight 0.8s ease-out !important; }
|
|
11773
|
+
.fade-in-scale { animation: fadeInScale 0.8s ease-out !important; }
|
|
11774
|
+
.fade-in-blur { animation: fadeInBlur 0.8s ease-out !important; }
|
|
11809
11775
|
|
|
11810
11776
|
/* Slide In */
|
|
11811
11777
|
.slide-in-up { animation: slideInUp 0.8s ease-out !important; }
|
|
11812
11778
|
.slide-in-down { animation: slideInDown 0.8s ease-out !important; }
|
|
11813
11779
|
.slide-in-left { animation: slideInLeft 0.8s ease-out !important; }
|
|
11814
11780
|
.slide-in-right { animation: slideInRight 0.8s ease-out !important; }
|
|
11781
|
+
.slide-in-diagonal { animation: slideInDiagonal 0.8s ease-out !important; }
|
|
11815
11782
|
|
|
11816
11783
|
/* Zoom In */
|
|
11817
11784
|
.zoom-in { animation: zoomIn 0.6s ease-out !important; }
|
|
@@ -11819,6 +11786,7 @@ z-index: 10;
|
|
|
11819
11786
|
.zoom-in-down { animation: zoomInDown 0.8s ease-out !important; }
|
|
11820
11787
|
.zoom-in-left { animation: zoomInLeft 0.8s ease-out !important; }
|
|
11821
11788
|
.zoom-in-right { animation: zoomInRight 0.8s ease-out !important; }
|
|
11789
|
+
.zoom-in-rotate { animation: zoomInRotate 0.8s ease-out !important; }
|
|
11822
11790
|
|
|
11823
11791
|
/* Bounce In */
|
|
11824
11792
|
.bounce-in { animation: bounceIn 0.8s ease-out !important; }
|
|
@@ -11830,11 +11798,13 @@ z-index: 10;
|
|
|
11830
11798
|
/* Flip In */
|
|
11831
11799
|
.flip-in-x { animation: flipInX 0.8s ease-out !important; }
|
|
11832
11800
|
.flip-in-y { animation: flipInY 0.8s ease-out !important; }
|
|
11801
|
+
.flip-in-diagonal { animation: flipInDiagonal 0.8s ease-out !important; }
|
|
11833
11802
|
|
|
11834
11803
|
/* Rotate In */
|
|
11835
11804
|
.rotate-in { animation: rotateIn 0.8s ease-out !important; }
|
|
11836
11805
|
.rotate-in-up { animation: rotateInUp 0.8s ease-out !important; }
|
|
11837
11806
|
.rotate-in-down { animation: rotateInDown 0.8s ease-out !important; }
|
|
11807
|
+
.rotate-in-scale { animation: rotateInScale 0.8s ease-out !important; }
|
|
11838
11808
|
|
|
11839
11809
|
/* Special Entrance */
|
|
11840
11810
|
.roll-in { animation: rollIn 0.8s ease-out !important; }
|
|
@@ -11842,42 +11812,99 @@ z-index: 10;
|
|
|
11842
11812
|
.swing-in { animation: swingIn 0.8s ease-out !important; }
|
|
11843
11813
|
.wobble-in { animation: wobbleIn 0.8s ease-out !important; }
|
|
11844
11814
|
.pulse-in { animation: pulseIn 0.8s ease-out !important; }
|
|
11815
|
+
.unfold-in { animation: unfoldIn 0.8s ease-out !important; }
|
|
11816
|
+
.spiral-in { animation: spiralIn 0.8s ease-out !important; }
|
|
11845
11817
|
|
|
11846
11818
|
/* ===== HOVER ANIMATIONS ===== */
|
|
11847
11819
|
/* Scale Hover */
|
|
11848
|
-
.hover-scale { transition: transform 0.3s
|
|
11820
|
+
.hover-scale { transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) !important; }
|
|
11849
11821
|
.hover-scale:hover { transform: scale(1.05) !important; }
|
|
11850
|
-
.hover-scale-lg { transition: transform 0.3s
|
|
11822
|
+
.hover-scale-lg { transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) !important; }
|
|
11851
11823
|
.hover-scale-lg:hover { transform: scale(1.1) !important; }
|
|
11852
|
-
.hover-scale-sm { transition: transform 0.3s
|
|
11824
|
+
.hover-scale-sm { transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) !important; }
|
|
11853
11825
|
.hover-scale-sm:hover { transform: scale(1.02) !important; }
|
|
11854
11826
|
|
|
11827
|
+
/* Scale & Rotate Combined */
|
|
11828
|
+
.hover-scale-rotate { transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) !important; }
|
|
11829
|
+
.hover-scale-rotate:hover { transform: scale(1.05) rotate(3deg) !important; }
|
|
11830
|
+
.hover-scale-rotate-rev { transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) !important; }
|
|
11831
|
+
.hover-scale-rotate-rev:hover { transform: scale(1.05) rotate(-3deg) !important; }
|
|
11832
|
+
|
|
11855
11833
|
/* Lift Hover */
|
|
11856
|
-
.hover-lift { transition: all 0.3s
|
|
11857
|
-
.hover-lift:hover { transform: translateY(-0.5rem) !important; box-shadow:
|
|
11858
|
-
.hover-lift-lg { transition: all 0.3s
|
|
11859
|
-
.hover-lift-lg:hover { transform: translateY(-1rem) !important; box-shadow:
|
|
11834
|
+
.hover-lift { transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) !important; }
|
|
11835
|
+
.hover-lift:hover { transform: translateY(-0.5rem) !important; box-shadow: 0 0.5rem 2rem rgba(0, 0, 0, 0.15) !important; }
|
|
11836
|
+
.hover-lift-lg { transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) !important; }
|
|
11837
|
+
.hover-lift-lg:hover { transform: translateY(-1rem) !important; box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.2) !important; }
|
|
11838
|
+
|
|
11839
|
+
/* Lift & Rotate Combined */
|
|
11840
|
+
.hover-lift-rotate { transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) !important; }
|
|
11841
|
+
.hover-lift-rotate:hover { transform: translateY(-0.5rem) rotate(2deg) !important; box-shadow: 0 0.5rem 2rem rgba(0, 0, 0, 0.15) !important; }
|
|
11842
|
+
|
|
11843
|
+
/* Tilt Hover */
|
|
11844
|
+
.hover-tilt-left { transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) !important; }
|
|
11845
|
+
.hover-tilt-left:hover { transform: perspective(1000px) rotateY(-10deg) !important; }
|
|
11846
|
+
.hover-tilt-right { transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) !important; }
|
|
11847
|
+
.hover-tilt-right:hover { transform: perspective(1000px) rotateY(10deg) !important; }
|
|
11848
|
+
.hover-tilt-up { transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) !important; }
|
|
11849
|
+
.hover-tilt-up:hover { transform: perspective(1000px) rotateX(10deg) !important; }
|
|
11850
|
+
|
|
11851
|
+
/* Skew Hover */
|
|
11852
|
+
.hover-skew { transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) !important; }
|
|
11853
|
+
.hover-skew:hover { transform: skewX(-5deg) scale(1.02) !important; }
|
|
11860
11854
|
|
|
11861
11855
|
/* Glow Hover */
|
|
11862
11856
|
.hover-glow { transition: all 0.3s ease !important; }
|
|
11863
|
-
.hover-glow:hover { box-shadow: 0 0 2rem rgba(
|
|
11857
|
+
.hover-glow:hover { box-shadow: 0 0 2rem rgba(59, 130, 246, 0.5) !important; transform: translateY(-0.25rem) !important; }
|
|
11858
|
+
.hover-glow-intense { transition: all 0.3s ease !important; }
|
|
11859
|
+
.hover-glow-intense:hover { box-shadow: 0 0 3rem rgba(59, 130, 246, 0.8), 0 0 1rem rgba(59, 130, 246, 0.4) inset !important; transform: scale(1.05) !important; }
|
|
11860
|
+
|
|
11861
|
+
/* Bounce & Scale */
|
|
11862
|
+
.hover-bounce-scale:hover { animation: bounceScale 0.6s ease !important; }
|
|
11864
11863
|
|
|
11865
|
-
/* Shake
|
|
11864
|
+
/* Shake & Wobble */
|
|
11866
11865
|
.hover-shake:hover { animation: shake 0.5s ease-in-out !important; }
|
|
11867
11866
|
.hover-wobble:hover { animation: wobble 0.5s ease-in-out !important; }
|
|
11868
11867
|
.hover-bounce:hover { animation: bounce 0.5s ease-in-out !important; }
|
|
11868
|
+
.hover-jello:hover { animation: jello 0.6s ease-in-out !important; }
|
|
11869
|
+
.hover-rubber:hover { animation: rubberBand 0.6s ease-in-out !important; }
|
|
11869
11870
|
|
|
11870
11871
|
/* Border Hover */
|
|
11871
11872
|
.hover-border-grow { transition: all 0.3s ease !important; border: 2px solid transparent !important; }
|
|
11872
|
-
.hover-border-grow:hover { border-color:
|
|
11873
|
+
.hover-border-grow:hover { border-color: rgb(59, 130, 246) !important; transform: scale(1.02) !important; }
|
|
11874
|
+
.hover-border-glow { transition: all 0.3s ease !important; }
|
|
11875
|
+
.hover-border-glow:hover { box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.3) !important; }
|
|
11876
|
+
|
|
11877
|
+
/* Shadow Hover */
|
|
11878
|
+
.hover-shadow-soft { transition: box-shadow 0.3s ease !important; }
|
|
11879
|
+
.hover-shadow-soft:hover { box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.1) !important; }
|
|
11880
|
+
.hover-shadow-hard { transition: box-shadow 0.3s ease !important; }
|
|
11881
|
+
.hover-shadow-hard:hover { box-shadow: 0.5rem 0.5rem 0 rgba(0, 0, 0, 0.2) !important; }
|
|
11882
|
+
.hover-shadow-neon { transition: all 0.3s ease !important; }
|
|
11883
|
+
.hover-shadow-neon:hover { box-shadow: 0 0 1rem rgba(59, 130, 246, 0.6), 0 0 2rem rgba(59, 130, 246, 0.4) !important; }
|
|
11873
11884
|
|
|
11874
11885
|
/* Text Hover */
|
|
11875
|
-
.hover-text-glow:hover { text-shadow: 0 0 1rem currentColor !important; }
|
|
11876
|
-
.hover-text-lift
|
|
11886
|
+
.hover-text-glow:hover { text-shadow: 0 0 1rem currentColor !important; transition: text-shadow 0.3s ease !important; }
|
|
11887
|
+
.hover-text-lift { transition: all 0.3s ease !important; }
|
|
11888
|
+
.hover-text-lift:hover { transform: translateY(-0.125rem) !important; text-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.2) !important; }
|
|
11889
|
+
.hover-text-scale { transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) !important; display: inline-block !important; }
|
|
11890
|
+
.hover-text-scale:hover { transform: scale(1.1) !important; }
|
|
11891
|
+
|
|
11892
|
+
/* Flip Hover */
|
|
11893
|
+
.hover-flip-x { transition: transform 0.6s ease !important; transform-style: preserve-3d !important; }
|
|
11894
|
+
.hover-flip-x:hover { transform: rotateX(360deg) !important; }
|
|
11895
|
+
.hover-flip-y { transition: transform 0.6s ease !important; transform-style: preserve-3d !important; }
|
|
11896
|
+
.hover-flip-y:hover { transform: rotateY(360deg) !important; }
|
|
11897
|
+
|
|
11898
|
+
/* Swing Hover */
|
|
11899
|
+
.hover-swing:hover { animation: swing 0.8s ease !important; transform-origin: top center !important; }
|
|
11900
|
+
|
|
11901
|
+
/* Pulse Hover */
|
|
11902
|
+
.hover-pulse:hover { animation: pulseHover 0.6s ease !important; }
|
|
11903
|
+
.hover-heartbeat:hover { animation: heartbeat 0.8s ease-in-out !important; }
|
|
11877
11904
|
|
|
11878
11905
|
/* ===== CONTINUOUS ANIMATIONS ===== */
|
|
11879
11906
|
.animate-float { animation: float 3s ease-in-out infinite !important; }
|
|
11880
|
-
.animate-
|
|
11907
|
+
.animate-float-slow { animation: float 5s ease-in-out infinite !important; }
|
|
11881
11908
|
.animate-bounce-slow { animation: bounce 2s ease-in-out infinite !important; }
|
|
11882
11909
|
.animate-spin-slow { animation: spin 3s linear infinite !important; }
|
|
11883
11910
|
.animate-ping-slow { animation: ping 3s ease-out infinite !important; }
|
|
@@ -11885,8 +11912,14 @@ z-index: 10;
|
|
|
11885
11912
|
.animate-breath { animation: breath 4s ease-in-out infinite !important; }
|
|
11886
11913
|
.animate-wave { animation: wave 2s ease-in-out infinite !important; }
|
|
11887
11914
|
.animate-glow { animation: glow 2s ease-in-out infinite !important; }
|
|
11915
|
+
.animate-pulse-glow { animation: pulseGlow 2s ease-in-out infinite !important; }
|
|
11916
|
+
.animate-drift { animation: drift 6s ease-in-out infinite !important; }
|
|
11917
|
+
.animate-sway { animation: sway 3s ease-in-out infinite !important; }
|
|
11918
|
+
.animate-rotate-slow { animation: rotateSlow 20s linear infinite !important; }
|
|
11919
|
+
.animate-bob { animation: bob 2s ease-in-out infinite !important; }
|
|
11888
11920
|
|
|
11889
11921
|
/* ===== ANIMATION KEYFRAMES ===== */
|
|
11922
|
+
/* Fade Animations */
|
|
11890
11923
|
@keyframes fadeIn {
|
|
11891
11924
|
from { opacity: 0; }
|
|
11892
11925
|
to { opacity: 1; }
|
|
@@ -11912,6 +11945,17 @@ z-index: 10;
|
|
|
11912
11945
|
to { opacity: 1; transform: translateX(0); }
|
|
11913
11946
|
}
|
|
11914
11947
|
|
|
11948
|
+
@keyframes fadeInScale {
|
|
11949
|
+
from { opacity: 0; transform: scale(0.8); }
|
|
11950
|
+
to { opacity: 1; transform: scale(1); }
|
|
11951
|
+
}
|
|
11952
|
+
|
|
11953
|
+
@keyframes fadeInBlur {
|
|
11954
|
+
from { opacity: 0; filter: blur(10px); }
|
|
11955
|
+
to { opacity: 1; filter: blur(0); }
|
|
11956
|
+
}
|
|
11957
|
+
|
|
11958
|
+
/* Slide Animations */
|
|
11915
11959
|
@keyframes slideInUp {
|
|
11916
11960
|
from { transform: translateY(100%); }
|
|
11917
11961
|
to { transform: translateY(0); }
|
|
@@ -11932,6 +11976,12 @@ z-index: 10;
|
|
|
11932
11976
|
to { transform: translateX(0); }
|
|
11933
11977
|
}
|
|
11934
11978
|
|
|
11979
|
+
@keyframes slideInDiagonal {
|
|
11980
|
+
from { transform: translate(-100%, -100%); opacity: 0; }
|
|
11981
|
+
to { transform: translate(0, 0); opacity: 1; }
|
|
11982
|
+
}
|
|
11983
|
+
|
|
11984
|
+
/* Zoom Animations */
|
|
11935
11985
|
@keyframes zoomIn {
|
|
11936
11986
|
from { opacity: 0; transform: scale(0.5); }
|
|
11937
11987
|
to { opacity: 1; transform: scale(1); }
|
|
@@ -11942,6 +11992,27 @@ z-index: 10;
|
|
|
11942
11992
|
to { opacity: 1; transform: scale(1) translateY(0); }
|
|
11943
11993
|
}
|
|
11944
11994
|
|
|
11995
|
+
@keyframes zoomInDown {
|
|
11996
|
+
from { opacity: 0; transform: scale(0.5) translateY(-2rem); }
|
|
11997
|
+
to { opacity: 1; transform: scale(1) translateY(0); }
|
|
11998
|
+
}
|
|
11999
|
+
|
|
12000
|
+
@keyframes zoomInLeft {
|
|
12001
|
+
from { opacity: 0; transform: scale(0.5) translateX(-2rem); }
|
|
12002
|
+
to { opacity: 1; transform: scale(1) translateX(0); }
|
|
12003
|
+
}
|
|
12004
|
+
|
|
12005
|
+
@keyframes zoomInRight {
|
|
12006
|
+
from { opacity: 0; transform: scale(0.5) translateX(2rem); }
|
|
12007
|
+
to { opacity: 1; transform: scale(1) translateX(0); }
|
|
12008
|
+
}
|
|
12009
|
+
|
|
12010
|
+
@keyframes zoomInRotate {
|
|
12011
|
+
from { opacity: 0; transform: scale(0.5) rotate(-45deg); }
|
|
12012
|
+
to { opacity: 1; transform: scale(1) rotate(0); }
|
|
12013
|
+
}
|
|
12014
|
+
|
|
12015
|
+
/* Bounce Animations */
|
|
11945
12016
|
@keyframes bounceIn {
|
|
11946
12017
|
0% { opacity: 0; transform: scale(0.3); }
|
|
11947
12018
|
50% { opacity: 1; transform: scale(1.05); }
|
|
@@ -11956,6 +12027,28 @@ z-index: 10;
|
|
|
11956
12027
|
100% { opacity: 1; transform: translateY(0) scale(1); }
|
|
11957
12028
|
}
|
|
11958
12029
|
|
|
12030
|
+
@keyframes bounceInDown {
|
|
12031
|
+
0% { opacity: 0; transform: translateY(-2rem) scale(0.3); }
|
|
12032
|
+
50% { opacity: 1; transform: translateY(1rem) scale(1.05); }
|
|
12033
|
+
70% { transform: translateY(-0.5rem) scale(0.9); }
|
|
12034
|
+
100% { opacity: 1; transform: translateY(0) scale(1); }
|
|
12035
|
+
}
|
|
12036
|
+
|
|
12037
|
+
@keyframes bounceInLeft {
|
|
12038
|
+
0% { opacity: 0; transform: translateX(-2rem) scale(0.3); }
|
|
12039
|
+
50% { opacity: 1; transform: translateX(1rem) scale(1.05); }
|
|
12040
|
+
70% { transform: translateX(-0.5rem) scale(0.9); }
|
|
12041
|
+
100% { opacity: 1; transform: translateX(0) scale(1); }
|
|
12042
|
+
}
|
|
12043
|
+
|
|
12044
|
+
@keyframes bounceInRight {
|
|
12045
|
+
0% { opacity: 0; transform: translateX(2rem) scale(0.3); }
|
|
12046
|
+
50% { opacity: 1; transform: translateX(-1rem) scale(1.05); }
|
|
12047
|
+
70% { transform: translateX(0.5rem) scale(0.9); }
|
|
12048
|
+
100% { opacity: 1; transform: translateX(0) scale(1); }
|
|
12049
|
+
}
|
|
12050
|
+
|
|
12051
|
+
/* Flip Animations */
|
|
11959
12052
|
@keyframes flipInX {
|
|
11960
12053
|
from { transform: perspective(400px) rotateX(90deg); opacity: 0; }
|
|
11961
12054
|
to { transform: perspective(400px) rotateX(0deg); opacity: 1; }
|
|
@@ -11966,11 +12059,33 @@ z-index: 10;
|
|
|
11966
12059
|
to { transform: perspective(400px) rotateY(0deg); opacity: 1; }
|
|
11967
12060
|
}
|
|
11968
12061
|
|
|
12062
|
+
@keyframes flipInDiagonal {
|
|
12063
|
+
from { transform: perspective(400px) rotate3d(1, 1, 0, 90deg); opacity: 0; }
|
|
12064
|
+
to { transform: perspective(400px) rotate3d(1, 1, 0, 0deg); opacity: 1; }
|
|
12065
|
+
}
|
|
12066
|
+
|
|
12067
|
+
/* Rotate Animations */
|
|
11969
12068
|
@keyframes rotateIn {
|
|
11970
12069
|
from { transform: rotate(-180deg); opacity: 0; }
|
|
11971
12070
|
to { transform: rotate(0deg); opacity: 1; }
|
|
11972
12071
|
}
|
|
11973
12072
|
|
|
12073
|
+
@keyframes rotateInUp {
|
|
12074
|
+
from { transform: rotate(-180deg) translateY(2rem); opacity: 0; }
|
|
12075
|
+
to { transform: rotate(0deg) translateY(0); opacity: 1; }
|
|
12076
|
+
}
|
|
12077
|
+
|
|
12078
|
+
@keyframes rotateInDown {
|
|
12079
|
+
from { transform: rotate(180deg) translateY(-2rem); opacity: 0; }
|
|
12080
|
+
to { transform: rotate(0deg) translateY(0); opacity: 1; }
|
|
12081
|
+
}
|
|
12082
|
+
|
|
12083
|
+
@keyframes rotateInScale {
|
|
12084
|
+
from { transform: rotate(-180deg) scale(0.5); opacity: 0; }
|
|
12085
|
+
to { transform: rotate(0deg) scale(1); opacity: 1; }
|
|
12086
|
+
}
|
|
12087
|
+
|
|
12088
|
+
/* Special Entrance Animations */
|
|
11974
12089
|
@keyframes rollIn {
|
|
11975
12090
|
from { opacity: 0; transform: translateX(-100%) rotate(-120deg); }
|
|
11976
12091
|
to { opacity: 1; transform: translateX(0px) rotate(0deg); }
|
|
@@ -12004,7 +12119,18 @@ z-index: 10;
|
|
|
12004
12119
|
100% { opacity: 1; transform: scale(1); }
|
|
12005
12120
|
}
|
|
12006
12121
|
|
|
12007
|
-
|
|
12122
|
+
@keyframes unfoldIn {
|
|
12123
|
+
0% { transform: scaleY(0.005) scaleX(0); opacity: 0; }
|
|
12124
|
+
50% { transform: scaleY(0.005) scaleX(1); opacity: 0.5; }
|
|
12125
|
+
100% { transform: scaleY(1) scaleX(1); opacity: 1; }
|
|
12126
|
+
}
|
|
12127
|
+
|
|
12128
|
+
@keyframes spiralIn {
|
|
12129
|
+
0% { transform: rotate(960deg) scale(0); opacity: 0; }
|
|
12130
|
+
100% { transform: rotate(0deg) scale(1); opacity: 1; }
|
|
12131
|
+
}
|
|
12132
|
+
|
|
12133
|
+
/* Hover Effect Keyframes */
|
|
12008
12134
|
@keyframes shake {
|
|
12009
12135
|
0%, 100% { transform: translateX(0); }
|
|
12010
12136
|
20%, 60% { transform: translateX(-0.5rem); }
|
|
@@ -12020,6 +12146,57 @@ z-index: 10;
|
|
|
12020
12146
|
75% { transform: translateX(-5%) rotate(-1deg); }
|
|
12021
12147
|
}
|
|
12022
12148
|
|
|
12149
|
+
@keyframes bounce {
|
|
12150
|
+
0%, 100% { transform: translateY(0); }
|
|
12151
|
+
50% { transform: translateY(-1rem); }
|
|
12152
|
+
}
|
|
12153
|
+
|
|
12154
|
+
@keyframes jello {
|
|
12155
|
+
0%, 100% { transform: skewX(0deg) skewY(0deg); }
|
|
12156
|
+
30% { transform: skewX(25deg) skewY(25deg); }
|
|
12157
|
+
40% { transform: skewX(-15deg) skewY(-15deg); }
|
|
12158
|
+
50% { transform: skewX(15deg) skewY(15deg); }
|
|
12159
|
+
65% { transform: skewX(-5deg) skewY(-5deg); }
|
|
12160
|
+
75% { transform: skewX(5deg) skewY(5deg); }
|
|
12161
|
+
}
|
|
12162
|
+
|
|
12163
|
+
@keyframes rubberBand {
|
|
12164
|
+
0% { transform: scale(1); }
|
|
12165
|
+
30% { transform: scale(1.25, 0.75); }
|
|
12166
|
+
40% { transform: scale(0.75, 1.25); }
|
|
12167
|
+
50% { transform: scale(1.15, 0.85); }
|
|
12168
|
+
65% { transform: scale(0.95, 1.05); }
|
|
12169
|
+
75% { transform: scale(1.05, 0.95); }
|
|
12170
|
+
100% { transform: scale(1); }
|
|
12171
|
+
}
|
|
12172
|
+
|
|
12173
|
+
@keyframes bounceScale {
|
|
12174
|
+
0%, 100% { transform: scale(1); }
|
|
12175
|
+
50% { transform: scale(1.15); }
|
|
12176
|
+
}
|
|
12177
|
+
|
|
12178
|
+
@keyframes swing {
|
|
12179
|
+
20% { transform: rotate(15deg); }
|
|
12180
|
+
40% { transform: rotate(-10deg); }
|
|
12181
|
+
60% { transform: rotate(5deg); }
|
|
12182
|
+
80% { transform: rotate(-5deg); }
|
|
12183
|
+
100% { transform: rotate(0deg); }
|
|
12184
|
+
}
|
|
12185
|
+
|
|
12186
|
+
@keyframes pulseHover {
|
|
12187
|
+
0% { transform: scale(1); }
|
|
12188
|
+
50% { transform: scale(1.08); }
|
|
12189
|
+
100% { transform: scale(1); }
|
|
12190
|
+
}
|
|
12191
|
+
|
|
12192
|
+
@keyframes heartbeat {
|
|
12193
|
+
0%, 100% { transform: scale(1); }
|
|
12194
|
+
14% { transform: scale(1.15); }
|
|
12195
|
+
28% { transform: scale(1); }
|
|
12196
|
+
42% { transform: scale(1.15); }
|
|
12197
|
+
70% { transform: scale(1); }
|
|
12198
|
+
}
|
|
12199
|
+
|
|
12023
12200
|
/* Continuous Animations */
|
|
12024
12201
|
@keyframes float {
|
|
12025
12202
|
0%, 100% { transform: translateY(0px); }
|
|
@@ -12037,15 +12214,63 @@ z-index: 10;
|
|
|
12037
12214
|
}
|
|
12038
12215
|
|
|
12039
12216
|
@keyframes glow {
|
|
12040
|
-
0%, 100% { box-shadow: 0 0 0.5rem rgba(
|
|
12041
|
-
50% { box-shadow: 0 0 2rem rgba(
|
|
12217
|
+
0%, 100% { box-shadow: 0 0 0.5rem rgba(59, 130, 246, 0.5); }
|
|
12218
|
+
50% { box-shadow: 0 0 2rem rgba(59, 130, 246, 0.8); }
|
|
12219
|
+
}
|
|
12220
|
+
|
|
12221
|
+
@keyframes pulseGlow {
|
|
12222
|
+
0%, 100% { box-shadow: 0 0 1rem rgba(59, 130, 246, 0.4); transform: scale(1); }
|
|
12223
|
+
50% { box-shadow: 0 0 2rem rgba(59, 130, 246, 0.8); transform: scale(1.02); }
|
|
12042
12224
|
}
|
|
12043
12225
|
|
|
12044
12226
|
@keyframes ping {
|
|
12045
12227
|
75%, 100% { transform: scale(2); opacity: 0; }
|
|
12046
12228
|
}
|
|
12047
12229
|
|
|
12230
|
+
@keyframes drift {
|
|
12231
|
+
0%, 100% { transform: translate(0, 0); }
|
|
12232
|
+
25% { transform: translate(0.5rem, -0.5rem); }
|
|
12233
|
+
50% { transform: translate(0, -1rem); }
|
|
12234
|
+
75% { transform: translate(-0.5rem, -0.5rem); }
|
|
12235
|
+
}
|
|
12236
|
+
|
|
12237
|
+
@keyframes sway {
|
|
12238
|
+
0%, 100% { transform: rotate(0deg); }
|
|
12239
|
+
50% { transform: rotate(5deg); }
|
|
12240
|
+
}
|
|
12241
|
+
|
|
12242
|
+
@keyframes rotateSlow {
|
|
12243
|
+
from { transform: rotate(0deg); }
|
|
12244
|
+
to { transform: rotate(360deg); }
|
|
12245
|
+
}
|
|
12246
|
+
|
|
12247
|
+
@keyframes bob {
|
|
12248
|
+
0%, 100% { transform: translateY(0); }
|
|
12249
|
+
50% { transform: translateY(-0.5rem); }
|
|
12250
|
+
}
|
|
12251
|
+
|
|
12252
|
+
@keyframes spin {
|
|
12253
|
+
from { transform: rotate(0deg); }
|
|
12254
|
+
to { transform: rotate(360deg); }
|
|
12255
|
+
}
|
|
12256
|
+
|
|
12257
|
+
|
|
12258
|
+
|
|
12259
|
+
/* ===== UTILITY CLASSES ===== */
|
|
12260
|
+
.delay-100 { animation-delay: 0.1s !important; }
|
|
12261
|
+
.delay-200 { animation-delay: 0.2s !important; }
|
|
12262
|
+
.delay-300 { animation-delay: 0.3s !important; }
|
|
12263
|
+
.delay-500 { animation-delay: 0.5s !important; }
|
|
12264
|
+
.delay-700 { animation-delay: 0.7s !important; }
|
|
12265
|
+
.delay-1000 { animation-delay: 1s !important; }
|
|
12266
|
+
|
|
12267
|
+
.duration-fast { animation-duration: 0.3s !important; }
|
|
12268
|
+
.duration-normal { animation-duration: 0.6s !important; }
|
|
12269
|
+
.duration-slow { animation-duration: 1s !important; }
|
|
12270
|
+
.duration-slower { animation-duration: 1.5s !important; }
|
|
12048
12271
|
|
|
12272
|
+
.ease-smooth { animation-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1) !important; }
|
|
12273
|
+
.ease-bounce { animation-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55) !important; }
|
|
12049
12274
|
|
|
12050
12275
|
/* Make all scrollbars thin */
|
|
12051
12276
|
* {
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "3.
|
|
2
|
+
"version": "3.9.1",
|
|
3
3
|
"name": "funuicss",
|
|
4
4
|
"description": "React and Next.js component UI Library for creating Easy and good looking websites with fewer lines of code. Elevate your web development experience with our cutting-edge React/Next.js component UI Library. Craft stunning websites effortlessly, boasting both seamless functionality and aesthetic appeal—all achieved with minimal lines of code. Unleash the power of simplicity and style in your projects!",
|
|
5
5
|
"main": "index.js",
|
package/ui/drop/Dropdown.d.ts
CHANGED
package/ui/drop/Dropdown.js
CHANGED
|
@@ -35,44 +35,226 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
})();
|
|
36
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
37
|
var react_1 = __importStar(require("react"));
|
|
38
|
+
var react_dom_1 = require("react-dom");
|
|
38
39
|
var Dropdown = function (_a) {
|
|
39
|
-
var _b = _a.position, position = _b === void 0 ? 'bottom' : _b, button = _a.button, items = _a.items, _c = _a.hoverable, hoverable = _c === void 0 ? true : _c, _d = _a.openOnHover, openOnHover = _d === void 0 ? true : _d, _e = _a.closableOnlyOutside, closableOnlyOutside = _e === void 0 ? false : _e, _f = _a.className, className = _f === void 0 ? '' : _f, _g = _a.menuClassName, menuClassName = _g === void 0 ? '' : _g, width = _a.width, minWidth = _a.minWidth, maxWidth = _a.maxWidth, height = _a.height, minHeight = _a.minHeight, maxHeight = _a.maxHeight;
|
|
40
|
+
var _b = _a.position, position = _b === void 0 ? 'bottom' : _b, button = _a.button, items = _a.items, _c = _a.hoverable, hoverable = _c === void 0 ? true : _c, _d = _a.openOnHover, openOnHover = _d === void 0 ? true : _d, _e = _a.closableOnlyOutside, closableOnlyOutside = _e === void 0 ? false : _e, _f = _a.className, className = _f === void 0 ? '' : _f, _g = _a.menuClassName, menuClassName = _g === void 0 ? '' : _g, width = _a.width, minWidth = _a.minWidth, maxWidth = _a.maxWidth, height = _a.height, minHeight = _a.minHeight, maxHeight = _a.maxHeight, _h = _a.usePortal, usePortal = _h === void 0 ? true : _h;
|
|
40
41
|
var containerRef = (0, react_1.useRef)(null);
|
|
41
|
-
var
|
|
42
|
+
var triggerRef = (0, react_1.useRef)(null);
|
|
43
|
+
var _j = (0, react_1.useState)(false), open = _j[0], setOpen = _j[1];
|
|
44
|
+
var _k = (0, react_1.useState)(null), menuPosition = _k[0], setMenuPosition = _k[1];
|
|
45
|
+
// Calculate menu position
|
|
46
|
+
var calculatePosition = function () {
|
|
47
|
+
if (!triggerRef.current)
|
|
48
|
+
return;
|
|
49
|
+
var rect = triggerRef.current.getBoundingClientRect();
|
|
50
|
+
var scrollY = window.scrollY;
|
|
51
|
+
var scrollX = window.scrollX;
|
|
52
|
+
var menuWidth = width ? (width.includes('px') ? parseInt(width) : 200) : 200;
|
|
53
|
+
var top = rect.bottom + scrollY;
|
|
54
|
+
var left = rect.left + scrollX;
|
|
55
|
+
setMenuPosition({
|
|
56
|
+
top: top,
|
|
57
|
+
left: left,
|
|
58
|
+
width: rect.width
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
// Handle clicks outside - SIMPLIFIED
|
|
42
62
|
(0, react_1.useEffect)(function () {
|
|
43
63
|
if (openOnHover)
|
|
44
64
|
return;
|
|
45
|
-
var
|
|
46
|
-
|
|
47
|
-
|
|
65
|
+
var handleDocumentClick = function (event) {
|
|
66
|
+
var _a;
|
|
67
|
+
// If click is inside the trigger, do nothing (it will be handled by trigger click)
|
|
68
|
+
if ((_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target)) {
|
|
69
|
+
return;
|
|
48
70
|
}
|
|
71
|
+
// Close dropdown if click is outside
|
|
72
|
+
setOpen(false);
|
|
73
|
+
setMenuPosition(null);
|
|
49
74
|
};
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
75
|
+
// Add event listener with a delay to avoid immediate trigger
|
|
76
|
+
var timer = setTimeout(function () {
|
|
77
|
+
document.addEventListener('click', handleDocumentClick);
|
|
78
|
+
}, 10);
|
|
79
|
+
return function () {
|
|
80
|
+
clearTimeout(timer);
|
|
81
|
+
document.removeEventListener('click', handleDocumentClick);
|
|
82
|
+
};
|
|
83
|
+
}, [openOnHover, open]);
|
|
84
|
+
// Calculate position when opening
|
|
85
|
+
(0, react_1.useEffect)(function () {
|
|
86
|
+
if (open && usePortal) {
|
|
87
|
+
calculatePosition();
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
setMenuPosition(null);
|
|
91
|
+
}
|
|
92
|
+
}, [open, usePortal, position]);
|
|
93
|
+
var showMenu = (openOnHover || open) && (usePortal ? menuPosition !== null : true);
|
|
54
94
|
var menuStyle = {
|
|
55
|
-
width: width,
|
|
56
|
-
minWidth: minWidth,
|
|
95
|
+
width: width || ((menuPosition === null || menuPosition === void 0 ? void 0 : menuPosition.width) ? "".concat(menuPosition.width, "px") : 'auto'),
|
|
96
|
+
minWidth: minWidth || '200px',
|
|
57
97
|
maxWidth: maxWidth,
|
|
58
98
|
height: height,
|
|
59
99
|
minHeight: minHeight,
|
|
60
100
|
maxHeight: maxHeight,
|
|
101
|
+
position: usePortal ? 'fixed' : 'absolute',
|
|
102
|
+
top: usePortal && menuPosition ? menuPosition.top : undefined,
|
|
103
|
+
left: usePortal && menuPosition ? menuPosition.left : undefined,
|
|
104
|
+
zIndex: 9999,
|
|
105
|
+
};
|
|
106
|
+
var handleItemClick = function (item) {
|
|
107
|
+
var _a;
|
|
108
|
+
if (item.disabled)
|
|
109
|
+
return;
|
|
110
|
+
// Execute click handler
|
|
111
|
+
(_a = item.onClick) === null || _a === void 0 ? void 0 : _a.call(item);
|
|
112
|
+
// Close dropdown unless closableOnlyOutside is true
|
|
113
|
+
if (!closableOnlyOutside) {
|
|
114
|
+
setOpen(false);
|
|
115
|
+
setMenuPosition(null);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
var renderMenu = function () { return (react_1.default.createElement("div", { className: "dropdown-menu ".concat(position, " ").concat(menuClassName), style: menuStyle,
|
|
119
|
+
// Prevent clicks inside from closing immediately
|
|
120
|
+
onClick: function (e) {
|
|
121
|
+
e.stopPropagation();
|
|
122
|
+
e.preventDefault();
|
|
123
|
+
} }, items.map(function (item, index) { return (react_1.default.createElement(react_1.default.Fragment, { key: index }, item.divider ? (react_1.default.createElement("div", { className: "dropdown-divider" })) : (react_1.default.createElement("div", { className: "dropdown-item ".concat(item.disabled ? 'disabled' : '', " ").concat(!hoverable ? 'no-hover' : 'hover-lighter'), onClick: function () { return handleItemClick(item); } },
|
|
124
|
+
item.startIcon && (react_1.default.createElement("span", { className: "dropdown-item-icon" }, item.startIcon)),
|
|
125
|
+
react_1.default.createElement("span", { className: "dropdown-item-label" }, item.label),
|
|
126
|
+
item.endIcon && (react_1.default.createElement("span", { className: "dropdown-item-icon" }, item.endIcon)))))); }))); };
|
|
127
|
+
var handleTriggerClick = function () {
|
|
128
|
+
if (!openOnHover) {
|
|
129
|
+
// Toggle open state
|
|
130
|
+
var newOpenState = !open;
|
|
131
|
+
setOpen(newOpenState);
|
|
132
|
+
// If closing, clear position immediately
|
|
133
|
+
if (!newOpenState) {
|
|
134
|
+
setMenuPosition(null);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
61
137
|
};
|
|
62
138
|
return (react_1.default.createElement("div", { ref: containerRef, className: "dropdown-container ".concat(className), onMouseEnter: function () { return openOnHover && setOpen(true); }, onMouseLeave: function () { return openOnHover && setOpen(false); } },
|
|
63
|
-
react_1.default.createElement("div", {
|
|
64
|
-
showMenu && (react_1.default.createElement(
|
|
65
|
-
var _a;
|
|
66
|
-
if (item.disabled)
|
|
67
|
-
return;
|
|
68
|
-
if (!closableOnlyOutside) {
|
|
69
|
-
(_a = item.onClick) === null || _a === void 0 ? void 0 : _a.call(item);
|
|
70
|
-
if (!openOnHover)
|
|
71
|
-
setOpen(false);
|
|
72
|
-
}
|
|
73
|
-
} },
|
|
74
|
-
item.startIcon && (react_1.default.createElement("span", { className: "dropdown-item-icon" }, item.startIcon)),
|
|
75
|
-
react_1.default.createElement("span", { className: "dropdown-item-label" }, item.label),
|
|
76
|
-
item.endIcon && (react_1.default.createElement("span", { className: "dropdown-item-icon" }, item.endIcon)))))); })))));
|
|
139
|
+
react_1.default.createElement("div", { ref: triggerRef, onClick: handleTriggerClick, style: { cursor: !openOnHover ? 'pointer' : undefined } }, button),
|
|
140
|
+
showMenu && (react_1.default.createElement(react_1.default.Fragment, null, usePortal ? ((0, react_dom_1.createPortal)(renderMenu(), document.body)) : (renderMenu())))));
|
|
77
141
|
};
|
|
78
142
|
exports.default = Dropdown;
|
|
143
|
+
// 'use client';
|
|
144
|
+
// import React, { useState, useRef, useEffect } from 'react';
|
|
145
|
+
// type Position = 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
146
|
+
// interface DropdownItem {
|
|
147
|
+
// label: React.ReactNode;
|
|
148
|
+
// onClick?: () => void;
|
|
149
|
+
// startIcon?: React.ReactNode;
|
|
150
|
+
// endIcon?: React.ReactNode;
|
|
151
|
+
// disabled?: boolean;
|
|
152
|
+
// divider?: boolean;
|
|
153
|
+
// }
|
|
154
|
+
// interface DropdownProps {
|
|
155
|
+
// position?: Position;
|
|
156
|
+
// button: React.ReactNode;
|
|
157
|
+
// items: DropdownItem[];
|
|
158
|
+
// hoverable?: boolean;
|
|
159
|
+
// openOnHover?: boolean;
|
|
160
|
+
// closableOnlyOutside?: boolean;
|
|
161
|
+
// className?: string;
|
|
162
|
+
// menuClassName?: string;
|
|
163
|
+
// width?: string;
|
|
164
|
+
// minWidth?: string;
|
|
165
|
+
// maxWidth?: string;
|
|
166
|
+
// height?: string;
|
|
167
|
+
// minHeight?: string;
|
|
168
|
+
// maxHeight?: string;
|
|
169
|
+
// }
|
|
170
|
+
// const Dropdown: React.FC<DropdownProps> = ({
|
|
171
|
+
// position = 'bottom',
|
|
172
|
+
// button,
|
|
173
|
+
// items,
|
|
174
|
+
// hoverable = true,
|
|
175
|
+
// openOnHover = true,
|
|
176
|
+
// closableOnlyOutside = false,
|
|
177
|
+
// className = '',
|
|
178
|
+
// menuClassName = '',
|
|
179
|
+
// width,
|
|
180
|
+
// minWidth,
|
|
181
|
+
// maxWidth,
|
|
182
|
+
// height,
|
|
183
|
+
// minHeight,
|
|
184
|
+
// maxHeight,
|
|
185
|
+
// }) => {
|
|
186
|
+
// const containerRef = useRef<HTMLDivElement>(null);
|
|
187
|
+
// const [open, setOpen] = useState(false);
|
|
188
|
+
// useEffect(() => {
|
|
189
|
+
// if (openOnHover) return;
|
|
190
|
+
// const handleClickOutside = (event: MouseEvent) => {
|
|
191
|
+
// if (containerRef.current && !containerRef.current.contains(event.target as Node)) {
|
|
192
|
+
// setOpen(false);
|
|
193
|
+
// }
|
|
194
|
+
// };
|
|
195
|
+
// document.addEventListener('mousedown', handleClickOutside);
|
|
196
|
+
// return () => document.removeEventListener('mousedown', handleClickOutside);
|
|
197
|
+
// }, [openOnHover]);
|
|
198
|
+
// const showMenu = openOnHover || open;
|
|
199
|
+
// const menuStyle: React.CSSProperties = {
|
|
200
|
+
// width,
|
|
201
|
+
// minWidth,
|
|
202
|
+
// maxWidth,
|
|
203
|
+
// height,
|
|
204
|
+
// minHeight,
|
|
205
|
+
// maxHeight,
|
|
206
|
+
// };
|
|
207
|
+
// return (
|
|
208
|
+
// <div
|
|
209
|
+
// ref={containerRef}
|
|
210
|
+
// className={`dropdown-container ${className}`}
|
|
211
|
+
// onMouseEnter={() => openOnHover && setOpen(true)}
|
|
212
|
+
// onMouseLeave={() => openOnHover && setOpen(false)}
|
|
213
|
+
// >
|
|
214
|
+
// <div
|
|
215
|
+
// onClick={() => !openOnHover && setOpen(!open)}
|
|
216
|
+
// style={{ cursor: !openOnHover ? 'pointer' : undefined }}
|
|
217
|
+
// >
|
|
218
|
+
// {button}
|
|
219
|
+
// </div>
|
|
220
|
+
// {showMenu && (
|
|
221
|
+
// <div
|
|
222
|
+
// className={`dropdown-menu ${position} ${menuClassName}`}
|
|
223
|
+
// style={menuStyle}
|
|
224
|
+
// >
|
|
225
|
+
// {items.map((item, index) => (
|
|
226
|
+
// <React.Fragment key={index}>
|
|
227
|
+
// {item.divider ? (
|
|
228
|
+
// <div className="dropdown-divider" />
|
|
229
|
+
// ) : (
|
|
230
|
+
// <div
|
|
231
|
+
// className={`dropdown-item ${item.disabled ? 'disabled' : ''} ${!hoverable ? 'no-hover' : ''}`}
|
|
232
|
+
// onClick={() => {
|
|
233
|
+
// if (item.disabled) return;
|
|
234
|
+
// if (!closableOnlyOutside) {
|
|
235
|
+
// item.onClick?.();
|
|
236
|
+
// if (!openOnHover) setOpen(false);
|
|
237
|
+
// }
|
|
238
|
+
// }}
|
|
239
|
+
// >
|
|
240
|
+
// {item.startIcon && (
|
|
241
|
+
// <span className="dropdown-item-icon">
|
|
242
|
+
// {item.startIcon}
|
|
243
|
+
// </span>
|
|
244
|
+
// )}
|
|
245
|
+
// <span className="dropdown-item-label">{item.label}</span>
|
|
246
|
+
// {item.endIcon && (
|
|
247
|
+
// <span className="dropdown-item-icon">
|
|
248
|
+
// {item.endIcon}
|
|
249
|
+
// </span>
|
|
250
|
+
// )}
|
|
251
|
+
// </div>
|
|
252
|
+
// )}
|
|
253
|
+
// </React.Fragment>
|
|
254
|
+
// ))}
|
|
255
|
+
// </div>
|
|
256
|
+
// )}
|
|
257
|
+
// </div>
|
|
258
|
+
// );
|
|
259
|
+
// };
|
|
260
|
+
// export default Dropdown;
|
package/ui/form/Form.js
CHANGED
|
@@ -326,8 +326,6 @@ var Form = function (props) {
|
|
|
326
326
|
var submitBg = submitBgProp !== undefined ? submitBgProp : mergedProps.submitBg;
|
|
327
327
|
var submitPrefix = submitPrefixProp !== undefined ? submitPrefixProp : mergedProps.submitPrefix;
|
|
328
328
|
var submitSuffix = submitSuffixProp !== undefined ? submitSuffixProp : mergedProps.submitSuffix;
|
|
329
|
-
var resetText = resetTextProp !== undefined ? resetTextProp : mergedProps.resetText;
|
|
330
|
-
var showReset = showResetProp !== undefined ? showResetProp : mergedProps.showReset;
|
|
331
329
|
var isLoading = isLoadingProp !== undefined ? isLoadingProp : mergedProps.isLoading;
|
|
332
330
|
var className = classNameProp !== undefined ? classNameProp : mergedProps.className;
|
|
333
331
|
var layout = layoutProp !== undefined ? layoutProp : mergedProps.layout;
|
package/ui/sidebar/SideBar.js
CHANGED
|
@@ -46,6 +46,7 @@ var Button_1 = __importDefault(require("../button/Button"));
|
|
|
46
46
|
var Accordion_1 = __importDefault(require("../accordion/Accordion"));
|
|
47
47
|
var bs_1 = require("react-icons/bs");
|
|
48
48
|
var Flex_1 = __importDefault(require("../flex/Flex"));
|
|
49
|
+
var ToolTip_1 = __importDefault(require("../tooltip/ToolTip"));
|
|
49
50
|
function SideBar(_a) {
|
|
50
51
|
var _b, _c;
|
|
51
52
|
var _d = _a.funcss, funcss = _d === void 0 ? '' : _d, _e = _a.position, position = _e === void 0 ? 'left' : _e, _f = _a.open, open = _f === void 0 ? false : _f, header = _a.header, content = _a.content, footer = _a.footer, _g = _a.top, top = _g === void 0 ? 0 : _g, _h = _a.sidebarWidth, sidebarWidth = _h === void 0 ? 250 : _h, _j = _a.iconCSS, iconCSS = _j === void 0 ? '' : _j, _k = _a.sidebarCss, sidebarCss = _k === void 0 ? '' : _k, activeCss = _a.activeCss, _l = _a.bodyCss, bodyCss = _l === void 0 ? '' : _l, _m = _a.popIcon, popIcon = _m === void 0 ? false : _m, _o = _a.dividers, dividers = _o === void 0 ? false : _o, accordionItemCss = _a.accordionItemCss, _p = _a.links, links = _p === void 0 ? [] : _p, children = _a.children, onClose = _a.onClose, togglePrefix = _a.togglePrefix, _q = _a.isAccordion, isAccordion = _q === void 0 ? false : _q, _r = _a.isCollapsed, isCollapsed = _r === void 0 ? true : _r, // Default to true as requested
|
|
@@ -166,23 +167,24 @@ function SideBar(_a) {
|
|
|
166
167
|
var isActive = link.onClick
|
|
167
168
|
? selectedOption === "".concat(section, "-").concat(index)
|
|
168
169
|
: pathname === link.uri;
|
|
169
|
-
return (react_1.default.createElement(
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
link.onClick
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
170
|
+
return (react_1.default.createElement(ToolTip_1.default, { key: link.uri, message: link.text, tip: 'right' },
|
|
171
|
+
react_1.default.createElement("div", { onClick: function () {
|
|
172
|
+
if (isMobile) {
|
|
173
|
+
handleClose();
|
|
174
|
+
}
|
|
175
|
+
if (link === null || link === void 0 ? void 0 : link.onClick) {
|
|
176
|
+
link.onClick();
|
|
177
|
+
setselectedOption("".concat(section, "-").concat(index));
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
window.location.href = link.uri;
|
|
181
|
+
}
|
|
182
|
+
}, className: 'hover-scale-rotate hover-text-primary' },
|
|
183
|
+
react_1.default.createElement("span", { className: " pointer ".concat(iconCSS || '', " ").concat(variant === 'standard' || popIcon
|
|
184
|
+
? "p-1 ".concat(isActive ? 'text-primary' : 'bg border', " central")
|
|
185
|
+
: variant === 'minimal' && !isActive
|
|
186
|
+
? 'p-1 central bg'
|
|
187
|
+
: ''), style: { lineHeight: 0, borderRadius: '0.4rem', fontSize: collapseIconSize } }, link.icon))));
|
|
186
188
|
}),
|
|
187
189
|
sectionIndex < Object.keys(groupedLinks).length - 1 && (react_1.default.createElement("div", { className: "mt-1 mb-1 bt fit" }))));
|
|
188
190
|
})))))),
|
package/ui/table/Table.js
CHANGED
|
@@ -354,7 +354,8 @@ function Table(_a) {
|
|
|
354
354
|
var shouldSlice = !searchQuery || results.length > 10;
|
|
355
355
|
return (shouldSlice ? results.slice(startIndex, endIndex) : results).map(function (mdoc, index) { return (React.createElement("div", { className: "table-row animated slide-up ".concat(trCss), key: index, onClick: onRowClick ? function () { return onRowClick(mdoc); } : undefined, style: {
|
|
356
356
|
// Match the grid template columns
|
|
357
|
-
gridTemplateColumns: gridTemplateColumns
|
|
357
|
+
gridTemplateColumns: gridTemplateColumns,
|
|
358
|
+
position: 'relative', zIndex: ((shouldSlice ? results.slice(startIndex, endIndex) : results).length + 2) - (index)
|
|
358
359
|
} },
|
|
359
360
|
data.fields.map(function (fdoc, findex) {
|
|
360
361
|
var _a, _b;
|
package/ui/tooltip/ToolTip.d.ts
CHANGED
|
@@ -2,6 +2,12 @@ import * as React from 'react';
|
|
|
2
2
|
interface ToolTipProps {
|
|
3
3
|
funcss?: string;
|
|
4
4
|
children?: React.ReactNode;
|
|
5
|
+
content?: React.ReactNode;
|
|
6
|
+
message?: React.ReactNode;
|
|
7
|
+
animation?: string;
|
|
8
|
+
duration?: number;
|
|
9
|
+
tip?: 'top' | 'bottom' | 'left' | 'right';
|
|
10
|
+
usePortal?: boolean;
|
|
5
11
|
}
|
|
6
|
-
export default function ToolTip({ funcss, children, ...rest }: ToolTipProps): React.JSX.Element;
|
|
12
|
+
export default function ToolTip({ funcss, children, content, message, animation, duration, tip, usePortal, ...rest }: ToolTipProps): React.JSX.Element;
|
|
7
13
|
export {};
|
package/ui/tooltip/ToolTip.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
'use client';
|
|
2
3
|
var __assign = (this && this.__assign) || function () {
|
|
3
4
|
__assign = Object.assign || function(t) {
|
|
4
5
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
@@ -57,7 +58,73 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
57
58
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
58
59
|
exports.default = ToolTip;
|
|
59
60
|
var React = __importStar(require("react"));
|
|
61
|
+
var react_dom_1 = require("react-dom");
|
|
60
62
|
function ToolTip(_a) {
|
|
61
|
-
var funcss = _a.funcss, children = _a.children, rest = __rest(_a, ["funcss", "children"]);
|
|
62
|
-
|
|
63
|
+
var funcss = _a.funcss, children = _a.children, content = _a.content, message = _a.message, animation = _a.animation, duration = _a.duration, _b = _a.tip, tip = _b === void 0 ? 'top' : _b, _c = _a.usePortal, usePortal = _c === void 0 ? true : _c, rest = __rest(_a, ["funcss", "children", "content", "message", "animation", "duration", "tip", "usePortal"]);
|
|
64
|
+
var _d = React.useState(false), isVisible = _d[0], setIsVisible = _d[1];
|
|
65
|
+
var _e = React.useState({ x: 0, y: 0 }), coords = _e[0], setCoords = _e[1];
|
|
66
|
+
var triggerRef = React.useRef(null);
|
|
67
|
+
var text = message || content || children;
|
|
68
|
+
var handleMouseEnter = function (e) {
|
|
69
|
+
if (triggerRef.current) {
|
|
70
|
+
var rect = triggerRef.current.getBoundingClientRect();
|
|
71
|
+
var x = rect.left + (rect.width / 2);
|
|
72
|
+
var y = rect.top;
|
|
73
|
+
if (tip === 'bottom') {
|
|
74
|
+
y = rect.bottom;
|
|
75
|
+
}
|
|
76
|
+
else if (tip === 'left') {
|
|
77
|
+
x = rect.left;
|
|
78
|
+
y = rect.top + (rect.height / 2);
|
|
79
|
+
}
|
|
80
|
+
else if (tip === 'right') {
|
|
81
|
+
x = rect.right;
|
|
82
|
+
y = rect.top + (rect.height / 2);
|
|
83
|
+
}
|
|
84
|
+
setCoords({ x: x, y: y });
|
|
85
|
+
setIsVisible(true);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
var handleMouseLeave = function () {
|
|
89
|
+
setIsVisible(false);
|
|
90
|
+
};
|
|
91
|
+
var tooltipStyle = {
|
|
92
|
+
position: 'fixed',
|
|
93
|
+
top: coords.y + window.scrollY,
|
|
94
|
+
left: coords.x + window.scrollX,
|
|
95
|
+
zIndex: 9999,
|
|
96
|
+
opacity: isVisible ? 1 : 0,
|
|
97
|
+
transition: 'opacity 0.2s ease',
|
|
98
|
+
pointerEvents: 'none',
|
|
99
|
+
transform: tip === 'top' ? 'translate(-50%, -100%)' :
|
|
100
|
+
tip === 'bottom' ? 'translate(-50%, 0)' :
|
|
101
|
+
tip === 'left' ? 'translate(-100%, -50%)' :
|
|
102
|
+
'translate(0, -50%)',
|
|
103
|
+
};
|
|
104
|
+
return (React.createElement(React.Fragment, null,
|
|
105
|
+
React.createElement("span", __assign({ ref: triggerRef, className: "tooltip ".concat(funcss), onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave }, rest),
|
|
106
|
+
!usePortal && text && (React.createElement("div", { className: "tip tip-".concat(tip) }, text)),
|
|
107
|
+
children && children !== text ? children : null),
|
|
108
|
+
usePortal && text && isVisible && (0, react_dom_1.createPortal)(React.createElement("div", { className: "tip tip-".concat(tip), style: tooltipStyle }, text), document.body)));
|
|
63
109
|
}
|
|
110
|
+
// import * as React from 'react';
|
|
111
|
+
// import Tip from './Tip';
|
|
112
|
+
// interface ToolTipProps {
|
|
113
|
+
// funcss?: string;
|
|
114
|
+
// children?: React.ReactNode;
|
|
115
|
+
// content?: React.ReactNode;
|
|
116
|
+
// message?: React.ReactNode;
|
|
117
|
+
// animation?: string;
|
|
118
|
+
// duration?: number;
|
|
119
|
+
// }
|
|
120
|
+
// export default function ToolTip({ funcss, children, content, message, animation, duration, ...rest }: ToolTipProps) {
|
|
121
|
+
// const text = message || content || children;
|
|
122
|
+
// return (
|
|
123
|
+
// <span
|
|
124
|
+
// className={`tooltip ${funcss}`}
|
|
125
|
+
// {...rest}
|
|
126
|
+
// >
|
|
127
|
+
// {text && <Tip tip="top" content={text} animation={animation} duration={duration} />}
|
|
128
|
+
// </span>
|
|
129
|
+
// );
|
|
130
|
+
// }
|