@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.
@@ -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 (detail.incremental) {
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 (detail.incremental && definition.insert_incremental) {
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 hover:bg-stone-200
413
- dark:text-orange-200 dark:bg-stone-700/70 dark:hover:bg-stone-700
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.2",
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.8.21",
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
- if(v != last_update_ticket)
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 = v;
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
- /*await tick();
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, end_offset)
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
  }