@humandialog/forms.svelte 0.4.13 → 0.4.15

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.
Files changed (49) hide show
  1. package/components/Floating_container.svelte +43 -10
  2. package/components/Floating_container.svelte.d.ts +4 -2
  3. package/components/Grid.menu.svelte +5 -3
  4. package/components/Grid.menu.svelte.d.ts +2 -2
  5. package/components/combo/combo.d.ts +2 -0
  6. package/components/combo/combo.js +2 -0
  7. package/components/combo/combo.source.svelte +6 -2
  8. package/components/combo/combo.source.svelte.d.ts +3 -1
  9. package/components/combo/combo.svelte +127 -83
  10. package/components/combo/combo.svelte.d.ts +5 -0
  11. package/components/contextmenu.svelte +23 -9
  12. package/components/contextmenu.svelte.d.ts +4 -2
  13. package/components/date.svelte +142 -25
  14. package/components/date.svelte.d.ts +7 -0
  15. package/components/list/List.d.ts +28 -0
  16. package/components/list/List.js +34 -0
  17. package/components/list/internal/list.element.svelte +295 -0
  18. package/components/list/internal/list.element.svelte.d.ts +29 -0
  19. package/components/list/internal/list.inserter.svelte +20 -0
  20. package/components/list/internal/list.inserter.svelte.d.ts +18 -0
  21. package/components/list/list.combo.svelte +20 -0
  22. package/components/list/list.combo.svelte.d.ts +21 -0
  23. package/components/list/list.date.svelte +14 -0
  24. package/components/list/list.date.svelte.d.ts +18 -0
  25. package/components/list/list.inserter.svelte +6 -0
  26. package/components/list/list.inserter.svelte.d.ts +16 -0
  27. package/components/list/list.summary.svelte +7 -0
  28. package/components/list/list.summary.svelte.d.ts +17 -0
  29. package/components/list/list.svelte +148 -0
  30. package/components/list/list.svelte.d.ts +41 -0
  31. package/components/list/list.title.svelte +7 -0
  32. package/components/list/list.title.svelte.d.ts +17 -0
  33. package/components/menu.d.ts +3 -3
  34. package/components/menu.js +20 -10
  35. package/components/sidebar/sidebar.item.svelte +27 -15
  36. package/components/sidebar/sidebar.item.svelte.d.ts +3 -0
  37. package/components/table/table.svelte +1 -1
  38. package/desk.svelte +67 -35
  39. package/horizontal.toolbar.svelte +11 -5
  40. package/index.d.ts +10 -3
  41. package/index.js +11 -3
  42. package/operations.svelte +11 -5
  43. package/operations.svelte.d.ts +3 -1
  44. package/package.json +11 -2
  45. package/page.svelte +8 -2
  46. package/stores.js +4 -3
  47. package/utils.d.ts +8 -0
  48. package/utils.js +59 -9
  49. package/vertical.toolbar.svelte +11 -4
