@sia.soul/sia-react-ui 0.1.32 → 0.1.34

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.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { T as TagStatus, B as BadgeProps } from './core-DMDpT7P8.cjs';
2
- export { a as Badge, b as BadgeRibbonProps, c as BadgeStatus, d as Breadcrumb, e as BreadcrumbItem, f as BreadcrumbProps, C as Calendar, g as CalendarProps, h as Card, i as CardAccent, j as CardProps, k as Carousel, l as CarouselProps, m as CarouselRef, n as Collapse, o as CollapseItem, p as CollapseKey, q as CollapseProps, D as Dropdown, r as DropdownButtonProps, s as DropdownMenuProps, t as DropdownOpenSource, u as DropdownPlacement, v as DropdownProps, w as DropdownTrigger, F as FILLED_ICON_NAMES, x as FilledIconName, y as FloatButton, z as FloatButtonBackTopProps, A as FloatButtonGroupProps, E as FloatButtonProps, G as FloatButtonShape, H as FloatingPlacement, I as FloatingTrigger, J as ICON_NAMES, K as Icon, L as IconName, M as IconProps, N as IconVariant, O as Image, P as ImagePreview, Q as ImagePreviewConfig, R as ImagePreviewProps, S as ImageProps, U as Input, V as InputProps, W as Menu, X as MenuClickInfo, Y as MenuItem, Z as MenuMode, _ as MenuProps, $ as MenuTheme, a0 as MessageConfig, a1 as MessageHandle, a2 as MessageKey, a3 as MessageType, a4 as NotificationConfig, a5 as NotificationPlacement, a6 as NotificationType, a7 as Popconfirm, a8 as PopconfirmProps, a9 as Popover, aa as PopoverProps, ab as Progress, ac as ProgressProps, ad as ProgressStatus, ae as Rate, af as RateProps, ag as Segmented, ah as SegmentedOption, ai as SegmentedProps, aj as SegmentedValue, ak as Spin, al as SpinProps, am as StepItem, an as StepStatus, ao as Steps, ap as StepsProps, aq as TabItem, ar as Tabs, as as TabsContextMenuClickInfo, at as TabsOrientation, au as TabsPosition, av as TabsProps, aw as TabsType, ax as Tag, ay as TagProps, az as TagSize, aA as TagVariant, aB as Timeline, aC as TimelineItem, aD as TimelineProps, aE as Toolbar, aF as ToolbarItem, aG as ToolbarProps, aH as Tooltip, aI as TooltipProps, aJ as Tour, aK as TourProps, aL as TourStep, aM as Tree, aN as TreeDropPosition, aO as TreeKey, aP as TreeNode, aQ as TreeProps, aR as Typography, aS as TypographyLinkProps, aT as TypographyProps, aU as TypographyTitleProps, aV as TypographyType, aW as Upload, aX as UploadChangeInfo, aY as UploadDraggerProps, aZ as UploadFile, a_ as UploadFileStatus, a$ as UploadHttpRequest, b0 as UploadItemActions, b1 as UploadProps, b2 as UploadRef, b3 as UploadRejectInfo, b4 as UploadRequestHandle, b5 as UploadRequestOptions, b6 as Watermark, b7 as WatermarkFont, b8 as WatermarkProps, b9 as message, ba as notification } from './core-DMDpT7P8.cjs';
1
+ import { T as TagStatus, B as BadgeProps } from './core-CIj-Xevv.cjs';
2
+ export { a as Badge, b as BadgeRibbonProps, c as BadgeStatus, d as Breadcrumb, e as BreadcrumbItem, f as BreadcrumbProps, C as Calendar, g as CalendarProps, h as Card, i as CardAccent, j as CardProps, k as Carousel, l as CarouselProps, m as CarouselRef, n as Collapse, o as CollapseItem, p as CollapseKey, q as CollapseProps, D as Dropdown, r as DropdownButtonProps, s as DropdownMenuProps, t as DropdownOpenSource, u as DropdownPlacement, v as DropdownProps, w as DropdownTrigger, F as FILLED_ICON_NAMES, x as FilledIconName, y as FloatButton, z as FloatButtonBackTopProps, A as FloatButtonGroupProps, E as FloatButtonProps, G as FloatButtonShape, H as FloatingPlacement, I as FloatingTrigger, J as ICON_NAMES, K as Icon, L as IconName, M as IconProps, N as IconVariant, O as Image, P as ImagePreview, Q as ImagePreviewConfig, R as ImagePreviewProps, S as ImageProps, U as Input, V as InputProps, W as Menu, X as MenuClickInfo, Y as MenuItem, Z as MenuMode, _ as MenuProps, $ as MenuTheme, a0 as MessageConfig, a1 as MessageHandle, a2 as MessageKey, a3 as MessageType, a4 as NotificationConfig, a5 as NotificationPlacement, a6 as NotificationType, a7 as Popconfirm, a8 as PopconfirmProps, a9 as Popover, aa as PopoverProps, ab as Progress, ac as ProgressProps, ad as ProgressStatus, ae as Rate, af as RateProps, ag as Segmented, ah as SegmentedOption, ai as SegmentedProps, aj as SegmentedValue, ak as Spin, al as SpinProps, am as StepItem, an as StepStatus, ao as Steps, ap as StepsProps, aq as TabItem, ar as Tabs, as as TabsContextMenuClickInfo, at as TabsOrientation, au as TabsPosition, av as TabsProps, aw as TabsType, ax as Tag, ay as TagProps, az as TagSize, aA as TagVariant, aB as Timeline, aC as TimelineItem, aD as TimelineProps, aE as Toolbar, aF as ToolbarItem, aG as ToolbarProps, aH as Tooltip, aI as TooltipProps, aJ as Tour, aK as TourProps, aL as TourStep, aM as Tree, aN as TreeDropPosition, aO as TreeKey, aP as TreeNode, aQ as TreeProps, aR as Typography, aS as TypographyLinkProps, aT as TypographyProps, aU as TypographyTitleProps, aV as TypographyType, aW as Upload, aX as UploadChangeInfo, aY as UploadDraggerProps, aZ as UploadFile, a_ as UploadFileStatus, a$ as UploadHttpRequest, b0 as UploadItemActions, b1 as UploadProps, b2 as UploadRef, b3 as UploadRejectInfo, b4 as UploadRequestHandle, b5 as UploadRequestOptions, b6 as Watermark, b7 as WatermarkFont, b8 as WatermarkProps, b9 as message, ba as notification } from './core-CIj-Xevv.cjs';
3
3
  import * as react from 'react';
