@h-ai/ui 0.1.0-alpha.29 → 0.1.0-alpha.31
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/README.md +50 -3
- package/dist/components/compounds/Accordion.svelte +6 -3
- package/dist/components/compounds/Accordion.svelte.d.ts +3 -1
- package/dist/components/compounds/ActionSheet.svelte +11 -8
- package/dist/components/compounds/ActionSheet.svelte.d.ts +3 -1
- package/dist/components/compounds/Alert.svelte +6 -4
- package/dist/components/compounds/Alert.svelte.d.ts +3 -2
- package/dist/components/compounds/AppBar.svelte +13 -9
- package/dist/components/compounds/AppBar.svelte.d.ts +3 -1
- package/dist/components/compounds/BottomNav.svelte +13 -10
- package/dist/components/compounds/BottomNav.svelte.d.ts +3 -1
- package/dist/components/compounds/Breadcrumb.svelte +6 -4
- package/dist/components/compounds/Breadcrumb.svelte.d.ts +3 -2
- package/dist/components/compounds/Calendar.svelte +7 -2
- package/dist/components/compounds/Calendar.svelte.d.ts +3 -1
- package/dist/components/compounds/Card.svelte +6 -4
- package/dist/components/compounds/Card.svelte.d.ts +3 -2
- package/dist/components/compounds/Combobox.svelte +6 -2
- package/dist/components/compounds/Combobox.svelte.d.ts +3 -1
- package/dist/components/compounds/Confirm.svelte +9 -7
- package/dist/components/compounds/Confirm.svelte.d.ts +3 -2
- package/dist/components/compounds/DataTable.svelte +6 -2
- package/dist/components/compounds/DataTable.svelte.d.ts +2 -1
- package/dist/components/compounds/DatePicker.svelte +7 -2
- package/dist/components/compounds/DatePicker.svelte.d.ts +3 -1
- package/dist/components/compounds/Drawer.svelte +6 -4
- package/dist/components/compounds/Drawer.svelte.d.ts +3 -2
- package/dist/components/compounds/Dropdown.svelte +6 -4
- package/dist/components/compounds/Dropdown.svelte.d.ts +3 -2
- package/dist/components/compounds/Empty.svelte +6 -4
- package/dist/components/compounds/Empty.svelte.d.ts +3 -2
- package/dist/components/compounds/Form.svelte +11 -9
- package/dist/components/compounds/Form.svelte.d.ts +3 -2
- package/dist/components/compounds/FormField.svelte +6 -4
- package/dist/components/compounds/FormField.svelte.d.ts +3 -2
- package/dist/components/compounds/InfiniteScroll.svelte +10 -7
- package/dist/components/compounds/InfiniteScroll.svelte.d.ts +3 -1
- package/dist/components/compounds/MessageBoxContainer.svelte +6 -1
- package/dist/components/compounds/MessageBoxContainer.svelte.d.ts +3 -17
- package/dist/components/compounds/MessageBoxDialog.svelte +9 -7
- package/dist/components/compounds/MessageBoxDialog.svelte.d.ts +2 -1
- package/dist/components/compounds/MessageContainer.svelte +43 -66
- package/dist/components/compounds/MessageContainer.svelte.d.ts +2 -1
- package/dist/components/compounds/Modal.svelte +29 -43
- package/dist/components/compounds/Modal.svelte.d.ts +3 -2
- package/dist/components/compounds/PageHeader.svelte +6 -2
- package/dist/components/compounds/PageHeader.svelte.d.ts +3 -1
- package/dist/components/compounds/Pagination.svelte +6 -4
- package/dist/components/compounds/Pagination.svelte.d.ts +3 -2
- package/dist/components/compounds/Popover.svelte +10 -8
- package/dist/components/compounds/Popover.svelte.d.ts +3 -2
- package/dist/components/compounds/PullRefresh.svelte +11 -8
- package/dist/components/compounds/PullRefresh.svelte.d.ts +3 -1
- package/dist/components/compounds/Result.svelte +6 -4
- package/dist/components/compounds/Result.svelte.d.ts +3 -2
- package/dist/components/compounds/SafeArea.svelte +6 -3
- package/dist/components/compounds/SafeArea.svelte.d.ts +3 -1
- package/dist/components/compounds/Skeleton.svelte +6 -4
- package/dist/components/compounds/Skeleton.svelte.d.ts +3 -2
- package/dist/components/compounds/Steps.svelte +6 -4
- package/dist/components/compounds/Steps.svelte.d.ts +3 -2
- package/dist/components/compounds/SwipeCell.svelte +6 -3
- package/dist/components/compounds/SwipeCell.svelte.d.ts +3 -1
- package/dist/components/compounds/Tabs.svelte +6 -4
- package/dist/components/compounds/Tabs.svelte.d.ts +3 -2
- package/dist/components/compounds/TagInput.svelte +11 -9
- package/dist/components/compounds/TagInput.svelte.d.ts +3 -2
- package/dist/components/compounds/Timeline.svelte +6 -3
- package/dist/components/compounds/Timeline.svelte.d.ts +3 -1
- package/dist/components/compounds/ToastContainer.svelte +6 -2
- package/dist/components/compounds/ToastContainer.svelte.d.ts +2 -1
- package/dist/components/compounds/Tooltip.svelte +6 -4
- package/dist/components/compounds/Tooltip.svelte.d.ts +3 -2
- package/dist/components/primitives/Avatar.svelte +6 -4
- package/dist/components/primitives/Avatar.svelte.d.ts +3 -2
- package/dist/components/primitives/Badge.svelte +6 -4
- package/dist/components/primitives/Badge.svelte.d.ts +3 -2
- package/dist/components/primitives/BareButton.svelte +15 -12
- package/dist/components/primitives/BareButton.svelte.d.ts +3 -2
- package/dist/components/primitives/BareInput.svelte +37 -34
- package/dist/components/primitives/BareInput.svelte.d.ts +3 -2
- package/dist/components/primitives/Button.svelte +12 -10
- package/dist/components/primitives/Button.svelte.d.ts +3 -2
- package/dist/components/primitives/Checkbox.svelte +6 -4
- package/dist/components/primitives/Checkbox.svelte.d.ts +3 -2
- package/dist/components/primitives/IconButton.svelte +6 -4
- package/dist/components/primitives/IconButton.svelte.d.ts +3 -2
- package/dist/components/primitives/Input.svelte +6 -4
- package/dist/components/primitives/Input.svelte.d.ts +3 -2
- package/dist/components/primitives/Progress.svelte +6 -4
- package/dist/components/primitives/Progress.svelte.d.ts +3 -2
- package/dist/components/primitives/Radio.svelte +6 -4
- package/dist/components/primitives/Radio.svelte.d.ts +2 -2
- package/dist/components/primitives/Range.svelte +6 -3
- package/dist/components/primitives/Range.svelte.d.ts +3 -1
- package/dist/components/primitives/Rating.svelte +6 -3
- package/dist/components/primitives/Rating.svelte.d.ts +3 -1
- package/dist/components/primitives/Select.svelte +255 -48
- package/dist/components/primitives/Select.svelte.d.ts +2 -2
- package/dist/components/primitives/Spinner.svelte +6 -4
- package/dist/components/primitives/Spinner.svelte.d.ts +3 -2
- package/dist/components/primitives/Switch.svelte +6 -4
- package/dist/components/primitives/Switch.svelte.d.ts +3 -2
- package/dist/components/primitives/Tag.svelte +6 -4
- package/dist/components/primitives/Tag.svelte.d.ts +3 -2
- package/dist/components/primitives/Textarea.svelte +34 -19
- package/dist/components/primitives/Textarea.svelte.d.ts +3 -2
- package/dist/components/primitives/ToggleCheckbox.svelte +13 -10
- package/dist/components/primitives/ToggleCheckbox.svelte.d.ts +3 -2
- package/dist/components/primitives/ToggleInput.svelte +13 -10
- package/dist/components/primitives/ToggleInput.svelte.d.ts +3 -2
- package/dist/components/primitives/ToggleRadio.svelte +13 -10
- package/dist/components/primitives/ToggleRadio.svelte.d.ts +3 -2
- package/dist/components/scenes/ai/AiDocumentDownloadMenu.svelte +8 -5
- package/dist/components/scenes/ai/AiDocumentDownloadMenu.svelte.d.ts +3 -1
- package/dist/components/scenes/ai/AiDocumentEditor.svelte +40 -10
- package/dist/components/scenes/ai/AiDocumentEditor.svelte.d.ts +3 -1
- package/dist/components/scenes/ai/MarkdownRenderer.svelte +49 -7
- package/dist/components/scenes/ai/MarkdownRenderer.svelte.d.ts +3 -1
- package/dist/components/scenes/ai/document-parse.d.ts +2 -0
- package/dist/components/scenes/ai/document-parse.js +16 -17
- package/dist/components/scenes/ai/document-types.d.ts +6 -1
- package/dist/components/scenes/ai/markdown-parse.d.ts +2 -0
- package/dist/components/scenes/ai/markdown-parse.js +17 -20
- package/dist/components/scenes/ai/safe-html.d.ts +16 -0
- package/dist/components/scenes/ai/safe-html.js +284 -0
- package/dist/components/scenes/ai/table/AiTableEditor.svelte +6 -3
- package/dist/components/scenes/ai/table/AiTableEditor.svelte.d.ts +3 -1
- package/dist/components/scenes/ai/table/table-types.d.ts +2 -1
- package/dist/components/scenes/app/FeedbackModal.svelte +5 -2
- package/dist/components/scenes/app/FeedbackModal.svelte.d.ts +3 -1
- package/dist/components/scenes/app/LanguageSwitch.svelte +6 -2
- package/dist/components/scenes/app/LanguageSwitch.svelte.d.ts +3 -1
- package/dist/components/scenes/app/SettingsLayout.svelte +6 -3
- package/dist/components/scenes/app/SettingsLayout.svelte.d.ts +2 -1
- package/dist/components/scenes/app/SettingsModal.svelte +6 -3
- package/dist/components/scenes/app/SettingsModal.svelte.d.ts +3 -1
- package/dist/components/scenes/app/ThemeColorPicker.svelte +6 -3
- package/dist/components/scenes/app/ThemeColorPicker.svelte.d.ts +3 -1
- package/dist/components/scenes/app/ThemeSelector.svelte +6 -3
- package/dist/components/scenes/app/ThemeSelector.svelte.d.ts +3 -1
- package/dist/components/scenes/app/ThemeToggle.svelte +6 -2
- package/dist/components/scenes/app/ThemeToggle.svelte.d.ts +3 -1
- package/dist/components/scenes/crud/CrudDeleteConfirm.svelte +16 -11
- package/dist/components/scenes/crud/CrudDeleteConfirm.svelte.d.ts +2 -1
- package/dist/components/scenes/crud/CrudDetailDrawer.svelte +6 -3
- package/dist/components/scenes/crud/CrudDetailDrawer.svelte.d.ts +2 -2
- package/dist/components/scenes/crud/CrudDetailPanel.svelte +6 -3
- package/dist/components/scenes/crud/CrudDetailPanel.svelte.d.ts +2 -2
- package/dist/components/scenes/crud/CrudEditPanel.svelte +6 -3
- package/dist/components/scenes/crud/CrudEditPanel.svelte.d.ts +2 -2
- package/dist/components/scenes/crud/CrudFilterBar.svelte +6 -2
- package/dist/components/scenes/crud/CrudFilterBar.svelte.d.ts +2 -1
- package/dist/components/scenes/crud/CrudPage.svelte +6 -2
- package/dist/components/scenes/crud/CrudPage.svelte.d.ts +2 -1
- package/dist/components/scenes/crud/crud-types.d.ts +2 -2
- package/dist/components/scenes/crypto/EncryptedInput.svelte +6 -3
- package/dist/components/scenes/crypto/EncryptedInput.svelte.d.ts +3 -2
- package/dist/components/scenes/crypto/HashDisplay.svelte +6 -3
- package/dist/components/scenes/crypto/HashDisplay.svelte.d.ts +3 -1
- package/dist/components/scenes/crypto/SignatureDisplay.svelte +6 -3
- package/dist/components/scenes/crypto/SignatureDisplay.svelte.d.ts +3 -1
- package/dist/components/scenes/error/ErrorPage.svelte +6 -3
- package/dist/components/scenes/error/ErrorPage.svelte.d.ts +2 -1
- package/dist/components/scenes/iam/AuthShell.svelte +6 -3
- package/dist/components/scenes/iam/AuthShell.svelte.d.ts +2 -1
- package/dist/components/scenes/iam/ChangePasswordForm.svelte +6 -3
- package/dist/components/scenes/iam/ChangePasswordForm.svelte.d.ts +3 -1
- package/dist/components/scenes/iam/ForgotPasswordForm.svelte +6 -3
- package/dist/components/scenes/iam/ForgotPasswordForm.svelte.d.ts +3 -1
- package/dist/components/scenes/iam/LoginForm.svelte +6 -3
- package/dist/components/scenes/iam/LoginForm.svelte.d.ts +3 -1
- package/dist/components/scenes/iam/PasswordInput.svelte +6 -4
- package/dist/components/scenes/iam/PasswordInput.svelte.d.ts +3 -2
- package/dist/components/scenes/iam/RegisterForm.svelte +6 -4
- package/dist/components/scenes/iam/RegisterForm.svelte.d.ts +3 -1
- package/dist/components/scenes/iam/ResetPasswordForm.svelte +6 -3
- package/dist/components/scenes/iam/ResetPasswordForm.svelte.d.ts +3 -1
- package/dist/components/scenes/iam/UserProfile.svelte +6 -3
- package/dist/components/scenes/iam/UserProfile.svelte.d.ts +3 -1
- package/dist/components/scenes/storage/AvatarUpload.svelte +11 -8
- package/dist/components/scenes/storage/AvatarUpload.svelte.d.ts +3 -1
- package/dist/components/scenes/storage/FileList.svelte +6 -3
- package/dist/components/scenes/storage/FileList.svelte.d.ts +3 -1
- package/dist/components/scenes/storage/FileUpload.svelte +6 -3
- package/dist/components/scenes/storage/FileUpload.svelte.d.ts +3 -1
- package/dist/components/scenes/storage/ImageUpload.svelte +12 -9
- package/dist/components/scenes/storage/ImageUpload.svelte.d.ts +3 -1
- package/dist/components/scenes/types.d.ts +20 -16
- package/dist/styles/global.css +5 -0
- package/dist/types.d.ts +48 -41
- package/dist/utils.d.ts +6 -1
- package/dist/utils.js +16 -1
- package/package.json +2 -2
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
模态框组件,支持 backdrop-blur 和 scale-in 动画。
|
|
4
4
|
-->
|
|
5
5
|
<script lang='ts'>
|
|
6
|
-
import type { ModalProps } from '../../types.js'
|
|
6
|
+
import type { DataAttributes, ModalProps } from '../../types.js'
|
|
7
7
|
import { uiM } from '../../messages.js'
|
|
8
|
-
import { cn } from '../../utils.js'
|
|
8
|
+
import { cn, getDataAttributes } from '../../utils.js'
|
|
9
9
|
|
|
10
10
|
let {
|
|
11
11
|
open = $bindable(false),
|
|
@@ -24,11 +24,12 @@
|
|
|
24
24
|
header,
|
|
25
25
|
footer,
|
|
26
26
|
children,
|
|
27
|
-
|
|
27
|
+
...restProps
|
|
28
|
+
}: ModalProps & DataAttributes = $props()
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
//
|
|
31
|
-
let modalElement:
|
|
30
|
+
const dataAttributes = $derived(getDataAttributes(restProps))
|
|
31
|
+
// modalElement 持有 overlay 容器引用;不再依赖原生 `<dialog>`,改用 fixed + z-index 叠加。
|
|
32
|
+
let modalElement: HTMLDivElement | undefined = $state()
|
|
32
33
|
|
|
33
34
|
// 标题区仅在显式提供标题或自定义 header 时出现;
|
|
34
35
|
// 仅需关闭按钮的场景改为右上角悬浮按钮,避免业务侧额外占一整行头部。
|
|
@@ -109,37 +110,17 @@
|
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
112
|
|
|
112
|
-
function handleDialogCancel(event: Event) {
|
|
113
|
-
// 原生 dialog 在按下 Escape 时会先触发 cancel;
|
|
114
|
-
// 这里统一接管关闭逻辑,避免浏览器直接 close 后跳过组件自己的 onclose 回调。
|
|
115
|
-
event.preventDefault()
|
|
116
|
-
if (closeOnEscape) {
|
|
117
|
-
handleClose()
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
$effect(() => {
|
|
122
|
-
if (!modalElement) {
|
|
123
|
-
return
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
if (open) {
|
|
127
|
-
if (!modalElement.open) {
|
|
128
|
-
modalElement.showModal()
|
|
129
|
-
}
|
|
130
|
-
return
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
if (modalElement.open) {
|
|
134
|
-
modalElement.close()
|
|
135
|
-
}
|
|
136
|
-
})
|
|
137
113
|
</script>
|
|
138
114
|
|
|
139
|
-
<
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
115
|
+
<div {...dataAttributes}
|
|
116
|
+
bind:this={modalElement}
|
|
117
|
+
class='hai-modal'
|
|
118
|
+
style:display={open ? '' : 'none'}
|
|
119
|
+
aria-hidden={open ? undefined : 'true'}
|
|
120
|
+
onkeydown={(e) => {
|
|
121
|
+
if (closeOnEscape && e.key === 'Escape')
|
|
122
|
+
handleClose()
|
|
123
|
+
}}
|
|
143
124
|
>
|
|
144
125
|
<div
|
|
145
126
|
class='hai-modal__viewport'
|
|
@@ -221,11 +202,10 @@
|
|
|
221
202
|
{/if}
|
|
222
203
|
</div>
|
|
223
204
|
</div>
|
|
224
|
-
</
|
|
205
|
+
</div>
|
|
225
206
|
|
|
226
207
|
<style>
|
|
227
|
-
|
|
228
|
-
dialog.hai-modal:modal {
|
|
208
|
+
.hai-modal {
|
|
229
209
|
margin: 0;
|
|
230
210
|
padding: 0;
|
|
231
211
|
border: 0;
|
|
@@ -235,17 +215,23 @@
|
|
|
235
215
|
box-sizing: border-box;
|
|
236
216
|
}
|
|
237
217
|
|
|
218
|
+
.hai-modal {
|
|
219
|
+
position: fixed;
|
|
220
|
+
inset: 0;
|
|
221
|
+
z-index: var(--hai-z-modal, 1100);
|
|
222
|
+
display: block;
|
|
223
|
+
pointer-events: none;
|
|
224
|
+
}
|
|
225
|
+
|
|
238
226
|
.hai-modal__viewport {
|
|
239
227
|
position: fixed;
|
|
240
228
|
inset: 0;
|
|
241
229
|
display: grid;
|
|
242
230
|
place-items: center;
|
|
243
231
|
padding: clamp(1rem, 2.6vw, 2rem);
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
dialog.hai-modal::backdrop {
|
|
232
|
+
pointer-events: auto;
|
|
247
233
|
background: rgb(15 23 42 / 0.26);
|
|
248
|
-
background: color-mix(in srgb, var(--color-base-content)
|
|
234
|
+
background: color-mix(in srgb, var(--color-base-content) 15%, transparent);
|
|
249
235
|
backdrop-filter: blur(2px);
|
|
250
236
|
}
|
|
251
237
|
|
|
@@ -371,7 +357,7 @@
|
|
|
371
357
|
}
|
|
372
358
|
|
|
373
359
|
@media (max-width: 768px) {
|
|
374
|
-
|
|
360
|
+
.hai-modal {
|
|
375
361
|
padding: 0.85rem;
|
|
376
362
|
}
|
|
377
363
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type { ModalProps } from '../../types.js';
|
|
1
|
+
import type { DataAttributes, ModalProps } from '../../types.js';
|
|
2
|
+
type $$ComponentProps = ModalProps & DataAttributes;
|
|
2
3
|
/**
|
|
3
4
|
* Modal
|
|
4
5
|
* 模态框组件,支持 backdrop-blur 和 scale-in 动画。
|
|
5
6
|
*/
|
|
6
|
-
declare const Modal: import("svelte").Component
|
|
7
|
+
declare const Modal: import("svelte").Component<$$ComponentProps, {}, "open">;
|
|
7
8
|
type Modal = ReturnType<typeof Modal>;
|
|
8
9
|
export default Modal;
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
-->
|
|
19
19
|
<script lang='ts'>
|
|
20
20
|
import type { Snippet } from 'svelte'
|
|
21
|
+
import type { DataAttributes } from '../../types.js'
|
|
22
|
+
import { getDataAttributes } from '../../utils.js'
|
|
21
23
|
|
|
22
24
|
interface Props {
|
|
23
25
|
title: string
|
|
@@ -26,10 +28,12 @@
|
|
|
26
28
|
class?: string
|
|
27
29
|
}
|
|
28
30
|
|
|
29
|
-
const { title, description, actions, class: className = '' }: Props = $props()
|
|
31
|
+
const { title, description, actions, class: className = '', ...restProps }: Props & DataAttributes = $props()
|
|
32
|
+
|
|
33
|
+
const dataAttributes = $derived(getDataAttributes(restProps))
|
|
30
34
|
</script>
|
|
31
35
|
|
|
32
|
-
<div class='flex flex-col sm:flex-row sm:items-center justify-between gap-3 mb-5 {className}'>
|
|
36
|
+
<div {...dataAttributes} class='flex flex-col sm:flex-row sm:items-center justify-between gap-3 mb-5 {className}'>
|
|
33
37
|
<div>
|
|
34
38
|
<h1 class='text-xl font-semibold tracking-tight'>{title}</h1>
|
|
35
39
|
{#if description}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { DataAttributes } from '../../types.js';
|
|
2
3
|
interface Props {
|
|
3
4
|
title: string;
|
|
4
5
|
description?: string;
|
|
5
6
|
actions?: Snippet;
|
|
6
7
|
class?: string;
|
|
7
8
|
}
|
|
9
|
+
type $$ComponentProps = Props & DataAttributes;
|
|
8
10
|
/**
|
|
9
11
|
* PageHeader
|
|
10
12
|
* 页面头部组件,包含标题、描述和操作按钮区域。
|
|
@@ -23,6 +25,6 @@ interface Props {
|
|
|
23
25
|
* {/snippet}
|
|
24
26
|
* </PageHeader>
|
|
25
27
|
*/
|
|
26
|
-
declare const PageHeader: import("svelte").Component
|
|
28
|
+
declare const PageHeader: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
27
29
|
type PageHeader = ReturnType<typeof PageHeader>;
|
|
28
30
|
export default PageHeader;
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
=============================================================================
|
|
9
9
|
-->
|
|
10
10
|
<script lang='ts'>
|
|
11
|
-
import type { PaginationProps } from '../../types.js'
|
|
11
|
+
import type { DataAttributes, PaginationProps } from '../../types.js'
|
|
12
12
|
import { uiM } from '../../messages.js'
|
|
13
|
-
import { cn } from '../../utils.js'
|
|
13
|
+
import { cn, getDataAttributes } from '../../utils.js'
|
|
14
14
|
import BareButton from '../primitives/BareButton.svelte'
|
|
15
15
|
|
|
16
16
|
import Input from '../primitives/Input.svelte'
|
|
@@ -29,8 +29,10 @@
|
|
|
29
29
|
class: className = '',
|
|
30
30
|
onchange,
|
|
31
31
|
onpagesizechange,
|
|
32
|
-
|
|
32
|
+
...restProps
|
|
33
|
+
}: PaginationProps & DataAttributes = $props()
|
|
33
34
|
|
|
35
|
+
const dataAttributes = $derived(getDataAttributes(restProps))
|
|
34
36
|
// labels 优先,缺省回退到内置消息 uiM(...)
|
|
35
37
|
|
|
36
38
|
// 计算总页数(至少 1 页,保证分页栏在空数据时仍可渲染)
|
|
@@ -86,7 +88,7 @@
|
|
|
86
88
|
)
|
|
87
89
|
</script>
|
|
88
90
|
|
|
89
|
-
<div class={cn('flex flex-wrap items-center justify-between gap-4', className)}>
|
|
91
|
+
<div {...dataAttributes} class={cn('flex flex-wrap items-center justify-between gap-4', className)}>
|
|
90
92
|
{#if showTotal}
|
|
91
93
|
<span class={tableTextClass}>
|
|
92
94
|
{(labels.total ?? uiM('pagination_total')).replace('{count}', String(total))}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { PaginationProps } from '../../types.js';
|
|
2
|
-
|
|
1
|
+
import type { DataAttributes, PaginationProps } from '../../types.js';
|
|
2
|
+
type $$ComponentProps = PaginationProps & DataAttributes;
|
|
3
|
+
declare const Pagination: import("svelte").Component<$$ComponentProps, {}, "page">;
|
|
3
4
|
type Pagination = ReturnType<typeof Pagination>;
|
|
4
5
|
export default Pagination;
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
=============================================================================
|
|
9
9
|
-->
|
|
10
10
|
<script lang='ts'>
|
|
11
|
-
import type { PopoverProps } from '../../types.js'
|
|
12
|
-
import { cn } from '../../utils.js'
|
|
11
|
+
import type { DataAttributes, PopoverProps } from '../../types.js'
|
|
12
|
+
import { cn, getDataAttributes } from '../../utils.js'
|
|
13
13
|
|
|
14
14
|
let {
|
|
15
15
|
open = $bindable(false),
|
|
@@ -21,8 +21,10 @@
|
|
|
21
21
|
onclose,
|
|
22
22
|
triggerContent,
|
|
23
23
|
children,
|
|
24
|
-
|
|
24
|
+
...restProps
|
|
25
|
+
}: PopoverProps & DataAttributes = $props()
|
|
25
26
|
|
|
27
|
+
const dataAttributes = $derived(getDataAttributes(restProps))
|
|
26
28
|
let triggerElement = $state<HTMLDivElement | null>(null)
|
|
27
29
|
let popoverElement = $state<HTMLDivElement | null>(null)
|
|
28
30
|
|
|
@@ -95,11 +97,11 @@
|
|
|
95
97
|
})
|
|
96
98
|
</script>
|
|
97
99
|
|
|
98
|
-
<div
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
100
|
+
<div {...dataAttributes}
|
|
101
|
+
class={cn('relative inline-block', className)}
|
|
102
|
+
role='group'
|
|
103
|
+
onmouseenter={handleMouseEnter}
|
|
104
|
+
onmouseleave={handleMouseLeave}
|
|
103
105
|
>
|
|
104
106
|
<!-- 触发器 -->
|
|
105
107
|
<div
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { PopoverProps } from '../../types.js';
|
|
2
|
-
|
|
1
|
+
import type { DataAttributes, PopoverProps } from '../../types.js';
|
|
2
|
+
type $$ComponentProps = PopoverProps & DataAttributes;
|
|
3
|
+
declare const Popover: import("svelte").Component<$$ComponentProps, {}, "open">;
|
|
3
4
|
type Popover = ReturnType<typeof Popover>;
|
|
4
5
|
export default Popover;
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
-->
|
|
9
9
|
<script lang='ts'>
|
|
10
10
|
import type { Snippet } from 'svelte'
|
|
11
|
-
import {
|
|
11
|
+
import type { DataAttributes } from '../../types.js'
|
|
12
|
+
import { cn, getDataAttributes } from '../../utils.js'
|
|
12
13
|
|
|
13
14
|
interface Props {
|
|
14
15
|
/** 刷新回调(需返回 Promise) */
|
|
@@ -29,8 +30,10 @@
|
|
|
29
30
|
disabled = false,
|
|
30
31
|
class: className,
|
|
31
32
|
children,
|
|
32
|
-
|
|
33
|
+
...restProps
|
|
34
|
+
}: Props & DataAttributes = $props()
|
|
33
35
|
|
|
36
|
+
const dataAttributes = $derived(getDataAttributes(restProps))
|
|
34
37
|
let pulling = $state(false)
|
|
35
38
|
let refreshing = $state(false)
|
|
36
39
|
let pullDistance = $state(0)
|
|
@@ -71,12 +74,12 @@
|
|
|
71
74
|
}
|
|
72
75
|
</script>
|
|
73
76
|
|
|
74
|
-
<div
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
<div {...dataAttributes}
|
|
78
|
+
class={cn('relative overflow-hidden', className)}
|
|
79
|
+
ontouchstart={handleTouchStart}
|
|
80
|
+
ontouchmove={handleTouchMove}
|
|
81
|
+
ontouchend={handleTouchEnd}
|
|
82
|
+
role='region'
|
|
80
83
|
>
|
|
81
84
|
<!-- 刷新指示器 -->
|
|
82
85
|
<div
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { DataAttributes } from '../../types.js';
|
|
2
3
|
interface Props {
|
|
3
4
|
/** 刷新回调(需返回 Promise) */
|
|
4
5
|
onrefresh?: () => Promise<void>;
|
|
@@ -11,6 +12,7 @@ interface Props {
|
|
|
11
12
|
/** 内容 */
|
|
12
13
|
children: Snippet;
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
+
type $$ComponentProps = Props & DataAttributes;
|
|
16
|
+
declare const PullRefresh: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
15
17
|
type PullRefresh = ReturnType<typeof PullRefresh>;
|
|
16
18
|
export default PullRefresh;
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
=============================================================================
|
|
9
9
|
-->
|
|
10
10
|
<script lang='ts'>
|
|
11
|
-
import type { ResultProps } from '../../types.js'
|
|
12
|
-
import { cn } from '../../utils.js'
|
|
11
|
+
import type { DataAttributes, ResultProps } from '../../types.js'
|
|
12
|
+
import { cn, getDataAttributes } from '../../utils.js'
|
|
13
13
|
|
|
14
14
|
const {
|
|
15
15
|
status = 'info',
|
|
@@ -19,8 +19,10 @@
|
|
|
19
19
|
icon,
|
|
20
20
|
actions,
|
|
21
21
|
children,
|
|
22
|
-
|
|
22
|
+
...restProps
|
|
23
|
+
}: ResultProps & DataAttributes = $props()
|
|
23
24
|
|
|
25
|
+
const dataAttributes = $derived(getDataAttributes(restProps))
|
|
24
26
|
const containerClass = $derived(
|
|
25
27
|
cn(
|
|
26
28
|
'flex flex-col items-center justify-center py-12 text-center',
|
|
@@ -36,7 +38,7 @@
|
|
|
36
38
|
}[status])
|
|
37
39
|
</script>
|
|
38
40
|
|
|
39
|
-
<div class={containerClass}>
|
|
41
|
+
<div {...dataAttributes} class={containerClass}>
|
|
40
42
|
<!-- 图标区域 -->
|
|
41
43
|
<div class='w-20 h-20 mb-6 {iconColor}'>
|
|
42
44
|
{#if icon}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { ResultProps } from '../../types.js';
|
|
2
|
-
|
|
1
|
+
import type { DataAttributes, ResultProps } from '../../types.js';
|
|
2
|
+
type $$ComponentProps = ResultProps & DataAttributes;
|
|
3
|
+
declare const Result: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
3
4
|
type Result = ReturnType<typeof Result>;
|
|
4
5
|
export default Result;
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
-->
|
|
9
9
|
<script lang='ts'>
|
|
10
10
|
import type { Snippet } from 'svelte'
|
|
11
|
-
import {
|
|
11
|
+
import type { DataAttributes } from '../../types.js'
|
|
12
|
+
import { cn, getDataAttributes } from '../../utils.js'
|
|
12
13
|
|
|
13
14
|
interface Props {
|
|
14
15
|
/** 安全区域位置 */
|
|
@@ -23,8 +24,10 @@
|
|
|
23
24
|
position = 'all',
|
|
24
25
|
class: className,
|
|
25
26
|
children,
|
|
26
|
-
|
|
27
|
+
...restProps
|
|
28
|
+
}: Props & DataAttributes = $props()
|
|
27
29
|
|
|
30
|
+
const dataAttributes = $derived(getDataAttributes(restProps))
|
|
28
31
|
const positionClasses = $derived({
|
|
29
32
|
top: 'hai-safe-top',
|
|
30
33
|
bottom: 'hai-safe-bottom',
|
|
@@ -32,6 +35,6 @@
|
|
|
32
35
|
}[position])
|
|
33
36
|
</script>
|
|
34
37
|
|
|
35
|
-
<div class={cn(positionClasses, className)}>
|
|
38
|
+
<div {...dataAttributes} class={cn(positionClasses, className)}>
|
|
36
39
|
{@render children()}
|
|
37
40
|
</div>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { DataAttributes } from '../../types.js';
|
|
2
3
|
interface Props {
|
|
3
4
|
/** 安全区域位置 */
|
|
4
5
|
position?: 'top' | 'bottom' | 'all';
|
|
@@ -7,6 +8,7 @@ interface Props {
|
|
|
7
8
|
/** 内容 */
|
|
8
9
|
children: Snippet;
|
|
9
10
|
}
|
|
10
|
-
|
|
11
|
+
type $$ComponentProps = Props & DataAttributes;
|
|
12
|
+
declare const SafeArea: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
11
13
|
type SafeArea = ReturnType<typeof SafeArea>;
|
|
12
14
|
export default SafeArea;
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
骨架屏占位组件,用于加载状态展示。
|
|
4
4
|
-->
|
|
5
5
|
<script lang='ts'>
|
|
6
|
-
import type { SkeletonProps } from '../../types.js'
|
|
7
|
-
import { cn } from '../../utils.js'
|
|
6
|
+
import type { DataAttributes, SkeletonProps } from '../../types.js'
|
|
7
|
+
import { cn, getDataAttributes } from '../../utils.js'
|
|
8
8
|
|
|
9
9
|
const {
|
|
10
10
|
variant = 'text',
|
|
@@ -14,8 +14,10 @@
|
|
|
14
14
|
animation = true,
|
|
15
15
|
count = 1,
|
|
16
16
|
class: className = '',
|
|
17
|
-
|
|
17
|
+
...restProps
|
|
18
|
+
}: SkeletonProps & DataAttributes = $props()
|
|
18
19
|
|
|
20
|
+
const dataAttributes = $derived(getDataAttributes(restProps))
|
|
19
21
|
const baseClass = $derived(
|
|
20
22
|
cn(
|
|
21
23
|
'skeleton',
|
|
@@ -40,7 +42,7 @@
|
|
|
40
42
|
</script>
|
|
41
43
|
|
|
42
44
|
{#if count > 1}
|
|
43
|
-
<div class='space-y-2'>
|
|
45
|
+
<div {...dataAttributes} class='space-y-2'>
|
|
44
46
|
{#each Array.from({ length: count }) as _, i (i)}
|
|
45
47
|
<div class={baseClass} {style}></div>
|
|
46
48
|
{/each}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type { SkeletonProps } from '../../types.js';
|
|
1
|
+
import type { DataAttributes, SkeletonProps } from '../../types.js';
|
|
2
|
+
type $$ComponentProps = SkeletonProps & DataAttributes;
|
|
2
3
|
/**
|
|
3
4
|
* Skeleton
|
|
4
5
|
* 骨架屏占位组件,用于加载状态展示。
|
|
5
6
|
*/
|
|
6
|
-
declare const Skeleton: import("svelte").Component
|
|
7
|
+
declare const Skeleton: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
7
8
|
type Skeleton = ReturnType<typeof Skeleton>;
|
|
8
9
|
export default Skeleton;
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
=============================================================================
|
|
9
9
|
-->
|
|
10
10
|
<script lang='ts'>
|
|
11
|
-
import type { StepsProps } from '../../types.js'
|
|
12
|
-
import { cn } from '../../utils.js'
|
|
11
|
+
import type { DataAttributes, StepsProps } from '../../types.js'
|
|
12
|
+
import { cn, getDataAttributes } from '../../utils.js'
|
|
13
13
|
|
|
14
14
|
const {
|
|
15
15
|
items = [],
|
|
@@ -19,8 +19,10 @@
|
|
|
19
19
|
clickable = false,
|
|
20
20
|
class: className = '',
|
|
21
21
|
onchange,
|
|
22
|
-
|
|
22
|
+
...restProps
|
|
23
|
+
}: StepsProps & DataAttributes = $props()
|
|
23
24
|
|
|
25
|
+
const dataAttributes = $derived(getDataAttributes(restProps))
|
|
24
26
|
const containerClass = $derived(
|
|
25
27
|
cn(
|
|
26
28
|
'steps',
|
|
@@ -62,7 +64,7 @@
|
|
|
62
64
|
}
|
|
63
65
|
</script>
|
|
64
66
|
|
|
65
|
-
<ul class={containerClass}>
|
|
67
|
+
<ul {...dataAttributes} class={containerClass}>
|
|
66
68
|
{#each items as item, index (index)}
|
|
67
69
|
{#if clickable}
|
|
68
70
|
<!-- svelte-ignore a11y_no_noninteractive_element_to_interactive_role -->
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { StepsProps } from '../../types.js';
|
|
2
|
-
|
|
1
|
+
import type { DataAttributes, StepsProps } from '../../types.js';
|
|
2
|
+
type $$ComponentProps = StepsProps & DataAttributes;
|
|
3
|
+
declare const Steps: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
3
4
|
type Steps = ReturnType<typeof Steps>;
|
|
4
5
|
export default Steps;
|
|
@@ -13,8 +13,9 @@
|
|
|
13
13
|
-->
|
|
14
14
|
<script lang='ts'>
|
|
15
15
|
import type { Snippet } from 'svelte'
|
|
16
|
+
import type { DataAttributes } from '../../types.js'
|
|
16
17
|
import type { SwipeCellAction } from './swipe-cell-types.js'
|
|
17
|
-
import { cn } from '../../utils.js'
|
|
18
|
+
import { cn, getDataAttributes } from '../../utils.js'
|
|
18
19
|
|
|
19
20
|
// eslint-disable-next-line no-import-assign -- type re-export
|
|
20
21
|
export type { SwipeCellAction }
|
|
@@ -38,8 +39,10 @@
|
|
|
38
39
|
disabled = false,
|
|
39
40
|
class: className,
|
|
40
41
|
children,
|
|
41
|
-
|
|
42
|
+
...restProps
|
|
43
|
+
}: Props & DataAttributes = $props()
|
|
42
44
|
|
|
45
|
+
const dataAttributes = $derived(getDataAttributes(restProps))
|
|
43
46
|
let offsetX = $state(0)
|
|
44
47
|
let startX = 0
|
|
45
48
|
let swiping = false
|
|
@@ -82,7 +85,7 @@
|
|
|
82
85
|
}
|
|
83
86
|
</script>
|
|
84
87
|
|
|
85
|
-
<div class={cn('relative overflow-hidden', className)}>
|
|
88
|
+
<div {...dataAttributes} class={cn('relative overflow-hidden', className)}>
|
|
86
89
|
<!-- 内容层 -->
|
|
87
90
|
<div
|
|
88
91
|
class='relative transition-transform'
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { DataAttributes } from '../../types.js';
|
|
2
3
|
import type { SwipeCellAction } from './swipe-cell-types.js';
|
|
3
4
|
interface Props {
|
|
4
5
|
/** 右侧操作列表 */
|
|
@@ -12,7 +13,8 @@ interface Props {
|
|
|
12
13
|
/** 内容 */
|
|
13
14
|
children: Snippet;
|
|
14
15
|
}
|
|
15
|
-
|
|
16
|
+
type $$ComponentProps = Props & DataAttributes;
|
|
17
|
+
declare const SwipeCell: import("svelte").Component<$$ComponentProps, {
|
|
16
18
|
SwipeCellAction: typeof SwipeCellAction;
|
|
17
19
|
}, "">;
|
|
18
20
|
type SwipeCell = ReturnType<typeof SwipeCell>;
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
标签页组件,支持 line/card/pills 三种样式。
|
|
4
4
|
-->
|
|
5
5
|
<script lang='ts'>
|
|
6
|
-
import type { TabsProps } from '../../types.js'
|
|
7
|
-
import { cn } from '../../utils.js'
|
|
6
|
+
import type { DataAttributes, TabsProps } from '../../types.js'
|
|
7
|
+
import { cn, getDataAttributes } from '../../utils.js'
|
|
8
8
|
import BareButton from '../primitives/BareButton.svelte'
|
|
9
9
|
|
|
10
10
|
let {
|
|
@@ -15,8 +15,10 @@
|
|
|
15
15
|
class: className = '',
|
|
16
16
|
onchange,
|
|
17
17
|
children,
|
|
18
|
-
|
|
18
|
+
...restProps
|
|
19
|
+
}: TabsProps & DataAttributes = $props()
|
|
19
20
|
|
|
21
|
+
const dataAttributes = $derived(getDataAttributes(restProps))
|
|
20
22
|
// 默认选中第一个
|
|
21
23
|
$effect(() => {
|
|
22
24
|
if (!active && items.length > 0) {
|
|
@@ -56,7 +58,7 @@
|
|
|
56
58
|
}
|
|
57
59
|
</script>
|
|
58
60
|
|
|
59
|
-
<div role='tablist' class={tabsClass}>
|
|
61
|
+
<div {...dataAttributes} role='tablist' class={tabsClass}>
|
|
60
62
|
{#each items as item (item.key)}
|
|
61
63
|
<BareButton
|
|
62
64
|
role='tab'
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type { TabsProps } from '../../types.js';
|
|
1
|
+
import type { DataAttributes, TabsProps } from '../../types.js';
|
|
2
|
+
type $$ComponentProps = TabsProps & DataAttributes;
|
|
2
3
|
/**
|
|
3
4
|
* Tabs
|
|
4
5
|
* 标签页组件,支持 line/card/pills 三种样式。
|
|
5
6
|
*/
|
|
6
|
-
declare const Tabs: import("svelte").Component
|
|
7
|
+
declare const Tabs: import("svelte").Component<$$ComponentProps, {}, "active">;
|
|
7
8
|
type Tabs = ReturnType<typeof Tabs>;
|
|
8
9
|
export default Tabs;
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
=============================================================================
|
|
9
9
|
-->
|
|
10
10
|
<script lang='ts'>
|
|
11
|
-
import type { TagInputProps } from '../../types.js'
|
|
11
|
+
import type { DataAttributes, TagInputProps } from '../../types.js'
|
|
12
12
|
import { uiM } from '../../messages.js'
|
|
13
|
-
import { cn, getInputSizeClass } from '../../utils.js'
|
|
13
|
+
import { cn, getDataAttributes, getInputSizeClass } from '../../utils.js'
|
|
14
14
|
import BareInput from '../primitives/BareInput.svelte'
|
|
15
15
|
import Tag from '../primitives/Tag.svelte'
|
|
16
16
|
|
|
@@ -23,8 +23,10 @@
|
|
|
23
23
|
size = 'md',
|
|
24
24
|
class: className = '',
|
|
25
25
|
onchange,
|
|
26
|
-
|
|
26
|
+
...restProps
|
|
27
|
+
}: TagInputProps & DataAttributes = $props()
|
|
27
28
|
|
|
29
|
+
const dataAttributes = $derived(getDataAttributes(restProps))
|
|
28
30
|
let inputValue = $state('')
|
|
29
31
|
let inputElement = $state<HTMLInputElement | undefined>(undefined)
|
|
30
32
|
|
|
@@ -77,12 +79,12 @@
|
|
|
77
79
|
}
|
|
78
80
|
</script>
|
|
79
81
|
|
|
80
|
-
<div
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
<div {...dataAttributes}
|
|
83
|
+
class={containerClass}
|
|
84
|
+
onclick={() => inputElement?.focus()}
|
|
85
|
+
onkeydown={e => e.key === 'Enter' && inputElement?.focus()}
|
|
86
|
+
role='textbox'
|
|
87
|
+
tabindex='-1'
|
|
86
88
|
>
|
|
87
89
|
{#each tags as tag, index (index)}
|
|
88
90
|
<Tag
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { TagInputProps } from '../../types.js';
|
|
2
|
-
|
|
1
|
+
import type { DataAttributes, TagInputProps } from '../../types.js';
|
|
2
|
+
type $$ComponentProps = TagInputProps & DataAttributes;
|
|
3
|
+
declare const TagInput: import("svelte").Component<$$ComponentProps, {}, "tags">;
|
|
3
4
|
type TagInput = ReturnType<typeof TagInput>;
|
|
4
5
|
export default TagInput;
|