analytica-frontend-lib 1.2.38 → 1.2.44

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.
Files changed (96) hide show
  1. package/dist/Accordation/index.d.ts +4 -0
  2. package/dist/Accordation/index.d.ts.map +1 -1
  3. package/dist/Accordation/index.js +5 -2
  4. package/dist/Accordation/index.js.map +1 -1
  5. package/dist/Accordation/index.mjs +5 -2
  6. package/dist/Accordation/index.mjs.map +1 -1
  7. package/dist/ActivityCardQuestionBanks/index.css +24 -10
  8. package/dist/ActivityCardQuestionBanks/index.css.map +1 -1
  9. package/dist/ActivityCardQuestionBanks/index.d.ts.map +1 -1
  10. package/dist/ActivityCardQuestionBanks/index.js +8 -6
  11. package/dist/ActivityCardQuestionBanks/index.js.map +1 -1
  12. package/dist/ActivityCardQuestionBanks/index.mjs +8 -6
  13. package/dist/ActivityCardQuestionBanks/index.mjs.map +1 -1
  14. package/dist/ActivityCardQuestionPreview/index.css +19307 -0
  15. package/dist/ActivityCardQuestionPreview/index.css.map +1 -0
  16. package/dist/ActivityCardQuestionPreview/index.d.ts +29 -0
  17. package/dist/ActivityCardQuestionPreview/index.d.ts.map +1 -0
  18. package/dist/ActivityCardQuestionPreview/index.js +3684 -0
  19. package/dist/ActivityCardQuestionPreview/index.js.map +1 -0
  20. package/dist/ActivityCardQuestionPreview/index.mjs +3692 -0
  21. package/dist/ActivityCardQuestionPreview/index.mjs.map +1 -0
  22. package/dist/ActivityDetails/index.css +24 -10
  23. package/dist/ActivityDetails/index.css.map +1 -1
  24. package/dist/ActivityDetails/index.js +83 -31
  25. package/dist/ActivityDetails/index.js.map +1 -1
  26. package/dist/ActivityDetails/index.mjs +84 -31
  27. package/dist/ActivityDetails/index.mjs.map +1 -1
  28. package/dist/ActivityFilters/index.css +24 -10
  29. package/dist/ActivityFilters/index.css.map +1 -1
  30. package/dist/ActivityFilters/index.js +83 -31
  31. package/dist/ActivityFilters/index.js.map +1 -1
  32. package/dist/ActivityFilters/index.mjs +84 -31
  33. package/dist/ActivityFilters/index.mjs.map +1 -1
  34. package/dist/ActivityPreview/index.css +19307 -0
  35. package/dist/ActivityPreview/index.css.map +1 -0
  36. package/dist/ActivityPreview/index.d.ts +34 -0
  37. package/dist/ActivityPreview/index.d.ts.map +1 -0
  38. package/dist/ActivityPreview/index.js +4458 -0
  39. package/dist/ActivityPreview/index.js.map +1 -0
  40. package/dist/ActivityPreview/index.mjs +4468 -0
  41. package/dist/ActivityPreview/index.mjs.map +1 -0
  42. package/dist/AlertManager/index.css +24 -10
  43. package/dist/AlertManager/index.css.map +1 -1
  44. package/dist/AlertManager/index.js +500 -389
  45. package/dist/AlertManager/index.js.map +1 -1
  46. package/dist/AlertManager/index.mjs +466 -354
  47. package/dist/AlertManager/index.mjs.map +1 -1
  48. package/dist/CorrectActivityModal/index.js +5 -2
  49. package/dist/CorrectActivityModal/index.js.map +1 -1
  50. package/dist/CorrectActivityModal/index.mjs +5 -2
  51. package/dist/CorrectActivityModal/index.mjs.map +1 -1
  52. package/dist/DropdownMenu/index.d.ts +7 -8
  53. package/dist/DropdownMenu/index.d.ts.map +1 -1
  54. package/dist/DropdownMenu/index.js +78 -29
  55. package/dist/DropdownMenu/index.js.map +1 -1
  56. package/dist/DropdownMenu/index.mjs +79 -29
  57. package/dist/DropdownMenu/index.mjs.map +1 -1
  58. package/dist/NotificationCard/index.js +78 -29
  59. package/dist/NotificationCard/index.js.map +1 -1
  60. package/dist/NotificationCard/index.mjs +79 -29
  61. package/dist/NotificationCard/index.mjs.map +1 -1
  62. package/dist/Search/index.js +78 -29
  63. package/dist/Search/index.js.map +1 -1
  64. package/dist/Search/index.mjs +79 -29
  65. package/dist/Search/index.mjs.map +1 -1
  66. package/dist/SendActivityModal/index.css +19307 -0
  67. package/dist/SendActivityModal/index.css.map +1 -0
  68. package/dist/SendActivityModal/index.d.ts +5 -0
  69. package/dist/SendActivityModal/index.d.ts.map +1 -0
  70. package/dist/SendActivityModal/index.js +6471 -0
  71. package/dist/SendActivityModal/index.js.map +1 -0
  72. package/dist/SendActivityModal/index.mjs +6493 -0
  73. package/dist/SendActivityModal/index.mjs.map +1 -0
  74. package/dist/TableProvider/index.css +24 -10
  75. package/dist/TableProvider/index.css.map +1 -1
  76. package/dist/TableProvider/index.js +83 -31
  77. package/dist/TableProvider/index.js.map +1 -1
  78. package/dist/TableProvider/index.mjs +84 -31
  79. package/dist/TableProvider/index.mjs.map +1 -1
  80. package/dist/index.css +24 -10
  81. package/dist/index.css.map +1 -1
  82. package/dist/index.d.ts +16 -3
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +3183 -1502
  85. package/dist/index.js.map +1 -1
  86. package/dist/index.mjs +2963 -1294
  87. package/dist/index.mjs.map +1 -1
  88. package/dist/styles.css +24 -10
  89. package/dist/styles.css.map +1 -1
  90. package/dist/types/activityDetails.d.ts +10 -0
  91. package/dist/types/activityDetails.d.ts.map +1 -1
  92. package/dist/types/questions.d.ts +100 -1
  93. package/dist/types/questions.d.ts.map +1 -1
  94. package/dist/utils/questionRenderer.d.ts +5 -0
  95. package/dist/utils/questionRenderer.d.ts.map +1 -0
  96. package/package.json +7 -1
