@humandialog/forms.svelte 1.8.11 → 1.8.13

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.
@@ -43,15 +43,12 @@ export async function show(around, _toolbar, _props = {}) {
43
43
  };
44
44
  props.onSizeChanged = () => onSizeChanged();
45
45
  hide_window_indicator = 0;
46
- window.addEventListener("click", on_before_window_click, true);
47
46
  if (isDeviceSmallerThan("sm"))
48
47
  preventScrollRestorer = usePreventScroll();
49
48
  if (isDeviceSmallerThan("sm")) {
50
49
  $fabHiddenDueToPopup = true;
51
50
  }
52
51
  await tick();
53
- if (!was_visible)
54
- rootElement.addEventListener("click", on_before_container_click, true);
55
52
  cssPosition = calculatePosition(x, y, around_rect, true, false);
56
53
  }
57
54
  export function isVisible() {
@@ -64,8 +61,6 @@ export function hide() {
64
61
  visible = false;
65
62
  toolbar = null;
66
63
  cssPosition = calculatePosition(x, y, around_rect, false, false);
67
- window.removeEventListener("click", on_before_window_click, true);
68
- rootElement?.removeEventListener("click", on_before_container_click, true);
69
64
  if (preventScrollRestorer) {
70
65
  preventScrollRestorer();
71
66
  preventScrollRestorer = null;
@@ -82,7 +77,7 @@ async function onSizeChanged() {
82
77
  cssPosition = calculatePosition(x, y, around_rect, true, false);
83
78
  }
84
79
  let hide_window_indicator = 0;
85
- function on_before_window_click() {
80
+ function on_before_window_click(e) {
86
81
  hide_window_indicator++;
87
82
  setTimeout(() => {
88
83
  if (hide_window_indicator != 0) {
@@ -155,30 +150,42 @@ function calculatePosition(x2, y2, around, visible2, fresh) {
155
150
  }
156
151
  return result;
157
152
  }
153
+ function on_window_click(e) {
154
+ const clickedElement = e.target;
155
+ if (clickedElement.id == "__hd_svelte_floating_container") {
156
+ hide();
157
+ }
158
+ }
158
159
  </script>
159
160
 
161
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
160
162
  <div id="__hd_svelte_floating_container"
161
163
  class=" Floating_container
162
- bg-stone-100 dark:bg-stone-800 rounded-lg shadow-md shadow-stone-500 dark:shadow-black z-40 fixed
164
+ z-40
165
+ fixed inset-0 w-screen overflow-y-auto overscroll-contain
166
+ "
167
+ hidden={!visible}
168
+ on:click={on_window_click}>
169
+ <div class="bg-stone-100 dark:bg-stone-800 rounded-lg shadow-md shadow-stone-500 dark:shadow-black
163
170
  sm:shadow-xl sm:shadow-slate-700/10
164
171
  sm:dark:shadow-black/80
165
- sm:outline sm:outline-1 sm:outline-stone-500"
166
- style={cssPosition}
167
- visible={visible}
168
- bind:this={rootElement}>
169
- {#if closeButtonPos}
170
- <button class=" text-stone-800 dark:text-stone-400
171
- fixed w-6 h-6 flex items-center justify-center
172
- focus:outline-none font-medium text-sm text-center"
173
- style={closeButtonPos}
174
- on:click={ hide }> <!--rounded-full focus:ring-4 focus:ring-blue-300 dark:focus:ring-blue-800 text-stone-500 bg-stone-200/70 hover:bg-stone-200 dark:text-stone-500 dark:bg-stone-700/80 dark:hover:bg-stone-700 -->
175
- <Icon component={FaTimes} s="md"/>
176
- </button>
177
- {/if}
172
+ sm:outline sm:outline-1 sm:outline-stone-500 fixed"
173
+ style={cssPosition}
174
+ bind:this={rootElement}>
175
+ {#if closeButtonPos}
176
+ <button class=" text-stone-800 dark:text-stone-400
177
+ fixed w-6 h-6 flex items-center justify-center
178
+ focus:outline-none font-medium text-sm text-center"
179
+ style={closeButtonPos}
180
+ on:click={ hide }> <!--rounded-full focus:ring-4 focus:ring-blue-300 dark:focus:ring-blue-800 text-stone-500 bg-stone-200/70 hover:bg-stone-200 dark:text-stone-500 dark:bg-stone-700/80 dark:hover:bg-stone-700 -->
181
+ <Icon component={FaTimes} s="md"/>
182
+ </button>
183
+ {/if}
178
184
 
179
- {#if toolbar}
180
- <svelte:component this={toolbar} {...props} {maxHeight} bind:this={internalElement} />
181
- {/if}
185
+ {#if toolbar}
186
+ <svelte:component this={toolbar} {...props} {maxHeight} bind:this={internalElement} />
187
+ {/if}
188
+ </div>
182
189
  </div>
183
190
 
184
191
  <!-- use usePreventScroll instead -->
@@ -118,12 +118,15 @@ function setup(...args) {
118
118
  if (readOnly)
119
119
  can_be_activated = false;
120
120
  else if (is_compact) {
121
- can_be_activated = false;
122
- let contexts = inContext.split(" ");
123
- contexts.forEach((ctx2) => {
124
- if ($contextItemsStore[ctx2] == item)
125
- can_be_activated = true;
126
- });
121
+ if (inContext) {
122
+ can_be_activated = false;
123
+ let contexts = inContext.split(" ");
124
+ contexts.forEach((ctx2) => {
125
+ if ($contextItemsStore[ctx2] == item)
126
+ can_be_activated = true;
127
+ });
128
+ } else
129
+ can_be_activated = true;
127
130
  } else
128
131
  can_be_activated = true;
129
132
  }
@@ -0,0 +1,39 @@
1
+ <script>import Menu from "./contextmenu.svelte";
2
+ let visible = false;
3
+ let menu;
4
+ let onOrgHideCallback = void 0;
5
+ export async function show(around, _operations, preference = 0, onHideCallback = void 0) {
6
+ visible = true;
7
+ onOrgHideCallback = onHideCallback;
8
+ menu?.show(around, _operations, preference, onHide);
9
+ }
10
+ export function isVisible() {
11
+ return visible;
12
+ }
13
+ export function hide() {
14
+ visible = false;
15
+ menu?.hide();
16
+ }
17
+ function onHide() {
18
+ if (onOrgHideCallback)
19
+ onOrgHideCallback();
20
+ visible = false;
21
+ }
22
+ function on_window_click(e) {
23
+ const clickedElement = e.target;
24
+ if (clickedElement.id == "__hd_svelte_contextmenu") {
25
+ hide();
26
+ }
27
+ }
28
+ </script>
29
+
30
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
31
+ <div id="__hd_svelte_contextmenu"
32
+ class=" z-40
33
+ fixed inset-0 w-screen overflow-y-auto overscroll-contain"
34
+ hidden={!visible}
35
+ on:click={on_window_click}>
36
+
37
+ <Menu bind:this={menu}/>
38
+
39
+ </div>
@@ -0,0 +1,21 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ show?: ((around: DOMRect | DOMPoint, _operations: any, preference?: number, onHideCallback?: Function | undefined) => Promise<void>) | undefined;
5
+ isVisible?: (() => boolean) | undefined;
6
+ hide?: (() => void) | undefined;
7
+ };
8
+ events: {
9
+ [evt: string]: CustomEvent<any>;
10
+ };
11
+ slots: {};
12
+ };
13
+ export type ContextmenuProps = typeof __propDef.props;
14
+ export type ContextmenuEvents = typeof __propDef.events;
15
+ export type ContextmenuSlots = typeof __propDef.slots;
16
+ export default class Contextmenu extends SvelteComponentTyped<ContextmenuProps, ContextmenuEvents, ContextmenuSlots> {
17
+ get show(): (around: DOMRect | DOMPoint, _operations: any, preference?: number, onHideCallback?: Function | undefined) => Promise<void>;
18
+ get isVisible(): () => boolean;
19
+ get hide(): () => void;
20
+ }
21
+ export {};
@@ -204,7 +204,6 @@ export async function show(around, _operations, preference = 0, onHideCallback =
204
204
  const is_root_menu = owner_menu_item == void 0;
205
205
  if (is_root_menu) {
206
206
  hide_window_indicator = 0;
207
- window.addEventListener("click", on_before_window_click, true);
208
207
  if (isDeviceSmallerThan("sm"))
209
208
  preventScrollRestorer = usePreventScroll();
210
209
  }
@@ -214,7 +213,7 @@ export async function show(around, _operations, preference = 0, onHideCallback =
214
213
  await tick();
215
214
  css_position = calculatePosition(x, y, true, false);
216
215
  if (is_root_menu)
217
- menu_root.addEventListener("click", on_before_container_click, true);
216
+ ;
218
217
  if (menu_items.length && !isDeviceSmallerThan("sm"))
219
218
  focus_menu_item(focused_index);
220
219
  }
@@ -227,8 +226,6 @@ export function hide() {
227
226
  }
228
227
  visible = false;
229
228
  css_position = calculatePosition(x, y, false, false);
230
- window.removeEventListener("click", on_before_window_click, true);
231
- menu_root?.removeEventListener("click", on_before_container_click, true);
232
229
  if (preventScrollRestorer) {
233
230
  preventScrollRestorer();
234
231
  preventScrollRestorer = null;
@@ -417,203 +414,161 @@ function isOperationDisabled(operation) {
417
414
  }
418
415
  </script>
419
416
 
417
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
420
418
 
421
- <div id="__hd_svelte_contextmenu"
422
- class="
423
- bg-stone-100 dark:bg-stone-800 rounded-lg shadow-md shadow-stone-500
419
+ <div class="bg-stone-100 dark:bg-stone-800 rounded-lg shadow-md shadow-stone-500
424
420
  dark:shadow-black z-40 fixed
425
421
  sm:shadow-xl sm:shadow-slate-700/10
426
422
  sm:dark:shadow-black/80
427
423
  sm:outline sm:outline-1 sm:outline-stone-500
428
- z-40 fixed min-w-60 max-h-screen "
424
+ fixed min-w-60 max-h-screen "
425
+ style={css_position}
426
+ bind:this={menu_root}>
427
+ <div class="
428
+ paper w-full sm:w-[24rem]
429
+ prose prose-base prose-zinc dark:prose-invert prose-a:no-underline
430
+ sm:max-w-3xl
429
431
 
430
- style={css_position}
431
- visible={visible}
432
- bind:this={menu_root}>
433
- <div class="
434
- paper w-full sm:w-[24rem]
435
- prose prose-base prose-zinc dark:prose-invert prose-a:no-underline
436
- sm:max-w-3xl
432
+ m-0 pt-3 pb-5 px-2
433
+ sm:rounded
434
+ sm:bg-stone-100 sm:dark:bg-stone-900
435
+ flex flex-col
436
+ ">
437
437
 
438
- m-0 pt-3 pb-5 px-2
439
- sm:rounded
440
- sm:bg-stone-100 sm:dark:bg-stone-900
441
- flex flex-col
442
- ">
438
+ <!-------------------------------------------------------------------->
439
+ <!-- POPUP HEADER ---------------------------------------------------->
440
+ <!-------------------------------------------------------------------->
441
+ {#if closeButtonPos}
442
+ <h3 class = "flex-none">
443
+ <div class="px-2 w-full flex flex-row justify-between">
443
444
 
444
- <!-------------------------------------------------------------------->
445
- <!-- POPUP HEADER ---------------------------------------------------->
446
- <!-------------------------------------------------------------------->
447
- {#if closeButtonPos}
448
- <h3 class = "flex-none">
449
- <div class="px-2 w-full flex flex-row justify-between">
450
-
451
- <div class="grow ">
452
- <span class="px-2 text-left"></span>
453
- </div>
454
- <div class="py-1.5 flex flex-row justify-between">
455
- <button class="ml-4 w-6
456
- hover:bg-stone-200 hover:dark:bg-stone-700
457
- hover:outline hover:outline-8
458
- hover:outline-stone-200 hover:dark:outline-stone-700"
459
- on:click={hide}>
460
- <Ricon icon = 'x' />
461
- </button>
445
+ <div class="grow ">
446
+ <span class="px-2 text-left"></span>
447
+ </div>
448
+ <div class="py-1.5 flex flex-row justify-between">
449
+ <button class="ml-4 w-6
450
+ hover:bg-stone-200 hover:dark:bg-stone-700
451
+ hover:outline hover:outline-8
452
+ hover:outline-stone-200 hover:dark:outline-stone-700"
453
+ on:click={hide}>
454
+ <Ricon icon = 'x' />
455
+ </button>
456
+ </div>
462
457
  </div>
463
- </div>
464
- </h3>
465
- {/if}
458
+ </h3>
459
+ {/if}
466
460
 
467
461
 
468
- <!-------------------------------------------------------------------->
469
- <!-- POPUP CONTENT---------------------------------------------------->
470
- <!-------------------------------------------------------------------->
471
- <div class="px-2 grow max-h-[45dvh] sm:max-h-[75dvh] overflow-y-auto overscroll-contain">
462
+ <!-------------------------------------------------------------------->
463
+ <!-- POPUP CONTENT---------------------------------------------------->
464
+ <!-------------------------------------------------------------------->
465
+ <div class="px-2 grow max-h-[45dvh] sm:max-h-[75dvh] overflow-y-auto overscroll-contain">
472
466
 
473
467
 
474
468
 
475
- {#each operations as operation, index}
469
+ {#each operations as operation, index}
476
470
 
477
- {@const is_separator = operation.separator}
478
- {#if is_separator}
479
- {#if index>0 && index < operations.length-1}
480
- <!--hr class="my-1 mx-4 border-1 border-stone-300 dark:border-stone-700"-->
481
- <hr class="my-4">
482
- {/if}
483
- {:else}
471
+ {@const is_separator = operation.separator}
472
+ {#if is_separator}
473
+ {#if index>0 && index < operations.length-1}
474
+ <!--hr class="my-1 mx-4 border-1 border-stone-300 dark:border-stone-700"-->
475
+ <hr class="my-4">
476
+ {/if}
477
+ {:else}
484
478
 
485
- {@const mobile = isDeviceSmallerThan("sm")}
486
- {@const icon_placeholder_without_desc = mobile ? 12 : 10}
487
- {@const icon_placeholder_with_desc = mobile ? 14 : 12}
488
- {@const icon_placeholder_size = operation.description ? icon_placeholder_with_desc : icon_placeholder_without_desc}
489
- {@const menu_item_id = menu_items_id_prefix + index}
490
- {@const isTop = index==0}
491
- {@const isBottom = index == operations.length-1}
492
- {@const isFocused = index == focused_index}
493
- {@const clipFocusedBorder = isFocused ? (isTop ? 'rounded-t-lg' : (isBottom ? 'rounded-b-lg' : '')) : ''}
494
- {@const active = calculateBackground(isFocused || isOperationActivated(operation), false)}
495
- {@const has_submenu = operation.menu !== undefined && operation.menu.length > 0}
496
- <!--div-->
497
- <div class="pl-4 cursor-pointer {active}"
498
- id={menu_item_id}
499
- bind:this={menu_items[index]}
500
- on:click|stopPropagation={(e) => { execute_action(e, operation, index) } }
501
- on:mouseenter = {(e) => {on_mouse_move(index)}}
502
- on:keydown|stopPropagation={(e) => on_keydown(e, operation, index)}
503
- on:mousedown={mousedown}
504
- disabled={isOperationDisabled(operation)}
505
- class:opacity-60={isOperationDisabled(operation)}>
479
+ {@const mobile = isDeviceSmallerThan("sm")}
480
+ {@const icon_placeholder_without_desc = mobile ? 12 : 10}
481
+ {@const icon_placeholder_with_desc = mobile ? 14 : 12}
482
+ {@const icon_placeholder_size = operation.description ? icon_placeholder_with_desc : icon_placeholder_without_desc}
483
+ {@const menu_item_id = menu_items_id_prefix + index}
484
+ {@const isTop = index==0}
485
+ {@const isBottom = index == operations.length-1}
486
+ {@const isFocused = index == focused_index}
487
+ {@const clipFocusedBorder = isFocused ? (isTop ? 'rounded-t-lg' : (isBottom ? 'rounded-b-lg' : '')) : ''}
488
+ {@const active = calculateBackground(isFocused || isOperationActivated(operation), false)}
489
+ {@const has_submenu = operation.menu !== undefined && operation.menu.length > 0}
490
+ <!--div-->
491
+ <div class="pl-4 cursor-pointer {active} focus:outline-0"
492
+ id={menu_item_id}
493
+ bind:this={menu_items[index]}
494
+ on:click|stopPropagation={(e) => { execute_action(e, operation, index) } }
495
+ on:mouseenter = {(e) => {on_mouse_move(index)}}
496
+ on:keydown|stopPropagation={(e) => on_keydown(e, operation, index)}
497
+ on:mousedown={mousedown}
498
+ disabled={isOperationDisabled(operation)}
499
+ class:opacity-60={isOperationDisabled(operation)}
500
+ tabindex="-1">
506
501
 
507
502
 
508
503
 
509
- <h4 class = "font-normal my-0 py-2"> <!-- test -->
510
- <div class=" w-full flex flex-row justify-between">
511
- {#if operation.mricon}
512
- {@const color=operation.color ?? ''}
513
- <div class="py-1 mr-1 w-4 {color}"><Ricon icon = {operation.mricon} s/></div>
514
- {:else if operation.toggle !== undefined}
515
- {#if operation.toggle}
516
- <div class="py-1 mr-1 w-4 text-orange-800 dark:text-orange-200"><Ricon icon='toggle-right' s/></div>
504
+ <h4 class = "font-normal my-0 py-2"> <!-- test -->
505
+ <div class=" w-full flex flex-row justify-between">
506
+ {#if operation.mricon}
507
+ {@const color=operation.color ?? ''}
508
+ <div class="py-1 mr-1 w-4 {color}"><Ricon icon = {operation.mricon} s/></div>
509
+ {:else if operation.toggle !== undefined}
510
+ {#if operation.toggle}
511
+ <div class="py-1 mr-1 w-4 text-orange-800 dark:text-orange-200"><Ricon icon='toggle-right' s/></div>
512
+ {:else}
513
+ <div class="py-1 mr-1 w-4"><Ricon icon='toggle-left' s/></div>
514
+ {/if}
515
+ {:else if operation.icon}
516
+ <div class="py-1 mr-1 w-4 text-orange-500"><Icon s="md" component={operation.icon}/></div>
517
517
  {:else}
518
- <div class="py-1 mr-1 w-4"><Ricon icon='toggle-left' s/></div>
518
+ <div class="py-1 mr-1 w-4"></div>
519
519
  {/if}
520
- {:else if operation.icon}
521
- <div class="py-1 mr-1 w-4 text-orange-500"><Icon s="md" component={operation.icon}/></div>
522
- {:else}
523
- <div class="py-1 mr-1 w-4"></div>
524
- {/if}
525
- <div class="grow">
526
- <span class="px-2 text-left">{operation.caption}
527
- </span>
528
- </div>
520
+ <div class="grow">
521
+ <span class="px-2 text-left">{operation.caption}
522
+ </span>
523
+ </div>
529
524
 
530
- {#if has_submenu}
531
- <div class="py-1 mr-1 w-4"><Ricon icon = 'chevron-right' xs/></div>
532
- <svelte:self bind:this={submenus[index]} menu_items_id_prefix={`${menu_item_id}_`} owner_menu_item={menu_items[index]}/>
533
- {/if}
525
+ {#if has_submenu}
526
+ <div class="py-1 mr-1 w-4"><Ricon icon = 'chevron-right' xs/></div>
527
+ <svelte:self bind:this={submenus[index]} menu_items_id_prefix={`${menu_item_id}_`} owner_menu_item={menu_items[index]}/>
528
+ {/if}
534
529
 
535
- </div>
536
- </h4>
530
+ </div>
531
+ </h4>
537
532
 
538
533
 
539
534
 
540
- <!-- comming soon - top info --
541
- <figcaption>
542
- <div class="grid gap-4 grid-cols-3 grid-rows-1">
543
- <span>OCT-254</span>
544
- <span class="text-center"></span>
545
- <span class="text-right">15 listopad 25</span>
546
- </div>
547
- </figcaption>
548
- -------------------------------->
549
- <!--@el------------------------->
550
- <!-- comming soon - middle info --
551
- <figcaption>
552
- <div class="grid gap-4 grid-cols-3 grid-rows-1">
553
- <span>Andrzej</span>
554
- <span class="text-center"></span>
555
- <span class="text-right">Specyfikacje</span>
556
- </div>
557
- </figcaption>
535
+ <!-- comming soon - top info --
536
+ <figcaption>
537
+ <div class="grid gap-4 grid-cols-3 grid-rows-1">
538
+ <span>OCT-254</span>
539
+ <span class="text-center"></span>
540
+ <span class="text-right">15 listopad 25</span>
541
+ </div>
542
+ </figcaption>
543
+ -------------------------------->
544
+ <!--@el------------------------->
545
+ <!-- comming soon - middle info --
546
+ <figcaption>
547
+ <div class="grid gap-4 grid-cols-3 grid-rows-1">
548
+ <span>Andrzej</span>
549
+ <span class="text-center"></span>
550
+ <span class="text-right">Specyfikacje</span>
551
+ </div>
552
+ </figcaption>
558
553
 
559
554
 
560
- {#if summary && item[summary]}
561
- <figcaption>
562
- {item[summary]}
563
- </figcaption>
564
- {/if}
565
- -------------------------------->
566
- </div>
555
+ {#if summary && item[summary]}
556
+ <figcaption>
557
+ {item[summary]}
558
+ </figcaption>
559
+ {/if}
560
+ -------------------------------->
561
+ </div>
562
+ <!--/div-->
563
+
564
+ {/if}
565
+ {/each}
566
+ </div>
567
567
  <!--/div-->
568
- {#if false}
569
- <button class="block w-full pr-4 text-left flex flex-row cursor-context-menu {active} focus:outline-none items-center"
570
- id={menu_item_id}
571
- bind:this={menu_items[index]}
572
- on:click|stopPropagation={(e) => { execute_action(e, operation, index) } }
573
- on:mouseenter = {(e) => {on_mouse_move(index)}}
574
- on:keydown|stopPropagation={(e) => on_keydown(e, operation, index)}
575
- on:mousedown={mousedown}
576
- disabled={isOperationDisabled(operation)}
577
- class:opacity-60={isOperationDisabled(operation)}>
578
568
 
579
- <div class="flex justify-center space-x-10 px-4 py-2 ml-12 sm:ml-0" >
580
- {#if operation.icon}
581
- {@const cc = mobile ? 7 : 6}
582
- {@const icon_size = icon_placeholder_size - cc}
583
- <Icon s="md" component={operation.icon}/>
584
- {:else if operation.img}
585
- {@const cc = mobile ? 7 : 6}
586
- {@const icon_size = icon_placeholder_size - cc}
587
- <div class="w-4 h-4">
588
- <img src={operation.img} alt=""/>
589
- </div>
590
- {:else}
591
- {@const cc = mobile ? 7 : 6}
592
- {@const icon_size = icon_placeholder_size - cc}
593
- <div class="w-4 h-4"></div>
594
- {/if}
595
- </div>
596
- <div class="">
597
- <p class=""> {operation.caption}</p>
598
- {#if operation.description}
599
- <p class="truncate inline-block text-xs">
600
- {operation.description}
601
- </p>
602
- {/if}
603
- </div>
604
- {#if has_submenu}
605
- <p class="ms-auto pr-1 text-sm font-mono text-stone-500">&rarr;</p>
606
- <svelte:self bind:this={submenus[index]} menu_items_id_prefix={`${menu_item_id}_`} owner_menu_item={menu_items[index]}/>
607
- {/if}
608
- </button>
609
- {/if}
610
- {/if}
611
- {/each}
612
- </div>
613
- <!--/div-->
569
+ </div>
570
+ </div>
614
571
 
615
- </div>
616
- </div>
617
572
 
618
573
  <!-- use usePreventScroll instead -->
619
574
  <!--style>
@@ -52,12 +52,16 @@ $:
52
52
  $:
53
53
  selected_class = is_row_selected ? "!border-blue-300 dark:!border-blue-300/50" : "";
54
54
  $:
55
- focused_class = is_row_active ? "bg-stone-50 dark:bg-stone-800" : "";
55
+ focused_class = is_row_active ? "bg-stone-100 dark:bg-stone-800" : "";
56
56
  $:
57
57
  force_rerender($data_tick_store, $contextItemsStore);
58
58
  let is_visible = false;
59
59
  export function reload() {
60
60
  columnDef = definition.columns[currentColumnIdx];
61
+ if (!columnDef) {
62
+ is_visible = false;
63
+ return;
64
+ }
61
65
  let allItems = definition.getItems();
62
66
  if (definition.stateAttrib) {
63
67
  if (columnDef.state < 0) {
@@ -183,6 +187,8 @@ let headerElement;
183
187
  export function activate(e) {
184
188
  if (e)
185
189
  e.stopPropagation();
190
+ if (!columnDef)
191
+ return;
186
192
  if (!columnDef.operations)
187
193
  return;
188
194
  if (isActive("props", columnDef)) {
@@ -22,7 +22,7 @@ export let multiselectOperations = (items2) => [];
22
22
  export let key = "";
23
23
  export let selectionKey = "props";
24
24
  export let multiselect = false;
25
- export let component_id;
25
+ export let component_id = "";
26
26
  export const CLEAR_SELECTION = 0;
27
27
  export const KEEP_SELECTION = -1;
28
28
  export const SELECT_PREVIOUS = -2;
@@ -16,7 +16,7 @@ declare const __propDef: {
16
16
  key?: string | undefined;
17
17
  selectionKey?: string | undefined;
18
18
  multiselect?: boolean | undefined;
19
- component_id: string;
19
+ component_id?: string | undefined;
20
20
  CLEAR_SELECTION?: 0 | undefined;
21
21
  KEEP_SELECTION?: -1 | undefined;
22
22
  SELECT_PREVIOUS?: -2 | undefined;
@@ -1,4 +1,4 @@
1
- import Menu from './contextmenu.svelte';
1
+ import Menu from './contextmenu.container.svelte';
2
2
  import Floating_container from './Floating_container.svelte';
3
3
  import Grid from './Grid.menu.svelte';
4
4
  let menu_comopnent = null;
@@ -4,11 +4,12 @@
4
4
  import { afterUpdate } from 'svelte';
5
5
  import {ext} from '../i18n'
6
6
 
7
- export let self
8
- export let a
9
- export let id = undefined
7
+ export let self
8
+ export let a
9
+ export let id = undefined
10
10
  export let readonly = false
11
11
  export let focusOnClick = true
12
+ export let local = false
12
13
 
13
14
  //https://developer.chrome.com/docs/web-platform/page-lifecycle-api#the-unload-event
14
15
  //https://developer.mozilla.org/en-US/docs/Web/API/Document/visibilitychange_event
@@ -36,7 +37,12 @@
36
37
 
37
38
  text.trim()
38
39
 
39
- setjItemProperty(self, a, text)
40
+ if(!local)
41
+ setjItemProperty(self, a, text)
42
+ else
43
+ {
44
+ self[a] = text
45
+ }
40
46
  }
41
47
 
42
48
  function focus(e)
@@ -7,6 +7,7 @@ export default class R extends SvelteComponentTyped<{
7
7
  id?: string | undefined;
8
8
  readonly?: boolean | undefined;
9
9
  focusOnClick?: boolean | undefined;
10
+ local?: boolean | undefined;
10
11
  }, {
11
12
  [evt: string]: CustomEvent<any>;
12
13
  }, {}> {
@@ -22,6 +23,7 @@ declare const __propDef: {
22
23
  id?: string | undefined;
23
24
  readonly?: boolean | undefined;
24
25
  focusOnClick?: boolean | undefined;
26
+ local?: boolean | undefined;
25
27
  };
26
28
  events: {
27
29
  [evt: string]: CustomEvent<any>;
@@ -91,10 +91,16 @@
91
91
 
92
92
  import LoaderCircle from './ricons/loader-circle.svelte'
93
93
  import Check from './ricons/check.svelte'
94
+
94
95
  import Star from './ricons/star.svelte'
95
96
  import StarOff from './ricons/star-off.svelte'
96
97
  import Heart from './ricons/heart.svelte'
97
98
  import HeartOff from './ricons/heart-off.svelte'
99
+ import Bell from './ricons/bell.svelte'
100
+ import BellOff from './ricons/bell-off.svelte'
101
+ import Eye from './ricons/eye.svelte'
102
+ import EyeOff from './ricons/eye-off.svelte'
103
+
98
104
  import ExternalLink from './ricons/external-link.svelte'
99
105
  import ToggleLeft from './ricons/toggle-left.svelte'
100
106
  import ToggleRight from './ricons/toggle-right.svelte'
@@ -186,6 +192,11 @@
186
192
  'star-off': StarOff,
187
193
  'heart': Heart,
188
194
  'heart-off': HeartOff,
195
+ 'bell': Bell,
196
+ 'bell-off': BellOff,
197
+ 'eye': Eye,
198
+ 'eye-off': EyeOff,
199
+
189
200
  'external-link': ExternalLink,
190
201
  'toggle-left': ToggleLeft,
191
202
  'toggle-right': ToggleRight,
@@ -0,0 +1,13 @@
1
+ <script>
2
+ export let w = 24;
3
+ export let h = 24;
4
+ export let s = 2;
5
+ </script>
6
+
7
+
8
+ <svg xmlns="http://www.w3.org/2000/svg" width={w} height={h} viewBox="0 0 24 24" fill="none" stroke="currentColor"
9
+ stroke-width={s} stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell-off-icon lucide-bell-off">
10
+ <path d="M10.268 21a2 2 0 0 0 3.464 0" />
11
+ <path d="M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742" />
12
+ <path d="m2 2 20 20" />
13
+ <path d="M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05" /></svg>
@@ -0,0 +1,27 @@
1
+ /** @typedef {typeof __propDef.props} BellOffProps */
2
+ /** @typedef {typeof __propDef.events} BellOffEvents */
3
+ /** @typedef {typeof __propDef.slots} BellOffSlots */
4
+ export default class BellOff extends SvelteComponentTyped<{
5
+ w?: number | undefined;
6
+ s?: number | undefined;
7
+ h?: number | undefined;
8
+ }, {
9
+ [evt: string]: CustomEvent<any>;
10
+ }, {}> {
11
+ }
12
+ export type BellOffProps = typeof __propDef.props;
13
+ export type BellOffEvents = typeof __propDef.events;
14
+ export type BellOffSlots = typeof __propDef.slots;
15
+ import { SvelteComponentTyped } from "svelte";
16
+ declare const __propDef: {
17
+ props: {
18
+ w?: number | undefined;
19
+ s?: number | undefined;
20
+ h?: number | undefined;
21
+ };
22
+ events: {
23
+ [evt: string]: CustomEvent<any>;
24
+ };
25
+ slots: {};
26
+ };
27
+ export {};
@@ -0,0 +1,13 @@
1
+ <script>
2
+ export let w = 24;
3
+ export let h = 24;
4
+ export let s = 2;
5
+ </script>
6
+
7
+
8
+ <svg xmlns="http://www.w3.org/2000/svg" width={w} height={h} viewBox="0 0 24 24" fill="none" stroke="currentColor"
9
+ stroke-width={s} stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell-icon lucide-bell">
10
+ <path d="M10.268 21a2 2 0 0 0 3.464 0" />
11
+ <path
12
+ d="M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326" />
13
+ </svg>
@@ -0,0 +1,27 @@
1
+ /** @typedef {typeof __propDef.props} BellProps */
2
+ /** @typedef {typeof __propDef.events} BellEvents */
3
+ /** @typedef {typeof __propDef.slots} BellSlots */
4
+ export default class Bell extends SvelteComponentTyped<{
5
+ w?: number | undefined;
6
+ s?: number | undefined;
7
+ h?: number | undefined;
8
+ }, {
9
+ [evt: string]: CustomEvent<any>;
10
+ }, {}> {
11
+ }
12
+ export type BellProps = typeof __propDef.props;
13
+ export type BellEvents = typeof __propDef.events;
14
+ export type BellSlots = typeof __propDef.slots;
15
+ import { SvelteComponentTyped } from "svelte";
16
+ declare const __propDef: {
17
+ props: {
18
+ w?: number | undefined;
19
+ s?: number | undefined;
20
+ h?: number | undefined;
21
+ };
22
+ events: {
23
+ [evt: string]: CustomEvent<any>;
24
+ };
25
+ slots: {};
26
+ };
27
+ export {};
@@ -0,0 +1,13 @@
1
+ <script>
2
+ export let w = 24;
3
+ export let h = 24;
4
+ export let s = 2;
5
+ </script>
6
+
7
+
8
+ <svg xmlns="http://www.w3.org/2000/svg" width={w} height={h} viewBox="0 0 24 24" fill="none" stroke="currentColor"
9
+ stroke-width={s} stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-eye-off-icon lucide-eye-off">
10
+ <path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49" />
11
+ <path d="M14.084 14.158a3 3 0 0 1-4.242-4.242" />
12
+ <path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143" />
13
+ <path d="m2 2 20 20" /></svg>
@@ -0,0 +1,27 @@
1
+ /** @typedef {typeof __propDef.props} EyeOffProps */
2
+ /** @typedef {typeof __propDef.events} EyeOffEvents */
3
+ /** @typedef {typeof __propDef.slots} EyeOffSlots */
4
+ export default class EyeOff extends SvelteComponentTyped<{
5
+ w?: number | undefined;
6
+ s?: number | undefined;
7
+ h?: number | undefined;
8
+ }, {
9
+ [evt: string]: CustomEvent<any>;
10
+ }, {}> {
11
+ }
12
+ export type EyeOffProps = typeof __propDef.props;
13
+ export type EyeOffEvents = typeof __propDef.events;
14
+ export type EyeOffSlots = typeof __propDef.slots;
15
+ import { SvelteComponentTyped } from "svelte";
16
+ declare const __propDef: {
17
+ props: {
18
+ w?: number | undefined;
19
+ s?: number | undefined;
20
+ h?: number | undefined;
21
+ };
22
+ events: {
23
+ [evt: string]: CustomEvent<any>;
24
+ };
25
+ slots: {};
26
+ };
27
+ export {};
@@ -0,0 +1,11 @@
1
+ <script>
2
+ export let w = 24;
3
+ export let h = 24;
4
+ export let s = 2;
5
+ </script>
6
+
7
+
8
+ <svg xmlns="http://www.w3.org/2000/svg" width={w} height={h} viewBox="0 0 24 24" fill="none" stroke="currentColor"
9
+ stroke-width={s} stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-eye-icon lucide-eye">
10
+ <path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0" />
11
+ <circle cx="12" cy="12" r="3" /></svg>
@@ -0,0 +1,27 @@
1
+ /** @typedef {typeof __propDef.props} EyeProps */
2
+ /** @typedef {typeof __propDef.events} EyeEvents */
3
+ /** @typedef {typeof __propDef.slots} EyeSlots */
4
+ export default class Eye extends SvelteComponentTyped<{
5
+ w?: number | undefined;
6
+ s?: number | undefined;
7
+ h?: number | undefined;
8
+ }, {
9
+ [evt: string]: CustomEvent<any>;
10
+ }, {}> {
11
+ }
12
+ export type EyeProps = typeof __propDef.props;
13
+ export type EyeEvents = typeof __propDef.events;
14
+ export type EyeSlots = typeof __propDef.slots;
15
+ import { SvelteComponentTyped } from "svelte";
16
+ declare const __propDef: {
17
+ props: {
18
+ w?: number | undefined;
19
+ s?: number | undefined;
20
+ h?: number | undefined;
21
+ };
22
+ events: {
23
+ [evt: string]: CustomEvent<any>;
24
+ };
25
+ slots: {};
26
+ };
27
+ export {};
package/desk.svelte CHANGED
@@ -432,20 +432,25 @@
432
432
  left-0 bottom-[50px]
433
433
  sm:left-[40px] sm:top-0
434
434
  w-full sm:w-[320px]
435
- h-[calc(100svh-50px)] sm:h-full
435
+ h-[calc(100lvh-50px)] sm:h-full
436
436
 
437
437
  z-30 overflow-x-hidden
438
-
438
+ bg-stone-50/90 dark:bg-stone-900/90
439
+ ">
440
+
441
+ <div class="absolute bottom-0 h-[calc(100svh-50px)] sm:h-full w-full
439
442
  bg-stone-50 dark:bg-stone-900
440
443
  border-t sm:border-t-0 sm:border-r border-stone-300 dark:border-stone-300/50
441
444
  sm:shadow-lg sm:shadow-stone-500
442
- sm:dark:shadow-black">
445
+ sm:dark:shadow-black
446
+ ">
443
447
 
444
- <div class=" w-full h-full overflow-y-auto overscroll-contain py-0 px-0">
448
+ <div class="h-full w-full overflow-y-auto overscroll-contain py-0 px-0">
445
449
 
446
- <Configurable config={layout.sidebar[visible_sidebar]}>
447
- <div slot='alt'></div>
448
- </Configurable>
450
+ <Configurable config={layout.sidebar[visible_sidebar]}>
451
+ <div slot='alt'></div>
452
+ </Configurable>
453
+ </div>
449
454
  </div>
450
455
  </div>
451
456
  {/if}
@@ -516,8 +521,9 @@
516
521
  <!--## BOTTOM SIDEBAR ###############################-->
517
522
  <!--###########################################################-->
518
523
 
519
- <div class="{bottom_bar_visibility} left-0 bottom-0 w-screen h-[240px] z-20 overflow-y-hidden overflow-x-auto
520
- sm:left-[40px] sm:w-[100vw-40px] " >
524
+ <div class="{bottom_bar_visibility} left-0 bottom-0 w-screen h-[280px] z-20 overflow-y-hidden overflow-x-auto
525
+ sm:left-[40px] sm:w-[100vw-40px]
526
+ {lg_content_area_horizontal_dim}" >
521
527
  <Configurable config={layout.selectionDetails} >
522
528
  <div slot="alt"></div>
523
529
  </Configurable>
@@ -4,7 +4,7 @@
4
4
  import {showMenu} from './components/menu'
5
5
  import {push, pop, location} from 'svelte-spa-router'
6
6
  import {contextItemsStore, context_info_store, contextToolbarOperations, data_tick_store, leftHandedFAB} from './stores.js'
7
- //import Menu from './components/contextmenu.svelte'
7
+
8
8
 
9
9
  import {
10
10
  dark_mode_store,
package/i18n.js CHANGED
@@ -165,21 +165,26 @@ export function extractTranslated(str)
165
165
  if(!str)
166
166
  return ""
167
167
 
168
- if(str.startsWith('_;'))
168
+ if (typeof str === 'string' || str instanceof String)
169
169
  {
170
- const body = str.replace(/^_;\s*/, ''); // cut prefix "_; "
171
- return i18n(body);
172
- }
173
- else if(str.startsWith('__;'))
174
- {
175
- const body = str.replace(/^__;\s*/, ''); // cut prefix "__; "
176
- const PAIRS = /([A-Za-z]{2})\s*:\s*([^;]*)/g;
177
- const dict = {};
178
-
179
- for (const [, code, text] of body.matchAll(PAIRS))
180
- dict[code.toLowerCase()] = text.trim();
181
-
182
- return i18n(dict)
170
+ if(str.startsWith('_;'))
171
+ {
172
+ const body = str.replace(/^_;\s*/, ''); // cut prefix "_; "
173
+ return i18n(body);
174
+ }
175
+ else if(str.startsWith('__;'))
176
+ {
177
+ const body = str.replace(/^__;\s*/, ''); // cut prefix "__; "
178
+ const PAIRS = /([A-Za-z]{2})\s*:\s*([^;]*)/g;
179
+ const dict = {};
180
+
181
+ for (const [, code, text] of body.matchAll(PAIRS))
182
+ dict[code.toLowerCase()] = text.trim();
183
+
184
+ return i18n(dict)
185
+ }
186
+ else
187
+ return str
183
188
  }
184
189
  else
185
190
  return str
package/index.js CHANGED
@@ -39,7 +39,6 @@ export { default as ComboItem } from './components/combo/combo.item.svelte';
39
39
  export { default as RichEdit } from './components/document/rich.edit.svelte';
40
40
  export { default as Editor } from './components/document/editor.svelte';
41
41
  export { default as Spinner } from './components/delayed.spinner.svelte';
42
- //export { default as Menu } from './components/contextmenu.svelte'
43
42
  export { showMenu, showGridMenu, showFloatingToolbar, SHOW_MENU_BELOW, SHOW_MENU_ABOVE, SHOW_MENU_RIGHT, SHOW_MENU_LEFT } from './components/menu';
44
43
  export { default as Fab } from './components/Fab.svelte';
45
44
  export { default as Sidebar } from './components/sidebar/sidebar.svelte';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@humandialog/forms.svelte",
3
- "version": "1.8.11",
3
+ "version": "1.8.13",
4
4
  "description": "Basic Svelte UI components for Object Reef applications",
5
5
  "devDependencies": {
6
6
  "@playwright/test": "^1.28.1",
@@ -80,6 +80,7 @@
80
80
  "./components/combo/combo.svelte": "./components/combo/combo.svelte",
81
81
  "./components/combo/combo": "./components/combo/combo.js",
82
82
  "./components/contextmenu-25.svelte": "./components/contextmenu-25.svelte",
83
+ "./components/contextmenu.container.svelte": "./components/contextmenu.container.svelte",
83
84
  "./components/contextmenu.svelte": "./components/contextmenu.svelte",
84
85
  "./components/date.svelte": "./components/date.svelte",
85
86
  "./components/date_utils": "./components/date_utils.js",
@@ -161,6 +162,8 @@
161
162
  "./components/react-aria/preventScroll": "./components/react-aria/preventScroll.js",
162
163
  "./components/ricons/arrow-up.svelte": "./components/ricons/arrow-up.svelte",
163
164
  "./components/ricons/barcode.svelte": "./components/ricons/barcode.svelte",
165
+ "./components/ricons/bell-off.svelte": "./components/ricons/bell-off.svelte",
166
+ "./components/ricons/bell.svelte": "./components/ricons/bell.svelte",
164
167
  "./components/ricons/bold.svelte": "./components/ricons/bold.svelte",
165
168
  "./components/ricons/calendar.svelte": "./components/ricons/calendar.svelte",
166
169
  "./components/ricons/calendars.svelte": "./components/ricons/calendars.svelte",
@@ -189,6 +192,8 @@
189
192
  "./components/ricons/download.svelte": "./components/ricons/download.svelte",
190
193
  "./components/ricons/ellipsis-vertical.svelte": "./components/ricons/ellipsis-vertical.svelte",
191
194
  "./components/ricons/external-link.svelte": "./components/ricons/external-link.svelte",
195
+ "./components/ricons/eye-off.svelte": "./components/ricons/eye-off.svelte",
196
+ "./components/ricons/eye.svelte": "./components/ricons/eye.svelte",
192
197
  "./components/ricons/file-archive.svelte": "./components/ricons/file-archive.svelte",
193
198
  "./components/ricons/file-text.svelte": "./components/ricons/file-text.svelte",
194
199
  "./components/ricons/folder.svelte": "./components/ricons/folder.svelte",
@@ -5,7 +5,6 @@
5
5
  import {reef} from '@humandialog/auth.svelte'
6
6
  import Modal from './modal.svelte'
7
7
  import Input from './components/inputbox.ltop.svelte'
8
- //import Menu from './components/contextmenu.svelte'
9
8
 
10
9
  import {dark_mode_store,
11
10
  tools_visible_store,