@jenesei-software/jenesei-kit-react 1.3.30 → 1.3.32

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 (144) hide show
  1. package/build/area-preview.cjs.js +1 -1
  2. package/build/area-preview.es.js +1 -1
  3. package/build/area-skeleton.cjs.js +1 -1
  4. package/build/area-skeleton.es.js +1 -1
  5. package/build/build-info.txt +3 -3
  6. package/build/{component-qRPasLxk.cjs → component-B8kWtTfs.cjs} +2 -2
  7. package/build/{component-qRPasLxk.cjs.map → component-B8kWtTfs.cjs.map} +1 -1
  8. package/build/{component-DXZrlFCa.js → component-BD3FCIT8.js} +3 -3
  9. package/build/{component-DXZrlFCa.js.map → component-BD3FCIT8.js.map} +1 -1
  10. package/build/{component-DjIZRLtN.js → component-BybwN9H4.js} +2 -2
  11. package/build/{component-DjIZRLtN.js.map → component-BybwN9H4.js.map} +1 -1
  12. package/build/{component-BHINcJGw.cjs → component-BzWpboBU.cjs} +2 -2
  13. package/build/{component-BHINcJGw.cjs.map → component-BzWpboBU.cjs.map} +1 -1
  14. package/build/{component-Ud_GRMAS.js → component-C0354Xwu.js} +3 -3
  15. package/build/{component-Ud_GRMAS.js.map → component-C0354Xwu.js.map} +1 -1
  16. package/build/{component-CQmuGUIt.cjs → component-C8ueaiSO.cjs} +2 -2
  17. package/build/{component-CQmuGUIt.cjs.map → component-C8ueaiSO.cjs.map} +1 -1
  18. package/build/{component-COVO0g4K.cjs → component-CANbSEA3.cjs} +2 -2
  19. package/build/{component-COVO0g4K.cjs.map → component-CANbSEA3.cjs.map} +1 -1
  20. package/build/{component-BJxTgP87.js → component-CATlnN8o.js} +2 -2
  21. package/build/{component-BJxTgP87.js.map → component-CATlnN8o.js.map} +1 -1
  22. package/build/{component-CJ_IYmXp.js → component-CGPZf0Mx.js} +2 -2
  23. package/build/{component-CJ_IYmXp.js.map → component-CGPZf0Mx.js.map} +1 -1
  24. package/build/{component-BkAJZ9bN.cjs → component-CM4bf3RV.cjs} +2 -2
  25. package/build/{component-BkAJZ9bN.cjs.map → component-CM4bf3RV.cjs.map} +1 -1
  26. package/build/{component-CVODnsK7.js → component-DAocGHCP.js} +2 -2
  27. package/build/{component-CVODnsK7.js.map → component-DAocGHCP.js.map} +1 -1
  28. package/build/{component-CQ4haQho.cjs → component-DHXjnBNp.cjs} +2 -2
  29. package/build/{component-CQ4haQho.cjs.map → component-DHXjnBNp.cjs.map} +1 -1
  30. package/build/{component-BnqGhIYn.js → component-DIA35EVR.js} +2 -2
  31. package/build/{component-BnqGhIYn.js.map → component-DIA35EVR.js.map} +1 -1
  32. package/build/{component-DxjC5ZDY.cjs → component-DIk87lHF.cjs} +2 -2
  33. package/build/{component-DxjC5ZDY.cjs.map → component-DIk87lHF.cjs.map} +1 -1
  34. package/build/{component-Cy1LF62n.js → component-DJDXAzlq.js} +3 -3
  35. package/build/{component-Cy1LF62n.js.map → component-DJDXAzlq.js.map} +1 -1
  36. package/build/{component-B0KY9CML.cjs → component-DNVmU44U.cjs} +2 -2
  37. package/build/{component-B0KY9CML.cjs.map → component-DNVmU44U.cjs.map} +1 -1
  38. package/build/{component-AtGU3rIh.cjs → component-DbRG0dzX.cjs} +2 -2
  39. package/build/{component-AtGU3rIh.cjs.map → component-DbRG0dzX.cjs.map} +1 -1
  40. package/build/{component-JqUoQ-8S.js → component-DpX5Qw3i.js} +2 -2
  41. package/build/{component-JqUoQ-8S.js.map → component-DpX5Qw3i.js.map} +1 -1
  42. package/build/{component-Ch9eF_4H.js → component-DrTBbu8u.js} +4 -4
  43. package/build/{component-Ch9eF_4H.js.map → component-DrTBbu8u.js.map} +1 -1
  44. package/build/{component-BI6fe9pl.js → component-Duwta9MT.js} +2 -2
  45. package/build/{component-BI6fe9pl.js.map → component-Duwta9MT.js.map} +1 -1
  46. package/build/{component-DAtaP1gP.cjs → component-DwVvs3yX.cjs} +2 -2
  47. package/build/{component-DAtaP1gP.cjs.map → component-DwVvs3yX.cjs.map} +1 -1
  48. package/build/component-accordion.cjs.js +1 -1
  49. package/build/component-accordion.es.js +2 -2
  50. package/build/component-button-group.cjs.js +1 -1
  51. package/build/component-button-group.es.js +2 -2
  52. package/build/component-button.cjs.js +1 -1
  53. package/build/component-button.es.js +1 -1
  54. package/build/component-checkbox-group.cjs.js +1 -1
  55. package/build/component-checkbox-group.es.js +2 -2
  56. package/build/component-checkbox.cjs.js +1 -1
  57. package/build/component-checkbox.es.js +2 -2
  58. package/build/component-date-picker.cjs.js +1 -1
  59. package/build/component-date-picker.d.ts +1 -0
  60. package/build/component-date-picker.es.js +2 -2
  61. package/build/component-icon.cjs.js +1 -1
  62. package/build/component-icon.es.js +1 -1
  63. package/build/component-image-button.cjs.js +1 -1
  64. package/build/component-image-button.es.js +1 -1
  65. package/build/component-image-select.cjs.js +1 -1
  66. package/build/component-image-select.es.js +2 -2
  67. package/build/component-image-slider.cjs.js +1 -1
  68. package/build/component-image-slider.es.js +2 -2
  69. package/build/component-image.cjs.js +1 -1
  70. package/build/component-image.es.js +2 -2
  71. package/build/component-input-otp.cjs.js +1 -1
  72. package/build/component-input-otp.es.js +2 -2
  73. package/build/component-input.cjs.js +1 -1
  74. package/build/component-input.es.js +2 -2
  75. package/build/component-map.cjs.js +1 -1
  76. package/build/component-map.es.js +2 -2
  77. package/build/component-pagination.cjs.js +1 -1
  78. package/build/component-pagination.es.js +1 -1
  79. package/build/component-range.cjs.js +1 -1
  80. package/build/component-range.es.js +2 -2
  81. package/build/component-select.cjs.js +1 -1
  82. package/build/component-select.d.ts +1 -0
  83. package/build/component-select.es.js +1 -1
  84. package/build/{component-D5Bg68Aq.cjs → component-skAuX4C8.cjs} +2 -2
  85. package/build/{component-D5Bg68Aq.cjs.map → component-skAuX4C8.cjs.map} +1 -1
  86. package/build/component-textarea.cjs.js +1 -1
  87. package/build/component-textarea.d.ts +3 -0
  88. package/build/component-textarea.es.js +1 -1
  89. package/build/component-toggle.cjs.js +1 -1
  90. package/build/component-toggle.es.js +2 -2
  91. package/build/component-tooltip.cjs.js +1 -1
  92. package/build/component-tooltip.d.ts +107 -0
  93. package/build/component-tooltip.es.js +1 -1
  94. package/build/component-typography.cjs.js +1 -1
  95. package/build/component-typography.d.ts +107 -0
  96. package/build/component-typography.es.js +1 -1
  97. package/build/{component.components-BJ1nh728.js → component.components-83DbC_hw.js} +2 -2
  98. package/build/{component.components-BJ1nh728.js.map → component.components-83DbC_hw.js.map} +1 -1
  99. package/build/{component.components-0OAiJjsR.cjs → component.components-BjdoMO5R.cjs} +2 -2
  100. package/build/{component.components-0OAiJjsR.cjs.map → component.components-BjdoMO5R.cjs.map} +1 -1
  101. package/build/{component.constants-ASMqRXmH.js → component.constants-Be7PPP03.js} +2 -2
  102. package/build/{component.constants-ASMqRXmH.js.map → component.constants-Be7PPP03.js.map} +1 -1
  103. package/build/{component.constants-DLrolRBs.cjs → component.constants-BgV35uxo.cjs} +2 -2
  104. package/build/{component.constants-DLrolRBs.cjs.map → component.constants-BgV35uxo.cjs.map} +1 -1
  105. package/build/{component.constants-B1XT0pqP.cjs → component.constants-C4Du7oRP.cjs} +2 -2
  106. package/build/{component.constants-B1XT0pqP.cjs.map → component.constants-C4Du7oRP.cjs.map} +1 -1
  107. package/build/{component.constants-4Zuzymaj.js → component.constants-DbWj5l8e.js} +3 -3
  108. package/build/{component.constants-4Zuzymaj.js.map → component.constants-DbWj5l8e.js.map} +1 -1
  109. package/build/{component.types-BXYLxQWv.js → component.types-B3IQzYHq.js} +2 -2
  110. package/build/{component.types-BXYLxQWv.js.map → component.types-B3IQzYHq.js.map} +1 -1
  111. package/build/{component.types-haccSZSq.cjs → component.types-C6Zrax1A.cjs} +2 -2
  112. package/build/{component.types-haccSZSq.cjs.map → component.types-C6Zrax1A.cjs.map} +1 -1
  113. package/build/consts.cjs.js +1 -1
  114. package/build/consts.es.js +1 -1
  115. package/build/context-app.cjs.js +1 -1
  116. package/build/context-app.es.js +2 -2
  117. package/build/context-sonner.cjs.js +1 -1
  118. package/build/context-sonner.es.js +2 -2
  119. package/build/{context.constants-p2bRkgM3.cjs → context.constants-BMJ3rLa_.cjs} +259 -258
  120. package/build/context.constants-BMJ3rLa_.cjs.map +1 -0
  121. package/build/{context.constants-Dop398a2.js → context.constants-YlWOZAd7.js} +120 -12
  122. package/build/context.constants-YlWOZAd7.js.map +1 -0
  123. package/build/{context.hooks-Spdhsa4j.cjs → context.hooks-B1QdI16d.cjs} +2 -2
  124. package/build/{context.hooks-Spdhsa4j.cjs.map → context.hooks-B1QdI16d.cjs.map} +1 -1
  125. package/build/{context.hooks-b1w6_aK9.js → context.hooks-Bl4gTFVP.js} +2 -2
  126. package/build/{context.hooks-b1w6_aK9.js.map → context.hooks-Bl4gTFVP.js.map} +1 -1
  127. package/build/{context.hooks-CUlqrzfP.js → context.hooks-CnqRriMa.js} +2 -2
  128. package/build/{context.hooks-CUlqrzfP.js.map → context.hooks-CnqRriMa.js.map} +1 -1
  129. package/build/{context.hooks-BFjFm8iR.cjs → context.hooks-D23gzlbO.cjs} +2 -2
  130. package/build/{context.hooks-BFjFm8iR.cjs.map → context.hooks-D23gzlbO.cjs.map} +1 -1
  131. package/build/index.cjs.js +1 -1
  132. package/build/index.d.ts +111 -0
  133. package/build/index.es.js +18 -18
  134. package/build/style-error.cjs.js +1 -1
  135. package/build/style-error.es.js +1 -1
  136. package/build/style-theme.cjs.js +1 -1
  137. package/build/style-theme.es.js +1 -1
  138. package/build/{use-CHyIgo-M.cjs → use-DZU4NdpU.cjs} +2 -2
  139. package/build/{use-CHyIgo-M.cjs.map → use-DZU4NdpU.cjs.map} +1 -1
  140. package/build/{use-DLn-Y7_0.js → use-JWHe9gP5.js} +3 -3
  141. package/build/{use-DLn-Y7_0.js.map → use-JWHe9gP5.js.map} +1 -1
  142. package/package.json +2 -2
  143. package/build/context.constants-Dop398a2.js.map +0 -1
  144. package/build/context.constants-p2bRkgM3.cjs.map +0 -1