@@ -0,0 +1,20 @@
1
+ <script>import { getContext, setContext } from "svelte";
2
+ import { rList_property_combo } from "./List";
3
+ import {} from "../combo/combo";
4
+ export let name;
5
+ export let a = "";
6
+ export let on_select = void 0;
7
+ export let association = false;
8
+ let definition = getContext("rList-definition");
9
+ let combo_property = new rList_property_combo();
10
+ combo_property.name = name;
11
+ combo_property.a = a;
12
+ if (!combo_property.a)
13
+ combo_property.a = combo_property.name;
14
+ combo_property.on_select = on_select;
15
+ combo_property.association = association;
16
+ definition.properties.push(combo_property);
17
+ setContext("rCombo-definition", combo_property.combo_definition);
18
+ </script>
19
+
20
+ <slot/>
@@ -0,0 +1,21 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ name: string;
5
+ a?: string | undefined;
6
+ on_select?: undefined;
7
+ association?: boolean | undefined;
8
+ };
9
+ events: {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {
13
+ default: {};
14
+ };
15
+ };
16
+ export type ListProps = typeof __propDef.props;
17
+ export type ListEvents = typeof __propDef.events;
18
+ export type ListSlots = typeof __propDef.slots;
19
+ export default class List extends SvelteComponentTyped<ListProps, ListEvents, ListSlots> {
20
+ }
21
+ export {};
@@ -0,0 +1,14 @@
1
+ <script>import { getContext } from "svelte";
2
+ import { rList_property_type, rList_property } from "./List";
3
+ export let name;
4
+ export let a = "";
5
+ export let on_select = void 0;
6
+ let definition = getContext("rList-definition");
7
+ let date_property = new rList_property(rList_property_type.Date);
8
+ date_property.name = name;
9
+ date_property.a = a;
10
+ if (!date_property.a)
11
+ date_property.a = date_property.name;
12
+ date_property.on_select = on_select;
13
+ definition.properties.push(date_property);
14
+ </script>
@@ -0,0 +1,18 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ name: string;
5
+ a?: string | undefined;
6
+ on_select?: undefined;
7
+ };
8
+ events: {
9
+ [evt: string]: CustomEvent<any>;
10
+ };
11
+ slots: {};
12
+ };
13
+ export type ListProps = typeof __propDef.props;
14
+ export type ListEvents = typeof __propDef.events;
15
+ export type ListSlots = typeof __propDef.slots;
16
+ export default class List extends SvelteComponentTyped<ListProps, ListEvents, ListSlots> {
17
+ }
18
+ export {};
@@ -0,0 +1,6 @@
1
+ <script>import { getContext } from "svelte";
2
+ export let action;
3
+ let definition = getContext("rList-definition");
4
+ definition.can_insert = true;
5
+ definition.oninsert = action;
6
+ </script>
@@ -0,0 +1,16 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ action: Function;
5
+ };
6
+ events: {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {};
10
+ };
11
+ export type ListProps = typeof __propDef.props;
12
+ export type ListEvents = typeof __propDef.events;
13
+ export type ListSlots = typeof __propDef.slots;
14
+ export default class List extends SvelteComponentTyped<ListProps, ListEvents, ListSlots> {
15
+ }
16
+ export {};
@@ -0,0 +1,7 @@
1
+ <script>import { getContext } from "svelte";
2
+ export let a;
3
+ export let editable = false;
4
+ let definition = getContext("rList-definition");
5
+ definition.summary = a;
6
+ definition.summary_editable = editable;
7
+ </script>
@@ -0,0 +1,17 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ a: string;
5
+ editable?: boolean | undefined;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ };
12
+ export type ListProps = typeof __propDef.props;
13
+ export type ListEvents = typeof __propDef.events;
14
+ export type ListSlots = typeof __propDef.slots;
15
+ export default class List extends SvelteComponentTyped<ListProps, ListEvents, ListSlots> {
16
+ }
17
+ export {};
@@ -0,0 +1,148 @@
1
+ <script>import { setContext, getContext, afterUpdate, tick } from "svelte";
2
+ import { data_tick_store, context_items_store, context_types_store } from "../../stores";
3
+ import { activate_item, get_active, clear_active_item, parse_width_directive } from "../../utils";
4
+ import { rList_definition } from "./List";
5
+ import List_element from "./internal/list.element.svelte";
6
+ import Inserter from "./internal/list.inserter.svelte";
7
+ export let title = "";
8
+ export let self = null;
9
+ export let a = "";
10
+ export let objects = void 0;
11
+ export let context = "";
12
+ export let typename = "";
13
+ export let c = "";
14
+ export let toolbar_operations;
15
+ export let context_menu;
16
+ let definition = new rList_definition();
17
+ setContext("rList-definition", definition);
18
+ setContext("rIs-table-component", true);
19
+ let item = null;
20
+ let items = null;
21
+ let ctx = context ? context : getContext("ctx");
22
+ let cs = c ? parse_width_directive(c) : "w-full min-w-full";
23
+ let show_insertion_row_after_element = null;
24
+ const END_OF_LIST = {};
25
+ let rows = [];
26
+ let activate_after_dom_update = null;
27
+ let inserter;
28
+ clear_active_item("props");
29
+ let last_tick = -1;
30
+ $:
31
+ setup($data_tick_store, $context_items_store);
32
+ function setup(...args) {
33
+ last_tick = $data_tick_store;
34
+ item = self ?? $context_items_store[ctx];
35
+ if (objects)
36
+ items = objects;
37
+ else if (item && a)
38
+ items = item[a];
39
+ else
40
+ items = [];
41
+ if (!typename)
42
+ typename = $context_types_store[ctx];
43
+ }
44
+ afterUpdate(() => {
45
+ if (activate_after_dom_update) {
46
+ let row_to_activate_idx = items.findIndex((e) => e == activate_after_dom_update);
47
+ activate_after_dom_update = null;
48
+ if (row_to_activate_idx >= 0) {
49
+ rows[row_to_activate_idx].activate();
50
+ }
51
+ }
52
+ });
53
+ export function refresh() {
54
+ setup();
55
+ }
56
+ export function update_objects(_objects) {
57
+ objects = _objects;
58
+ setup();
59
+ }
60
+ export function update_self(_self) {
61
+ self = _self;
62
+ setup();
63
+ }
64
+ let last_activated_element = null;
65
+ export async function add(after = null) {
66
+ if (!definition.can_insert)
67
+ return;
68
+ show_insertion_row_after_element = after ?? END_OF_LIST;
69
+ last_activated_element = get_active("props");
70
+ let fake_item = {};
71
+ activate_item("props", fake_item);
72
+ await tick();
73
+ if (!inserter)
74
+ return;
75
+ inserter.run(async (detail) => {
76
+ show_insertion_row_after_element = null;
77
+ if (detail.cancel)
78
+ activate_after_dom_update = last_activated_element;
79
+ else {
80
+ if (detail.incremental) {
81
+ let current_active = get_active("props");
82
+ await add(current_active);
83
+ }
84
+ }
85
+ });
86
+ }
87
+ async function insert(title2, after) {
88
+ let new_element = await definition.oninsert(title2, after);
89
+ if (!new_element)
90
+ return;
91
+ activate_after_dom_update = new_element;
92
+ refresh();
93
+ }
94
+ export function remove(element) {
95
+ let removing_idx = items?.findIndex((e) => e == element);
96
+ if (removing_idx < 0)
97
+ return;
98
+ let active_element = get_active("props");
99
+ if (active_element == element) {
100
+ if (removing_idx + 1 < items.length)
101
+ rows[removing_idx + 1].activate();
102
+ else
103
+ activate_item("props", null, []);
104
+ }
105
+ items = items.filter((t) => t != element);
106
+ }
107
+ export function edit(element, property_name) {
108
+ let editing_idx = items?.findIndex((e) => e == element);
109
+ if (editing_idx < 0)
110
+ return;
111
+ rows[editing_idx].edit_property(property_name);
112
+ }
113
+ </script>
114
+
115
+ <slot/> <!-- Launch definition settings -->
116
+
117
+
118
+ {#if title}
119
+ <p class="mt-3 uppercase text-sm text-center">{title}</p>
120
+ <hr class="w-full">
121
+ {/if}
122
+
123
+
124
+ {#if items && items.length > 0 }
125
+ {#each items as element, i (element.Id)}
126
+
127
+ <List_element item={element}
128
+ {toolbar_operations}
129
+ {context_menu}
130
+ bind:this={rows[i]}
131
+ >
132
+ <span slot="left" let:element>
133
+ <slot name="left" {element}/>
134
+ </span>
135
+ </List_element>
136
+
137
+ {#if show_insertion_row_after_element == element}
138
+ <Inserter oninsert={async (text) => {await insert(text, show_insertion_row_after_element)}}
139
+ bind:this={inserter} />
140
+ {/if}
141
+ {/each}
142
+ {/if}
143
+
144
+ {#if show_insertion_row_after_element == END_OF_LIST}
145
+ <Inserter oninsert={async (text) => {await insert(text, null)}}
146
+ bind:this={inserter} />
147
+ {/if}
148
+
@@ -0,0 +1,41 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ title?: string | undefined;
5
+ self?: object | null | undefined;
6
+ a?: string | undefined;
7
+ objects?: object[] | undefined;
8
+ context?: string | undefined;
9
+ typename?: string | undefined;
10
+ c?: string | undefined;
11
+ toolbar_operations: any;
12
+ context_menu: any;
13
+ refresh?: (() => void) | undefined;
14
+ update_objects?: ((_objects: object[]) => void) | undefined;
15
+ update_self?: ((_self: object) => void) | undefined;
16
+ add?: ((after?: object | null) => Promise<void>) | undefined;
17
+ remove?: ((element: object) => void) | undefined;
18
+ edit?: ((element: object, property_name: string) => void) | undefined;
19
+ };
20
+ events: {
21
+ [evt: string]: CustomEvent<any>;
22
+ };
23
+ slots: {
24
+ default: {};
25
+ left: {
26
+ element: object;
27
+ };
28
+ };
29
+ };
30
+ export type ListProps = typeof __propDef.props;
31
+ export type ListEvents = typeof __propDef.events;
32
+ export type ListSlots = typeof __propDef.slots;
33
+ export default class List extends SvelteComponentTyped<ListProps, ListEvents, ListSlots> {
34
+ get refresh(): () => void;
35
+ get update_objects(): (_objects: object[]) => void;
36
+ get update_self(): (_self: object) => void;
37
+ get add(): (after?: object | null) => Promise<void>;
38
+ get remove(): (element: object) => void;
39
+ get edit(): (element: object, property_name: string) => void;
40
+ }
41
+ export {};
@@ -0,0 +1,7 @@
1
+ <script>import { getContext } from "svelte";
2
+ export let a;
3
+ export let editable = false;
4
+ let definition = getContext("rList-definition");
5
+ definition.title = a;
6
+ definition.title_editable = editable;
7
+ </script>
@@ -0,0 +1,17 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ a: string;
5
+ editable?: boolean | undefined;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ };
12
+ export type ListProps = typeof __propDef.props;
13
+ export type ListEvents = typeof __propDef.events;
14
+ export type ListSlots = typeof __propDef.slots;
15
+ export default class List extends SvelteComponentTyped<ListProps, ListEvents, ListSlots> {
16
+ }
17
+ export {};
@@ -1,3 +1,3 @@
1
- export declare function show_menu(x: number, y: number, operations: any): void;
2
- export declare function show_floating_toolbar(x: number, y: number, toolbar: any, props?: {}): void;
3
- export declare function show_grid_menu(x: number, y: number, operations: any): void;
1
+ export declare function show_menu(around: DOMRect | DOMPoint, operations: any): void;
2
+ export declare function show_floating_toolbar(around: DOMRect | DOMPoint, toolbar: any, props?: {}): void;
3
+ export declare function show_grid_menu(around: DOMRect | DOMPoint, operations: any): void;
@@ -3,7 +3,7 @@ import Floating_container from './Floating_container.svelte';
3
3
  import Grid from './Grid.menu.svelte';
4
4
  let menu_comopnent = null;
5
5
  let toolbar_component = null;
6
- export function show_menu(x, y, operations) {
6
+ export function show_menu(around, operations) {
7
7
  let menu_element = document.getElementById("__hd_svelte_contextmenu");
8
8
  if (!!!menu_element) {
9
9
  let app_div = document.getElementById("__hd_svelte_layout_root");
@@ -11,14 +11,18 @@ export function show_menu(x, y, operations) {
11
11
  target: app_div,
12
12
  props: {}
13
13
  });
14
- menu_comopnent.show(x, y, operations);
14
+ menu_comopnent.show(around, operations);
15
+ }
16
+ else if (menu_comopnent) {
17
+ if (menu_comopnent.is_visible())
18
+ menu_comopnent.hide();
19
+ else
20
+ menu_comopnent.show(around, operations);
15
21
  }
16
- else if (menu_comopnent)
17
- menu_comopnent.show(x, y, operations);
18
22
  else
19
23
  console.error('what now?');
20
24
  }
21
- export function show_floating_toolbar(x, y, toolbar, props = {}) {
25
+ export function show_floating_toolbar(around, toolbar, props = {}) {
22
26
  let floating_container = document.getElementById("__hd_svelte_floating_container");
23
27
  if (!!!floating_container) {
24
28
  let app_div = document.getElementById("__hd_svelte_layout_root");
@@ -26,13 +30,19 @@ export function show_floating_toolbar(x, y, toolbar, props = {}) {
26
30
  target: app_div,
27
31
  props: {}
28
32
  });
29
- toolbar_component.show(x, y, toolbar, props);
33
+ toolbar_component.show(around, toolbar, props);
34
+ }
35
+ else if (toolbar_component) {
36
+ if (toolbar_component.is_visible()) {
37
+ toolbar_component.hide();
38
+ }
39
+ else {
40
+ toolbar_component.show(around, toolbar, props);
41
+ }
30
42
  }
31
- else if (toolbar_component)
32
- toolbar_component.show(x, y, toolbar, props);
33
43
  else
34
44
  console.error('what now?');
35
45
  }
36
- export function show_grid_menu(x, y, operations) {
37
- show_floating_toolbar(x, y, Grid, { operations: operations });
46
+ export function show_grid_menu(around, operations) {
47
+ show_floating_toolbar(around, Grid, { operations: operations });
38
48
  }
@@ -3,7 +3,8 @@ import { context_items_store, auto_hide_sidebar } from "../../stores";
3
3
  import {
4
4
  selectable as _selectable,
5
5
  is_selected,
6
- editable as _editable
6
+ editable as _editable,
7
+ handle_select
7
8
  } from "../../utils";
8
9
  export let href;
9
10
  export let icon = void 0;
@@ -27,27 +28,38 @@ function editable_if_needed(node, editable2) {
27
28
  if (editable2)
28
29
  _editable(node, editable2);
29
30
  }
31
+ function on_link_clicked(e) {
32
+ auto_hide_sidebar();
33
+ if (selectable)
34
+ handle_select(e);
35
+ e.stopPropagation();
36
+ }
30
37
  </script>
31
38
 
32
39
  <li>
33
- <a
34
- href={href}
35
- on:click={ (e) => auto_hide_sidebar() }
40
+ <!--svelte-ignore a11y-click-events-have-key-events -->
41
+ <div
42
+ on:click
36
43
  on:contextmenu
37
- class="flex items-center p-2 text-base font-normal text-gray-900 rounded-lg dark:text-white hover:bg-gray-100 dark:hover:bg-gray-700 border-2 border-transparent {user_class}"
44
+ on:keydown
45
+ on:keyup
46
+ class="p-2 text-base font-normal text-gray-900 rounded-lg dark:text-white hover:bg-gray-100 dark:hover:bg-gray-700 border-2 border-transparent {user_class}"
38
47
  class:bg-gray-200={active}
39
48
  class:dark:bg-gray-700={active}
40
49
  use:selectable_if_needed={selectable}
41
- class:selected={selected(selectable, context_data)}
42
- >
43
- {#if icon}
44
- <Icon size={5} component={icon}/>
45
- {/if}
46
- <span class="ml-3"
47
- use:editable_if_needed={editable}>
48
- <slot/>
49
- </span>
50
- </a>
50
+ class:selected={selected(selectable, context_data)}>
51
+ <a href={href}
52
+ on:click={on_link_clicked}
53
+ class="inline-flex items-center group">
54
+ {#if icon}
55
+ <Icon size={5} component={icon}/>
56
+ {/if}
57
+ <span class="ml-3 group-hover:underline"
58
+ use:editable_if_needed={editable}>
59
+ <slot/>
60
+ </span>
61
+ </a>
62
+ </div>
51
63
  </li>
52
64
 
53
65
 
@@ -9,7 +9,10 @@ declare const __propDef: {
9
9
  editable?: any | undefined;
10
10
  };
11
11
  events: {
12
+ click: MouseEvent;
12
13
  contextmenu: MouseEvent;
14
+ keydown: KeyboardEvent;
15
+ keyup: KeyboardEvent;
13
16
  } & {
14
17
  [evt: string]: CustomEvent<any>;
15
18
  };
@@ -86,7 +86,7 @@ function show_context_menu(e, itm, cinfo2) {
86
86
  return;
87
87
  e.stopPropagation();
88
88
  e.preventDefault();
89
- show_menu(e.clientX, e.clientY, menu_operations);
89
+ show_menu(new DOMPoint(e.clientX, e.clientY), menu_operations);
90
90
  }
91
91
  </script>
92
92