@@ -14,12 +14,14 @@ import { CaretRight, SignOut, User } from "phosphor-react";
14
14
  import {
15
15
  forwardRef as forwardRef2,
16
16
  useEffect as useEffect4,
17
+ useLayoutEffect,
17
18
  useRef,
18
19
  isValidElement,
19
20
  Children,
20
21
  cloneElement,
21
22
  useState as useState2
22
23
  } from "react";
24
+ import { createPortal } from "react-dom";
23
25
  import { create as create2, useStore } from "zustand";
24
26
 
25
27
  // src/utils/utils.ts
@@ -699,7 +701,7 @@ var DropdownMenu = ({
699
701
  ).filter((el) => el instanceof HTMLElement);
700
702
  if (items.length === 0) return;
701
703
  const focusedItem = document.activeElement;
702
- const currentIndex = items.findIndex((item) => item === focusedItem);
704
+ const currentIndex = items.indexOf(focusedItem);
703
705
  let nextIndex;
704
706
  if (event.key === "ArrowDown") {
705
707
  nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % items.length;
@@ -717,9 +719,14 @@ var DropdownMenu = ({
717
719
  }
718
720
  };
719
721
  const handleClickOutside = (event) => {
720
- if (menuRef.current && !menuRef.current.contains(event.target)) {
721
- setOpen(false);
722
+ const target = event.target;
723
+ if (menuRef.current?.contains(target)) {
724
+ return;
725
+ }
726
+ if (target instanceof Element && target.closest('[data-dropdown-content="true"]')) {
727
+ return;
722
728
  }
729
+ setOpen(false);
723
730
  };
724
731
  useEffect4(() => {
725
732
  if (open) {
@@ -741,40 +748,30 @@ var DropdownMenu = ({
741
748
  }, [propOpen]);
742
749
  return /* @__PURE__ */ jsx6("div", { className: "relative", ref: menuRef, children: injectStore(children, store) });
743
750
  };
744
- var DropdownMenuTrigger = ({
745
- className,
746
- children,
747
- onClick,
748
- store: externalStore,
749
- ...props
750
- }) => {
751
+ var DropdownMenuTrigger = forwardRef2(({ className, children, onClick, store: externalStore, ...props }, ref) => {
751
752
  const store = useDropdownStore(externalStore);
752
753
  const open = useStore(store, (s) => s.open);
753
754
  const toggleOpen = () => store.setState({ open: !open });
754
755
  return /* @__PURE__ */ jsx6(
755
- "div",
756
+ "button",
756
757
  {
758
+ ref,
759
+ type: "button",
757
760
  onClick: (e) => {
758
761
  e.stopPropagation();
759
762
  toggleOpen();
760
- if (onClick) onClick(e);
761
- },
762
- role: "button",
763
- onKeyDown: (e) => {
764
- if (e.key === "Enter" || e.key === " ") {
765
- e.preventDefault();
766
- toggleOpen();
767
- if (onClick) onClick(e);
768
- }
763
+ onClick?.(e);
769
764
  },
770
- tabIndex: 0,
771
765
  "aria-expanded": open,
772
- className: cn(className),
766
+ className: cn(
767
+ "appearance-none bg-transparent border-none p-0",
768
+ className
769
+ ),
773
770
  ...props,
774
771
  children
775
772
  }
776
773
  );
777
- };
774
+ });
778
775
  DropdownMenuTrigger.displayName = "DropdownMenuTrigger";
779
776
  var ITEM_SIZE_CLASSES = {
780
777
  small: "text-sm",
@@ -815,11 +812,15 @@ var DropdownMenuContent = forwardRef2(
815
812
  sideOffset = 4,
816
813
  children,
817
814
  store: externalStore,
815
+ portal = false,
816
+ triggerRef,
818
817
  ...props
819
818
  }, ref) => {
820
819
  const store = useDropdownStore(externalStore);
821
820
  const open = useStore(store, (s) => s.open);
822
821
  const [isVisible, setIsVisible] = useState2(open);
822
+ const [portalPosition, setPortalPosition] = useState2({ top: 0, left: 0 });
823
+ const contentRef = useRef(null);
823
824
  useEffect4(() => {
824
825
  if (open) {
825
826
  setIsVisible(true);
@@ -828,18 +829,61 @@ var DropdownMenuContent = forwardRef2(
828
829
  return () => clearTimeout(timer);
829
830
  }
830
831
  }, [open]);
832
+ useLayoutEffect(() => {
833
+ if (portal && open && triggerRef?.current) {
834
+ const rect = triggerRef.current.getBoundingClientRect();
835
+ let top = rect.bottom + sideOffset;
836
+ let left = rect.left;
837
+ if (side === "left") {
838
+ left = rect.left - sideOffset;
839
+ top = rect.top;
840
+ } else if (side === "right") {
841
+ left = rect.right + sideOffset;
842
+ top = rect.top;
843
+ } else {
844
+ if (align === "end") {
845
+ left = rect.right;
846
+ } else if (align === "center") {
847
+ left = rect.left + rect.width / 2;
848
+ }
849
+ if (side === "top") {
850
+ top = rect.top - sideOffset;
851
+ }
852
+ }
853
+ setPortalPosition({ top, left });
854
+ }
855
+ }, [portal, open, triggerRef, align, side, sideOffset]);
831
856
  if (!isVisible) return null;
832
857
  const getPositionClasses = () => {
858
+ if (portal) {
859
+ return "fixed";
860
+ }
833
861
  const vertical = SIDE_CLASSES[side];
834
862
  const horizontal = ALIGN_CLASSES[align];
835
863
  return `absolute ${vertical} ${horizontal}`;
836
864
  };
865
+ const getPortalAlignStyle = () => {
866
+ if (!portal) return {};
867
+ const baseStyle = {
868
+ top: portalPosition.top
869
+ };
870
+ if (align === "end") {
871
+ baseStyle.right = window.innerWidth - portalPosition.left;
872
+ } else if (align === "center") {
873
+ baseStyle.left = portalPosition.left;
874
+ baseStyle.transform = "translateX(-50%)";
875
+ } else {
876
+ baseStyle.left = portalPosition.left;
877
+ }
878
+ return baseStyle;
879
+ };
837
880
  const variantClasses = MENUCONTENT_VARIANT_CLASSES[variant];
838
- return /* @__PURE__ */ jsx6(
881
+ const content = /* @__PURE__ */ jsx6(
839
882
  "div",
840
883
  {
841
- ref,
884
+ ref: portal ? contentRef : ref,
842
885
  role: "menu",
886
+ "data-dropdown-content": "true",
843
887
  className: `
844
888
  bg-background z-50 min-w-[210px] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md border-border-100
845
889
  ${open ? "animate-in fade-in-0 zoom-in-95" : "animate-out fade-out-0 zoom-out-95"}
@@ -848,15 +892,21 @@ var DropdownMenuContent = forwardRef2(
848
892
  ${className}
849
893
  `,
850
894
  style: {
851
- marginTop: side === "bottom" ? sideOffset : void 0,
852
- marginBottom: side === "top" ? sideOffset : void 0,
853
- marginLeft: side === "right" ? sideOffset : void 0,
854
- marginRight: side === "left" ? sideOffset : void 0
895
+ ...portal ? getPortalAlignStyle() : {
896
+ marginTop: side === "bottom" ? sideOffset : void 0,
897
+ marginBottom: side === "top" ? sideOffset : void 0,
898
+ marginLeft: side === "right" ? sideOffset : void 0,
899
+ marginRight: side === "left" ? sideOffset : void 0
900
+ }
855
901
  },
856
902
  ...props,
857
903
  children
858
904
  }
859
905
  );
906
+ if (portal && typeof document !== "undefined") {
907
+ return createPortal(content, document.body);
908
+ }
909
+ return content;
860
910
  }
861
911
  );
862
912
  DropdownMenuContent.displayName = "DropdownMenuContent";