4
4
  import { HTMLAttributes, ReactNode, CSSProperties, ElementType, FormHTMLAttributes, InputHTMLAttributes, ChangeEvent, TextareaHTMLAttributes, MouseEvent, Key, PointerEvent, Ref, ReactElement, ButtonHTMLAttributes, RefObject } from 'react';
5
5
  import { C as ControlSize, I as InputPlaceholderMode, a as ControlStatus } from './shared-Bx4B28Wh.cjs';
@@ -765,7 +765,7 @@ interface FormProps extends Omit<FormHTMLAttributes<HTMLFormElement>, "onSubmit"
765
765
  onValuesChange?: (changedValues: FormValues, values: FormValues) => void;
766
766
  }
767
767
  declare function FormRoot({ form, initialValues, layout, size: sizeProp, placeholderMode, disabled, requiredMark, className, onFinish, onFinishFailed, onValuesChange, children, ...props }: FormProps): react.JSX.Element;
768
- /** FormItem的属性配置。 */
768
+ /** 表单项的属性配置。根节点默认保留 6px 下外边距,适用于水平、垂直和行内布局,可通过 className 对应的样式覆盖。 */
769
769
  interface FormItemProps {
770
770
  /** 绑定到表单值的字段名或嵌套路径,例如 ["user", "name"]。 */
771
771
  name?: NamePath;
@@ -849,7 +849,7 @@ declare function FormErrorList({ errors }: {
849
849
  }): react.JSX.Element | null;
850
850
  /** 表单组件。 */
851
851
  declare const Form: typeof FormRoot & {
852
- /** 表单字段,负责字段值绑定、校验和标签布局。 */
852
+ /** 表单字段,负责字段值绑定、校验和标签布局;默认下外边距为 6px。 */
853
853
  Item: typeof FormItem;
854
854
  /** 动态表单列表,提供字段索引以及新增、删除、移动操作。 */
855
855
  List: typeof FormList;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { T as TagStatus, B as BadgeProps } from './core-DziuxwXr.js';
2
- export { a as Badge, b as BadgeRibbonProps, c as BadgeStatus, d as Breadcrumb, e as BreadcrumbItem, f as BreadcrumbProps, C as Calendar, g as CalendarProps, h as Card, i as CardAccent, j as CardProps, k as Carousel, l as CarouselProps, m as CarouselRef, n as Collapse, o as CollapseItem, p as CollapseKey, q as CollapseProps, D as Dropdown, r as DropdownButtonProps, s as DropdownMenuProps, t as DropdownOpenSource, u as DropdownPlacement, v as DropdownProps, w as DropdownTrigger, F as FILLED_ICON_NAMES, x as FilledIconName, y as FloatButton, z as FloatButtonBackTopProps, A as FloatButtonGroupProps, E as FloatButtonProps, G as FloatButtonShape, H as FloatingPlacement, I as FloatingTrigger, J as ICON_NAMES, K as Icon, L as IconName, M as IconProps, N as IconVariant, O as Image, P as ImagePreview, Q as ImagePreviewConfig, R as ImagePreviewProps, S as ImageProps, U as Input, V as InputProps, W as Menu, X as MenuClickInfo, Y as MenuItem, Z as MenuMode, _ as MenuProps, $ as MenuTheme, a0 as MessageConfig, a1 as MessageHandle, a2 as MessageKey, a3 as MessageType, a4 as NotificationConfig, a5 as NotificationPlacement, a6 as NotificationType, a7 as Popconfirm, a8 as PopconfirmProps, a9 as Popover, aa as PopoverProps, ab as Progress, ac as ProgressProps, ad as ProgressStatus, ae as Rate, af as RateProps, ag as Segmented, ah as SegmentedOption, ai as SegmentedProps, aj as SegmentedValue, ak as Spin, al as SpinProps, am as StepItem, an as StepStatus, ao as Steps, ap as StepsProps, aq as TabItem, ar as Tabs, as as TabsContextMenuClickInfo, at as TabsOrientation, au as TabsPosition, av as TabsProps, aw as TabsType, ax as Tag, ay as TagProps, az as TagSize, aA as TagVariant, aB as Timeline, aC as TimelineItem, aD as TimelineProps, aE as Toolbar, aF as ToolbarItem, aG as ToolbarProps, aH as Tooltip, aI as TooltipProps, aJ as Tour, aK as TourProps, aL as TourStep, aM as Tree, aN as TreeDropPosition, aO as TreeKey, aP as TreeNode, aQ as TreeProps, aR as Typography, aS as TypographyLinkProps, aT as TypographyProps, aU as TypographyTitleProps, aV as TypographyType, aW as Upload, aX as UploadChangeInfo, aY as UploadDraggerProps, aZ as UploadFile, a_ as UploadFileStatus, a$ as UploadHttpRequest, b0 as UploadItemActions, b1 as UploadProps, b2 as UploadRef, b3 as UploadRejectInfo, b4 as UploadRequestHandle, b5 as UploadRequestOptions, b6 as Watermark, b7 as WatermarkFont, b8 as WatermarkProps, b9 as message, ba as notification } from './core-DziuxwXr.js';
1
+ import { T as TagStatus, B as BadgeProps } from './core-Cj9bxBwT.js';
2
+ export { a as Badge, b as BadgeRibbonProps, c as BadgeStatus, d as Breadcrumb, e as BreadcrumbItem, f as BreadcrumbProps, C as Calendar, g as CalendarProps, h as Card, i as CardAccent, j as CardProps, k as Carousel, l as CarouselProps, m as CarouselRef, n as Collapse, o as CollapseItem, p as CollapseKey, q as CollapseProps, D as Dropdown, r as DropdownButtonProps, s as DropdownMenuProps, t as DropdownOpenSource, u as DropdownPlacement, v as DropdownProps, w as DropdownTrigger, F as FILLED_ICON_NAMES, x as FilledIconName, y as FloatButton, z as FloatButtonBackTopProps, A as FloatButtonGroupProps, E as FloatButtonProps, G as FloatButtonShape, H as FloatingPlacement, I as FloatingTrigger, J as ICON_NAMES, K as Icon, L as IconName, M as IconProps, N as IconVariant, O as Image, P as ImagePreview, Q as ImagePreviewConfig, R as ImagePreviewProps, S as ImageProps, U as Input, V as InputProps, W as Menu, X as MenuClickInfo, Y as MenuItem, Z as MenuMode, _ as MenuProps, $ as MenuTheme, a0 as MessageConfig, a1 as MessageHandle, a2 as MessageKey, a3 as MessageType, a4 as NotificationConfig, a5 as NotificationPlacement, a6 as NotificationType, a7 as Popconfirm, a8 as PopconfirmProps, a9 as Popover, aa as PopoverProps, ab as Progress, ac as ProgressProps, ad as ProgressStatus, ae as Rate, af as RateProps, ag as Segmented, ah as SegmentedOption, ai as SegmentedProps, aj as SegmentedValue, ak as Spin, al as SpinProps, am as StepItem, an as StepStatus, ao as Steps, ap as StepsProps, aq as TabItem, ar as Tabs, as as TabsContextMenuClickInfo, at as TabsOrientation, au as TabsPosition, av as TabsProps, aw as TabsType, ax as Tag, ay as TagProps, az as TagSize, aA as TagVariant, aB as Timeline, aC as TimelineItem, aD as TimelineProps, aE as Toolbar, aF as ToolbarItem, aG as ToolbarProps, aH as Tooltip, aI as TooltipProps, aJ as Tour, aK as TourProps, aL as TourStep, aM as Tree, aN as TreeDropPosition, aO as TreeKey, aP as TreeNode, aQ as TreeProps, aR as Typography, aS as TypographyLinkProps, aT as TypographyProps, aU as TypographyTitleProps, aV as TypographyType, aW as Upload, aX as UploadChangeInfo, aY as UploadDraggerProps, aZ as UploadFile, a_ as UploadFileStatus, a$ as UploadHttpRequest, b0 as UploadItemActions, b1 as UploadProps, b2 as UploadRef, b3 as UploadRejectInfo, b4 as UploadRequestHandle, b5 as UploadRequestOptions, b6 as Watermark, b7 as WatermarkFont, b8 as WatermarkProps, b9 as message, ba as notification } from './core-Cj9bxBwT.js';
3
3
  import * as react from 'react';
4
4
  import { HTMLAttributes, ReactNode, CSSProperties, ElementType, FormHTMLAttributes, InputHTMLAttributes, ChangeEvent, TextareaHTMLAttributes, MouseEvent, Key, PointerEvent, Ref, ReactElement, ButtonHTMLAttributes, RefObject } from 'react';
5
5
  import { C as ControlSize, I as InputPlaceholderMode, a as ControlStatus } from './shared-Bx4B28Wh.js';
@@ -765,7 +765,7 @@ interface FormProps extends Omit<FormHTMLAttributes<HTMLFormElement>, "onSubmit"
765
765
  onValuesChange?: (changedValues: FormValues, values: FormValues) => void;
766
766
  }
767
767
  declare function FormRoot({ form, initialValues, layout, size: sizeProp, placeholderMode, disabled, requiredMark, className, onFinish, onFinishFailed, onValuesChange, children, ...props }: FormProps): react.JSX.Element;
768
- /** FormItem的属性配置。 */
768
+ /** 表单项的属性配置。根节点默认保留 6px 下外边距,适用于水平、垂直和行内布局,可通过 className 对应的样式覆盖。 */
769
769
  interface FormItemProps {
770
770
  /** 绑定到表单值的字段名或嵌套路径,例如 ["user", "name"]。 */
771
771
  name?: NamePath;
@@ -849,7 +849,7 @@ declare function FormErrorList({ errors }: {
849
849
  }): react.JSX.Element | null;
850
850
  /** 表单组件。 */
851
851
  declare const Form: typeof FormRoot & {
852
- /** 表单字段,负责字段值绑定、校验和标签布局。 */
852
+ /** 表单字段,负责字段值绑定、校验和标签布局;默认下外边距为 6px。 */
853
853
  Item: typeof FormItem;
854
854
  /** 动态表单列表,提供字段索引以及新增、删除、移动操作。 */
855
855
  List: typeof FormList;
package/dist/index.js CHANGED
@@ -56,7 +56,7 @@ import {
56
56
  smoothSvgPath,
57
57
  svgArcPath,
58
58
  transferCompositeValue
59
- } from "./chunk-TZROBD65.js";
59
+ } from "./chunk-Q4FDV6KP.js";
60
60
  import {
61
61
  Badge,
62
62
  Breadcrumb,
@@ -80,22 +80,22 @@ import {
80
80
  Watermark,
81
81
  message,
82
82
  notification
83
- } from "./chunk-NDJSNM54.js";
83
+ } from "./chunk-Z63VYNCR.js";
84
84
  import {
85
85
  TextArea
86
- } from "./chunk-YQDHCORW.js";
86
+ } from "./chunk-SMCYEPBL.js";
87
87
  import {
88
88
  MarkdownEditor
89
- } from "./chunk-PXHBIRQW.js";
89
+ } from "./chunk-JZPAIZYK.js";
90
90
  import {
91
91
  RichTextContent,
92
92
  RichTextEditor
93
- } from "./chunk-LK56NX5F.js";
93
+ } from "./chunk-MHUYOGCG.js";
94
94
  import {
95
95
  DatePicker,
96
96
  SelectDateRange,
97
97
  TimePanel
98
- } from "./chunk-33C5ZEQ6.js";
98
+ } from "./chunk-BR2SD6RD.js";
99
99
  import {
100
100
  Checkbox,
101
101
  FloatingScrollbarProvider,
@@ -110,7 +110,7 @@ import {
110
110
  Tree,
111
111
  useOverlayLifecycle,
112
112
  useScrollbarProximity
113
- } from "./chunk-AHBC5UXJ.js";
113
+ } from "./chunk-QAVQEBIS.js";
114
114
  import {
115
115
  Dropdown,
116
116
  FILLED_ICON_NAMES,
@@ -120,10 +120,10 @@ import {
120
120
  Menu,
121
121
  Segmented,
122
122
  Steps
123
- } from "./chunk-YF2I6SDB.js";
123
+ } from "./chunk-HOU5JLNJ.js";
124
124
  import {
125
125
  Button
126
- } from "./chunk-IYNS423D.js";
126
+ } from "./chunk-IKAMZNCK.js";
127
127
  import {
128
128
  ControlSizeContext,
129
129
  PlaceholderModeContext,
@@ -133,7 +133,7 @@ import {
133
133
  useFloatingPlaceholder,
134
134
  usePlaceholderMode,
135
135
  withTitleTooltip
136
- } from "./chunk-RAO3JHDL.js";
136
+ } from "./chunk-H7IAG72O.js";
137
137
 
