@humandialog/forms.svelte 0.4.12 → 0.4.14
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/Floating_container.svelte +43 -10
- package/components/Floating_container.svelte.d.ts +4 -2
- package/components/Grid.menu.svelte +3 -3
- package/components/Grid.menu.svelte.d.ts +2 -2
- package/components/combo/combo.svelte +6 -8
- package/components/contextmenu.svelte +23 -9
- package/components/contextmenu.svelte.d.ts +4 -2
- package/components/date.svelte +130 -22
- package/components/date.svelte.d.ts +7 -0
- package/components/menu.d.ts +3 -3
- package/components/menu.js +20 -10
- package/components/sidebar/sidebar.brand.svelte +16 -0
- package/components/sidebar/sidebar.brand.svelte.d.ts +29 -0
- package/components/sidebar/sidebar.group.svelte +21 -0
- package/components/sidebar/sidebar.group.svelte.d.ts +31 -0
- package/components/sidebar/sidebar.item.svelte +60 -0
- package/components/sidebar/sidebar.item.svelte.d.ts +25 -0
- package/components/sidebar/sidebar.svelte +9 -0
- package/components/sidebar/sidebar.svelte.d.ts +27 -0
- package/components/simple.table.svelte.d.ts +2 -2
- package/components/table/_template.table.svelte.d.ts +2 -2
- package/components/table/table.svelte +1 -1
- package/desk.svelte +57 -33
- package/horizontal.toolbar.svelte +11 -5
- package/index.d.ts +6 -1
- package/index.js +6 -1
- package/operations.svelte +11 -5
- package/operations.svelte.d.ts +3 -1
- package/package.json +6 -2
- package/utils.d.ts +20 -0
- package/utils.js +224 -1
- package/vertical.toolbar.svelte +11 -4
package/utils.js
CHANGED
|
@@ -1,7 +1,230 @@
|
|
|
1
|
-
import { getContext } from "svelte";
|
|
1
|
+
import { getContext, tick } from "svelte";
|
|
2
|
+
import {get} from 'svelte/store'
|
|
3
|
+
import { context_items_store, context_toolbar_operations } from "./stores";
|
|
2
4
|
|
|
3
5
|
export let icons = {symbols :null}
|
|
4
6
|
|
|
7
|
+
export const SCREEN_SIZES = {
|
|
8
|
+
sm: 640, //px @media (min-width: 640px) { ... }
|
|
9
|
+
md: 768, //px @media (min-width: 768px) { ... }
|
|
10
|
+
lg: 1024, //px @media (min-width: 1024px) { ... }
|
|
11
|
+
xl: 1280, //px @media (min-width: 1280px) { ... }
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function is_device_smaller_than(br)
|
|
15
|
+
{
|
|
16
|
+
return window.innerWidth < SCREEN_SIZES[br]
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function select_item(itm)
|
|
20
|
+
{
|
|
21
|
+
let data_context = get(context_items_store);
|
|
22
|
+
data_context['sel'] = itm;
|
|
23
|
+
data_context.focused = 'sel';
|
|
24
|
+
context_items_store.set( {...data_context} )
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function activate_item(context_level, itm, operations=null)
|
|
28
|
+
{
|
|
29
|
+
let data_context = get(context_items_store);
|
|
30
|
+
data_context['sel'] = itm; //null;
|
|
31
|
+
data_context[context_level] = itm;
|
|
32
|
+
data_context.focused = context_level;
|
|
33
|
+
context_items_store.set( {...data_context} )
|
|
34
|
+
|
|
35
|
+
if(operations && Array.isArray(operations))
|
|
36
|
+
context_toolbar_operations.set( [...operations] )
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function clear_active_item(context_level)
|
|
40
|
+
{
|
|
41
|
+
let data_context = get(context_items_store);
|
|
42
|
+
data_context[context_level] = null;
|
|
43
|
+
data_context.focused = context_level;
|
|
44
|
+
context_items_store.set( {...data_context} )
|
|
45
|
+
|
|
46
|
+
context_toolbar_operations.set( [] )
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function is_selected(itm)
|
|
50
|
+
{
|
|
51
|
+
let data_context = get(context_items_store);
|
|
52
|
+
if(!!data_context && !!data_context['sel'] && data_context['sel'] == itm)
|
|
53
|
+
return true;
|
|
54
|
+
else
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
export function is_active(context_level, itm)
|
|
60
|
+
{
|
|
61
|
+
let data_context = get(context_items_store);
|
|
62
|
+
if(data_context != undefined && data_context[context_level] != undefined && data_context[context_level] == itm)
|
|
63
|
+
return true;
|
|
64
|
+
else
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
export function editable(node, action)
|
|
70
|
+
{
|
|
71
|
+
const org_text = node.textContent;
|
|
72
|
+
const blur_listener = async (e) =>
|
|
73
|
+
{
|
|
74
|
+
await finish_editing(true);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const key_listener = async (e) =>
|
|
78
|
+
{
|
|
79
|
+
switch(e.key)
|
|
80
|
+
{
|
|
81
|
+
case 'Esc':
|
|
82
|
+
case 'Escape':
|
|
83
|
+
await finish_editing(true);
|
|
84
|
+
e.stopPropagation();
|
|
85
|
+
e.preventDefault();
|
|
86
|
+
break;
|
|
87
|
+
|
|
88
|
+
case 'Enter':
|
|
89
|
+
await finish_editing(false);
|
|
90
|
+
e.stopPropagation();
|
|
91
|
+
e.preventDefault();
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const finish_editing = async (cancel) =>
|
|
97
|
+
{
|
|
98
|
+
node.removeEventListener("blur", blur_listener);
|
|
99
|
+
node.removeEventListener("keydown", key_listener);
|
|
100
|
+
node.contentEditable = "false"
|
|
101
|
+
|
|
102
|
+
let sel = window.getSelection();
|
|
103
|
+
sel.removeAllRanges();
|
|
104
|
+
|
|
105
|
+
if(cancel)
|
|
106
|
+
{
|
|
107
|
+
node.innerHTML = org_text;
|
|
108
|
+
}
|
|
109
|
+
else if(action)
|
|
110
|
+
{
|
|
111
|
+
await action(node.textContent)
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
node.dispatchEvent(new Event("finish"))
|
|
115
|
+
node.removeEventListener("finish", (e) => {});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const edit_listener = async (e) =>
|
|
119
|
+
{
|
|
120
|
+
//console.log('Edit event fired:', itm, "node", node)
|
|
121
|
+
node.contentEditable = "true"
|
|
122
|
+
node.addEventListener("blur", blur_listener);
|
|
123
|
+
node.addEventListener("keydown", key_listener);
|
|
124
|
+
|
|
125
|
+
node.focus();
|
|
126
|
+
|
|
127
|
+
await tick();
|
|
128
|
+
let range = document.createRange();
|
|
129
|
+
range.selectNodeContents(node);
|
|
130
|
+
let sel = window.getSelection();
|
|
131
|
+
sel.removeAllRanges();
|
|
132
|
+
sel.addRange(range);
|
|
133
|
+
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
node.addEventListener("edit", edit_listener);
|
|
137
|
+
node.classList.add("editable")
|
|
138
|
+
node.classList.add("focus:outline-none")
|
|
139
|
+
return {
|
|
140
|
+
destroy() {
|
|
141
|
+
node.removeEventListener("edit", edit_listener)
|
|
142
|
+
node.classList.remove("editable")
|
|
143
|
+
node.contentEditable = "false"
|
|
144
|
+
}};
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export function start_editing(element, finish_callback)
|
|
148
|
+
{
|
|
149
|
+
let editable_node = null;
|
|
150
|
+
|
|
151
|
+
if(element.classList.contains("editable"))
|
|
152
|
+
editable_node = element;
|
|
153
|
+
else
|
|
154
|
+
{
|
|
155
|
+
let editables = element.getElementsByClassName("editable");
|
|
156
|
+
if(editables && editables.length > 0)
|
|
157
|
+
editable_node = editables[0];
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if(editable_node)
|
|
161
|
+
{
|
|
162
|
+
if(editable_node.contentEditable == "true")
|
|
163
|
+
return;
|
|
164
|
+
|
|
165
|
+
if(finish_callback)
|
|
166
|
+
{
|
|
167
|
+
editable_node.addEventListener("finish", (e) => {finish_callback()})
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const edit_event = new Event("edit")
|
|
171
|
+
editable_node.dispatchEvent(edit_event)
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export function selectable(node, itm)
|
|
176
|
+
{
|
|
177
|
+
const select_listener = (e) =>
|
|
178
|
+
{
|
|
179
|
+
select_item(itm);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
node.setAttribute("selectable", "true")
|
|
183
|
+
node.addEventListener("select", select_listener);
|
|
184
|
+
|
|
185
|
+
return {
|
|
186
|
+
destroy() {
|
|
187
|
+
node.removeEventListener("select", select_listener)
|
|
188
|
+
try{
|
|
189
|
+
node.removeAttribute("selectable")
|
|
190
|
+
}
|
|
191
|
+
catch(err)
|
|
192
|
+
{
|
|
193
|
+
console.error(err, node);
|
|
194
|
+
}
|
|
195
|
+
}};
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export function handle_select(e)
|
|
199
|
+
{
|
|
200
|
+
let node = e.target;
|
|
201
|
+
if(!node)
|
|
202
|
+
{
|
|
203
|
+
select_item(null);
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
let selection_node = null;
|
|
208
|
+
|
|
209
|
+
while(!!node)
|
|
210
|
+
{
|
|
211
|
+
if(node.hasAttribute("selectable"))
|
|
212
|
+
{
|
|
213
|
+
selection_node = node;
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
node = node.parentElement;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
if(selection_node)
|
|
221
|
+
selection_node.dispatchEvent(new Event("select"))
|
|
222
|
+
else
|
|
223
|
+
select_item(null);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
|
|
5
228
|
export function parse_width_directive(c)
|
|
6
229
|
{
|
|
7
230
|
let cs = '';
|
package/vertical.toolbar.svelte
CHANGED
|
@@ -76,9 +76,15 @@
|
|
|
76
76
|
|
|
77
77
|
function show_options(e)
|
|
78
78
|
{
|
|
79
|
-
|
|
80
|
-
let
|
|
81
|
-
|
|
79
|
+
|
|
80
|
+
let owner = e.target;
|
|
81
|
+
while(owner && owner.tagName != 'BUTTON')
|
|
82
|
+
owner = owner.parentElement
|
|
83
|
+
|
|
84
|
+
if(!owner)
|
|
85
|
+
return;
|
|
86
|
+
|
|
87
|
+
let rect = owner.getBoundingClientRect();
|
|
82
88
|
let options = [];
|
|
83
89
|
|
|
84
90
|
if(show_sign_in_out_icons)
|
|
@@ -142,7 +148,8 @@
|
|
|
142
148
|
});
|
|
143
149
|
}
|
|
144
150
|
|
|
145
|
-
|
|
151
|
+
let pt = new DOMPoint(rect.right, rect.top)
|
|
152
|
+
show_menu(pt, options);
|
|
146
153
|
}
|
|
147
154
|
|
|
148
155
|
</script>
|