@dosgato/dialog 1.4.4 → 1.5.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/dist/Dialog.svelte +3 -3
- package/dist/FieldAutocomplete.svelte +19 -15
- package/dist/FieldCheckbox.svelte +4 -4
- package/dist/FieldChoices.svelte +11 -7
- package/dist/FieldChooserLink.svelte +30 -32
- package/dist/FieldDate.svelte +3 -3
- package/dist/FieldDateTime.svelte +3 -4
- package/dist/FieldDualListbox.svelte +9 -11
- package/dist/FieldIdentifier.svelte +2 -2
- package/dist/FieldMultiple.svelte +6 -5
- package/dist/FieldMultiselect.svelte +5 -5
- package/dist/FieldNumber.svelte +3 -3
- package/dist/FieldRadio.svelte +3 -7
- package/dist/FieldSelect.svelte +4 -8
- package/dist/FieldStandard.svelte +5 -3
- package/dist/FieldStandard.svelte.d.ts +4 -2
- package/dist/FieldText.svelte +6 -5
- package/dist/FieldText.svelte.d.ts +2 -1
- package/dist/FieldTextArea.svelte +3 -4
- package/dist/FileIcon.svelte +1 -1
- package/dist/Form.svelte +4 -4
- package/dist/FormDialog.svelte +2 -2
- package/dist/Icon.svelte +10 -6
- package/dist/InlineMessage.svelte +3 -3
- package/dist/InlineMessages.svelte +1 -1
- package/dist/Input.svelte +3 -3
- package/dist/Input.svelte.d.ts +2 -1
- package/dist/Listbox.svelte +3 -4
- package/dist/Radio.svelte +0 -1
- package/dist/Switcher.svelte +1 -1
- package/dist/Tabs.svelte +3 -4
- package/dist/Tooltip.svelte +9 -9
- package/dist/chooser/AssetTabs.svelte +19 -17
- package/dist/chooser/AssetTabs.svelte.d.ts +1 -1
- package/dist/chooser/Chooser.svelte +3 -3
- package/dist/chooser/Chooser.svelte.d.ts +5 -5
- package/dist/chooser/ChooserStore.js +2 -2
- package/dist/chooser/UploadUI.svelte +4 -4
- package/dist/code/FieldCodeEditor.svelte +3 -3
- package/dist/code/FieldGraphQLEditor.svelte +28 -0
- package/dist/code/FieldGraphQLEditor.svelte.d.ts +36 -0
- package/dist/code/FieldTypeScriptEditor.svelte +27 -0
- package/dist/code/FieldTypeScriptEditor.svelte.d.ts +34 -0
- package/dist/code/GraphQLEditor.svelte +145 -0
- package/dist/code/GraphQLEditor.svelte.d.ts +35 -0
- package/dist/code/TypeScriptEditor.svelte +186 -0
- package/dist/code/TypeScriptEditor.svelte.d.ts +33 -0
- package/dist/code/index.d.ts +2 -0
- package/dist/code/index.js +2 -0
- package/dist/colorpicker/FieldColorPicker.svelte +2 -2
- package/dist/cropper/FieldCropper.svelte +8 -10
- package/dist/cropper/cropper.js +9 -11
- package/dist/iconpicker/FieldIconPicker.svelte +7 -11
- package/dist/imageposition/FieldImagePosition.svelte +4 -5
- package/dist/imageposition/index.d.ts +1 -1
- package/dist/imageposition/index.js +0 -1
- package/dist/tagpicker/FieldTagPicker.svelte +1 -2
- package/dist/tree/Tree.svelte +2 -3
- package/dist/tree/TreeCell.svelte +2 -2
- package/dist/tree/TreeNode.svelte +16 -17
- package/package.json +14 -7
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import { getDescribedBy } from '../helpers'
|
|
8
8
|
export let id: string | undefined = undefined
|
|
9
9
|
export let path: string
|
|
10
|
-
export let label
|
|
10
|
+
export let label = ''
|
|
11
11
|
export let required = false
|
|
12
12
|
export let defaultValue: { icon: string, prefix: string } = { icon: 'fa-graduation-cap', prefix: 'fas' }
|
|
13
13
|
export let conditional: boolean | undefined = undefined
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
const labelid = randomid()
|
|
17
17
|
const descid = randomid()
|
|
18
18
|
|
|
19
|
-
let modalOpen
|
|
19
|
+
let modalOpen = false
|
|
20
20
|
let selected: { icon: string, prefix: string } = defaultValue
|
|
21
21
|
|
|
22
22
|
const iconToPrefix: Record<string, string> = {}
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
|
|
31
31
|
let visibleIcons = FontAwesomeIcons
|
|
32
32
|
|
|
33
|
-
let searchVal
|
|
34
|
-
let category
|
|
33
|
+
let searchVal = ''
|
|
34
|
+
let category = 'all'
|
|
35
35
|
|
|
36
36
|
$:iconCountMessage = visibleIcons.length === FontAwesomeIcons.length ? 'Showing all icons' : `Showing ${visibleIcons.length} icons`
|
|
37
37
|
|
|
@@ -59,7 +59,6 @@
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
|
|
63
62
|
function onSearch () {
|
|
64
63
|
visibleIcons = FontAwesomeIcons.filter(i => {
|
|
65
64
|
const searchValLC = searchVal.toLowerCase()
|
|
@@ -78,9 +77,7 @@
|
|
|
78
77
|
if (category === 'all') {
|
|
79
78
|
visibleIcons = FontAwesomeIcons
|
|
80
79
|
} else {
|
|
81
|
-
visibleIcons = FontAwesomeIcons.filter(i =>
|
|
82
|
-
return categoriesToIcons[category].icons.includes(i.class)
|
|
83
|
-
})
|
|
80
|
+
visibleIcons = FontAwesomeIcons.filter(i => categoriesToIcons[category].icons.includes(i.class))
|
|
84
81
|
}
|
|
85
82
|
if (visibleIcons.findIndex(i => i.class === selected.icon) < 0) {
|
|
86
83
|
onSelectIcon(visibleIcons[0].class)
|
|
@@ -113,9 +110,9 @@
|
|
|
113
110
|
}
|
|
114
111
|
</script>
|
|
115
112
|
|
|
116
|
-
<FieldStandard bind:id {path} {descid} {label} {required} {defaultValue} {conditional} {helptext} let:value let:valid let:invalid let:id let:onBlur let:setVal let:messagesid let:helptextid>
|
|
113
|
+
<FieldStandard bind:id {path} {descid} {label} {required} {defaultValue} {conditional} {helptext} let:value let:valid let:invalid let:id={fieldid} let:onBlur let:setVal let:messagesid let:helptextid>
|
|
117
114
|
<Icon icon={`${value.prefix === 'fab' ? 'fa7-brands' : 'fa7-solid'}:${value.icon?.slice(3) ?? 'graduation-cap'}`}/>
|
|
118
|
-
<button type="button" {
|
|
115
|
+
<button type="button" id={fieldid} class="select-icon" on:click={() => { modalOpen = true }} aria-describedby={getDescribedBy([descid, messagesid, helptextid])} on:blur={onBlur}>Select New Icon</button>
|
|
119
116
|
{#if modalOpen}
|
|
120
117
|
<Modal>
|
|
121
118
|
<section>
|
|
@@ -162,7 +159,6 @@
|
|
|
162
159
|
{/if}
|
|
163
160
|
</FieldStandard>
|
|
164
161
|
|
|
165
|
-
|
|
166
162
|
<style>
|
|
167
163
|
.select-icon {
|
|
168
164
|
border-radius: 0.25em;
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
export let id: string | undefined = undefined
|
|
12
12
|
export let path: string
|
|
13
13
|
export let imageSrc: string | undefined
|
|
14
|
-
export let label
|
|
14
|
+
export let label = ''
|
|
15
15
|
export let required = false
|
|
16
16
|
export let conditional: boolean | undefined = undefined
|
|
17
17
|
export let helptext: string | undefined = undefined
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
const descid = randomid()
|
|
28
28
|
const labelid = randomid()
|
|
29
29
|
|
|
30
|
-
let modalOpen
|
|
30
|
+
let modalOpen = false
|
|
31
31
|
function showModal () {
|
|
32
32
|
if (!modalOpen) {
|
|
33
33
|
x = ($val?.x ?? 50) / 25
|
|
@@ -71,7 +71,6 @@
|
|
|
71
71
|
boxes[y + x * 5].focus()
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
|
|
75
74
|
const positionText: Record<number, Record<number, string>> = {
|
|
76
75
|
0: {
|
|
77
76
|
0: 'Top Left Corner',
|
|
@@ -137,8 +136,8 @@
|
|
|
137
136
|
<div class="image-container">
|
|
138
137
|
<img class="crop-image" src={imageSrc} alt="" />
|
|
139
138
|
<div class="overlay" role="radiogroup" aria-labelledby={labelid}>
|
|
140
|
-
{#each Array.from(Array(5).keys()) as col}
|
|
141
|
-
{#each Array.from(Array(5).keys()) as row}
|
|
139
|
+
{#each Array.from(Array(5).keys()) as col (col)}
|
|
140
|
+
{#each Array.from(Array(5).keys()) as row (row)}
|
|
142
141
|
<div
|
|
143
142
|
bind:this={boxes[col + row * 5]}
|
|
144
143
|
class="box"
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { default as FieldImagePosition } from './FieldImagePosition.svelte';
|
|
2
|
-
export * from './position.js';
|
|
2
|
+
export type * from './position.js';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { isNotBlank } from 'txstate-utils'
|
|
5
5
|
import { TAG_API_CONTEXT, type Tag, type TagClient, type TagGroup } from './TagAPI'
|
|
6
6
|
import trashIcon from '@iconify-icons/ph/trash-simple-fill'
|
|
7
|
-
import { Icon } from '..'
|
|
7
|
+
import { Icon } from '..'
|
|
8
8
|
import type { PopupMenuItem } from '@txstate-mws/svelte-components'
|
|
9
9
|
|
|
10
10
|
export let path: string
|
|
@@ -64,7 +64,6 @@
|
|
|
64
64
|
return item.group ? `${item.group}: ${tag}` : tag
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
|
|
68
67
|
</script>
|
|
69
68
|
|
|
70
69
|
<FieldMultiselect {path} {label} {getOptions} {lookupByValue} {conditional} {required} {extradescid} {helptext} {emptyText} {placeholder} {menuClass} {menuContainerClass} {menuItemClass} {menuItemHilitedClass} {menuCategoryClass} selectedItemLabel={showTitleInDialog ? selectedItemLabel : undefined} includeDeleteAll confirmDelete="Are you sure you want to remove all tag selections?">
|
package/dist/tree/Tree.svelte
CHANGED
|
@@ -178,9 +178,9 @@
|
|
|
178
178
|
onMount(async () => {
|
|
179
179
|
document.addEventListener('dragend', onDragEnd)
|
|
180
180
|
headerSizes.set(calcHeaderSizes()) // seems to need a kick on first mount
|
|
181
|
-
await new Promise(resolve => requestAnimationFrame(resolve))
|
|
181
|
+
await new Promise(resolve => { requestAnimationFrame(resolve) })
|
|
182
182
|
// need to wait long enough for headers to redraw before trying to mount the rows
|
|
183
|
-
await new Promise(resolve => requestAnimationFrame(resolve))
|
|
183
|
+
await new Promise(resolve => { requestAnimationFrame(resolve) })
|
|
184
184
|
mounted = true
|
|
185
185
|
await store.refresh()
|
|
186
186
|
})
|
|
@@ -234,7 +234,6 @@
|
|
|
234
234
|
{/if}
|
|
235
235
|
</div>
|
|
236
236
|
{#if mounted && myRootItems?.length}
|
|
237
|
-
<!-- svelte-ignore a11y-no-noninteractive-element-to-interactive-role -->
|
|
238
237
|
<ul bind:this={store.treeElement} role="tree" class:resizing={!!dragtargetid} on:mousemove={dragtargetid ? headerDrag : undefined} on:touchmove={dragtargetid ? headerDrag : undefined} on:mouseup={headerDragEnd} on:touchend={headerDragEnd} on:keyup={onKeyUp}>
|
|
239
238
|
{#each myRootItems as item, i (item.id)}
|
|
240
239
|
<TreeNode
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
$: headerComponent = header.component as any
|
|
12
12
|
</script>
|
|
13
13
|
|
|
14
|
-
{#each leadingIcons as icon}
|
|
14
|
+
{#each leadingIcons as icon (icon.icon)}
|
|
15
15
|
<span class={['icon', icon.class?.trim()].filter(isNotBlank).join(' ')}>
|
|
16
16
|
<Icon icon={icon.icon} tooltip={icon.tooltip} inline width="1.5em" hiddenLabel={icon.label} />
|
|
17
17
|
</span>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
{/if}
|
|
26
26
|
{#if trailingIcons.length}
|
|
27
27
|
<span class="trailing-icons">
|
|
28
|
-
{#each trailingIcons as icon}
|
|
28
|
+
{#each trailingIcons as icon (icon.icon)}
|
|
29
29
|
<span class={['icon', icon.class?.trim()].filter(isNotBlank).join(' ')}>
|
|
30
30
|
<Icon icon={icon.icon} tooltip={icon.tooltip} inline width="1.5em" hiddenLabel={icon.label} />
|
|
31
31
|
</span>
|
|
@@ -56,15 +56,13 @@
|
|
|
56
56
|
if (['Enter', ' '].includes(e.key)) {
|
|
57
57
|
e.preventDefault()
|
|
58
58
|
e.stopPropagation()
|
|
59
|
-
if ($store.selected
|
|
60
|
-
else {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
store.select(item, { clear: true })
|
|
67
|
-
}
|
|
59
|
+
if ($store.selected?.size === 1 && $store.selected.has(item.id)) dispatch('choose', item)
|
|
60
|
+
else if (e.metaKey || e.altKey) {
|
|
61
|
+
store.select(item, { clear: false, toggle: true })
|
|
62
|
+
} else if (e.shiftKey) {
|
|
63
|
+
shiftClick()
|
|
64
|
+
} else {
|
|
65
|
+
store.select(item, { clear: true })
|
|
68
66
|
}
|
|
69
67
|
} else if (e.key === 'Escape') {
|
|
70
68
|
store.deselect()
|
|
@@ -115,7 +113,8 @@
|
|
|
115
113
|
const selectedNodes = treenodes.filter(n => n.matches('.selected'))
|
|
116
114
|
const firstSelected = selectedNodes[0]
|
|
117
115
|
if (!firstSelected || (selectedNodes.length === 1 && firstSelected === nodeelement)) {
|
|
118
|
-
|
|
116
|
+
store.select(item, { toggle: true })
|
|
117
|
+
return
|
|
119
118
|
}
|
|
120
119
|
const lastSelected = selectedNodes[selectedNodes.length - 1]
|
|
121
120
|
const selectingdownward = firstSelected.compareDocumentPosition(nodeelement) === Node.DOCUMENT_POSITION_FOLLOWING
|
|
@@ -199,26 +198,26 @@
|
|
|
199
198
|
}
|
|
200
199
|
function onDragEnter (e: DragEvent) {
|
|
201
200
|
if (!dropZone) dragOver = 0
|
|
202
|
-
else dragOver
|
|
201
|
+
else dragOver += 1
|
|
203
202
|
onDragOver(e)
|
|
204
203
|
}
|
|
205
204
|
function onDragEnterAbove (e: DragEvent) {
|
|
206
205
|
if (!dropAbove) dragOverAbove = 0
|
|
207
|
-
else dragOverAbove
|
|
206
|
+
else dragOverAbove += 1
|
|
208
207
|
onDragOverAbove(e)
|
|
209
208
|
}
|
|
210
209
|
function onDragLeave (e: DragEvent) {
|
|
211
210
|
if (!dropZone) dragOver = 0
|
|
212
|
-
else dragOver
|
|
211
|
+
else dragOver -= 1
|
|
213
212
|
}
|
|
214
213
|
function onDragLeaveAbove (e: DragEvent) {
|
|
215
214
|
if (!dropAbove) dragOverAbove = 0
|
|
216
|
-
else dragOverAbove
|
|
215
|
+
else dragOverAbove -= 1
|
|
217
216
|
}
|
|
218
217
|
|
|
219
|
-
let display = $focused
|
|
218
|
+
let display = $focused?.id === item.id
|
|
220
219
|
onMount(() => {
|
|
221
|
-
if ($focused
|
|
220
|
+
if ($focused?.id === item.id) nodeelement.scrollIntoView({ block: 'center' })
|
|
222
221
|
nodeelement.addEventListener('lazy', () => { display = true })
|
|
223
222
|
lazyObserver!.observe(nodeelement)
|
|
224
223
|
return () => lazyObserver!.unobserve(nodeelement)
|
|
@@ -252,7 +251,7 @@
|
|
|
252
251
|
role="treeitem"
|
|
253
252
|
data-id={item.id}
|
|
254
253
|
draggable={isDraggable}
|
|
255
|
-
tabindex={$focused
|
|
254
|
+
tabindex={$focused?.id === item.id ? 0 : -1}
|
|
256
255
|
aria-level={level}
|
|
257
256
|
aria-posinset={posinset}
|
|
258
257
|
aria-setsize={setsize}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dosgato/dialog",
|
|
3
3
|
"description": "A component library for building forms that edit a JSON document.",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.5.0",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"prepublishOnly": "svelte-package",
|
|
7
7
|
"dev": "vite dev --force",
|
|
8
8
|
"package": "svelte-package",
|
|
9
9
|
"check": "svelte-check --tsconfig ./tsconfig.json",
|
|
10
10
|
"check:watch": "svelte-check --tsconfig ./tsconfig.json --watch",
|
|
11
|
-
"lint": "eslint
|
|
11
|
+
"lint": "eslint ."
|
|
12
12
|
},
|
|
13
13
|
"main": "./dist/index.js",
|
|
14
14
|
"exports": {
|
|
@@ -20,32 +20,39 @@
|
|
|
20
20
|
"./package.json": "./package.json"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@codemirror/lang-javascript": "^6.1.7",
|
|
24
23
|
"@codemirror/lang-css": "^6.2.1",
|
|
25
24
|
"@codemirror/lang-html": "^6.4.3",
|
|
26
|
-
"@
|
|
25
|
+
"@codemirror/lang-javascript": "^6.1.7",
|
|
27
26
|
"@iconify-icons/mdi": "^1.2.22",
|
|
28
27
|
"@iconify-icons/ph": "^1.2.2",
|
|
28
|
+
"@iconify/svelte": "^4.0.0 || ^5.0.0",
|
|
29
29
|
"@txstate-mws/svelte-components": "^1.6.11",
|
|
30
30
|
"@txstate-mws/svelte-forms": "^2.0.0",
|
|
31
|
+
"@typescript/vfs": "^1.6.4",
|
|
32
|
+
"@valtown/codemirror-ts": "^2.3.1",
|
|
33
|
+
"cm6-graphql": "0.2.1",
|
|
31
34
|
"codemirror": "^6.0.1",
|
|
32
35
|
"txstate-utils": "^1.8.0"
|
|
33
36
|
},
|
|
34
37
|
"devDependencies": {
|
|
38
|
+
"@eslint/compat": "^2.0.3",
|
|
39
|
+
"@stylistic/eslint-plugin": "^2.10.1",
|
|
35
40
|
"@sveltejs/adapter-auto": "^7.0.0",
|
|
36
41
|
"@sveltejs/kit": "^2.0.1",
|
|
37
42
|
"@sveltejs/package": "^2.0.1",
|
|
38
43
|
"@sveltejs/vite-plugin-svelte": "^6.0.0",
|
|
39
|
-
"eslint-config-
|
|
44
|
+
"eslint-config-love": "^151.0.0",
|
|
40
45
|
"eslint-plugin-svelte": "^3.0.0",
|
|
41
|
-
"svelte-check": "^4.0.0",
|
|
42
46
|
"svelte": "^5.0.0",
|
|
47
|
+
"svelte-check": "^4.0.0",
|
|
43
48
|
"typescript": "^5.0.2",
|
|
44
49
|
"vite": "^7.0.0"
|
|
45
50
|
},
|
|
46
51
|
"peerDependencies": {
|
|
47
52
|
"svelte": "^3.53.1 || ^4.0.0 || ^5.0.0"
|
|
48
53
|
},
|
|
49
|
-
"files": [
|
|
54
|
+
"files": [
|
|
55
|
+
"dist"
|
|
56
|
+
],
|
|
50
57
|
"type": "module"
|
|
51
58
|
}
|