@kerkhoff-ict/solora 2.5.3 → 2.6.0

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/index.css CHANGED
@@ -798,11 +798,8 @@
798
798
  }
799
799
  .popover-content {
800
800
  position: absolute;
801
- top: 100%;
802
- left: 0;
803
801
  min-width: 10rem;
804
802
  border-radius: 12px;
805
- margin-top: 0.5rem;
806
803
  overflow: hidden;
807
804
  overflow-y: auto;
808
805
  background: transparent;
@@ -811,13 +808,118 @@
811
808
  -webkit-backdrop-filter: blur(12px);
812
809
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.12);
813
810
  opacity: 0;
814
- transform: translateY(-10px) scale(0.95);
815
811
  pointer-events: none;
816
812
  transition: all 0.25s cubic-bezier(0.25, 0.8, 0.25, 1);
817
813
  z-index: 1000;
818
- padding: 0.5rem;
819
814
  color: var(--color-text-dark, #000);
820
815
  }
816
+ .popover.top-left .popover-content {
817
+ bottom: 100%;
818
+ right: 0;
819
+ margin: 0.5rem 0;
820
+ }
821
+ .popover.top-center .popover-content {
822
+ bottom: 100%;
823
+ right: 50%;
824
+ transform: translateX(50%) !important;
825
+ margin: 0.5rem 0;
826
+ }
827
+ .popover.top-right .popover-content {
828
+ bottom: 100%;
829
+ left: 0;
830
+ margin: 0.5rem 0;
831
+ }
832
+ .popover.bottom-left .popover-content {
833
+ top: 100%;
834
+ right: 0;
835
+ margin: 0.5rem 0;
836
+ }
837
+ .popover.bottom-center .popover-content {
838
+ top: 100%;
839
+ left: 50%;
840
+ transform: translateX(-50%) !important;
841
+ margin: 0.5rem 0;
842
+ }
843
+ .popover.bottom-right .popover-content {
844
+ top: 100%;
845
+ left: 0;
846
+ margin: 0.5rem 0;
847
+ }
848
+ .popover.left .popover-content {
849
+ right: 100%;
850
+ top: 50%;
851
+ transform: translateY(-50%) !important;
852
+ margin: 0 0.5rem;
853
+ }
854
+ .popover.right .popover-content {
855
+ left: 100%;
856
+ top: 50%;
857
+ transform: translateY(-50%) !important;
858
+ margin: 0 0.5rem;
859
+ }
860
+ .popover-header {
861
+ padding: 0.8rem 1rem;
862
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
863
+ margin-bottom: 0.2rem;
864
+ }
865
+ .popover-header h3 {
866
+ font-size: 0.75rem;
867
+ font-weight: 700;
868
+ text-transform: uppercase;
869
+ letter-spacing: 0.025em;
870
+ color: var(--color-text-dark, #000);
871
+ opacity: 0.4;
872
+ }
873
+ .popover-list {
874
+ display: flex;
875
+ flex-direction: column;
876
+ padding: 0.3rem;
877
+ }
878
+ .popover-item {
879
+ display: flex;
880
+ align-items: center;
881
+ gap: 0.6rem;
882
+ width: 100%;
883
+ padding: 0.5rem 0.7rem;
884
+ font-size: 0.9rem;
885
+ font-weight: 500;
886
+ color: var(--color-text-dark, #000);
887
+ border-radius: 8px;
888
+ transition: all 0.15s ease;
889
+ text-align: left;
890
+ background: transparent;
891
+ border: none;
892
+ cursor: pointer;
893
+ }
894
+ .popover-item:hover {
895
+ background: rgba(0, 0, 0, 0.04);
896
+ }
897
+ .popover-item.item-danger {
898
+ color: var(--color-danger, #ff453a);
899
+ }
900
+ .popover-item.item-danger:hover {
901
+ background: rgba(255, 69, 58, 0.1);
902
+ }
903
+ .popover-divider {
904
+ height: 1px;
905
+ background: rgba(0, 0, 0, 0.05);
906
+ margin: 0.3rem 0;
907
+ }
908
+ :root.dark .popover-header {
909
+ border-bottom-color: rgba(255, 255, 255, 0.1);
910
+ }
911
+ :root.dark .popover-header h3 {
912
+ color: var(--color-text-light, #fff);
913
+ }
914
+ :root.dark .popover-item {
915
+ color: var(--color-text-light, #fff);
916
+ }
917
+ :root.dark .popover-item:hover {
918
+ background: rgba(255, 255, 255, 0.08);
919
+ }
920
+ :root.dark .popover-divider {
921
+ background: rgba(255, 255, 255, 0.1);
922
+ }
821
923
  .popover.sol-pop-w-16 {
822
924
  width: 4rem;
823
925
  }
package/dist/index.js CHANGED
@@ -2323,22 +2323,38 @@ function initThemeToggle(elementSelector = ".sol-theme-toggle") {
2323
2323
  // src/components/popover.js
2324
2324
  function initPopovers() {
2325
2325
  if (typeof window === "undefined") return;
2326
- document.querySelectorAll(".popover").forEach((pop) => {
2326
+ const allPopovers = document.querySelectorAll(".popover");
2327
+ allPopovers.forEach((pop) => {
2327
2328
  if (pop.dataset.initialized) return;
2328
2329
  pop.dataset.initialized = "true";
2329
2330
  const content = pop.querySelector(".popover-content");
2330
2331
  if (!content) return;
2331
- const toggle = () => pop.classList.toggle("open");
2332
- const close = () => pop.classList.remove("open");
2333
- pop.addEventListener("click", (e) => {
2332
+ const closeAllOthers = () => {
2333
+ allPopovers.forEach((p) => {
2334
+ if (p !== pop) p.classList.remove("open");
2335
+ });
2336
+ };
2337
+ const toggle = (e) => {
2334
2338
  e.stopPropagation();
2335
- toggle();
2336
- });
2339
+ const isOpen = pop.classList.contains("open");
2340
+ closeAllOthers();
2341
+ if (!isOpen) {
2342
+ pop.classList.add("open");
2343
+ } else {
2344
+ pop.classList.remove("open");
2345
+ }
2346
+ };
2347
+ const trigger = pop.querySelector(".popover-btn") || pop.querySelector("input") || pop;
2348
+ trigger.addEventListener("click", toggle);
2337
2349
  document.addEventListener("click", (e) => {
2338
- if (!pop.contains(e.target)) close();
2350
+ if (!pop.contains(e.target)) {
2351
+ pop.classList.remove("open");
2352
+ }
2339
2353
  });
2340
2354
  document.addEventListener("keydown", (e) => {
2341
- if (e.key === "Escape") close();
2355
+ if (e.key === "Escape") {
2356
+ pop.classList.remove("open");
2357
+ }
2342
2358
  });
2343
2359
  });
2344
2360
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kerkhoff-ict/solora",
3
- "version": "2.5.3",
3
+ "version": "2.6.0",
4
4
  "description": "Simple CSS component library",
5
5
  "main": "dist/index.js",
6
6
  "style": "dist/index.css",