@@ -3729,13 +3729,34 @@ function useFloating(options) {
3729
3729
  elements
3730
3730
  }), [position, refs, elements, context]);
3731
3731
  }
3732
+ const getFocusableElements = (container) => {
3733
+ const focusableSelectors = [
3734
+ "a[href]",
3735
+ "button:not([disabled])",
3736
+ "textarea:not([disabled])",
3737
+ "input:not([disabled])",
3738
+ "select:not([disabled])",
3739
+ '[tabindex]:not([tabindex="-1"])',
3740
+ '[contenteditable="true"]'
3741
+ ].join(",");
3742
+ return Array.from(container.querySelectorAll(focusableSelectors));
3743
+ };
3744
+ const getNextFocusableElement = (currentElement, backward = false) => {
3745
+ const allFocusableElements = getFocusableElements(document.body);
3746
+ const currentIndex = allFocusableElements.indexOf(currentElement);
3747
+ if (currentIndex === -1) return null;
3748
+ if (backward) {
3749
+ return currentIndex > 0 ? allFocusableElements[currentIndex - 1] : null;
3750
+ } else {
3751
+ return currentIndex < allFocusableElements.length - 1 ? allFocusableElements[currentIndex + 1] : null;
3752
+ }
3753
+ };
3732
3754
  const Popover = (props) => {
3733
3755
  var _a, _b;
3734
3756
  return ReactDOM__default.createPortal(
3735
3757
  /* @__PURE__ */ jsxRuntimeExports.jsx(AnimatePresence, { children: props.isOpen && /* @__PURE__ */ jsxRuntimeExports.jsx(
3736
3758
  "div",
3737
3759
  {
3738
- tabIndex: -1,
3739
3760
  ref: props.ref,
3740
3761
  style: {
3741
3762
  position: "absolute",
@@ -3743,7 +3764,9 @@ const Popover = (props) => {
3743
3764
  left: 0,
3744
3765
  ...props.floatingStyles,
3745
3766
  transform: props.floatingStyles.transform,
3746
- zIndex: 9999
3767
+ zIndex: 9998,
3768
+ outline: "0px transparent solid !important",
3769
+ border: "0px transparent solid !important"
3747
3770
  },
3748
3771
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(
3749
3772
  PopoverWrapper,
@@ -3779,6 +3802,7 @@ const usePopover = (props) => {
3779
3802
  const [isOpen, setIsOpen] = useState(false);
3780
3803
  const [minWidth, setMinWidth] = useState(void 0);
3781
3804
  const [wasEverOpen, setWasEverOpen] = useState(false);
3805
+ const previousActiveElement = useRef(null);
3782
3806
  const {
3783
3807
  refs,
3784
3808
  floatingStyles,
@@ -3967,6 +3991,65 @@ const usePopover = (props) => {
3967
3991
  if (refEl instanceof HTMLElement) refEl.removeEventListener("blur", handleBlur, true);
3968
3992
  };
3969
3993
  }, [refs.reference, props.isDisabled, onBlurReference, props.refsExcludeBlur]);
3994
+ useEffect(() => {
3995
+ if (!props.isFocusTrap) return;
3996
+ if (!isOpen || !refs.floating.current) return;
3997
+ const floatingEl = refs.floating.current;
3998
+ const refEl = refs.reference.current;
3999
+ previousActiveElement.current = document.activeElement;
4000
+ const focusFirstInPopover = () => {
4001
+ const elements = getFocusableElements(floatingEl);
4002
+ if (elements.length > 0) {
4003
+ elements[0].focus();
4004
+ return true;
4005
+ }
4006
+ return false;
4007
+ };
4008
+ let mutationObserver = null;
4009
+ const hasFocusedInitial = focusFirstInPopover();
4010
+ if (!hasFocusedInitial) {
4011
+ mutationObserver = new MutationObserver(() => {
4012
+ if (focusFirstInPopover()) {
4013
+ mutationObserver == null ? void 0 : mutationObserver.disconnect();
4014
+ mutationObserver = null;
4015
+ }
4016
+ });
4017
+ mutationObserver.observe(floatingEl, { childList: true, subtree: true });
4018
+ }
4019
+ const handleKeyDown = (e) => {
4020
+ if (e.key !== "Tab") return;
4021
+ const focusableElements = getFocusableElements(floatingEl);
4022
+ if (focusableElements.length === 0) return;
4023
+ const firstElement = focusableElements[0];
4024
+ const lastElement = focusableElements[focusableElements.length - 1];
4025
+ if (e.shiftKey) {
4026
+ if (document.activeElement === firstElement) {
4027
+ e.preventDefault();
4028
+ const prevElement = getNextFocusableElement(refEl, true);
4029
+ if (prevElement) {
4030
+ prevElement.focus();
4031
+ }
4032
+ return;
4033
+ }
4034
+ return;
4035
+ }
4036
+ if (document.activeElement === lastElement) {
4037
+ e.preventDefault();
4038
+ const nextElement = getNextFocusableElement(refEl, false);
4039
+ if (nextElement) {
4040
+ nextElement.focus();
4041
+ }
4042
+ return;
4043
+ }
4044
+ };
4045
+ document.addEventListener("keydown", handleKeyDown);
4046
+ return () => {
4047
+ if (mutationObserver) {
4048
+ mutationObserver.disconnect();
4049
+ }
4050
+ document.removeEventListener("keydown", handleKeyDown);
4051
+ };
4052
+ }, [isOpen, refs.floating, refs.reference.current, props.isFocusTrap]);
3970
4053
  const getIsInside = useCallback(
3971
4054
  (target) => {
3972
4055
  if (!target) return false;
@@ -4290,6 +4373,7 @@ const Button = (props) => {
4290
4373
  };
4291
4374
  const refDefault = useRef(null);
4292
4375
  const ref = useMergeRefs([refDefault, props.ref]);
4376
+ const isInteractive = !props.isDisabled && props.isWhileTapEffect;
4293
4377
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
4294
4378
  StyledButton,
4295
4379
  {
@@ -4299,7 +4383,8 @@ const Button = (props) => {
4299
4383
  weight: ((_b = props.font) == null ? void 0 : _b.weight) ?? 700
4300
4384
  },
4301
4385
  $isNotHoverEffect: props.isNotHoverEffect,
4302
- whileTap: props.isWhileTapEffect ? { scale: 0.9, transition: { duration: 0.01 } } : {},
4386
+ whileTap: isInteractive ? { scale: 1.1, transition: { duration: 0.08, ease: "easeOut" } } : void 0,
4387
+ whileHover: isInteractive ? { scale: 0.97, transition: { duration: 0.2, ease: "easeOut" } } : void 0,
4303
4388
  id: props.id,
4304
4389
  tabIndex: props.tabIndex ?? 0,
4305
4390
  $isFullSize: props.isFullSize,
@@ -4558,6 +4643,7 @@ const Select = (props) => {
4558
4643
  floatingStyles,
4559
4644
  toggle
4560
4645
  } = usePopover({
4646
+ isFocusTrap: true,
4561
4647
  placement: "bottom-start",
4562
4648
  offset: sizePadding,
4563
4649
  mode: "independence",
@@ -4748,12 +4834,16 @@ const Select = (props) => {
4748
4834
  $sx: props.sx,
4749
4835
  $isOpen: isOpen,
4750
4836
  ref: refReference,
4751
- onClick: () => {
4752
- open();
4837
+ onMouseDown: (e) => {
4838
+ e.preventDefault();
4839
+ toggle();
4753
4840
  onChangeShowSearch(true);
4754
4841
  },
4755
4842
  onFocus: () => {
4756
- open();
4843
+ if (!isOpen) {
4844
+ open();
4845
+ onChangeShowSearch(true);
4846
+ }
4757
4847
  },
4758
4848
  children: [
4759
4849
  isShowSearch && /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -4769,6 +4859,9 @@ const Select = (props) => {
4769
4859
  var _a2;
4770
4860
  (_a2 = props == null ? void 0 : props.onChangeSearch) == null ? void 0 : _a2.call(props, value);
4771
4861
  },
4862
+ onMouseDown: (e) => {
4863
+ e.stopPropagation();
4864
+ },
4772
4865
  value: props.valueSearch,
4773
4866
  placeholder: labelPlaceholder
4774
4867
  }
@@ -4781,6 +4874,7 @@ const Select = (props) => {
4781
4874
  $isWrapSelectOption: props.isWrapSelectOption,
4782
4875
  onMouseDown: (e) => {
4783
4876
  e.preventDefault();
4877
+ e.stopPropagation();
4784
4878
  },
4785
4879
  onClick: (e) => {
4786
4880
  e.preventDefault();
@@ -4792,7 +4886,14 @@ const Select = (props) => {
4792
4886
  ContainerSelectListOption,
4793
4887
  {
4794
4888
  isChecked,
4795
- onClick: () => props.isClearWhenClickSelectListOption && onClick(value),
4889
+ onClick: () => {
4890
+ if (props.isClearWhenClickSelectListOption) {
4891
+ onClick(value);
4892
+ }
4893
+ if (props.isToggleWhenClickSelectListOption) {
4894
+ toggle();
4895
+ }
4896
+ },
4796
4897
  item: value,
4797
4898
  genre: props.genre,
4798
4899
  size: props.size,
@@ -4847,6 +4948,7 @@ const Select = (props) => {
4847
4948
  $size: props.size,
4848
4949
  onMouseDown: (e) => {
4849
4950
  e.preventDefault();
4951
+ e.stopPropagation();
4850
4952
  },
4851
4953
  children: [
4852
4954
  isShowIconSearchClear && /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -5123,8 +5225,11 @@ const SelectLanguage = (props) => {
5123
5225
  const option = LIST_LANGUAGE;
5124
5226
  const [viewOption] = useState(option);
5125
5227
  const handleSelectChange = (value2) => {
5126
- if (value2.length === 0) onChange(null);
5127
- onChange(value2[0].value.toString());
5228
+ if (value2.length === 0) {
5229
+ onChange(null);
5230
+ } else {
5231
+ onChange(value2[0].value.toString());
5232
+ }
5128
5233
  };
5129
5234
  const valueLocal = useMemo(() => {
5130
5235
  const findOption = option.find((e) => e.value === value);
@@ -5387,6 +5492,8 @@ const TextArea = (props) => {
5387
5492
  onBlur: props.onBlur,
5388
5493
  onFocus: props.onFocus,
5389
5494
  onKeyDown: props.onKeyDown,
5495
+ onMouseDown: props.onMouseDown,
5496
+ onClick: props.onClick,
5390
5497
  name: props.name,
5391
5498
  "aria-label": props.ariaLabel ?? props.name,
5392
5499
  autoComplete: props.autoComplete,
@@ -5548,6 +5655,7 @@ const addSelectWrapperSize = css`
5548
5655
  min-height: ${(props) => KEY_SIZE_DATA[props.$size].height}px;
5549
5656
  border-radius: ${(props) => KEY_SIZE_DATA[props.$size].radius}px;
5550
5657
  justify-content: ${(props) => props.$isCenter ? "center" : "flex-start"};
5658
+
5551
5659
  ${(props) => props.$isOpen && css`
5552
5660
  outline: 2px ${(props2) => props2.theme.states.focus} solid;
5553
5661
  outline-offset: 1px;
@@ -5663,12 +5771,12 @@ const DropdownListOption = styled.li`
5663
5771
  `;
5664
5772
  const addDropdownOptionIconSize = css`
5665
5773
  right: ${(props) => KEY_SIZE_DATA[props.$size].padding - 6}px;
5666
- height: ${(props) => KEY_SIZE_DATA[props.$size].height}px;
5774
+ /* height: ${(props) => KEY_SIZE_DATA[props.$size].height}px;
5775
+ width: ${(props) => KEY_SIZE_DATA[props.$size].height}px; */
5667
5776
  `;
5668
5777
  const DropdownListOptionIcon = styled(Icon)`
5669
5778
  position: absolute;
5670
5779
  right: 0;
5671
- height: 100%;
5672
5780
  align-items: center;
5673
5781
  ${addDropdownOptionIconSize};
5674
5782
  ${addRemoveOutline};
@@ -8554,4 +8662,4 @@ export {
8554
8662
  addDateInputWrapperSize as y,
8555
8663
  DateInputWrapper as z
8556
8664
  };
8557
- //# sourceMappingURL=context.constants-Dop398a2.js.map
8665
+ //# sourceMappingURL=context.constants-YlWOZAd7.js.map