@humandialog/forms.svelte 0.4.14 → 0.4.16

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 (38) hide show
  1. package/components/Grid.menu.svelte +2 -0
  2. package/components/button.svelte +5 -11
  3. package/components/combo/combo.d.ts +2 -0
  4. package/components/combo/combo.js +2 -0
  5. package/components/combo/combo.source.svelte +6 -2
  6. package/components/combo/combo.source.svelte.d.ts +3 -1
  7. package/components/combo/combo.svelte +122 -76
  8. package/components/combo/combo.svelte.d.ts +5 -0
  9. package/components/date.svelte +14 -5
  10. package/components/list/List.d.ts +28 -0
  11. package/components/list/List.js +34 -0
  12. package/components/list/internal/list.element.svelte +295 -0
  13. package/components/list/internal/list.element.svelte.d.ts +29 -0
  14. package/components/list/internal/list.inserter.svelte +20 -0
  15. package/components/list/internal/list.inserter.svelte.d.ts +18 -0
  16. package/components/list/list.combo.svelte +20 -0
  17. package/components/list/list.combo.svelte.d.ts +21 -0
  18. package/components/list/list.date.svelte +14 -0
  19. package/components/list/list.date.svelte.d.ts +18 -0
  20. package/components/list/list.inserter.svelte +6 -0
  21. package/components/list/list.inserter.svelte.d.ts +16 -0
  22. package/components/list/list.summary.svelte +7 -0
  23. package/components/list/list.summary.svelte.d.ts +17 -0
  24. package/components/list/list.svelte +148 -0
  25. package/components/list/list.svelte.d.ts +41 -0
  26. package/components/list/list.title.svelte +7 -0
  27. package/components/list/list.title.svelte.d.ts +17 -0
  28. package/components/sidebar/sidebar.item.svelte +27 -15
  29. package/components/sidebar/sidebar.item.svelte.d.ts +3 -0
  30. package/desk.svelte +16 -4
  31. package/index.d.ts +9 -2
  32. package/index.js +10 -2
  33. package/package.json +11 -2
  34. package/page.svelte +8 -2
  35. package/stores.js +4 -3
  36. package/updates.js +3 -7
  37. package/utils.d.ts +1 -0
  38. package/utils.js +46 -7
@@ -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 {};
@@ -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
  };
package/desk.svelte CHANGED
@@ -15,11 +15,24 @@
15
15
  set_default_tools_visible,
16
16
  set_dark_mode_default } from './stores.js'
17
17
 
18
- import {session, AuthorizedView, Authorized, NotAuthorized, Auth} from '@humandialog/auth.svelte'
18
+ import { AuthorizedView} from '@humandialog/auth.svelte'
19
19
  import { handle_select, is_device_smaller_than } from './utils'
20
+ import { onMount } from 'svelte';
20
21
 
21
22
  export let layout;
22
23
 