138
138
  // src/components/Alert.tsx
139
139
  import { useState } from "react";
@@ -1806,7 +1806,7 @@ function FormErrorList({ errors = [] }) {
1806
1806
  return errors.length ? /* @__PURE__ */ jsx9("div", { className: "sia-form-error-list", children: errors.map((error, index) => /* @__PURE__ */ jsx9("div", { children: error }, index)) }) : null;
1807
1807
  }
1808
1808
  var Form = Object.assign(FormRoot, {
1809
- /** 表单字段,负责字段值绑定、校验和标签布局。 */
1809
+ /** 表单字段,负责字段值绑定、校验和标签布局;默认下外边距为 6px。 */
1810
1810
  Item: FormItem,
1811
1811
  /** 动态表单列表,提供字段索引以及新增、删除、移动操作。 */
1812
1812
  List: FormList,
@@ -166,6 +166,7 @@ function installTitleTooltips(doc) {
166
166
  documents.add(doc);
167
167
  let hovered = null;
168
168
  let focused = null;
169
+ let keyboardFocus = true;
169
170
  let active = null;
170
171
  let pending = null;
171
172
  let timer;
@@ -256,19 +257,30 @@ function installTitleTooltips(doc) {
256
257
  else show(hovered ?? focused);
257
258
  }, true);
258
259
  doc.addEventListener("focusin", (event) => {
259
- focused = candidate(event.target);
260
+ focused = keyboardFocus ? candidate(event.target) : null;
260
261
  if (hasExplicitTooltip(event.target)) hide();
261
- else show(focused ?? hovered);
262
+ else if (keyboardFocus) show(focused ?? hovered);
262
263
  }, true);
263
264
  doc.addEventListener("focusout", (event) => {
264
- focused = candidate(event.relatedTarget);
265
+ focused = keyboardFocus ? candidate(event.relatedTarget) : null;
265
266
  show(hovered ?? focused);
266
267
  }, true);
267
- doc.addEventListener("pointerdown", hide, true);
268
+ doc.addEventListener("pointerdown", () => {
269
+ keyboardFocus = false;
270
+ focused = null;
271
+ hide();
272
+ }, true);
268
273
  doc.addEventListener("keydown", (event) => {
269
274
  if (event.key === "Escape") hide();
275
+ else if (event.key === "Tab") keyboardFocus = true;
270
276
  }, true);
271
277
  doc.addEventListener("scroll", hide, true);
278
+ doc.addEventListener("visibilitychange", () => {
279
+ if (doc.hidden) {
280
+ hovered = focused = null;
281
+ hide();
282
+ }
283
+ });
272
284
  doc.defaultView?.addEventListener("blur", () => {
273
285
  hovered = focused = null;
274
286
  hide();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  MarkdownEditor
3
- } from "./chunk-PXHBIRQW.js";
4
- import "./chunk-RAO3JHDL.js";
3
+ } from "./chunk-JZPAIZYK.js";
4
+ import "./chunk-H7IAG72O.js";
5
5
  export {
6
6
  MarkdownEditor
7
7
  };
@@ -167,6 +167,7 @@ function installTitleTooltips(doc) {
167
167
  documents.add(doc);
168
168
  let hovered = null;
169
169
  let focused = null;
170
+ let keyboardFocus = true;
170
171
  let active = null;
171
172
  let pending = null;
172
173
  let timer;
@@ -257,19 +258,30 @@ function installTitleTooltips(doc) {
257
258
  else show(hovered ?? focused);
258
259
  }, true);
259
260
  doc.addEventListener("focusin", (event) => {
260
- focused = candidate(event.target);
261
+ focused = keyboardFocus ? candidate(event.target) : null;
261
262
  if (hasExplicitTooltip(event.target)) hide();
262
- else show(focused ?? hovered);
263
+ else if (keyboardFocus) show(focused ?? hovered);
263
264
  }, true);
264
265
  doc.addEventListener("focusout", (event) => {
265
- focused = candidate(event.relatedTarget);
266
+ focused = keyboardFocus ? candidate(event.relatedTarget) : null;
266
267
  show(hovered ?? focused);
267
268
  }, true);
268
- doc.addEventListener("pointerdown", hide, true);
269
+ doc.addEventListener("pointerdown", () => {
270
+ keyboardFocus = false;
271
+ focused = null;
272
+ hide();
273
+ }, true);
269
274
  doc.addEventListener("keydown", (event) => {
270
275
  if (event.key === "Escape") hide();
276
+ else if (event.key === "Tab") keyboardFocus = true;
271
277
  }, true);
272
278
  doc.addEventListener("scroll", hide, true);
279
+ doc.addEventListener("visibilitychange", () => {
280
+ if (doc.hidden) {
281
+ hovered = focused = null;
282
+ hide();
283
+ }
284
+ });
273
285
  doc.defaultView?.addEventListener("blur", () => {
274
286
  hovered = focused = null;
275
287
  hide();
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  RichTextContent,
3
3
  RichTextEditor
4
- } from "./chunk-LK56NX5F.js";
5
- import "./chunk-YF2I6SDB.js";
6
- import "./chunk-IYNS423D.js";
7
- import "./chunk-RAO3JHDL.js";
4
+ } from "./chunk-MHUYOGCG.js";
5
+ import "./chunk-HOU5JLNJ.js";
6
+ import "./chunk-IKAMZNCK.js";
7
+ import "./chunk-H7IAG72O.js";
8
8
  export {
9
9
  RichTextContent,
10
10
  RichTextEditor
@@ -156,6 +156,7 @@ function installTitleTooltips(doc) {
156
156
  documents.add(doc);
157
157
  let hovered = null;
158
158
  let focused = null;
159
+ let keyboardFocus = true;
159
160
  let active = null;
160
161
  let pending = null;
161
162
  let timer;
@@ -246,19 +247,30 @@ function installTitleTooltips(doc) {
246
247
  else show(hovered ?? focused);
247
248
  }, true);
248
249
  doc.addEventListener("focusin", (event) => {
249
- focused = candidate(event.target);
250
+ focused = keyboardFocus ? candidate(event.target) : null;
250
251
  if (hasExplicitTooltip(event.target)) hide();
251
- else show(focused ?? hovered);
252
+ else if (keyboardFocus) show(focused ?? hovered);
252
253
  }, true);
253
254
  doc.addEventListener("focusout", (event) => {
254
- focused = candidate(event.relatedTarget);
255
+ focused = keyboardFocus ? candidate(event.relatedTarget) : null;
255
256
  show(hovered ?? focused);
256
257
  }, true);
257
- doc.addEventListener("pointerdown", hide, true);
258
+ doc.addEventListener("pointerdown", () => {
259
+ keyboardFocus = false;
260
+ focused = null;
261
+ hide();
262
+ }, true);
258
263
  doc.addEventListener("keydown", (event) => {
259
264
  if (event.key === "Escape") hide();
265
+ else if (event.key === "Tab") keyboardFocus = true;
260
266
  }, true);
261
267
  doc.addEventListener("scroll", hide, true);
268
+ doc.addEventListener("visibilitychange", () => {
269
+ if (doc.hidden) {
270
+ hovered = focused = null;
271
+ hide();
272
+ }
273
+ });
262
274
  doc.defaultView?.addEventListener("blur", () => {
263
275
  hovered = focused = null;
264
276
  hide();
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  SelectDateRange
3
- } from "./chunk-33C5ZEQ6.js";
4
- import "./chunk-AHBC5UXJ.js";
5
- import "./chunk-YF2I6SDB.js";
6
- import "./chunk-IYNS423D.js";
7
- import "./chunk-RAO3JHDL.js";
3
+ } from "./chunk-BR2SD6RD.js";
4
+ import "./chunk-QAVQEBIS.js";
5
+ import "./chunk-HOU5JLNJ.js";
6
+ import "./chunk-IKAMZNCK.js";
7
+ import "./chunk-H7IAG72O.js";
8
8
  export {
9
9
  SelectDateRange
10
10
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sia.soul/sia-react-ui",
3
- "version": "0.1.32",
3
+ "version": "0.1.34",
4
4
  "description": "Sia Design components and tokens for React",
5
5
  "publishConfig": {
6
6
  "access": "public",