x-ui-design 0.7.54 → 0.7.56

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.esm.js CHANGED
@@ -2609,7 +2609,7 @@ const ConditionalWrapper = ({
2609
2609
  children
2610
2610
  }) => condition ? wrapper(children) : children;
2611
2611
 
2612
- var css_248z$d = ".xUi-timepicker-wrapper{display:inline-block;font-size:14px;position:relative}.xUi-timepicker-input-wrapper{position:relative;width:100%}.xUi-timepicker-input{border:1px solid var(--xui-border-color);border-radius:6px;box-sizing:border-box;font-size:14px;height:32px;line-height:32px;padding:4px 11px;transition:all .3s;width:100%}.xUi-timepicker-input:focus,.xUi-timepicker-input:hover{border-color:var(--xui-primary-color-light)}.xUi-timepicker-input:focus{outline:none}.xUi-timepicker-input::placeholder{opacity:.6}.xUi-timepicker-clear{color:rgba(0,0,0,.45);cursor:pointer;font-size:12px;position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:2}.xUi-timepicker-clear:hover{color:rgba(0,0,0,.75)}.xUi-timepicker-popup{background:#fff;border:1px solid var(--xui-border-color);border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.15);display:flex;left:0;padding:8px 0;z-index:1}.xUi-timepicker-panel{display:flex;width:100%}.xUi-timepicker-column{align-items:center;display:flex;flex:1;flex-direction:column;margin-bottom:5px;max-height:169px;overflow-y:auto;padding-left:4px;width:52px}.xUi-timepicker-column::-webkit-scrollbar,.xUi-timepicker-column::-webkit-scrollbar-thumb{width:4px}.xUi-timepicker-column:nth-child(2){border-left:1px solid var(--xui-border-color);border-right:1px solid var(--xui-border-color)}.xUi-timepicker-cell{align-items:center;border-radius:4px;cursor:pointer;display:flex;font-size:14px;justify-content:center;margin-bottom:2px;padding:6px 0;text-align:center;transition:background .3s;width:44px}.xUi-timepicker-cell:hover{background-color:#e6f4ff}.xUi-timepicker-cell-selected{background-color:#e6f4ff;font-weight:500}.xUi-timepicker-cell-disabled{color:rgba(0,0,0,.25);pointer-events:none;user-select:none}.xUi-timepicker-now-btn{color:#4096ff;cursor:pointer;font-weight:500;margin-top:10px;padding:0 0 4px;text-align:center;transition:background .3s}.xUi-timepicker-icons{align-items:center;display:flex;gap:4px;position:absolute;right:8px;top:50%;transform:translateY(-50%)}.xUi-timepicker-suffix{align-items:center;cursor:pointer;display:flex;justify-content:center}.xUi-timepicker-suffix svg{color:#999;height:14px;width:14px}.xUi-timepicker-clear{right:0;top:1px}.xUi-timepicker-actions{align-items:center;border-top:1px solid var(--xui-border-color);display:flex;justify-content:space-between;padding:0 4px}.xUi-timepicker-ok-btn{background-color:var(--xui-primary-color);border:none;border-radius:4px;color:#fff;cursor:pointer;margin-top:7px;outline:none;padding:4px 8px;transition:.3s ease}.xUi-timepicker-ok-btn:disabled{background-color:var(--xui-color-disabled);color:grey;font-size:13px}.xUi-timepicker-ok-btn:not(:disabled):hover{background-color:var(--xui-primary-color-light)}.xUi-timepicker-popup{margin-top:4px;position:absolute;top:100%}.xUi-timepicker-popup-up{height:max-content;margin-bottom:4px;position:absolute}";
2612
+ var css_248z$d = ".xUi-timepicker-wrapper{display:inline-block;font-size:14px;position:relative}.xUi-timepicker-input-wrapper{position:relative;width:100%}.xUi-timepicker-input{border:1px solid var(--xui-border-color);border-radius:6px;box-sizing:border-box;font-size:14px;height:32px;line-height:32px;padding:4px 11px;transition:all .3s;width:100%}.xUi-timepicker-input:focus,.xUi-timepicker-input:hover{border-color:var(--xui-primary-color-light)}.xUi-timepicker-input:focus{outline:none}.xUi-timepicker-input::placeholder{opacity:.6}.xUi-timepicker-clear{color:rgba(0,0,0,.45);cursor:pointer;font-size:12px;position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:2}.xUi-timepicker-clear:hover{color:rgba(0,0,0,.75)}.xUi-timepicker-popup{background:#fff;border:1px solid var(--xui-border-color);border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.15);display:flex;left:0;padding:8px 0;z-index:1}.xUi-timepicker-panel{display:flex;width:100%}.xUi-timepicker-column{align-items:center;display:flex;flex:1;flex-direction:column;margin-bottom:5px;max-height:169px;overflow-y:auto;padding-left:4px;width:52px}.xUi-timepicker-column::-webkit-scrollbar,.xUi-timepicker-column::-webkit-scrollbar-thumb{width:4px}.xUi-timepicker-column:nth-child(2){border-left:1px solid var(--xui-border-color);border-right:1px solid var(--xui-border-color)}.xUi-timepicker-cell{align-items:center;border-radius:4px;cursor:pointer;display:flex;font-size:14px;justify-content:center;margin-bottom:2px;padding:6px 0;text-align:center;transition:background .3s;width:44px}.xUi-timepicker-cell:hover{background-color:#e6f4ff}.xUi-timepicker-cell-selected{background-color:#e6f4ff;font-weight:500}.xUi-timepicker-cell-disabled{color:rgba(0,0,0,.25);pointer-events:none;user-select:none}.xUi-timepicker-now-btn{color:#4096ff;cursor:pointer;font-weight:500;margin-top:10px;padding:0 0 4px;text-align:center;transition:background .3s}.xUi-timepicker-icons{align-items:center;display:flex;gap:4px;position:absolute;right:8px;top:50%;transform:translateY(-50%)}.xUi-timepicker-suffix{align-items:center;cursor:pointer;display:flex;justify-content:center}.xUi-timepicker-suffix svg{color:#999;height:14px;width:14px}.xUi-timepicker-clear{right:0;top:1px}.xUi-timepicker-actions{align-items:center;border-top:1px solid var(--xui-border-color);display:flex;justify-content:space-between;padding:0 4px}.xUi-timepicker-ok-btn{background-color:var(--xui-primary-color);border:none;border-radius:4px;color:#fff;cursor:pointer;margin-top:7px;outline:none;padding:4px 8px;transition:.3s ease}.xUi-timepicker-ok-btn:disabled{background-color:var(--xui-color-disabled);color:grey;font-size:13px}.xUi-timepicker-ok-btn:not(:disabled):hover{background-color:var(--xui-primary-color-light)}.xUi-timepicker-popup{margin-top:4px;position:absolute;top:100%}";
2613
2613
  styleInject(css_248z$d);
