@threadlabs/looma 0.28.6 → 0.28.8
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/components/ui-editor-block-actions/ui-editor-block-actions.html +20 -0
- package/components/ui-editor-block-actions/ui-editor-block-actions.js +14 -0
- package/components/ui-editor-image-toolbar/ui-editor-image-toolbar.html +7 -6
- package/components/ui-editor-image-toolbar/ui-editor-image-toolbar.js +2 -1
- package/components/ui-editor-link-card/ui-editor-link-card.html +57 -0
- package/components/ui-editor-link-card/ui-editor-link-card.js +27 -0
- package/components/ui-editor-link-form/ui-editor-link-form.html +118 -0
- package/components/ui-editor-link-form/ui-editor-link-form.js +71 -0
- package/dist/index.js +37 -34
- package/package.json +1 -1
- package/styles/ui-editor-block-actions.css +1 -0
- package/styles/ui-editor-link-card.css +1 -0
- package/styles/ui-editor-link-form.css +1 -0
- package/vanilla/UiEditorBlockActions.d.ts +16 -0
- package/vanilla/UiEditorBlockActions.js +41 -0
- package/vanilla/UiEditorImageToolbar.js +1 -1
- package/vanilla/UiEditorLinkCard.d.ts +20 -0
- package/vanilla/UiEditorLinkCard.js +153 -0
- package/vanilla/UiEditorLinkForm.d.ts +32 -0
- package/vanilla/UiEditorLinkForm.js +354 -0
- package/vanilla/index.js +3 -0
- package/vue/UiEditorBlockActions.d.ts +33 -0
- package/vue/UiEditorBlockActions.js +2 -0
- package/vue/UiEditorBlockActions.vue +125 -0
- package/vue/UiEditorImageToolbar.vue +5 -6
- package/vue/UiEditorLinkCard.d.ts +58 -0
- package/vue/UiEditorLinkCard.js +2 -0
- package/vue/UiEditorLinkCard.vue +319 -0
- package/vue/UiEditorLinkForm.d.ts +165 -0
- package/vue/UiEditorLinkForm.js +2 -0
- package/vue/UiEditorLinkForm.vue +557 -0
- package/vue/chunks/UiAffordanceScope.js +1 -1
- package/vue/chunks/UiAvatar.js +1 -1
- package/vue/chunks/UiAvatarGroup.js +1 -1
- package/vue/chunks/UiBadge.js +1 -1
- package/vue/chunks/UiBreadcrumbItem.js +1 -1
- package/vue/chunks/UiBreadcrumbs.js +1 -1
- package/vue/chunks/UiButton.js +1 -1
- package/vue/chunks/UiCallout.js +1 -1
- package/vue/chunks/UiCard.js +1 -1
- package/vue/chunks/UiCheckbox.js +1 -1
- package/vue/chunks/UiCluster.js +1 -1
- package/vue/chunks/UiCombobox.js +1 -1
- package/vue/chunks/UiContainer.js +1 -1
- package/vue/chunks/UiContextMenu.js +1 -1
- package/vue/chunks/UiCover.js +1 -1
- package/vue/chunks/UiDescriptionItem.js +1 -1
- package/vue/chunks/UiDescriptionList.js +1 -1
- package/vue/chunks/UiDialog.js +1 -1
- package/vue/chunks/UiDisclosure.js +1 -1
- package/vue/chunks/UiEditable.js +1 -1
- package/vue/chunks/UiEditorBlockActions.js +127 -0
- package/vue/chunks/UiEditorImageToolbar.js +7 -25
- package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
- package/vue/chunks/UiEditorLinkCard.js +356 -0
- package/vue/chunks/UiEditorLinkForm.js +669 -0
- package/vue/chunks/UiEditorMentionMenu.js +1 -1
- package/vue/chunks/UiEditorMentionMenuItem.js +1 -1
- package/vue/chunks/UiEditorSlashMenu.js +1 -1
- package/vue/chunks/UiEditorSlashMenuGroup.js +1 -1
- package/vue/chunks/UiEditorSlashMenuItem.js +1 -1
- package/vue/chunks/UiEditorSurface.js +1 -1
- package/vue/chunks/UiEditorTableContextMenu.js +1 -1
- package/vue/chunks/UiEditorTableOverlay.js +1 -1
- package/vue/chunks/UiEditorTableToolbar.js +1 -1
- package/vue/chunks/UiEditorToolbar.js +1 -1
- package/vue/chunks/UiFloatingActionButton.js +1 -1
- package/vue/chunks/UiFormField.js +1 -1
- package/vue/chunks/UiGrid.js +1 -1
- package/vue/chunks/UiIcon.js +1 -1
- package/vue/chunks/UiIconButton.js +1 -1
- package/vue/chunks/UiImage.js +1 -1
- package/vue/chunks/UiInput.js +1 -1
- package/vue/chunks/UiInputGroup.js +1 -1
- package/vue/chunks/UiList.js +1 -1
- package/vue/chunks/UiListItem.js +1 -1
- package/vue/chunks/UiListbox.js +1 -1
- package/vue/chunks/UiMenu.js +1 -1
- package/vue/chunks/UiMenuGroup.js +1 -1
- package/vue/chunks/UiMenuItem.js +1 -1
- package/vue/chunks/UiMeter.js +1 -1
- package/vue/chunks/UiNavItem.js +1 -1
- package/vue/chunks/UiPageHeader.js +1 -1
- package/vue/chunks/UiPopover.js +1 -1
- package/vue/chunks/UiRadio.js +1 -1
- package/vue/chunks/UiRadioGroup.js +1 -1
- package/vue/chunks/UiReel.js +1 -1
- package/vue/chunks/UiScrollArea.js +1 -1
- package/vue/chunks/UiSearchResultRow.js +1 -1
- package/vue/chunks/UiSearchShell.js +1 -1
- package/vue/chunks/UiSection.js +1 -1
- package/vue/chunks/UiSelect.js +1 -1
- package/vue/chunks/UiSeparator.js +1 -1
- package/vue/chunks/UiSidebar.js +1 -1
- package/vue/chunks/UiSpinner.js +1 -1
- package/vue/chunks/UiStack.js +1 -1
- package/vue/chunks/UiStatusMessage.js +1 -1
- package/vue/chunks/UiSwitch.js +1 -1
- package/vue/chunks/UiSwitcher.js +1 -1
- package/vue/chunks/UiTable.js +1 -1
- package/vue/chunks/UiTabs.js +1 -1
- package/vue/chunks/UiText.js +1 -1
- package/vue/chunks/UiTextarea.js +1 -1
- package/vue/chunks/UiToast.js +1 -1
- package/vue/chunks/UiToastRegion.js +1 -1
- package/vue/chunks/UiTooltip.js +1 -1
- package/vue/chunks/UiTree.js +1 -1
- package/vue/chunks/UiTreeItem.js +1 -1
- package/vue/chunks/_plugin-vue_export-helper.js +1 -1
- package/vue/components.css +2886 -2886
- package/vue/editor/index.js +98 -250
- package/vue/editor/primitives.d.ts +24 -2
- package/vue/index.d.ts +3 -0
- package/vue/index.js +8 -5
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
<!-- Generated by HTML Next 1.0.0-alpha.51 for Vue 3.5. Do not edit. -->
|
|
2
|
+
<script setup lang="ts">
|
|
3
|
+
import { computed, getCurrentInstance, provide, ref, watchSyncEffect } from 'vue'
|
|
4
|
+
import type { PropType } from 'vue'
|
|
5
|
+
import {
|
|
6
|
+
checkHydratedRoot,
|
|
7
|
+
concat,
|
|
8
|
+
createDispatch,
|
|
9
|
+
cycleCheckedComputed,
|
|
10
|
+
nativeAttrs,
|
|
11
|
+
text,
|
|
12
|
+
useComponentHost,
|
|
13
|
+
useReflectedProp,
|
|
14
|
+
} from './host'
|
|
15
|
+
import { acceptsControllerWrite } from './props'
|
|
16
|
+
import { checkedProp, propValidityState, vPropValidity } from './props'
|
|
17
|
+
import UiButton from './UiButton.vue'
|
|
18
|
+
import UiCard from './UiCard.vue'
|
|
19
|
+
import UiCluster from './UiCluster.vue'
|
|
20
|
+
import UiIcon from './UiIcon.vue'
|
|
21
|
+
import UiIconButton from './UiIconButton.vue'
|
|
22
|
+
import UiStack from './UiStack.vue'
|
|
23
|
+
import UiText from './UiText.vue'
|
|
24
|
+
import UiTooltip from './UiTooltip.vue'
|
|
25
|
+
|
|
26
|
+
defineOptions({ inheritAttrs: false })
|
|
27
|
+
|
|
28
|
+
const propValidityContract = {
|
|
29
|
+
props: {
|
|
30
|
+
detail: {
|
|
31
|
+
type: { kind: 'terminal', name: 'string' },
|
|
32
|
+
required: false,
|
|
33
|
+
target: { attribute: 'detail' },
|
|
34
|
+
description: 'A second line under the label, such as where the destination lives.',
|
|
35
|
+
default: '',
|
|
36
|
+
},
|
|
37
|
+
href: {
|
|
38
|
+
type: { kind: 'terminal', name: 'string' },
|
|
39
|
+
required: false,
|
|
40
|
+
target: { attribute: 'title' },
|
|
41
|
+
description: 'The link\'s destination, shown when there is no label.',
|
|
42
|
+
default: '',
|
|
43
|
+
},
|
|
44
|
+
label: {
|
|
45
|
+
type: { kind: 'terminal', name: 'string' },
|
|
46
|
+
required: false,
|
|
47
|
+
target: { attribute: 'label' },
|
|
48
|
+
description:
|
|
49
|
+
'The resolved destination\'s name, such as a page title, shown in place of the address.',
|
|
50
|
+
default: '',
|
|
51
|
+
},
|
|
52
|
+
openHref: {
|
|
53
|
+
type: { kind: 'terminal', name: 'string' },
|
|
54
|
+
required: false,
|
|
55
|
+
target: { attribute: 'href' },
|
|
56
|
+
description:
|
|
57
|
+
'The address Open link opens in a new tab; without it the card offers no Open link. The editor passes the destination only when it is an http, https,\n mailto, tel, or relative address.',
|
|
58
|
+
default: '',
|
|
59
|
+
},
|
|
60
|
+
targetLabel: {
|
|
61
|
+
type: { kind: 'terminal', name: 'string' },
|
|
62
|
+
required: false,
|
|
63
|
+
target: { attribute: 'targetlabel' },
|
|
64
|
+
description:
|
|
65
|
+
'What a resolved destination is called, as in "Page: Guide" for a screen reader.',
|
|
66
|
+
default: 'Item',
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
} as const
|
|
70
|
+
const props = defineProps({
|
|
71
|
+
detail: { type: null as unknown as PropType<string | null>, default: '' },
|
|
72
|
+
href: { type: null as unknown as PropType<string | null>, default: '' },
|
|
73
|
+
label: { type: null as unknown as PropType<string | null>, default: '' },
|
|
74
|
+
openHref: { type: null as unknown as PropType<string | null>, default: '' },
|
|
75
|
+
targetLabel: { type: null as unknown as PropType<string | null>, default: 'Item' },
|
|
76
|
+
})
|
|
77
|
+
const acceptedProps: Record<string, unknown> = {
|
|
78
|
+
detail: '',
|
|
79
|
+
href: '',
|
|
80
|
+
label: '',
|
|
81
|
+
openHref: '',
|
|
82
|
+
targetLabel: 'Item',
|
|
83
|
+
}
|
|
84
|
+
const checkedProps = computed(() => ({
|
|
85
|
+
detail: checkedProp<string>(
|
|
86
|
+
props['detail'],
|
|
87
|
+
{ kind: 'terminal', name: 'string' },
|
|
88
|
+
false,
|
|
89
|
+
'detail',
|
|
90
|
+
acceptedProps,
|
|
91
|
+
) as string,
|
|
92
|
+
href: checkedProp<string>(
|
|
93
|
+
props['href'],
|
|
94
|
+
{ kind: 'terminal', name: 'string' },
|
|
95
|
+
false,
|
|
96
|
+
'href',
|
|
97
|
+
acceptedProps,
|
|
98
|
+
) as string,
|
|
99
|
+
label: checkedProp<string>(
|
|
100
|
+
props['label'],
|
|
101
|
+
{ kind: 'terminal', name: 'string' },
|
|
102
|
+
false,
|
|
103
|
+
'label',
|
|
104
|
+
acceptedProps,
|
|
105
|
+
) as string,
|
|
106
|
+
openHref: checkedProp<string>(
|
|
107
|
+
props['openHref'],
|
|
108
|
+
{ kind: 'terminal', name: 'string' },
|
|
109
|
+
false,
|
|
110
|
+
'openHref',
|
|
111
|
+
acceptedProps,
|
|
112
|
+
) as string,
|
|
113
|
+
targetLabel: checkedProp<string>(
|
|
114
|
+
props['targetLabel'],
|
|
115
|
+
{ kind: 'terminal', name: 'string' },
|
|
116
|
+
false,
|
|
117
|
+
'targetLabel',
|
|
118
|
+
acceptedProps,
|
|
119
|
+
) as string,
|
|
120
|
+
}))
|
|
121
|
+
void checkedProps.value
|
|
122
|
+
watchSyncEffect(() => {
|
|
123
|
+
void checkedProps.value
|
|
124
|
+
})
|
|
125
|
+
const reflectedProp = useReflectedProp()
|
|
126
|
+
const hydrationInstance = getCurrentInstance()
|
|
127
|
+
const emit = defineEmits<{
|
|
128
|
+
edit: [event: CustomEvent<Readonly<Record<string, unknown>>>]
|
|
129
|
+
remove: [event: CustomEvent<Readonly<Record<string, unknown>>>]
|
|
130
|
+
}>()
|
|
131
|
+
|
|
132
|
+
const root = ref<HTMLElement | null>(null)
|
|
133
|
+
const base = ref('ui-editor-link-card')
|
|
134
|
+
const resolved = cycleCheckedComputed(() => checkedProps.value.label !== '')
|
|
135
|
+
let shownPrevious: any = null
|
|
136
|
+
const shown = cycleCheckedComputed(() => {
|
|
137
|
+
const next: any = ((objectValue: any, indexValue: any) =>
|
|
138
|
+
objectValue === Symbol.for('html-next.invalid-result')
|
|
139
|
+
|| indexValue === Symbol.for('html-next.invalid-result')
|
|
140
|
+
? Symbol.for('html-next.invalid-result')
|
|
141
|
+
: objectValue[indexValue])(
|
|
142
|
+
{ true: checkedProps.value.label, false: checkedProps.value.href },
|
|
143
|
+
concat(resolved.value),
|
|
144
|
+
)
|
|
145
|
+
if (next === Symbol.for('html-next.invalid-result')) {
|
|
146
|
+
return shownPrevious
|
|
147
|
+
}
|
|
148
|
+
return shownPrevious = next
|
|
149
|
+
})
|
|
150
|
+
let guardedPrevious: any = null
|
|
151
|
+
const guarded = computed(() => {
|
|
152
|
+
const candidate: any = ((objectValue: any, indexValue: any) =>
|
|
153
|
+
objectValue === Symbol.for('html-next.invalid-result')
|
|
154
|
+
|| indexValue === Symbol.for('html-next.invalid-result')
|
|
155
|
+
? Symbol.for('html-next.invalid-result')
|
|
156
|
+
: objectValue[indexValue])({ true: 'file-text', false: 'link' }, concat(resolved.value))
|
|
157
|
+
if (candidate === Symbol.for('html-next.invalid-result')) {
|
|
158
|
+
return guardedPrevious
|
|
159
|
+
}
|
|
160
|
+
return guardedPrevious = candidate
|
|
161
|
+
})
|
|
162
|
+
let guardedBindingPrevious: any = null
|
|
163
|
+
const guardedBinding = computed(() => {
|
|
164
|
+
const candidate: any = concat(
|
|
165
|
+
((objectValue: any, indexValue: any) =>
|
|
166
|
+
objectValue === Symbol.for('html-next.invalid-result')
|
|
167
|
+
|| indexValue === Symbol.for('html-next.invalid-result')
|
|
168
|
+
? Symbol.for('html-next.invalid-result')
|
|
169
|
+
: objectValue[indexValue])(
|
|
170
|
+
{ true: checkedProps.value.targetLabel, false: 'URL' },
|
|
171
|
+
concat(resolved.value),
|
|
172
|
+
),
|
|
173
|
+
': ',
|
|
174
|
+
shown.value,
|
|
175
|
+
)
|
|
176
|
+
if (candidate === Symbol.for('html-next.invalid-result')) return guardedBindingPrevious
|
|
177
|
+
return guardedBindingPrevious = candidate
|
|
178
|
+
})
|
|
179
|
+
let guardedBinding2Previous: any = null
|
|
180
|
+
const guardedBinding2 = computed(() => {
|
|
181
|
+
const candidate: any = concat(base.value, '-open')
|
|
182
|
+
if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding2Previous
|
|
183
|
+
return guardedBinding2Previous = candidate
|
|
184
|
+
})
|
|
185
|
+
let guardedBinding3Previous: any = null
|
|
186
|
+
const guardedBinding3 = computed(() => {
|
|
187
|
+
const candidate: any = concat(base.value, '-open')
|
|
188
|
+
if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding3Previous
|
|
189
|
+
return guardedBinding3Previous = candidate
|
|
190
|
+
})
|
|
191
|
+
let guardedBinding4Previous: any = null
|
|
192
|
+
const guardedBinding4 = computed(() => {
|
|
193
|
+
const candidate: any = concat(base.value, '-edit')
|
|
194
|
+
if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding4Previous
|
|
195
|
+
return guardedBinding4Previous = candidate
|
|
196
|
+
})
|
|
197
|
+
let guardedBinding5Previous: any = null
|
|
198
|
+
const guardedBinding5 = computed(() => {
|
|
199
|
+
const candidate: any = concat(base.value, '-edit')
|
|
200
|
+
if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding5Previous
|
|
201
|
+
return guardedBinding5Previous = candidate
|
|
202
|
+
})
|
|
203
|
+
let guardedBinding6Previous: any = null
|
|
204
|
+
const guardedBinding6 = computed(() => {
|
|
205
|
+
const candidate: any = concat(base.value, '-remove')
|
|
206
|
+
if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding6Previous
|
|
207
|
+
return guardedBinding6Previous = candidate
|
|
208
|
+
})
|
|
209
|
+
let guardedBinding7Previous: any = null
|
|
210
|
+
const guardedBinding7 = computed(() => {
|
|
211
|
+
const candidate: any = concat(base.value, '-remove')
|
|
212
|
+
if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding7Previous
|
|
213
|
+
return guardedBinding7Previous = candidate
|
|
214
|
+
})
|
|
215
|
+
provide('html-next:ui-editor-link-card:base', base)
|
|
216
|
+
checkHydratedRoot('div', 'ui-editor-link-card')
|
|
217
|
+
|
|
218
|
+
const isEditDetail = (
|
|
219
|
+
detail: unknown,
|
|
220
|
+
): boolean => (detail !== null && typeof detail === 'object' && !Array.isArray(detail)
|
|
221
|
+
&& Object.values(detail as object).every((item: unknown) => true))
|
|
222
|
+
const dispatch = createDispatch(root, emit as (name: string, detail: unknown) => void, {
|
|
223
|
+
checks: {
|
|
224
|
+
edit: isEditDetail,
|
|
225
|
+
remove: isEditDetail,
|
|
226
|
+
},
|
|
227
|
+
})
|
|
228
|
+
|
|
229
|
+
useComponentHost(() => import('../components/ui-editor-link-card/ui-editor-link-card.js'), {
|
|
230
|
+
root,
|
|
231
|
+
dispatch,
|
|
232
|
+
acceptsState: (name: string, keys: readonly string[], value: unknown) =>
|
|
233
|
+
acceptsControllerWrite(
|
|
234
|
+
value,
|
|
235
|
+
({ base: { kind: 'terminal', name: 'string' } } as Record<string, any>)[name],
|
|
236
|
+
keys,
|
|
237
|
+
),
|
|
238
|
+
controllerSource: {
|
|
239
|
+
specifier: '../components/ui-editor-link-card/ui-editor-link-card.js',
|
|
240
|
+
definition: './components/ui-editor-link-card/ui-editor-link-card.html',
|
|
241
|
+
},
|
|
242
|
+
props: checkedProps,
|
|
243
|
+
propInputs: (name: string) => {
|
|
244
|
+
const incoming = hydrationInstance?.vnode.props
|
|
245
|
+
const kebab = name.replace(/[A-Z]/g, (letter) => '-' + letter.toLowerCase())
|
|
246
|
+
return incoming !== null && incoming !== undefined
|
|
247
|
+
? (incoming[name] ?? incoming[kebab] ?? null)
|
|
248
|
+
: null
|
|
249
|
+
},
|
|
250
|
+
propNames: ['detail', 'href', 'label', 'openHref', 'targetLabel'],
|
|
251
|
+
propValidity: (name: string) =>
|
|
252
|
+
propValidityState({ contract: propValidityContract, values: { ...props } }, name),
|
|
253
|
+
state: { base },
|
|
254
|
+
computed: { resolved, shown },
|
|
255
|
+
})
|
|
256
|
+
</script>
|
|
257
|
+
|
|
258
|
+
<template>
|
|
259
|
+
<div
|
|
260
|
+
v-bind="nativeAttrs($attrs)"
|
|
261
|
+
v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
|
|
262
|
+
:data-detail="reflectedProp('detail', 'detail', checkedProps.detail, undefined, false)"
|
|
263
|
+
:data-href="reflectedProp('href', 'href', checkedProps.href, undefined, false)"
|
|
264
|
+
:data-label="reflectedProp('label', 'label', checkedProps.label, undefined, false)"
|
|
265
|
+
:data-open-href="reflectedProp('openHref', 'open-href', checkedProps.openHref, undefined, false)"
|
|
266
|
+
:data-target-label="reflectedProp('targetLabel', 'target-label', checkedProps.targetLabel, undefined, false)"
|
|
267
|
+
ref="root"
|
|
268
|
+
>
|
|
269
|
+
<UiCard variant="elevated" padding="xs" size="content"><UiCluster
|
|
270
|
+
gap="xs"
|
|
271
|
+
wrap="nowrap"
|
|
272
|
+
role="group"
|
|
273
|
+
aria-label="Link actions"
|
|
274
|
+
><UiIcon :name="guarded" />
|
|
275
|
+
<UiStack gap="none" :title="checkedProps.href" :aria-label="guardedBinding"><UiText
|
|
276
|
+
as="strong"
|
|
277
|
+
size="sm"
|
|
278
|
+
weight="medium"
|
|
279
|
+
font="sans"
|
|
280
|
+
wrap="anywhere"
|
|
281
|
+
>{{ text(shown) }}</UiText>
|
|
282
|
+
<UiText
|
|
283
|
+
v-if="checkedProps.detail !== ''"
|
|
284
|
+
as="small"
|
|
285
|
+
size="xs"
|
|
286
|
+
tone="secondary"
|
|
287
|
+
font="sans"
|
|
288
|
+
>{{ checkedProps.detail }}</UiText></UiStack>
|
|
289
|
+
<template v-if="checkedProps.openHref !== ''"><UiButton
|
|
290
|
+
as="a"
|
|
291
|
+
variant="ghost"
|
|
292
|
+
tone="neutral"
|
|
293
|
+
size="sm"
|
|
294
|
+
target="_blank"
|
|
295
|
+
rel="noopener noreferrer"
|
|
296
|
+
aria-label="Open link"
|
|
297
|
+
:id="guardedBinding2"
|
|
298
|
+
:href="checkedProps.openHref"
|
|
299
|
+
><UiCluster gap="xs" wrap="nowrap"><UiIcon name="external-link" />Open
|
|
300
|
+
link</UiCluster></UiButton>
|
|
301
|
+
<UiTooltip :for="guardedBinding3">Open link</UiTooltip></template>
|
|
302
|
+
<UiIconButton
|
|
303
|
+
label="Edit link"
|
|
304
|
+
variant="ghost"
|
|
305
|
+
size="sm"
|
|
306
|
+
data-link-action="edit"
|
|
307
|
+
:id="guardedBinding4"
|
|
308
|
+
><UiIcon name="pencil" /></UiIconButton>
|
|
309
|
+
<UiTooltip :for="guardedBinding5">Edit link</UiTooltip>
|
|
310
|
+
<UiIconButton
|
|
311
|
+
label="Remove link"
|
|
312
|
+
variant="ghost"
|
|
313
|
+
size="sm"
|
|
314
|
+
data-link-action="remove"
|
|
315
|
+
:id="guardedBinding6"
|
|
316
|
+
><UiIcon name="unlink" /></UiIconButton>
|
|
317
|
+
<UiTooltip :for="guardedBinding7">Remove link</UiTooltip></UiCluster></UiCard>
|
|
318
|
+
</div>
|
|
319
|
+
</template>
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import type { PropType } from 'vue';
|
|
2
|
+
declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
3
|
+
error: {
|
|
4
|
+
type: PropType<string | null>;
|
|
5
|
+
default: string;
|
|
6
|
+
};
|
|
7
|
+
existing: {
|
|
8
|
+
type: PropType<boolean | null>;
|
|
9
|
+
default: boolean;
|
|
10
|
+
};
|
|
11
|
+
mode: {
|
|
12
|
+
type: PropType<"url" | "target" | null>;
|
|
13
|
+
default: string;
|
|
14
|
+
};
|
|
15
|
+
newTab: {
|
|
16
|
+
type: PropType<boolean | null>;
|
|
17
|
+
default: boolean;
|
|
18
|
+
};
|
|
19
|
+
placeholder: {
|
|
20
|
+
type: PropType<string | null>;
|
|
21
|
+
default: string;
|
|
22
|
+
};
|
|
23
|
+
results: {
|
|
24
|
+
type: PropType<readonly ({
|
|
25
|
+
readonly id: string;
|
|
26
|
+
readonly label: string;
|
|
27
|
+
readonly detail?: string;
|
|
28
|
+
})[] | null>;
|
|
29
|
+
default: () => never[];
|
|
30
|
+
};
|
|
31
|
+
searchable: {
|
|
32
|
+
type: PropType<boolean | null>;
|
|
33
|
+
default: boolean;
|
|
34
|
+
};
|
|
35
|
+
selected: {
|
|
36
|
+
type: PropType<string | null>;
|
|
37
|
+
default: string;
|
|
38
|
+
};
|
|
39
|
+
status: {
|
|
40
|
+
type: PropType<string | null>;
|
|
41
|
+
default: string;
|
|
42
|
+
};
|
|
43
|
+
text: {
|
|
44
|
+
type: PropType<string | null>;
|
|
45
|
+
default: string;
|
|
46
|
+
};
|
|
47
|
+
textEditable: {
|
|
48
|
+
type: PropType<boolean | null>;
|
|
49
|
+
default: boolean;
|
|
50
|
+
};
|
|
51
|
+
value: {
|
|
52
|
+
type: PropType<string | null>;
|
|
53
|
+
default: string;
|
|
54
|
+
};
|
|
55
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
56
|
+
clear: (event: CustomEvent<Readonly<Record<string, unknown>>>) => any;
|
|
57
|
+
text: (event: CustomEvent<{
|
|
58
|
+
readonly text: string;
|
|
59
|
+
}>) => any;
|
|
60
|
+
"update:value": (value: string) => any;
|
|
61
|
+
save: (event: CustomEvent<Readonly<Record<string, unknown>>>) => any;
|
|
62
|
+
"update:newTab": (value: boolean) => any;
|
|
63
|
+
"update:text": (value: string) => any;
|
|
64
|
+
destination: (event: CustomEvent<{
|
|
65
|
+
readonly value: string;
|
|
66
|
+
}>) => any;
|
|
67
|
+
"new-tab": (event: CustomEvent<{
|
|
68
|
+
readonly newTab: boolean;
|
|
69
|
+
}>) => any;
|
|
70
|
+
choose: (event: CustomEvent<{
|
|
71
|
+
readonly id: string;
|
|
72
|
+
}>) => any;
|
|
73
|
+
dismiss: (event: CustomEvent<Readonly<Record<string, unknown>>>) => any;
|
|
74
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
75
|
+
error: {
|
|
76
|
+
type: PropType<string | null>;
|
|
77
|
+
default: string;
|
|
78
|
+
};
|
|
79
|
+
existing: {
|
|
80
|
+
type: PropType<boolean | null>;
|
|
81
|
+
default: boolean;
|
|
82
|
+
};
|
|
83
|
+
mode: {
|
|
84
|
+
type: PropType<"url" | "target" | null>;
|
|
85
|
+
default: string;
|
|
86
|
+
};
|
|
87
|
+
newTab: {
|
|
88
|
+
type: PropType<boolean | null>;
|
|
89
|
+
default: boolean;
|
|
90
|
+
};
|
|
91
|
+
placeholder: {
|
|
92
|
+
type: PropType<string | null>;
|
|
93
|
+
default: string;
|
|
94
|
+
};
|
|
95
|
+
results: {
|
|
96
|
+
type: PropType<readonly ({
|
|
97
|
+
readonly id: string;
|
|
98
|
+
readonly label: string;
|
|
99
|
+
readonly detail?: string;
|
|
100
|
+
})[] | null>;
|
|
101
|
+
default: () => never[];
|
|
102
|
+
};
|
|
103
|
+
searchable: {
|
|
104
|
+
type: PropType<boolean | null>;
|
|
105
|
+
default: boolean;
|
|
106
|
+
};
|
|
107
|
+
selected: {
|
|
108
|
+
type: PropType<string | null>;
|
|
109
|
+
default: string;
|
|
110
|
+
};
|
|
111
|
+
status: {
|
|
112
|
+
type: PropType<string | null>;
|
|
113
|
+
default: string;
|
|
114
|
+
};
|
|
115
|
+
text: {
|
|
116
|
+
type: PropType<string | null>;
|
|
117
|
+
default: string;
|
|
118
|
+
};
|
|
119
|
+
textEditable: {
|
|
120
|
+
type: PropType<boolean | null>;
|
|
121
|
+
default: boolean;
|
|
122
|
+
};
|
|
123
|
+
value: {
|
|
124
|
+
type: PropType<string | null>;
|
|
125
|
+
default: string;
|
|
126
|
+
};
|
|
127
|
+
}>> & Readonly<{
|
|
128
|
+
onClear?: ((event: CustomEvent<Readonly<Record<string, unknown>>>) => any) | undefined;
|
|
129
|
+
onText?: ((event: CustomEvent<{
|
|
130
|
+
readonly text: string;
|
|
131
|
+
}>) => any) | undefined;
|
|
132
|
+
"onUpdate:value"?: ((value: string) => any) | undefined;
|
|
133
|
+
onSave?: ((event: CustomEvent<Readonly<Record<string, unknown>>>) => any) | undefined;
|
|
134
|
+
"onUpdate:newTab"?: ((value: boolean) => any) | undefined;
|
|
135
|
+
"onUpdate:text"?: ((value: string) => any) | undefined;
|
|
136
|
+
onDestination?: ((event: CustomEvent<{
|
|
137
|
+
readonly value: string;
|
|
138
|
+
}>) => any) | undefined;
|
|
139
|
+
"onNew-tab"?: ((event: CustomEvent<{
|
|
140
|
+
readonly newTab: boolean;
|
|
141
|
+
}>) => any) | undefined;
|
|
142
|
+
onChoose?: ((event: CustomEvent<{
|
|
143
|
+
readonly id: string;
|
|
144
|
+
}>) => any) | undefined;
|
|
145
|
+
onDismiss?: ((event: CustomEvent<Readonly<Record<string, unknown>>>) => any) | undefined;
|
|
146
|
+
}>, {
|
|
147
|
+
value: string | null;
|
|
148
|
+
error: string | null;
|
|
149
|
+
mode: "url" | "target" | null;
|
|
150
|
+
text: string | null;
|
|
151
|
+
selected: string | null;
|
|
152
|
+
status: string | null;
|
|
153
|
+
placeholder: string | null;
|
|
154
|
+
existing: boolean | null;
|
|
155
|
+
results: readonly {
|
|
156
|
+
readonly id: string;
|
|
157
|
+
readonly label: string;
|
|
158
|
+
readonly detail?: string;
|
|
159
|
+
}[] | null;
|
|
160
|
+
searchable: boolean | null;
|
|
161
|
+
newTab: boolean | null;
|
|
162
|
+
textEditable: boolean | null;
|
|
163
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
164
|
+
declare const _default: typeof __VLS_export;
|
|
165
|
+
export default _default;
|