@indielayer/ui 1.9.3 → 1.10.0
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/docs/components/menu/DocsMenu.vue +1 -0
- package/docs/pages/component/form/usage.vue +2 -0
- package/docs/pages/component/menu/usage.vue +2 -0
- package/docs/pages/component/select/index.vue +7 -0
- package/docs/pages/component/select/multiple.vue +42 -0
- package/docs/pages/component/select/usage.vue +8 -12
- package/docs/pages/component/table/virtual.vue +19 -6
- package/docs/pages/component/toggle/index.vue +1 -1
- package/docs/pages/component/tooltip/index.vue +1 -1
- package/docs/pages/component/upload/index.vue +29 -0
- package/docs/pages/component/upload/usage.vue +115 -0
- package/docs/search/components.json +1 -1
- package/lib/common/icons.d.ts +2 -0
- package/lib/common/icons.js +17 -15
- package/lib/components/checkbox/Checkbox.vue2.js +9 -9
- package/lib/components/datepicker/Datepicker.vue.d.ts +4 -4
- package/lib/components/datepicker/Datepicker.vue.js +1 -1
- package/lib/components/drawer/Drawer.vue.js +1 -17
- package/lib/components/form/Form.vue.d.ts +4 -4
- package/lib/components/form/Form.vue.js +34 -34
- package/lib/components/formGroup/FormGroup.vue.d.ts +1 -1
- package/lib/components/formGroup/FormGroup.vue.js +39 -37
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.js +68 -66
- package/lib/components/label/theme/Label.base.theme.js +7 -7
- package/lib/components/menu/Menu.vue.d.ts +2 -0
- package/lib/components/menu/MenuItem.vue.d.ts +15 -3
- package/lib/components/menu/MenuItem.vue.js +1 -1
- package/lib/components/menu/MenuItem.vue2.js +43 -37
- package/lib/components/modal/Modal.vue.d.ts +4 -4
- package/lib/components/modal/Modal.vue.js +38 -34
- package/lib/components/notifications/Notifications.vue.d.ts +15 -0
- package/lib/components/notifications/Notifications.vue.js +149 -127
- package/lib/components/progress/Progress.vue.d.ts +4 -4
- package/lib/components/progress/Progress.vue.js +7 -7
- package/lib/components/scroll/Scroll.vue2.js +1 -1
- package/lib/components/select/Select.vue.d.ts +43 -1
- package/lib/components/select/Select.vue.js +358 -258
- package/lib/components/select/theme/Select.base.theme.js +1 -0
- package/lib/components/tab/Tab.vue.js +1 -1
- package/lib/components/tab/TabGroup.vue.js +2 -2
- package/lib/components/table/TableCell.vue.d.ts +1 -1
- package/lib/components/tag/Tag.vue.js +23 -21
- package/lib/components/textarea/Textarea.vue.js +1 -1
- package/lib/components/upload/Upload.vue.d.ts +195 -0
- package/lib/components/upload/Upload.vue.js +264 -0
- package/lib/components/upload/Upload.vue2.js +4 -0
- package/lib/components/upload/__tests__/Upload.spec.d.ts +1 -0
- package/lib/components/upload/index.d.ts +2 -0
- package/lib/components/upload/theme/Upload.base.theme.d.ts +3 -0
- package/lib/components/upload/theme/Upload.base.theme.js +8 -0
- package/lib/components/upload/theme/Upload.carbon.theme.d.ts +3 -0
- package/lib/components/upload/theme/Upload.carbon.theme.js +5 -0
- package/lib/composables/useVirtualList.js +56 -53
- package/lib/index.js +43 -41
- package/lib/index.umd.js +4 -4
- package/lib/node_modules/.pnpm/@vueuse_core@11.1.0_vue@3.5.10_typescript@5.2.2_/node_modules/@vueuse/core/index.js +501 -0
- package/lib/node_modules/.pnpm/@vueuse_shared@11.1.0_vue@3.5.10_typescript@5.2.2_/node_modules/@vueuse/shared/index.js +96 -0
- package/lib/theme.d.ts +2 -1
- package/lib/themes/base/components.d.ts +1 -0
- package/lib/themes/base/components.js +23 -21
- package/lib/themes/carbon/components.d.ts +1 -0
- package/lib/themes/carbon/components.js +23 -21
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +3 -3
- package/src/common/icons.ts +2 -0
- package/src/components/checkbox/Checkbox.vue +5 -5
- package/src/components/drawer/Drawer.vue +0 -16
- package/src/components/form/Form.vue +10 -4
- package/src/components/formGroup/FormGroup.vue +2 -0
- package/src/components/index.ts +1 -0
- package/src/components/label/theme/Label.base.theme.ts +7 -5
- package/src/components/menu/Menu.vue +2 -0
- package/src/components/menu/MenuItem.vue +8 -6
- package/src/components/modal/Modal.vue +6 -1
- package/src/components/notifications/Notifications.vue +34 -4
- package/src/components/progress/Progress.vue +2 -2
- package/src/components/select/Select.vue +165 -67
- package/src/components/select/theme/Select.base.theme.ts +2 -0
- package/src/components/tag/Tag.vue +11 -9
- package/src/components/upload/Upload.vue +365 -0
- package/src/components/upload/__tests__/Upload.spec.ts +11 -0
- package/src/components/upload/index.ts +2 -0
- package/src/components/upload/theme/Upload.base.theme.ts +9 -0
- package/src/components/upload/theme/Upload.carbon.theme.ts +7 -0
- package/src/composables/useInputtable.ts +1 -1
- package/src/composables/useVirtualList.ts +8 -5
- package/src/theme.ts +2 -0
- package/src/themes/base/components.ts +1 -0
- package/src/themes/carbon/components.ts +1 -0
- package/src/version.ts +1 -1
- package/volar.d.ts +1 -0
- package/lib/node_modules/.pnpm/@vueuse_core@10.2.0_vue@3.5.10_typescript@5.2.2_/node_modules/@vueuse/core/index.js +0 -412
- package/lib/node_modules/.pnpm/@vueuse_shared@10.2.0_vue@3.5.10_typescript@5.2.2_/node_modules/@vueuse/shared/index.js +0 -90
|
@@ -39,7 +39,9 @@ function onSubmit(isValid: string) {
|
|
|
39
39
|
:rules="[rules.isRequired, rules.isEmail]"
|
|
40
40
|
name="email"
|
|
41
41
|
label="Email"
|
|
42
|
+
required
|
|
42
43
|
placeholder="Enter your email"
|
|
44
|
+
tooltip="We will never share your email with anyone"
|
|
43
45
|
/>
|
|
44
46
|
<x-input
|
|
45
47
|
v-model="password"
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
import { XSelect } from '@indielayer/ui'
|
|
3
3
|
import UsageDemoCode from './usage.vue?raw'
|
|
4
4
|
import UsageDemo from './usage.vue'
|
|
5
|
+
import MultipleDemoCode from './multiple.vue?raw'
|
|
6
|
+
import MultipleDemo from './multiple.vue'
|
|
5
7
|
import SizeDemoCode from './size.vue?raw'
|
|
6
8
|
import SizeDemo from './size.vue'
|
|
7
9
|
import StatesDemoCode from './states.vue?raw'
|
|
@@ -15,6 +17,11 @@ const demos = [{
|
|
|
15
17
|
description: '',
|
|
16
18
|
code: UsageDemoCode,
|
|
17
19
|
component: UsageDemo,
|
|
20
|
+
}, {
|
|
21
|
+
name: 'Multiple',
|
|
22
|
+
description: '',
|
|
23
|
+
code: MultipleDemoCode,
|
|
24
|
+
component: MultipleDemo,
|
|
18
25
|
}, {
|
|
19
26
|
name: 'Size',
|
|
20
27
|
description: '',
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { ref } from 'vue'
|
|
3
|
+
|
|
4
|
+
const selectedMultiple = ref<string[]>(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M'])
|
|
5
|
+
|
|
6
|
+
const options = ref([
|
|
7
|
+
{ value: 'A', label: 'Option lorem ipsum' },
|
|
8
|
+
{ value: 'B', label: 'Option B ipsum' },
|
|
9
|
+
{ value: 'C', label: 'Option C lorem ipsum' },
|
|
10
|
+
{ value: 'D', label: 'D' },
|
|
11
|
+
{ value: 'E', label: 'E ipsum' },
|
|
12
|
+
{ value: 'F', label: 'Option F' },
|
|
13
|
+
{ value: 'G', label: 'Option lorem ipsum qoiwjdoqiwjdoqiwjdoqiwjdoi' },
|
|
14
|
+
{ value: 'H', label: 'Option H' },
|
|
15
|
+
{ value: 'I', label: 'lorem ipsum dolo' },
|
|
16
|
+
{ value: 'J', label: 'Option J' },
|
|
17
|
+
{ value: 'K', label: 'Option K' },
|
|
18
|
+
{ value: 'L', label: 'consectetur adipi' },
|
|
19
|
+
{ value: 'M', label: 'Option M' },
|
|
20
|
+
])
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<template>
|
|
24
|
+
<div class="grid md:grid-cols-2 gap-4">
|
|
25
|
+
<x-select
|
|
26
|
+
v-model="selectedMultiple"
|
|
27
|
+
label="Multi select"
|
|
28
|
+
placeholder="Multiple"
|
|
29
|
+
:options="options"
|
|
30
|
+
filterable
|
|
31
|
+
multiple
|
|
32
|
+
/>
|
|
33
|
+
<x-select
|
|
34
|
+
v-model="selectedMultiple"
|
|
35
|
+
label="Multi select - truncate"
|
|
36
|
+
placeholder="Multiple"
|
|
37
|
+
:options="options"
|
|
38
|
+
multiple
|
|
39
|
+
truncate
|
|
40
|
+
/>
|
|
41
|
+
</div>
|
|
42
|
+
</template>
|
|
@@ -3,10 +3,10 @@ import { ref } from 'vue'
|
|
|
3
3
|
|
|
4
4
|
const selected = ref<undefined | string>()
|
|
5
5
|
const selected2 = ref<undefined | string>()
|
|
6
|
-
const selectedMultiple = ref<string[]>(['A', 'B'])
|
|
7
6
|
const options = ref([
|
|
8
|
-
{ value: 'A', label: 'Option A'
|
|
7
|
+
{ value: 'A', label: 'Option A' },
|
|
9
8
|
{ value: 'B', label: 'Option B' },
|
|
9
|
+
{ value: 'C', label: 'Option C' },
|
|
10
10
|
])
|
|
11
11
|
|
|
12
12
|
// function to generate
|
|
@@ -14,7 +14,7 @@ function genOptions(x: number) {
|
|
|
14
14
|
const options = []
|
|
15
15
|
|
|
16
16
|
for (let i = 0; i < x; i++) {
|
|
17
|
-
options.push({ value: i.toString(), label: 'Option ' + i })
|
|
17
|
+
options.push({ value: i.toString(), label: 'Option ' + i, suffix: i })
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
return options
|
|
@@ -42,14 +42,10 @@ const options2 = ref(genOptions(1000))
|
|
|
42
42
|
virtual-list
|
|
43
43
|
:virtual-list-item-height="33"
|
|
44
44
|
:options="options2"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
:options="options"
|
|
51
|
-
filterable
|
|
52
|
-
multiple
|
|
53
|
-
/>
|
|
45
|
+
>
|
|
46
|
+
<template #suffix="{ item }">
|
|
47
|
+
<span class="text-secondary-400 text-xs font-mono w-2">#{{ item.suffix }}</span>
|
|
48
|
+
</template>
|
|
49
|
+
</x-select>
|
|
54
50
|
</div>
|
|
55
51
|
</template>
|
|
@@ -3,11 +3,12 @@ import { type TableHeader } from '@indielayer/ui'
|
|
|
3
3
|
import { computed, ref } from 'vue'
|
|
4
4
|
|
|
5
5
|
const headers: TableHeader[] = [
|
|
6
|
-
{ text: '#', value: 'id', sortable: true, align: 'center' },
|
|
7
|
-
{ text: 'Title', value: 'title' },
|
|
8
|
-
{ text: 'Description', value: 'description' },
|
|
9
|
-
{ text: 'Published', value: 'published' },
|
|
6
|
+
{ text: '#', value: 'id', sortable: true, align: 'center', width: 50 },
|
|
7
|
+
{ text: 'Title', value: 'title', width: 120, truncate: true },
|
|
8
|
+
{ text: 'Description', value: 'description', width: 240, truncate: true },
|
|
9
|
+
{ text: 'Published', value: 'published', width: 140, truncate: true },
|
|
10
10
|
{ text: 'Status', value: 'status' },
|
|
11
|
+
{ value: 'action', align: 'right' },
|
|
11
12
|
]
|
|
12
13
|
|
|
13
14
|
const sort = ref([])
|
|
@@ -43,11 +44,23 @@ const items = ref(generateItems(1000))
|
|
|
43
44
|
<x-card>
|
|
44
45
|
<x-table
|
|
45
46
|
v-model:sort="sort"
|
|
46
|
-
class="!h-80"
|
|
47
47
|
:headers="headers"
|
|
48
48
|
:items="itemsSorted"
|
|
49
|
+
class="!h-80"
|
|
50
|
+
fixed
|
|
49
51
|
virtual-list
|
|
50
52
|
:virtual-list-item-height="54"
|
|
51
|
-
|
|
53
|
+
>
|
|
54
|
+
<template #item-action="{ item }">
|
|
55
|
+
<x-button
|
|
56
|
+
icon="x"
|
|
57
|
+
light
|
|
58
|
+
outlined
|
|
59
|
+
color="error"
|
|
60
|
+
size="xs"
|
|
61
|
+
@click="items = items.filter((i) => i.id !== item.id)"
|
|
62
|
+
/>
|
|
63
|
+
</template>
|
|
64
|
+
</x-table>
|
|
52
65
|
</x-card>
|
|
53
66
|
</template>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { XUpload } from '@indielayer/ui'
|
|
3
|
+
import UsageDemoCode from './usage.vue?raw'
|
|
4
|
+
import UsageDemo from './usage.vue'
|
|
5
|
+
|
|
6
|
+
const title = 'Upload'
|
|
7
|
+
const description = 'The upload component is used to upload files.'
|
|
8
|
+
const components = [XUpload]
|
|
9
|
+
const demos = [{
|
|
10
|
+
name: 'Usage',
|
|
11
|
+
description: '',
|
|
12
|
+
code: UsageDemoCode,
|
|
13
|
+
component: UsageDemo,
|
|
14
|
+
}]
|
|
15
|
+
const back = 'toggle'
|
|
16
|
+
const next = 'accordion'
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<document-page
|
|
21
|
+
github="https://github.com/indielayer/ui/blob/main/packages/ui/docs/pages/component/upload"
|
|
22
|
+
:title="title"
|
|
23
|
+
:description="description"
|
|
24
|
+
:components="components"
|
|
25
|
+
:demos="demos"
|
|
26
|
+
:back="back"
|
|
27
|
+
:next="next"
|
|
28
|
+
/>
|
|
29
|
+
</template>
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { ref } from 'vue'
|
|
3
|
+
import { useNotifications, type UploadFile } from '@indielayer/ui'
|
|
4
|
+
|
|
5
|
+
const notifications = useNotifications()
|
|
6
|
+
|
|
7
|
+
const imageFiles = ref<UploadFile[]>([])
|
|
8
|
+
const jsonFile = ref<UploadFile[]>([])
|
|
9
|
+
|
|
10
|
+
const rules = {
|
|
11
|
+
isRequired: (v: string) => {
|
|
12
|
+
if (Array.isArray(v)) return !!v.length || 'Field is required'
|
|
13
|
+
|
|
14
|
+
return !!v || 'Field is required'
|
|
15
|
+
},
|
|
16
|
+
isValidUpload: (v: UploadFile[]) => {
|
|
17
|
+
if (!v || !v.length) return 'Field is required'
|
|
18
|
+
if (v.some((file) => file.error)) return 'File upload has errors.'
|
|
19
|
+
|
|
20
|
+
return v.every((file) => file.completed) || 'File upload is not completed.'
|
|
21
|
+
},
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const previewImg = ref<string>()
|
|
25
|
+
|
|
26
|
+
function onChangeImage(event: Event) {
|
|
27
|
+
const target = event.target as HTMLInputElement
|
|
28
|
+
const files = target.files as FileList
|
|
29
|
+
|
|
30
|
+
if (!files || files.length === 0) return
|
|
31
|
+
|
|
32
|
+
const file = files[0]
|
|
33
|
+
|
|
34
|
+
// set preview image
|
|
35
|
+
const reader = new FileReader()
|
|
36
|
+
|
|
37
|
+
reader.onload = (e) => {
|
|
38
|
+
previewImg.value = reader.result as string
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
reader.readAsDataURL(file)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function onUploadComplete(response: any) {
|
|
45
|
+
console.log('onUploadComplete', response)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const jsonFileOutput = ref<string>()
|
|
49
|
+
|
|
50
|
+
function onChangeJSON(event: Event) {
|
|
51
|
+
const target = event.target as HTMLInputElement
|
|
52
|
+
const files = target.files as FileList
|
|
53
|
+
|
|
54
|
+
if (!files || files.length === 0) return
|
|
55
|
+
|
|
56
|
+
const fileReader = new FileReader()
|
|
57
|
+
|
|
58
|
+
fileReader.onloadend = (e) => {
|
|
59
|
+
try {
|
|
60
|
+
jsonFileOutput.value = fileReader.result?.toString() || ''
|
|
61
|
+
} catch (error) {
|
|
62
|
+
notifications?.error('Invalid file!')
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
fileReader.readAsText(files[0])
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function onSubmit(isValid: boolean) {
|
|
70
|
+
if (!isValid) return
|
|
71
|
+
|
|
72
|
+
notifications?.success('Valid! Submitted.')
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const action = 'https://run.mocky.io/v3/6904ae0b-3cfa-4ae1-bbf2-243a4dd32a3c'
|
|
76
|
+
</script>
|
|
77
|
+
|
|
78
|
+
<template>
|
|
79
|
+
<div >
|
|
80
|
+
<x-form @submit="onSubmit">
|
|
81
|
+
<div class="grid md:grid-cols-2 gap-2">
|
|
82
|
+
<x-upload
|
|
83
|
+
v-model="imageFiles"
|
|
84
|
+
|
|
85
|
+
:action="action"
|
|
86
|
+
method="POST"
|
|
87
|
+
:with-credentials="false"
|
|
88
|
+
:rules="[rules.isValidUpload]"
|
|
89
|
+
|
|
90
|
+
placeholder="Upload game title cover image"
|
|
91
|
+
max-file-size="2000000"
|
|
92
|
+
label="Cover Image"
|
|
93
|
+
tooltip="Title cover image should be 16:9 aspect ratio and max 2MB"
|
|
94
|
+
helper="Title cover image should be 16:9 aspect ratio and max 2MB"
|
|
95
|
+
@upload="onUploadComplete"
|
|
96
|
+
@change="onChangeImage"
|
|
97
|
+
/>
|
|
98
|
+
<x-upload
|
|
99
|
+
v-model="jsonFile"
|
|
100
|
+
placeholder="Upload your json file"
|
|
101
|
+
label="JSON File"
|
|
102
|
+
accept=".json"
|
|
103
|
+
:rules="[rules.isRequired]"
|
|
104
|
+
helper="JSON file"
|
|
105
|
+
@change="onChangeJSON"
|
|
106
|
+
/>
|
|
107
|
+
</div>
|
|
108
|
+
<x-button type="submit">Submit</x-button>
|
|
109
|
+
</x-form>
|
|
110
|
+
<div v-if="previewImg">
|
|
111
|
+
<h2>Preview Image</h2>
|
|
112
|
+
<img :src="previewImg" alt="preview" class="max-w-lg max-h-96" />
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
</template>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"Accordion","description":"Accordion","url":"/component/accordion"},{"name":"Alert","description":"Alerts are used to communicate a state that affects a system, feature or page.","url":"/component/alert"},{"name":"Avatar","description":"Avatars are used to represent a user.","url":"/component/avatar"},{"name":"Badge","description":"Badges are used to display a small amount of information.","url":"/component/badge"},{"name":"Breadcrumbs","description":"Breadcrumbs are used to indicate the current page\\","url":"/component/breadcrumbs"},{"name":"Button","description":"Used to trigger an action, such as submitting a form, opening a menu, or performing a command.","url":"/component/button"},{"name":"Card","description":"Cards are used to display content in an organized manner.","url":"/component/card"},{"name":"Carousel","description":"A carousel is a rotating set of images.","url":"/component/carousel"},{"name":"Checkbox","description":"Checkboxes allow the user to select one or more items from a set. Checkboxes can be used to turn an option on or off.","url":"/component/checkbox"},{"name":"Container","description":"Containers are used to wrap content in an organized manner.","url":"/component/container"},{"name":"Datepicker","description":"The datepicker component is used to select a date or time.","url":"/component/datepicker"},{"name":"Divider","description":"Dividers are used to separate content.","url":"/component/divider"},{"name":"Drawer","description":"Drawers are used to display content in a side panel.","url":"/component/drawer"},{"name":"Form","description":"Forms are used to collect user input.","url":"/component/form"},{"name":"FormGroup","description":"A form group is a wrapper for form elements.","url":"/component/formGroup"},{"name":"Icon","description":"Icons are used to represent an action or an object.","url":"/component/icon"},{"name":"Image","description":"Image is used to load an image file with a skeleton as placeholder and on load display the image.","url":"/component/image"},{"name":"Input","description":"This is a text input component that allows users to enter and edit text.","url":"/component/input"},{"name":"Link","description":"Links are used to navigate to a different page.","url":"/component/link"},{"name":"Loader","description":"Loader component is used to show a loading state.","url":"/component/loader"},{"name":"Menu","description":"Menus are used to display a list of options.","url":"/component/menu"},{"name":"Modal","description":"Modals are used to display content on top of the current page.","url":"/component/modal"},{"name":"Notifications","description":"Notifications are used to display a message to the user.","url":"/component/notifications"},{"name":"Pagination","description":"Pagination is used to navigate through a list of items.","url":"/component/pagination"},{"name":"Popover","description":"Popover is used to display content in a small overlay.","url":"/component/popover"},{"name":"Progress","description":"Progress is used to show the progress of an operation.","url":"/component/progress"},{"name":"QR Code","description":"The QR Code component is used to generate a QR code.","url":"/component/qrCode"},{"name":"Radio","description":"Radios allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side-by-side.","url":"/component/radio"},{"name":"Scroll","description":"Scroll is used to scroll through a list of items with added features like inner shadows to indicate there is more to scroll.","url":"/component/scroll"},{"name":"Select","description":"Selects allow the user to select one or more options from a set.","url":"/component/select"},{"name":"Skeleton","description":"Skeletons are used to display a loading state.","url":"/component/skeleton"},{"name":"Slider","description":"Sliders are used to select a value from a range.","url":"/component/slider"},{"name":"Spacer","description":"Spacer is used to add space between elements inside a display flex wrapper.","url":"/component/spacer"},{"name":"Spinner","description":"Spinners are used to indicate that an operation is in progress.","url":"/component/spinner"},{"name":"Stepper","description":"Stepper is a navigation component that guides users through the steps of a task.","url":"/component/stepper"},{"name":"Table","description":"Tables are used to display data in a tabular format.","url":"/component/table"},{"name":"Tabs","description":"Tabs are used to navigate through a set of views.","url":"/component/tabs"},{"name":"Tag","description":"Tags are used to display a label.","url":"/component/tag"},{"name":"Textarea","description":"Textareas allow the user to enter text.","url":"/component/textarea"},{"name":"Toggle","description":"Toggles are used to switch between two states.","url":"/component/toggle"},{"name":"Tooltip","description":"Tooltips are used to display a message when hovering over an element.","url":"/component/tooltip"}]
|
|
1
|
+
[{"name":"Accordion","description":"Accordion","url":"/component/accordion"},{"name":"Alert","description":"Alerts are used to communicate a state that affects a system, feature or page.","url":"/component/alert"},{"name":"Avatar","description":"Avatars are used to represent a user.","url":"/component/avatar"},{"name":"Badge","description":"Badges are used to display a small amount of information.","url":"/component/badge"},{"name":"Breadcrumbs","description":"Breadcrumbs are used to indicate the current page\\","url":"/component/breadcrumbs"},{"name":"Button","description":"Used to trigger an action, such as submitting a form, opening a menu, or performing a command.","url":"/component/button"},{"name":"Card","description":"Cards are used to display content in an organized manner.","url":"/component/card"},{"name":"Carousel","description":"A carousel is a rotating set of images.","url":"/component/carousel"},{"name":"Checkbox","description":"Checkboxes allow the user to select one or more items from a set. Checkboxes can be used to turn an option on or off.","url":"/component/checkbox"},{"name":"Container","description":"Containers are used to wrap content in an organized manner.","url":"/component/container"},{"name":"Datepicker","description":"The datepicker component is used to select a date or time.","url":"/component/datepicker"},{"name":"Divider","description":"Dividers are used to separate content.","url":"/component/divider"},{"name":"Drawer","description":"Drawers are used to display content in a side panel.","url":"/component/drawer"},{"name":"Form","description":"Forms are used to collect user input.","url":"/component/form"},{"name":"FormGroup","description":"A form group is a wrapper for form elements.","url":"/component/formGroup"},{"name":"Icon","description":"Icons are used to represent an action or an object.","url":"/component/icon"},{"name":"Image","description":"Image is used to load an image file with a skeleton as placeholder and on load display the image.","url":"/component/image"},{"name":"Input","description":"This is a text input component that allows users to enter and edit text.","url":"/component/input"},{"name":"Link","description":"Links are used to navigate to a different page.","url":"/component/link"},{"name":"Loader","description":"Loader component is used to show a loading state.","url":"/component/loader"},{"name":"Menu","description":"Menus are used to display a list of options.","url":"/component/menu"},{"name":"Modal","description":"Modals are used to display content on top of the current page.","url":"/component/modal"},{"name":"Notifications","description":"Notifications are used to display a message to the user.","url":"/component/notifications"},{"name":"Pagination","description":"Pagination is used to navigate through a list of items.","url":"/component/pagination"},{"name":"Popover","description":"Popover is used to display content in a small overlay.","url":"/component/popover"},{"name":"Progress","description":"Progress is used to show the progress of an operation.","url":"/component/progress"},{"name":"QR Code","description":"The QR Code component is used to generate a QR code.","url":"/component/qrCode"},{"name":"Radio","description":"Radios allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side-by-side.","url":"/component/radio"},{"name":"Scroll","description":"Scroll is used to scroll through a list of items with added features like inner shadows to indicate there is more to scroll.","url":"/component/scroll"},{"name":"Select","description":"Selects allow the user to select one or more options from a set.","url":"/component/select"},{"name":"Skeleton","description":"Skeletons are used to display a loading state.","url":"/component/skeleton"},{"name":"Slider","description":"Sliders are used to select a value from a range.","url":"/component/slider"},{"name":"Spacer","description":"Spacer is used to add space between elements inside a display flex wrapper.","url":"/component/spacer"},{"name":"Spinner","description":"Spinners are used to indicate that an operation is in progress.","url":"/component/spinner"},{"name":"Stepper","description":"Stepper is a navigation component that guides users through the steps of a task.","url":"/component/stepper"},{"name":"Table","description":"Tables are used to display data in a tabular format.","url":"/component/table"},{"name":"Tabs","description":"Tabs are used to navigate through a set of views.","url":"/component/tabs"},{"name":"Tag","description":"Tags are used to display a label.","url":"/component/tag"},{"name":"Textarea","description":"Textareas allow the user to enter text.","url":"/component/textarea"},{"name":"Toggle","description":"Toggles are used to switch between two states.","url":"/component/toggle"},{"name":"Tooltip","description":"Tooltips are used to display a message when hovering over an element.","url":"/component/tooltip"},{"name":"Upload","description":"The upload component is used to upload files.","url":"/component/upload"}]
|
package/lib/common/icons.d.ts
CHANGED
|
@@ -16,3 +16,5 @@ export declare const externalIcon = "<line x1=\"7\" y1=\"17\" x2=\"17\" y2=\"7\"
|
|
|
16
16
|
export declare const stepperPristineIcon = "<path d=\"M7.5 4.21v.01M4.21 7.5v.01M3 12v.01m1.21 4.49v.01m3.29 3.28v.01M12 21v.01m4.5-1.22v.01m3.29-3.3v.01M21 12v.01M19.79 7.5v.01m-3.29-3.3v.01M12 3v.01\"/>";
|
|
17
17
|
export declare const stepperIncompleteIcon = "<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" fill=\"currentColor\" viewBox=\"0 0 32 32\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M23.7642 6.8593l1.2851-1.5315A13.976 13.976 0 0020.8672 2.887l-.6836 1.8776A11.9729 11.9729 0 0123.7642 6.8593zM27.81 14l1.9677-.4128A13.8888 13.8888 0 0028.14 9.0457L26.4087 10A12.52 12.52 0 0127.81 14zM20.1836 27.2354l.6836 1.8776a13.976 13.976 0 004.1821-2.4408l-1.2851-1.5315A11.9729 11.9729 0 0120.1836 27.2354zM26.4087 22L28.14 23a14.14 14.14 0 001.6382-4.5872L27.81 18.0659A12.1519 12.1519 0 0126.4087 22zM16 30V2a14 14 0 000 28z\"></path></svg>";
|
|
18
18
|
export declare const chevronDownIcon = "<path d=\"M19 9l-7 7-7-7\" />";
|
|
19
|
+
export declare const uploadIcon = "<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"17 8 12 3 7 8\"></polyline><line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\"></line>";
|
|
20
|
+
export declare const fileIcon = "<path d=\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"></path><polyline points=\"13 2 13 9 20 9\"></polyline>";
|
package/lib/common/icons.js
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
const
|
|
1
|
+
const n = '<path d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />', o = '<path d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />', t = '<path d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />', c = '<path d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />', a = '<path d="M6 18L18 6M6 6l12 12" />', e = '<path d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" />', l = '<path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" /><path d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z" />', p = '<path d="M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21" />', M = '<path d="M5 12h.01M12 12h.01M19 12h.01M6 12a1 1 0 11-2 0 1 1 0 012 0zm7 0a1 1 0 11-2 0 1 1 0 012 0zm7 0a1 1 0 11-2 0 1 1 0 012 0z" />', s = '<path d="M15 19l-7-7 7-7" />', h = '<path d="M9 5l7 7-7 7" />', v = '<path d="M5 13l4 4L19 7" />', d = '<path d="M8 9l4-4 4 4m0 6l-4 4-4-4" />', i = '<line x1="7" y1="17" x2="17" y2="7" /><polyline points="7 7 17 7 17 17" />', m = '<path d="M7.5 4.21v.01M4.21 7.5v.01M3 12v.01m1.21 4.49v.01m3.29 3.28v.01M12 21v.01m4.5-1.22v.01m3.29-3.3v.01M21 12v.01M19.79 7.5v.01m-3.29-3.3v.01M12 3v.01"/>', r = '<svg focusable="false" preserveAspectRatio="xMidYMid meet" fill="currentColor" viewBox="0 0 32 32" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><path d="M23.7642 6.8593l1.2851-1.5315A13.976 13.976 0 0020.8672 2.887l-.6836 1.8776A11.9729 11.9729 0 0123.7642 6.8593zM27.81 14l1.9677-.4128A13.8888 13.8888 0 0028.14 9.0457L26.4087 10A12.52 12.52 0 0127.81 14zM20.1836 27.2354l.6836 1.8776a13.976 13.976 0 004.1821-2.4408l-1.2851-1.5315A11.9729 11.9729 0 0120.1836 27.2354zM26.4087 22L28.14 23a14.14 14.14 0 001.6382-4.5872L27.81 18.0659A12.1519 12.1519 0 0126.4087 22zM16 30V2a14 14 0 000 28z"></path></svg>', I = '<path d="M19 9l-7 7-7-7" />', z = '<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="17 8 12 3 7 8"></polyline><line x1="12" y1="3" x2="12" y2="15"></line>', y = '<path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline>';
|
|
2
2
|
export {
|
|
3
|
-
|
|
3
|
+
e as avatarIcon,
|
|
4
4
|
v as checkIcon,
|
|
5
|
-
|
|
5
|
+
I as chevronDownIcon,
|
|
6
6
|
a as closeIcon,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
M as dotsIcon,
|
|
8
|
+
t as errorIcon,
|
|
9
|
+
i as externalIcon,
|
|
10
|
+
l as eyeIcon,
|
|
11
|
+
p as eyeVisibleIcon,
|
|
12
|
+
y as fileIcon,
|
|
13
|
+
n as infoIcon,
|
|
14
|
+
h as nextIcon,
|
|
15
|
+
s as prevIcon,
|
|
15
16
|
d as selectIcon,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
r as stepperIncompleteIcon,
|
|
18
|
+
m as stepperPristineIcon,
|
|
19
|
+
o as successIcon,
|
|
20
|
+
z as uploadIcon,
|
|
21
|
+
c as warningIcon
|
|
20
22
|
};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { defineComponent as R, ref as w, watch as m, unref as o, openBlock as i, createElementBlock as p, normalizeStyle as T, normalizeClass as u, createElementVNode as d, withKeys as H, withModifiers as O, withDirectives as U, mergeProps as X, toHandlers as j, vModelCheckbox as J, createBlock as V, renderSlot as C, toDisplayString as Q, createCommentVNode as W } from "vue";
|
|
2
|
-
import {
|
|
2
|
+
import { useColors as Y } from "../../composables/useColors.js";
|
|
3
3
|
import { useCommon as I } from "../../composables/useCommon.js";
|
|
4
|
-
import { useColors as Z } from "../../composables/useColors.js";
|
|
5
|
-
import { useInteractive as z } from "../../composables/useInteractive.js";
|
|
6
4
|
import { useInputtable as f } from "../../composables/useInputtable.js";
|
|
7
|
-
import
|
|
8
|
-
import
|
|
5
|
+
import { useInteractive as z } from "../../composables/useInteractive.js";
|
|
6
|
+
import { useTheme as Z } from "../../composables/useTheme.js";
|
|
7
|
+
import x from "../inputFooter/InputFooter.vue.js";
|
|
8
|
+
import _ from "../spinner/Spinner.vue.js";
|
|
9
9
|
const ee = ["onKeypress"], se = ["id", "name", "aria-checked", "aria-disabled", "disabled", "required"], le = {
|
|
10
10
|
key: 1,
|
|
11
11
|
name: "check-icon",
|
|
12
12
|
class: "w-2/3 h-[2px] bg-white dark:bg-secondary-900"
|
|
13
13
|
}, ae = ["textContent"], oe = {
|
|
14
14
|
...I.props(),
|
|
15
|
-
...
|
|
15
|
+
...Y.props("primary"),
|
|
16
16
|
...z.props(),
|
|
17
17
|
...f.props(),
|
|
18
18
|
value: [String, Number],
|
|
@@ -73,7 +73,7 @@ const ee = ["onKeypress"], se = ["id", "name", "aria-checked", "aria-disabled",
|
|
|
73
73
|
l.validateOnInput && !q.value && k(l.modelValue);
|
|
74
74
|
}, 0);
|
|
75
75
|
}
|
|
76
|
-
}, { styles: M, classes: t, className: D } =
|
|
76
|
+
}, { styles: M, classes: t, className: D } = Z("Checkbox", {}, l, { checked: a, isInsideForm: S, isInsideFormGroup: c });
|
|
77
77
|
return B({ focus: h, blur: F, toggle: y, reset: E, validate: k, setError: K }), (e, s) => (i(), p("label", {
|
|
78
78
|
style: T(o(M)),
|
|
79
79
|
class: u([
|
|
@@ -107,7 +107,7 @@ const ee = ["onKeypress"], se = ["id", "name", "aria-checked", "aria-disabled",
|
|
|
107
107
|
[e.glow && !e.disabled && !e.loading ? e.$style["checkbox--glow"] : ""]
|
|
108
108
|
])
|
|
109
109
|
}, [
|
|
110
|
-
e.loading ? (i(), V(
|
|
110
|
+
e.loading ? (i(), V(_, {
|
|
111
111
|
key: 0,
|
|
112
112
|
size: e.size,
|
|
113
113
|
class: "absolute"
|
|
@@ -129,7 +129,7 @@ const ee = ["onKeypress"], se = ["id", "name", "aria-checked", "aria-disabled",
|
|
|
129
129
|
}, null, 8, ae)) : C(e.$slots, "default", { key: 1 })
|
|
130
130
|
], 2)
|
|
131
131
|
], 42, ee),
|
|
132
|
-
o(N) ? W("", !0) : (i(), V(
|
|
132
|
+
o(N) ? W("", !0) : (i(), V(x, {
|
|
133
133
|
key: 0,
|
|
134
134
|
error: o(G),
|
|
135
135
|
helper: e.helper
|
|
@@ -294,7 +294,7 @@ declare const datepickerProps: {
|
|
|
294
294
|
default: string;
|
|
295
295
|
};
|
|
296
296
|
weekStart: {
|
|
297
|
-
type: PropType<0 | 1 |
|
|
297
|
+
type: PropType<0 | 1 | "0" | "1" | 2 | 3 | 4 | 5 | 6 | "2" | "3" | "4" | "5" | "6" | undefined>;
|
|
298
298
|
default: number;
|
|
299
299
|
};
|
|
300
300
|
weekNumbers: {
|
|
@@ -861,7 +861,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<im
|
|
|
861
861
|
default: string;
|
|
862
862
|
};
|
|
863
863
|
weekStart: {
|
|
864
|
-
type: PropType<0 | 1 |
|
|
864
|
+
type: PropType<0 | 1 | "0" | "1" | 2 | 3 | 4 | 5 | 6 | "2" | "3" | "4" | "5" | "6" | undefined>;
|
|
865
865
|
default: number;
|
|
866
866
|
};
|
|
867
867
|
weekNumbers: {
|
|
@@ -1427,7 +1427,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<im
|
|
|
1427
1427
|
default: string;
|
|
1428
1428
|
};
|
|
1429
1429
|
weekStart: {
|
|
1430
|
-
type: PropType<0 | 1 |
|
|
1430
|
+
type: PropType<0 | 1 | "0" | "1" | 2 | 3 | 4 | 5 | 6 | "2" | "3" | "4" | "5" | "6" | undefined>;
|
|
1431
1431
|
default: number;
|
|
1432
1432
|
};
|
|
1433
1433
|
weekNumbers: {
|
|
@@ -1794,7 +1794,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<im
|
|
|
1794
1794
|
quarter: number;
|
|
1795
1795
|
year: number;
|
|
1796
1796
|
}) => boolean) | Partial<import("@vuepic/vue-datepicker").Highlight> | undefined;
|
|
1797
|
-
weekStart: 0 | 1 |
|
|
1797
|
+
weekStart: 0 | 1 | "0" | "1" | 2 | 3 | 4 | 5 | 6 | "2" | "3" | "4" | "5" | "6" | undefined;
|
|
1798
1798
|
weekNumbers: import("@vuepic/vue-datepicker").WeekNumberType | {
|
|
1799
1799
|
type: import("@vuepic/vue-datepicker").WeekNumberType;
|
|
1800
1800
|
hideOnOffsetDates?: boolean | undefined;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent as O, ref as d, openBlock as D, createElementBlock as C, normalizeStyle as I, unref as n, normalizeClass as P, createVNode as u, createSlots as T, withCtx as m, withKeys as p, withModifiers as R, renderList as j, renderSlot as F, normalizeProps as A, guardReactiveProps as z } from "vue";
|
|
2
|
-
import { useMutationObserver as L } from "../../node_modules/.pnpm/@vueuse_core@
|
|
2
|
+
import { useMutationObserver as L } from "../../node_modules/.pnpm/@vueuse_core@11.1.0_vue@3.5.10_typescript@5.2.2_/node_modules/@vueuse/core/index.js";
|
|
3
3
|
import { useCommon as q } from "../../composables/useCommon.js";
|
|
4
4
|
import { useInputtable as f } from "../../composables/useInputtable.js";
|
|
5
5
|
import { useInteractive as M } from "../../composables/useInteractive.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent as X, ref as a, watchEffect as j, watch as K, computed as v, onMounted as M, openBlock as y, createBlock as O, Teleport as q, createVNode as w, Transition as F, withCtx as g, withDirectives as G, createElementVNode as k, normalizeClass as $, unref as n, createElementBlock as H, createCommentVNode as x, normalizeStyle as I, renderSlot as f, vShow as J } from "vue";
|
|
2
|
-
import { useBreakpoints as Q, breakpointsTailwind as U, useEventListener as S, useSwipe as W } from "../../node_modules/.pnpm/@vueuse_core@
|
|
2
|
+
import { useBreakpoints as Q, breakpointsTailwind as U, useEventListener as S, useSwipe as W } from "../../node_modules/.pnpm/@vueuse_core@11.1.0_vue@3.5.10_typescript@5.2.2_/node_modules/@vueuse/core/index.js";
|
|
3
3
|
import { useTheme as Y } from "../../composables/useTheme.js";
|
|
4
4
|
import Z from "../scroll/Scroll.vue.js";
|
|
5
5
|
const ee = {
|
|
@@ -50,22 +50,6 @@ const ee = {
|
|
|
50
50
|
e.key === "Escape" && s.value && l();
|
|
51
51
|
}
|
|
52
52
|
W(d, {
|
|
53
|
-
// passive: false,
|
|
54
|
-
// onSwipe(e: TouchEvent) {
|
|
55
|
-
// if (lengthX.value < 0) {
|
|
56
|
-
// const length = Math.abs(lengthX.value)
|
|
57
|
-
// left.value = `${length}px`
|
|
58
|
-
// } else {
|
|
59
|
-
// left.value = '0'
|
|
60
|
-
// }
|
|
61
|
-
// },
|
|
62
|
-
// onSwipeEnd(e: TouchEvent, direction: UseSwipeDirection) {
|
|
63
|
-
// if (lengthX.value < 0 && props.width && (Math.abs(lengthX.value) / props.width) >= 0.5) {
|
|
64
|
-
// left.value = '100%'
|
|
65
|
-
// } else {
|
|
66
|
-
// left.value = '0'
|
|
67
|
-
// }
|
|
68
|
-
// },
|
|
69
53
|
onSwipeEnd(e, o) {
|
|
70
54
|
i.value && (t.position === "left" && o === "left" || t.position === "right" && o === "right" || t.position === "top" && o === "up" || t.position === "bottom" && o === "down") && l();
|
|
71
55
|
}
|
|
@@ -11,7 +11,7 @@ declare const formProps: {
|
|
|
11
11
|
};
|
|
12
12
|
disabled: BooleanConstructor;
|
|
13
13
|
errors: {
|
|
14
|
-
type: PropType<
|
|
14
|
+
type: PropType<FormError | FormError[]>;
|
|
15
15
|
default: () => never[];
|
|
16
16
|
};
|
|
17
17
|
title: StringConstructor;
|
|
@@ -51,7 +51,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<im
|
|
|
51
51
|
};
|
|
52
52
|
disabled: BooleanConstructor;
|
|
53
53
|
errors: {
|
|
54
|
-
type: PropType<
|
|
54
|
+
type: PropType<FormError | FormError[]>;
|
|
55
55
|
default: () => never[];
|
|
56
56
|
};
|
|
57
57
|
title: StringConstructor;
|
|
@@ -71,7 +71,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<im
|
|
|
71
71
|
};
|
|
72
72
|
disabled: BooleanConstructor;
|
|
73
73
|
errors: {
|
|
74
|
-
type: PropType<
|
|
74
|
+
type: PropType<FormError | FormError[]>;
|
|
75
75
|
default: () => never[];
|
|
76
76
|
};
|
|
77
77
|
title: StringConstructor;
|
|
@@ -86,7 +86,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<im
|
|
|
86
86
|
autoValidate: boolean;
|
|
87
87
|
autoFocus: boolean;
|
|
88
88
|
disabled: boolean;
|
|
89
|
-
errors:
|
|
89
|
+
errors: FormError | FormError[];
|
|
90
90
|
hasFooter: boolean;
|
|
91
91
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, {
|
|
92
92
|
header?(_: {}): any;
|