24
+ onMount( () => {
25
+ window.addEventListener('resize', on_resize)
26
+ return () => {
27
+ window.removeEventListener('resize', on_resize)
28
+ }
29
+ })
30
+
31
+ function on_resize()
32
+ {
33
+ auto_hide_sidebar();
34
+ }
35
+
23
36
  const sizes = {
24
37
  bottom: 240,
25
38
  toolbar: 40,
@@ -220,9 +233,8 @@
220
233
  {lg_content_area_horizontal_dim}
221
234
  z-0 overflow-x-hidden"
222
235
 
223
- on:click={(event) => {
224
- auto_hide_sidebar()}} on:keydown={(event) => {
225
- auto_hide_sidebar()}}>
236
+ on:click={(e) => auto_hide_sidebar() }
237
+ on:keydown={(e) => auto_hide_sidebar()}>
226
238
  <Configurable config={layout.mainContent}>
227
239
  <div slot='alt'></div>
228
240
  </Configurable>
package/index.d.ts CHANGED
@@ -28,6 +28,13 @@ export { default as Sidebar } from './components/sidebar/sidebar.svelte';
28
28
  export { default as SidebarBrand } from './components/sidebar/sidebar.brand.svelte';
29
29
  export { default as SidebarGroup } from './components/sidebar/sidebar.group.svelte';
30
30
  export { default as SidebarItem } from './components/sidebar/sidebar.item.svelte';
31
- export { select_item, activate_item, clear_active_item, is_active, is_selected, editable, start_editing, selectable, handle_select } from './utils';
31
+ export { default as List } from './components/list/list.svelte';
32
+ export { default as ListTitle } from './components/list/list.title.svelte';
33
+ export { default as ListSummary } from './components/list/list.summary.svelte';
34
+ export { default as ListInserter } from './components/list/list.inserter.svelte';
35
+ export { default as ListDateProperty } from './components/list/list.date.svelte';
36
+ export { default as ListComboProperty } from './components/list/list.combo.svelte';
37
+ export { select_item, activate_item, clear_active_item, is_active, is_selected, get_active, editable, start_editing, selectable, handle_select } from './utils';
32
38
  export { data_tick_store, has_selected_item, has_data_item } from "./stores";
33
- export { context_toolbar_operations, page_toolbar_operations, context_items_store } from './stores';
39
+ export { context_toolbar_operations, page_toolbar_operations, context_items_store, context_types_store } from './stores';
40
+ export { inform_modification, inform_item, push_changes } from './updates';
package/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  // @ts-ignore
2
+ import { List } from "flowbite-svelte";
2
3
  //export { default as Row } from "./page.row.svelte";
3
4
  export { default as Page } from "./page.svelte";
4
5
  export { default as Tile } from "./tile.svelte";
@@ -33,6 +34,13 @@ export { default as Sidebar } from './components/sidebar/sidebar.svelte';
33
34
  export { default as SidebarBrand } from './components/sidebar/sidebar.brand.svelte';
34
35
  export { default as SidebarGroup } from './components/sidebar/sidebar.group.svelte';
35
36
  export { default as SidebarItem } from './components/sidebar/sidebar.item.svelte';
36
- export { select_item, activate_item, clear_active_item, is_active, is_selected, editable, start_editing, selectable, handle_select } from './utils';
37
+ export { default as List } from './components/list/list.svelte';
38
+ export { default as ListTitle } from './components/list/list.title.svelte';
39
+ export { default as ListSummary } from './components/list/list.summary.svelte';
40
+ export { default as ListInserter } from './components/list/list.inserter.svelte';
41
+ export { default as ListDateProperty } from './components/list/list.date.svelte';
42
+ export { default as ListComboProperty } from './components/list/list.combo.svelte';
43
+ export { select_item, activate_item, clear_active_item, is_active, is_selected, get_active, editable, start_editing, selectable, handle_select } from './utils';
37
44
  export { data_tick_store, has_selected_item, has_data_item } from "./stores";
38
- export { context_toolbar_operations, page_toolbar_operations, context_items_store } from './stores'; // tmp
45
+ export { context_toolbar_operations, page_toolbar_operations, context_items_store, context_types_store } from './stores'; // tmp
46
+ export { inform_modification, inform_item, push_changes } from './updates'; // tmp
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@humandialog/forms.svelte",
3
- "version": "0.4.14",
3
+ "version": "0.4.16",
4
4
  "description": "Basic Svelte UI components for Object Reef applications",
5
5
  "devDependencies": {
6
6
  "@playwright/test": "^1.28.1",
@@ -26,7 +26,7 @@
26
26
  },
27
27
  "type": "module",
28
28
  "dependencies": {
29
- "@humandialog/auth.svelte": "^1.0.4",
29
+ "@humandialog/auth.svelte": "^1.1.0",
30
30
  "flowbite-svelte": "^0.29.13",
31
31
  "svelte-icons": "^2.1.0",
32
32
  "svelte-spa-router": "^3.3.0"
@@ -74,6 +74,15 @@
74
74
  "./components/icon.svelte": "./components/icon.svelte",
75
75
  "./components/input.text.svelte": "./components/input.text.svelte",
76
76
  "./components/inputbox.ltop.svelte": "./components/inputbox.ltop.svelte",
77
+ "./components/list/internal/list.element.svelte": "./components/list/internal/list.element.svelte",
78
+ "./components/list/internal/list.inserter.svelte": "./components/list/internal/list.inserter.svelte",
79
+ "./components/list/list.combo.svelte": "./components/list/list.combo.svelte",
80
+ "./components/list/list.date.svelte": "./components/list/list.date.svelte",
81
+ "./components/list/list.inserter.svelte": "./components/list/list.inserter.svelte",
82
+ "./components/list/list.summary.svelte": "./components/list/list.summary.svelte",
83
+ "./components/list/list.svelte": "./components/list/list.svelte",
84
+ "./components/list/list.title.svelte": "./components/list/list.title.svelte",
85
+ "./components/list/List": "./components/list/List.js",
77
86
  "./components/menu": "./components/menu.js",
78
87
  "./components/radio.svelte": "./components/radio.svelte",
79
88
  "./components/sidebar/sidebar.brand.svelte": "./components/sidebar/sidebar.brand.svelte",
package/page.svelte CHANGED
@@ -8,6 +8,7 @@
8
8
  context_toolbar_operations,
9
9
  page_toolbar_operations } from './stores.js'
10
10
 
11
+ //import {chnages} from './utils.js'
11
12
 
12
13
  export let context = "data"
13
14
  export let self = null
@@ -67,6 +68,8 @@
67
68
  let t = 0
68
69
  $: {
69
70
  t = $data_tick_store
71
+ //chnages.just_changed_context = false;
72
+
70
73
  if (t > last_tick) {
71
74
  last_tick = t
72
75
  if (self != null)
@@ -92,9 +95,12 @@
92
95
 
93
96
  function clear_selection(e)
94
97
  {
98
+ //console.log('page click', chnages.just_changed_context)
95
99
  if(!clears_context)
96
100
  return;
97
101
 
102
+
103
+
98
104
  let contexts = clears_context.split(' ');
99
105
  contexts.forEach(c =>
100
106
  {
@@ -102,8 +108,8 @@
102
108
  $context_info_store[c] = '';
103
109
  })
104
110
 
105
- e.stopPropagation();
106
-
111
+ //e.stopPropagation();
112
+
107
113
  $context_toolbar_operations = [];
108
114
  $data_tick_store = $data_tick_store + 1;
109
115
  }
package/stores.js CHANGED
@@ -1,5 +1,6 @@
1
1
 
2
2
  import {writable, get} from 'svelte/store';
3
+ import {SCREEN_SIZES} from './utils.js'
3
4
 
4
5
  export const data_tick_store = writable(1);
5
6
  export const context_items_store = writable({focused:'', data: null, sel: null})
@@ -93,12 +94,12 @@ export function toggle_sidebar(index)
93
94
 
94
95
  export function auto_hide_sidebar()
95
96
  {
96
- // console.log("sw: " + screen.width)
97
+ //console.log("sw: " + window.innerWidth, SCREEN_SIZES.lg)
97
98
 
98
- if(screen.width < 1024)
99
+ if(window.innerWidth < SCREEN_SIZES.lg)
99
100
  hide_sidebar()
100
101
  }
101
-
102
+
102
103
  export function hide_sidebar()
103
104
  {
104
105
  previously_visible_sidebar = get(main_sidebar_visible_store);
package/updates.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import {writable} from 'svelte/store';
2
- import {Auth} from '@humandialog/auth.svelte/dist/index'
2
+ import {reef} from '@humandialog/auth.svelte/dist/index'
3
3
 
4
4
 
5
5
  const modified_item_store = writable(null);
@@ -75,12 +75,8 @@ update_request_ticket.subscribe(async (v) => {
75
75
 
76
76
  try
77
77
  {
78
- console.log('push: ', changes);
79
- const res = await Auth.fetch('/json/yav1/Push',
80
- {
81
- method: "POST",
82
- body: JSON.stringify({ Items: changes }),
83
- });
78
+ //console.log('push: ', changes);
79
+ const res = await reef.post('/Push', { Items: changes });
84
80
 
85
81
  if(res)
86
82
  {
package/utils.d.ts CHANGED
@@ -4,6 +4,7 @@ export function activate_item(context_level: any, itm: any, operations?: null):
4
4
  export function clear_active_item(context_level: any): void;
5
5
  export function is_selected(itm: any): boolean;
6
6
  export function is_active(context_level: any, itm: any): boolean;
7
+ export function get_active(context_level: any): any;
7
8
  export function editable(node: any, action: any): {
8
9
  destroy(): void;
9
10
  };
package/utils.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { getContext, tick } from "svelte";
2
2
  import {get} from 'svelte/store'
3
- import { context_items_store, context_toolbar_operations } from "./stores";
3
+ import { context_items_store, context_toolbar_operations, data_tick_store } from "./stores";
4
4
 
5
5
  export let icons = {symbols :null}
6
6
 
@@ -16,12 +16,23 @@ export function is_device_smaller_than(br)
16
16
  return window.innerWidth < SCREEN_SIZES[br]
17
17
  }
18
18
 
19
+ //export const chnages = {
20
+ // just_changed_context: false
21
+ //}
22
+
19
23
  export function select_item(itm)
20
24
  {
21
25
  let data_context = get(context_items_store);
22
26
  data_context['sel'] = itm;
23
27
  data_context.focused = 'sel';
24
28
  context_items_store.set( {...data_context} )
29
+
30
+ let ticket = get(data_tick_store)
31
+ ticket++;
32
+ data_tick_store.set(ticket)
33
+
34
+ //chnages.just_changed_context = true;
35
+
25
36
  }
26
37
 
27
38
  export function activate_item(context_level, itm, operations=null)
@@ -32,6 +43,12 @@ export function activate_item(context_level, itm, operations=null)
32
43
  data_context.focused = context_level;
33
44
  context_items_store.set( {...data_context} )
34
45
 
46
+ let ticket = get(data_tick_store)
47
+ ticket++;
48
+ data_tick_store.set(ticket)
49
+
50
+ //chnages.just_changed_context = true;
51
+
35
52
  if(operations && Array.isArray(operations))
36
53
  context_toolbar_operations.set( [...operations] )
37
54
  }
@@ -43,6 +60,12 @@ export function clear_active_item(context_level)
43
60
  data_context.focused = context_level;
44
61
  context_items_store.set( {...data_context} )
45
62
 
63
+ let ticket = get(data_tick_store)
64
+ ticket++;
65
+ data_tick_store.set(ticket)
66
+
67
+ //chnages.just_changed_context = true;
68
+
46
69
  context_toolbar_operations.set( [] )
47
70
  }
48
71
 
@@ -65,13 +88,21 @@ export function is_active(context_level, itm)
65
88
  return false;
66
89
  }
67
90
 
91
+ export function get_active(context_level)
92
+ {
93
+ let data_context = get(context_items_store);
94
+ if(data_context != undefined)
95
+ return data_context[context_level]
96
+ else
97
+ return null;
98
+ }
68
99
 
69
100
  export function editable(node, action)
70
101
  {
71
102
  const org_text = node.textContent;
72
103
  const blur_listener = async (e) =>
73
104
  {
74
- await finish_editing(true);
105
+ await finish_editing(false, false);
75
106
  }
76
107
 
77
108
  const key_listener = async (e) =>
@@ -80,20 +111,20 @@ export function editable(node, action)
80
111
  {
81
112
  case 'Esc':
82
113
  case 'Escape':
83
- await finish_editing(true);
114
+ await finish_editing(true, false);
84
115
  e.stopPropagation();
85
116
  e.preventDefault();
86
117
  break;
87
118
 
88
119
  case 'Enter':
89
- await finish_editing(false);
120
+ await finish_editing(false, true);
90
121
  e.stopPropagation();
91
122
  e.preventDefault();
92
123
  break;
93
124
  }
94
125
  }
95
126
 
96
- const finish_editing = async (cancel) =>
127
+ const finish_editing = async (cancel, incremental) =>
97
128
  {
98
129
  node.removeEventListener("blur", blur_listener);
99
130
  node.removeEventListener("keydown", key_listener);
@@ -111,7 +142,15 @@ export function editable(node, action)
111
142
  await action(node.textContent)
112
143
  }
113
144
 
114
- node.dispatchEvent(new Event("finish"))
145
+ const finish_event = new CustomEvent("finish", {
146
+ detail:
147
+ {
148
+ cancel: cancel,
149
+ incremental: incremental
150
+ }
151
+ });
152
+
153
+ node.dispatchEvent(finish_event);
115
154
  node.removeEventListener("finish", (e) => {});
116
155
  }
117
156
 
@@ -164,7 +203,7 @@ export function start_editing(element, finish_callback)
164
203
 
165
204
  if(finish_callback)
166
205
  {
167
- editable_node.addEventListener("finish", (e) => {finish_callback()})
206
+ editable_node.addEventListener("finish", (e) => { finish_callback(e.detail) })
168
207
  }
169
208
 
170
209
  const edit_event = new Event("edit")