2614
2614
 
2615
2615
  const HOURS = 24;
@@ -2638,7 +2638,7 @@ const TimePicker = ({
2638
2638
  }) => {
2639
2639
  const [open, setOpen] = useState(false);
2640
2640
  const [innerValue, setInnerValue] = useState(propValue || defaultValue ? new Date(propValue || defaultValue) : null);
2641
- const [openUpward, setOpenUpward] = useState(false);
2641
+ useState(false);
2642
2642
  const [[showHour, showMinutes, showSeconds]] = useState(`${format}`.split(':'));
2643
2643
  const [tempValue, setTempValue] = useState(null);
2644
2644
  const inputRef = useRef(null);
@@ -2655,7 +2655,6 @@ const TimePicker = ({
2655
2655
  if (popupRef.current && !popupRef.current.contains(e.target) && inputRef.current && !inputRef.current.contains(e.target)) {
2656
2656
  setOpen(false);
2657
2657
  setTempValue(null);
2658
- setOpenUpward(false);
2659
2658
  if (!innerValue) {
2660
2659
  onChange?.(null, '');
2661
2660
  }
@@ -2679,20 +2678,6 @@ const TimePicker = ({
2679
2678
  scrollToTop(secondRef, second || 0);
2680
2679
  }
2681
2680
  }, [open, innerValue]);
2682
- const decideOpenDirection = () => {
2683
- if (inputRef.current) {
2684
- const inputRect = inputRef.current.getBoundingClientRect();
2685
- const viewportHeight = window.innerHeight;
2686
- const popupHeight = 240;
2687
- const spaceBelow = viewportHeight - inputRect.bottom;
2688
- const spaceAbove = inputRect.top;
2689
- if (spaceBelow < popupHeight && spaceAbove > popupHeight) {
2690
- setOpenUpward(true);
2691
- } else {
2692
- setOpenUpward(false);
2693
- }
2694
- }
2695
- };
2696
2681
  useEffect(() => {
2697
2682
  onSelect?.(tempValue);
2698
2683
  }, [tempValue, onSelect]);
@@ -2833,7 +2818,8 @@ const TimePicker = ({
2833
2818
  const inputRect = inputRef.current.getBoundingClientRect();
2834
2819
  const popupEl = popupRef.current;
2835
2820
  const dropdownHeight = popupEl?.offsetHeight || 230;
2836
- const popupContainer = getPopupContainer ? getPopupContainer(document.body) : getScrollParents(inputRef.current)[1] || document.body;
2821
+ const parents = getScrollParents(inputRef.current);
2822
+ const popupContainer = getPopupContainer ? getPopupContainer(document.body) : parents[parents.length - 2] || parents[1] || document.body;
2837
2823
  const containerRect = popupContainer.getBoundingClientRect();
2838
2824
  const spaceAbove = inputRect.top - containerRect.top;
2839
2825
  const spaceBelow = containerRect.bottom - inputRect.bottom;
@@ -2977,10 +2963,7 @@ const TimePicker = ({
2977
2963
  style: style
2978
2964
  }, /*#__PURE__*/React.createElement("div", {
2979
2965
  className: `${prefixCls}-input-wrapper`,
2980
- onClick: () => {
2981
- decideOpenDirection();
2982
- setOpen(true);
2983
- }
2966
+ onClick: () => setOpen(true)
2984
2967
  }, /*#__PURE__*/React.createElement("input", {
2985
2968
  ref: inputRef,
2986
2969
  size: INPUT_SIZE,
@@ -3005,7 +2988,6 @@ const TimePicker = ({
3005
2988
  className: `${prefixCls}-suffix`,
3006
2989
  onClick: e => {
3007
2990
  e.stopPropagation();
3008
- decideOpenDirection();
3009
2991
  setOpen(true);
3010
2992
  }
3011
2993
  }, suffixIcon))), open && /*#__PURE__*/React.createElement(ConditionalWrapper, {
@@ -3017,9 +2999,7 @@ const TimePicker = ({
3017
2999
  ...dropdownPosition,
3018
3000
  opacity: Object.keys(dropdownPosition).length ? 1 : 0
3019
3001
  },
3020
- className: clsx([`${prefixCls}-popup`, {
3021
- [`${prefixCls}-popup-up`]: openUpward
3022
- }])
3002
+ className: `${prefixCls}-popup`
3023
3003
  }, renderOptions())));
3024
3004
  };
3025
3005