@humandialog/forms.svelte 1.8.2 → 1.8.4
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/kanban/internal/kanban.card.svelte +0 -12
- package/components/kanban/internal/kanban.column.svelte +1 -1
- package/components/list/internal/list.element.svelte +1 -13
- package/components/list/list.svelte +1 -1
- package/desk.svelte +2 -2
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/package.json +2 -2
- package/updates.d.ts +1 -0
- package/updates.js +26 -3
- package/utils.d.ts +4 -0
- package/utils.js +19 -4
|
@@ -84,18 +84,6 @@ function onSummaryChanged(text) {
|
|
|
84
84
|
pushChanges();
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
-
function setSelectionAtEnd(element) {
|
|
88
|
-
const textNode = element.childNodes[0];
|
|
89
|
-
const text = textNode.textContent;
|
|
90
|
-
let range = document.createRange();
|
|
91
|
-
let end_offset = text.length;
|
|
92
|
-
let end_container = textNode;
|
|
93
|
-
range.setStart(end_container, end_offset);
|
|
94
|
-
range.setEnd(end_container, end_offset);
|
|
95
|
-
let sel = window.getSelection();
|
|
96
|
-
sel.removeAllRanges();
|
|
97
|
-
sel.addRange(range);
|
|
98
|
-
}
|
|
99
87
|
let topProps;
|
|
100
88
|
let middleProps;
|
|
101
89
|
let bottomProps;
|
|
@@ -145,7 +145,7 @@ export async function add(after = KanbanColumnTop) {
|
|
|
145
145
|
if (detail.cancel)
|
|
146
146
|
activateAfterDomUpdate = lastActivatedElement;
|
|
147
147
|
else {
|
|
148
|
-
if (
|
|
148
|
+
if (false) {
|
|
149
149
|
let currentActive = activateAfterDomUpdate ?? getActive("props");
|
|
150
150
|
if (currentActive)
|
|
151
151
|
await add(currentActive);
|
|
@@ -194,18 +194,6 @@ async function force_editing(field) {
|
|
|
194
194
|
focusEditable(element_id);
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
|
-
function setSelectionAtEnd(element) {
|
|
198
|
-
const textNode = element.childNodes[0];
|
|
199
|
-
const text = textNode.textContent;
|
|
200
|
-
let range = document.createRange();
|
|
201
|
-
let end_offset = text.length;
|
|
202
|
-
let end_container = textNode;
|
|
203
|
-
range.setStart(end_container, end_offset);
|
|
204
|
-
range.setEnd(end_container, end_offset);
|
|
205
|
-
let sel = window.getSelection();
|
|
206
|
-
sel.removeAllRanges();
|
|
207
|
-
sel.addRange(range);
|
|
208
|
-
}
|
|
209
197
|
let rootElement;
|
|
210
198
|
export function scrollToView() {
|
|
211
199
|
rootElement.scrollIntoView(
|
|
@@ -344,7 +332,7 @@ async function onDownloadFile(e) {
|
|
|
344
332
|
|
|
345
333
|
{#if summary && (item[summary] || placeholder=='Summary')}
|
|
346
334
|
<figcaption>
|
|
347
|
-
{item[summary]}
|
|
335
|
+
{ext(item[summary])}
|
|
348
336
|
</figcaption>
|
|
349
337
|
{/if}
|
|
350
338
|
</figure>
|
|
@@ -214,7 +214,7 @@ export async function addRowAfter(after = null) {
|
|
|
214
214
|
if (detail.cancel)
|
|
215
215
|
activate_after_dom_update = last_activated_element;
|
|
216
216
|
else {
|
|
217
|
-
if (
|
|
217
|
+
if (false) {
|
|
218
218
|
let current_active = getActive(selectionKey);
|
|
219
219
|
await addRowAfter(current_active);
|
|
220
220
|
}
|
package/desk.svelte
CHANGED
|
@@ -409,8 +409,8 @@
|
|
|
409
409
|
overflow-auto" >
|
|
410
410
|
|
|
411
411
|
<div class=" flex flex-row justify-between h-full
|
|
412
|
-
text-stone-500 bg-stone-200/70
|
|
413
|
-
dark:text-orange-200 dark:bg-stone-700/70
|
|
412
|
+
text-stone-500 bg-stone-200/70
|
|
413
|
+
dark:text-orange-200 dark:bg-stone-700/70
|
|
414
414
|
bg-stone-200 dark:bg-stone-800/70
|
|
415
415
|
border-t border-stone-500 ">
|
|
416
416
|
<HorizontalNavigatorTabs appConfig={layout}/>
|
package/index.d.ts
CHANGED
|
@@ -71,7 +71,7 @@ export { default as Breadcrumb } from './components/breadcrumb.svelte';
|
|
|
71
71
|
export { breadcrumbAdd, breadcrumbParse, breadcrumbStringify, breadcrumbClipName } from './components/breadcrumb_utils';
|
|
72
72
|
export { default as EditableSpan } from './components/prose.editable.span.svelte';
|
|
73
73
|
export { default as EditableParagraph } from './components/prose.editable.p.svelte';
|
|
74
|
-
export { selectItem, activateItem, clearActiveItem, isActive, isSelected, getActive, getActiveItems, getActiveCount, addActiveItem, removeActiveItem, editable, startEditing, saveCurrentEditable, focusEditable, selectable, handleSelect, isDeviceSmallerThan, resizeImage, refreshToolbarOperations, reloadPageToolbarOperations, isOnScreenKeyboardVisible, randomString, UI, NAV_MODE_SIDEBAR, NAV_MODE_FULL_PAGE, navGetMode, navIsVisible, navGetKey, navShow, navHide, navToggle, navPrevVisibleKey, navAutoHide, insertAt, insertAfter, getPrev, getNext, getFirst, getLast, removeAt, remove, swapElements, setSelectionAtEnd, isValidEmail, localStorageSave, localStorageRead, sessionStorageSave, sessionStorageRead, hasLocalStorage, getCurrentGroupName, getGroupsMenu } from './utils';
|
|
74
|
+
export { selectItem, activateItem, clearActiveItem, isActive, isSelected, getActive, getActiveItems, getActiveCount, addActiveItem, removeActiveItem, editable, startEditing, saveCurrentEditable, focusEditable, selectable, handleSelect, isDeviceSmallerThan, resizeImage, refreshToolbarOperations, reloadPageToolbarOperations, isOnScreenKeyboardVisible, randomString, UI, NAV_MODE_SIDEBAR, NAV_MODE_FULL_PAGE, navGetMode, navIsVisible, navGetKey, navShow, navHide, navToggle, navPrevVisibleKey, navAutoHide, insertAt, insertAfter, getPrev, getNext, getFirst, getLast, removeAt, remove, swapElements, setSelectionAtEnd, isValidEmail, localStorageSave, localStorageRead, sessionStorageSave, sessionStorageRead, hasLocalStorage, getCurrentGroupName, getGroupsMenu, fetchHandlers } from './utils';
|
|
75
75
|
export { getNiceStringDateTime, getFormattedStringDate, getNiceStringDate, dayName, monthName } from './components/date_utils';
|
|
76
76
|
export { mainContentPageReloader, reloadMainContentPage, reloadWholeApp, wholeAppReloader, alerts, addAlert, onErrorShowAlert, main_sidebar_visible_store, navKey, tagsReloader, reloadVisibleTags, dark_mode_store, showFABAlways } from './stores.js';
|
|
77
77
|
export { data_tick_store, // tmp
|
package/index.js
CHANGED
|
@@ -77,7 +77,7 @@ export { default as Breadcrumb } from './components/breadcrumb.svelte';
|
|
|
77
77
|
export { breadcrumbAdd, breadcrumbParse, breadcrumbStringify, breadcrumbClipName } from './components/breadcrumb_utils';
|
|
78
78
|
export { default as EditableSpan } from './components/prose.editable.span.svelte';
|
|
79
79
|
export { default as EditableParagraph } from './components/prose.editable.p.svelte';
|
|
80
|
-
export { selectItem, activateItem, clearActiveItem, isActive, isSelected, getActive, getActiveItems, getActiveCount, addActiveItem, removeActiveItem, editable, startEditing, saveCurrentEditable, focusEditable, selectable, handleSelect, isDeviceSmallerThan, resizeImage, refreshToolbarOperations, reloadPageToolbarOperations, isOnScreenKeyboardVisible, randomString, UI, NAV_MODE_SIDEBAR, NAV_MODE_FULL_PAGE, navGetMode, navIsVisible, navGetKey, navShow, navHide, navToggle, navPrevVisibleKey, navAutoHide, insertAt, insertAfter, getPrev, getNext, getFirst, getLast, removeAt, remove, swapElements, setSelectionAtEnd, isValidEmail, localStorageSave, localStorageRead, sessionStorageSave, sessionStorageRead, hasLocalStorage, getCurrentGroupName, getGroupsMenu } from './utils';
|
|
80
|
+
export { selectItem, activateItem, clearActiveItem, isActive, isSelected, getActive, getActiveItems, getActiveCount, addActiveItem, removeActiveItem, editable, startEditing, saveCurrentEditable, focusEditable, selectable, handleSelect, isDeviceSmallerThan, resizeImage, refreshToolbarOperations, reloadPageToolbarOperations, isOnScreenKeyboardVisible, randomString, UI, NAV_MODE_SIDEBAR, NAV_MODE_FULL_PAGE, navGetMode, navIsVisible, navGetKey, navShow, navHide, navToggle, navPrevVisibleKey, navAutoHide, insertAt, insertAfter, getPrev, getNext, getFirst, getLast, removeAt, remove, swapElements, setSelectionAtEnd, isValidEmail, localStorageSave, localStorageRead, sessionStorageSave, sessionStorageRead, hasLocalStorage, getCurrentGroupName, getGroupsMenu, fetchHandlers } from './utils';
|
|
81
81
|
export { getNiceStringDateTime, getFormattedStringDate, getNiceStringDate, dayName, monthName } from './components/date_utils';
|
|
82
82
|
export { mainContentPageReloader, reloadMainContentPage, reloadWholeApp, wholeAppReloader, alerts, addAlert, onErrorShowAlert, main_sidebar_visible_store, navKey, tagsReloader, reloadVisibleTags, dark_mode_store, showFABAlways } from './stores.js';
|
|
83
83
|
export { data_tick_store, // tmp
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@humandialog/forms.svelte",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.4",
|
|
4
4
|
"description": "Basic Svelte UI components for Object Reef applications",
|
|
5
5
|
"devDependencies": {
|
|
6
6
|
"@playwright/test": "^1.28.1",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
},
|
|
28
28
|
"type": "module",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@humandialog/auth.svelte": "^1.
|
|
30
|
+
"@humandialog/auth.svelte": "^1.9.2",
|
|
31
31
|
"@tiptap/core": "^2.11.0",
|
|
32
32
|
"@tiptap/extension-bullet-list": "^2.11.5",
|
|
33
33
|
"@tiptap/extension-code-block": "^2.11.5",
|
package/updates.d.ts
CHANGED
|
@@ -6,4 +6,5 @@ export function hasModifications(): boolean;
|
|
|
6
6
|
export function informItem(itm: any, type_name?: undefined): boolean;
|
|
7
7
|
export function pushChanges(afterPushCallback?: undefined): void;
|
|
8
8
|
export function xpushChanges(afterPushCallback?: undefined): void;
|
|
9
|
+
export function pushChangesImmediately(): Promise<void>;
|
|
9
10
|
export const unsavedModificationsTicket: import("svelte/store").Writable<number>;
|
package/updates.js
CHANGED
|
@@ -11,6 +11,10 @@ const modified_item_store = writable(null);
|
|
|
11
11
|
export function setjItemProperty(item, field_name, value)
|
|
12
12
|
{
|
|
13
13
|
console.log('setjItemProperty ' + field_name)
|
|
14
|
+
|
|
15
|
+
if(item[field_name] == value)
|
|
16
|
+
return
|
|
17
|
+
|
|
14
18
|
let type_name = item.$type;
|
|
15
19
|
item[field_name] = value;
|
|
16
20
|
informModification(item, field_name, type_name);
|
|
@@ -118,6 +122,9 @@ export function pushChanges(afterPushCallback=undefined)
|
|
|
118
122
|
{
|
|
119
123
|
//console.trace()
|
|
120
124
|
|
|
125
|
+
if(!modified_items_map.size)
|
|
126
|
+
return;
|
|
127
|
+
|
|
121
128
|
if(afterPushCallback)
|
|
122
129
|
afterPushCallbacks.push(afterPushCallback);
|
|
123
130
|
|
|
@@ -154,9 +161,25 @@ modified_item_store.subscribe((mod_item) => {
|
|
|
154
161
|
export const unsavedModificationsTicket = writable(0);
|
|
155
162
|
|
|
156
163
|
update_request_ticket.subscribe(async (v) => {
|
|
157
|
-
|
|
164
|
+
flushChanges(v)
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
export async function pushChangesImmediately()
|
|
168
|
+
{
|
|
169
|
+
if(!modified_items_map.size)
|
|
170
|
+
return;
|
|
171
|
+
|
|
172
|
+
const ticket = get(update_request_ticket) + 1
|
|
173
|
+
update_request_ticket.set(ticket)
|
|
174
|
+
|
|
175
|
+
await flushChanges(ticket);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
async function flushChanges(ticket)
|
|
179
|
+
{
|
|
180
|
+
if(ticket != last_update_ticket)
|
|
158
181
|
{
|
|
159
|
-
last_update_ticket =
|
|
182
|
+
last_update_ticket = ticket;
|
|
160
183
|
|
|
161
184
|
if(!modified_items_map.size)
|
|
162
185
|
return;
|
|
@@ -220,4 +243,4 @@ update_request_ticket.subscribe(async (v) => {
|
|
|
220
243
|
}
|
|
221
244
|
|
|
222
245
|
}
|
|
223
|
-
}
|
|
246
|
+
}
|
package/utils.d.ts
CHANGED
|
@@ -83,3 +83,7 @@ export namespace UI {
|
|
|
83
83
|
export const NAVIGATION_PAGE_PATH: "/nav";
|
|
84
84
|
export const NAV_MODE_SIDEBAR: 0;
|
|
85
85
|
export const NAV_MODE_FULL_PAGE: 1;
|
|
86
|
+
export namespace fetchHandlers {
|
|
87
|
+
const onBefore: ((path: any) => void)[];
|
|
88
|
+
const onError: ((err: any, res: any) => void)[];
|
|
89
|
+
}
|
package/utils.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { getContext, tick } from "svelte";
|
|
2
2
|
import {derived, get} from 'svelte/store'
|
|
3
|
-
import { contextItemsStore, contextToolbarOperations, pageToolbarOperations, data_tick_store, main_sidebar_visible_store, show_sidebar, hide_sidebar, previously_visible_sidebar, auto_hide_sidebar, reloadWholeApp} from "./stores";
|
|
3
|
+
import { contextItemsStore, contextToolbarOperations, pageToolbarOperations, data_tick_store, main_sidebar_visible_store, show_sidebar, hide_sidebar, previously_visible_sidebar, auto_hide_sidebar, reloadWholeApp, onErrorShowAlert} from "./stores";
|
|
4
4
|
import {location, push, pop} from 'svelte-spa-router'
|
|
5
5
|
import {session, reef} from '@humandialog/auth.svelte'
|
|
6
6
|
import { i18n } from "./i18n";
|
|
7
|
+
import {pushChangesImmediately} from './updates'
|
|
7
8
|
|
|
8
9
|
export let icons = {symbols :null}
|
|
9
10
|
|
|
@@ -498,20 +499,21 @@ export function editable(node, params)
|
|
|
498
499
|
node.contentEditable = "true"
|
|
499
500
|
node.focus();
|
|
500
501
|
|
|
501
|
-
|
|
502
|
+
await tick();
|
|
503
|
+
|
|
502
504
|
let range = document.createRange();
|
|
503
505
|
range.selectNodeContents(node);
|
|
504
506
|
let end_offset = range.endOffset;
|
|
505
507
|
let end_container = range.endContainer;
|
|
506
508
|
range.setStart(end_container, 0)
|
|
507
|
-
range.setEnd(end_container,
|
|
509
|
+
range.setEnd(end_container, 0)
|
|
508
510
|
//range.setStart(node, 0)
|
|
509
511
|
//range.setEnd(node, 0)
|
|
510
512
|
// console.log('range rect: ', range.getBoundingClientRect())
|
|
511
513
|
let sel = window.getSelection();
|
|
512
514
|
sel.removeAllRanges();
|
|
513
515
|
sel.addRange(range);
|
|
514
|
-
|
|
516
|
+
|
|
515
517
|
}
|
|
516
518
|
|
|
517
519
|
const focus_listener = async (e) =>
|
|
@@ -1274,4 +1276,17 @@ function launchNewGroupWizzard(afterGroupCreated=undefined)
|
|
|
1274
1276
|
});
|
|
1275
1277
|
|
|
1276
1278
|
dialog.show()
|
|
1279
|
+
}
|
|
1280
|
+
|
|
1281
|
+
|
|
1282
|
+
|
|
1283
|
+
export const fetchHandlers = {
|
|
1284
|
+
onBefore: [
|
|
1285
|
+
(path) => { pushChangesImmediately() }
|
|
1286
|
+
],
|
|
1287
|
+
|
|
1288
|
+
//onAfter: [],
|
|
1289
|
+
onError: [
|
|
1290
|
+
(err, res) => onErrorShowAlert(err)
|
|
1291
|
+
]
|
|
1277
1292
|
}
|