x-ui-design 0.7.44 → 0.7.45

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
@@ -2603,7 +2603,7 @@ var RangePicker$1 = /*#__PURE__*/Object.freeze({
2603
2603
  default: RangePicker
2604
2604
  });
2605
2605
 
2606
- 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{bottom:100%;margin-bottom:4px}";
2606
+ 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}";
2607
2607
  styleInject(css_248z$d);
2608
2608
 
2609
2609
  const ConditionalWrapper = ({
@@ -2828,46 +2828,50 @@ const TimePicker = ({
2828
2828
  }
2829
2829
  }
2830
2830
  };
2831
+ const toAbove = () => {
2832
+ setDropdownPosition({
2833
+ top: (inputRef.current?.getBoundingClientRect().top || 0) + document.documentElement.scrollTop + (inputRef.current?.offsetHeight || 0),
2834
+ left: (inputRef.current?.getBoundingClientRect().left || 0) + document.documentElement.scrollLeft
2835
+ });
2836
+ };
2837
+ const toBelow = () => {
2838
+ setDropdownPosition({
2839
+ top: (inputRef.current?.getBoundingClientRect().top || 0) + document.documentElement.scrollTop - 230,
2840
+ left: (inputRef.current?.getBoundingClientRect().left || 0) + document.documentElement.scrollLeft
2841
+ });
2842
+ };
2831
2843
  const dropdownPossition = useCallback(() => {
2832
2844
  if (!inputRef.current) {
2833
2845
  return {};
2834
2846
  }
2835
- const dropdownHeight = 230;
2836
- const inputPoss = inputRef.current?.getBoundingClientRect();
2837
- const windowHeight = window.innerHeight;
2838
- const spaceBelow = windowHeight - (inputPoss.bottom || 0);
2839
- const spaceAbove = inputPoss.top;
2840
- const shouldShowAbove = spaceBelow < dropdownHeight;
2841
- const shouldShowBelow = spaceAbove < dropdownHeight;
2842
- if (open) {
2843
- if (getPopupContainer) {
2844
- if (!shouldShowBelow && !shouldShowAbove) {
2845
- if (!Object.keys(dropdownPosition).length) {
2846
- setDropdownPosition({
2847
- position: 'absolute',
2848
- top: (inputPoss.top || 0) + document.documentElement.scrollTop + (inputRef.current?.offsetHeight || 0),
2849
- left: (inputPoss.left || 0) + document.documentElement.scrollLeft,
2850
- height: 'max-content'
2851
- });
2852
- }
2853
- return;
2854
- }
2855
- if (!shouldShowBelow) {
2856
- setDropdownPosition({
2857
- position: 'absolute',
2858
- top: (inputPoss.top || 0) + document.documentElement.scrollTop - dropdownHeight,
2859
- left: (inputPoss.left || 0) + document.documentElement.scrollLeft,
2860
- height: 'max-content'
2861
- });
2862
- }
2863
- if (!shouldShowAbove) {
2864
- setDropdownPosition({
2865
- position: 'absolute',
2866
- top: (inputPoss.top || 0) + document.documentElement.scrollTop + (inputRef.current?.offsetHeight || 0),
2867
- left: (inputPoss.left || 0) + document.documentElement.scrollLeft,
2868
- height: 'max-content'
2869
- });
2870
- }
2847
+ const offsetHeight = window.innerHeight;
2848
+ const shouldShowAbove = offsetHeight - (inputRef.current?.getBoundingClientRect().bottom || 0) < 230;
2849
+ const shouldShowBelow = inputRef.current?.getBoundingClientRect().top < 230;
2850
+ if (open && !shouldShowBelow && !shouldShowAbove) {
2851
+ if (getPopupContainer && !Object.keys(dropdownPosition).length) {
2852
+ toAbove();
2853
+ }
2854
+ return;
2855
+ }
2856
+ if (getPopupContainer) {
2857
+ if (!shouldShowBelow) {
2858
+ toBelow();
2859
+ }
2860
+ if (!shouldShowAbove) {
2861
+ toAbove();
2862
+ }
2863
+ } else {
2864
+ if (shouldShowBelow) {
2865
+ setDropdownPosition({
2866
+ top: inputRef.current.offsetTop + inputRef.current.offsetHeight,
2867
+ left: inputRef.current?.offsetLeft
2868
+ });
2869
+ }
2870
+ if (shouldShowAbove) {
2871
+ setDropdownPosition({
2872
+ top: inputRef.current?.offsetHeight - inputRef.current.offsetHeight - (popupRef.current?.offsetHeight || 0) - 8,
2873
+ left: inputRef.current?.offsetLeft
2874
+ });
2871
2875
  }
2872
2876
  }
2873
2877
  }, [open, inputRef.current]);