@humandialog/forms.svelte 1.3.17 → 1.4.1
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/Fab.svelte +99 -48
- package/components/combo/combo.svelte +18 -15
- package/components/combo/combo.svelte.d.ts +1 -0
- package/components/contextmenu.svelte +54 -16
- package/components/date.svelte +10 -4
- package/components/date.svelte.d.ts +1 -0
- package/components/date_utils.d.ts +1 -0
- package/components/date_utils.js +10 -0
- package/components/delayed.spinner.svelte +1 -2
- package/components/document/editor.svelte +419 -46
- package/components/document/editor.svelte.d.ts +115 -0
- package/components/document/internal/palette.svelte +22 -0
- package/components/kanban/internal/kanban.card.svelte +2 -2
- package/components/kanban/internal/kanban.props.svelte +1 -1
- package/components/list/List.d.ts +6 -0
- package/components/list/List.js +6 -0
- package/components/list/internal/list.element.props.svelte +23 -8
- package/components/list/internal/list.element.svelte +20 -8
- package/components/list/list.combo.svelte +6 -0
- package/components/list/list.combo.svelte.d.ts +3 -0
- package/components/list/list.date.svelte +8 -0
- package/components/list/list.date.svelte.d.ts +4 -0
- package/components/list/list.static.svelte +6 -0
- package/components/list/list.static.svelte.d.ts +3 -0
- package/components/list/list.tags.svelte +32 -0
- package/components/list/list.tags.svelte.d.ts +24 -0
- package/components/menu.js +4 -0
- package/components/sidebar/sidebar.item.svelte +15 -11
- package/components/tags.svelte +15 -7
- package/components/tags.svelte.d.ts +2 -0
- package/desk.svelte +5 -5
- package/horizontal.toolbar.svelte +41 -14
- package/horizontal.toolbar.svelte.d.ts +6 -2
- package/index.d.ts +8 -2
- package/index.js +8 -2
- package/operations.svelte +71 -19
- package/package.json +4 -2
- package/stores.d.ts +3 -0
- package/stores.js +25 -2
- package/tenant.members.svelte +63 -59
- package/tenant.members.svelte.d.ts +2 -0
- package/vertical.toolbar.svelte +51 -23
- package/vertical.toolbar.svelte.d.ts +6 -2
package/tenant.members.svelte
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
FaPen,
|
|
5
5
|
FaInfoCircle,
|
|
6
6
|
FaUserSlash,
|
|
7
|
-
FaChevronDown
|
|
7
|
+
FaChevronDown,
|
|
8
|
+
FaInfo} from 'svelte-icons/fa'
|
|
8
9
|
|
|
9
10
|
import Page from './page.svelte'
|
|
10
11
|
import List from './components/list/list.svelte'
|
|
@@ -32,6 +33,7 @@
|
|
|
32
33
|
export let nameAttrib = "Name";
|
|
33
34
|
export let emailAttrib = "login";
|
|
34
35
|
export let refAttrib = "$ref";
|
|
36
|
+
export let hrefAttrib = ''
|
|
35
37
|
export let showFiles = false;
|
|
36
38
|
//export let show_admin = true;
|
|
37
39
|
export let showAccessRoles = false;
|
|
@@ -101,7 +103,10 @@
|
|
|
101
103
|
avatar_url : "",
|
|
102
104
|
invitation_not_accepted: false,
|
|
103
105
|
removed: false,
|
|
104
|
-
membership_tag: ""
|
|
106
|
+
membership_tag: "",
|
|
107
|
+
... hrefAttrib ? {
|
|
108
|
+
[hrefAttrib]: u[hrefAttrib]
|
|
109
|
+
} : { }
|
|
105
110
|
}
|
|
106
111
|
)
|
|
107
112
|
})
|
|
@@ -110,7 +115,7 @@
|
|
|
110
115
|
//fake_users = [];
|
|
111
116
|
//add_fake_users(fake_users);
|
|
112
117
|
|
|
113
|
-
|
|
118
|
+
// await fetch_details();
|
|
114
119
|
|
|
115
120
|
}
|
|
116
121
|
|
|
@@ -136,6 +141,13 @@
|
|
|
136
141
|
|
|
137
142
|
}
|
|
138
143
|
|
|
144
|
+
async function fetch_user_details(reef_user)
|
|
145
|
+
{
|
|
146
|
+
let details = await reef.get(`/sys/user_details?email=${reef_user[emailAttrib]}`)
|
|
147
|
+
set_user_info(reef_user, details);
|
|
148
|
+
list?.reload(reef_users);
|
|
149
|
+
}
|
|
150
|
+
|
|
139
151
|
function set_user_info(user, info)
|
|
140
152
|
{
|
|
141
153
|
user.auth_group = info.auth_group ?? 0;
|
|
@@ -285,25 +297,27 @@
|
|
|
285
297
|
}
|
|
286
298
|
|
|
287
299
|
let page_operations={
|
|
288
|
-
opver:
|
|
300
|
+
opver: 2,
|
|
301
|
+
fab: 'M00',
|
|
289
302
|
operations: [
|
|
290
303
|
{
|
|
291
304
|
caption: 'View',
|
|
292
305
|
operations: [
|
|
293
306
|
{
|
|
294
307
|
icon: FaUserPlus,
|
|
295
|
-
caption: '',
|
|
308
|
+
caption: 'Add user',
|
|
296
309
|
action: (focused) => { create_new_user(); },
|
|
297
|
-
|
|
310
|
+
// fab: 'M10',
|
|
298
311
|
tbr: 'A'
|
|
299
312
|
},
|
|
300
|
-
|
|
313
|
+
// przenieść na stronie /profile
|
|
314
|
+
/* {
|
|
301
315
|
icon: FaUserSlash,
|
|
302
|
-
caption: '',
|
|
316
|
+
caption: 'Delete application account',
|
|
303
317
|
action: (f) => {askToDeleteApplicationAccount();},
|
|
304
|
-
fab: 'S00',
|
|
318
|
+
//fab: 'S00',
|
|
305
319
|
tbr: 'C'
|
|
306
|
-
}
|
|
320
|
+
}*/
|
|
307
321
|
]
|
|
308
322
|
}
|
|
309
323
|
]
|
|
@@ -317,18 +331,14 @@
|
|
|
317
331
|
action: (focused) => { list.edit(user, nameAttrib) }
|
|
318
332
|
},
|
|
319
333
|
{
|
|
320
|
-
caption: 'Users management',
|
|
334
|
+
caption: 'Users management (auth role)',
|
|
321
335
|
action: (focused) => { list.edit(user, 'Privileges') }
|
|
322
336
|
}];
|
|
323
337
|
|
|
324
338
|
if(showAccessRoles)
|
|
325
339
|
{
|
|
326
340
|
operations.push({
|
|
327
|
-
|
|
328
|
-
});
|
|
329
|
-
|
|
330
|
-
operations.push({
|
|
331
|
-
caption: 'Access role',
|
|
341
|
+
caption: 'Access role (app role)',
|
|
332
342
|
action: (focused) => { list.edit(user, 'Access') }
|
|
333
343
|
});
|
|
334
344
|
}
|
|
@@ -336,7 +346,7 @@
|
|
|
336
346
|
if(showFiles)
|
|
337
347
|
{
|
|
338
348
|
operations.push({
|
|
339
|
-
caption: 'External files',
|
|
349
|
+
caption: 'External files (files role)',
|
|
340
350
|
action: (focused) => { list.edit(user, 'Files') }
|
|
341
351
|
});
|
|
342
352
|
}
|
|
@@ -346,74 +356,63 @@
|
|
|
346
356
|
|
|
347
357
|
let user_operations = (user) => {
|
|
348
358
|
|
|
349
|
-
let operations = [
|
|
359
|
+
let operations = [
|
|
360
|
+
{
|
|
361
|
+
caption: 'Fetch info',
|
|
362
|
+
icon: FaInfo,
|
|
363
|
+
action: (f) => fetch_user_details(user),
|
|
364
|
+
tbr: 'A'
|
|
365
|
+
}
|
|
366
|
+
];
|
|
350
367
|
|
|
351
368
|
if(user.removed)
|
|
352
369
|
{
|
|
353
|
-
operations = [
|
|
370
|
+
operations = [ ...operations,
|
|
354
371
|
{
|
|
355
372
|
icon: FaUserPlus,
|
|
356
|
-
caption: '',
|
|
373
|
+
caption: 'Revert removing',
|
|
357
374
|
action: (f) => askToAddAgain(user),
|
|
358
|
-
fab: 'M10',
|
|
359
|
-
tbr: '
|
|
375
|
+
// fab: 'M10',
|
|
376
|
+
tbr: 'A'
|
|
360
377
|
}
|
|
361
378
|
];
|
|
362
379
|
}
|
|
363
380
|
else
|
|
364
381
|
{
|
|
365
382
|
let edit_operations = get_edit_operations(user)
|
|
366
|
-
|
|
367
|
-
{
|
|
368
|
-
operations.push({
|
|
369
|
-
icon: FaPen,
|
|
370
|
-
caption: '',
|
|
371
|
-
action: edit_operations[0].action,
|
|
372
|
-
fab: 'M20',
|
|
373
|
-
tbr: 'B'
|
|
374
|
-
});
|
|
375
|
-
}
|
|
376
|
-
else
|
|
377
|
-
{
|
|
378
|
-
operations.push({
|
|
379
|
-
icon: FaPen,
|
|
380
|
-
caption: '',
|
|
381
|
-
grid: edit_operations,
|
|
382
|
-
fab: 'M20',
|
|
383
|
-
tbr: 'B'
|
|
384
|
-
});
|
|
385
|
-
}
|
|
386
|
-
|
|
383
|
+
|
|
387
384
|
operations.push({
|
|
388
|
-
|
|
385
|
+
icon: FaPen,
|
|
386
|
+
caption: 'Change',
|
|
387
|
+
menu: edit_operations,
|
|
388
|
+
//fab: 'M20',
|
|
389
|
+
tbr: 'A'
|
|
390
|
+
});
|
|
391
|
+
|
|
392
|
+
operations.push({
|
|
393
|
+
caption: 'Remove user',
|
|
389
394
|
icon: FaUserMinus,
|
|
390
395
|
action: (focused) => askToRemove(user),
|
|
391
|
-
|
|
392
|
-
tbr: '
|
|
396
|
+
// fab: 'M30',
|
|
397
|
+
tbr: 'A'
|
|
393
398
|
});
|
|
394
399
|
}
|
|
395
400
|
|
|
396
401
|
|
|
397
402
|
return {
|
|
398
|
-
opver:
|
|
403
|
+
opver: 2,
|
|
404
|
+
fab: 'M00',
|
|
399
405
|
operations: [
|
|
400
406
|
{
|
|
401
407
|
caption: 'User',
|
|
408
|
+
// tbr: 'B',
|
|
402
409
|
operations: operations
|
|
403
410
|
}
|
|
404
411
|
]
|
|
405
412
|
}
|
|
406
413
|
}
|
|
407
414
|
|
|
408
|
-
|
|
409
|
-
if(user.removed)
|
|
410
|
-
return [];
|
|
411
|
-
|
|
412
|
-
let edit_operations = get_edit_operations(user);
|
|
413
|
-
return {
|
|
414
|
-
grid: edit_operations
|
|
415
|
-
}
|
|
416
|
-
}
|
|
415
|
+
|
|
417
416
|
|
|
418
417
|
let data_item =
|
|
419
418
|
{
|
|
@@ -695,7 +694,13 @@
|
|
|
695
694
|
create_new_user();
|
|
696
695
|
}
|
|
697
696
|
|
|
698
|
-
|
|
697
|
+
function getHRefFunc()
|
|
698
|
+
{
|
|
699
|
+
if(!hrefAttrib)
|
|
700
|
+
return undefined
|
|
701
|
+
else
|
|
702
|
+
return (user) => { return user[hrefAttrib]}
|
|
703
|
+
}
|
|
699
704
|
|
|
700
705
|
</script>
|
|
701
706
|
|
|
@@ -713,9 +718,8 @@
|
|
|
713
718
|
<List objects={reef_users}
|
|
714
719
|
title='Members'
|
|
715
720
|
toolbarOperations={user_operations}
|
|
716
|
-
contextMenu={user_context_menu}
|
|
717
721
|
bind:this={list}>
|
|
718
|
-
<ListTitle a={nameAttrib} onChange={on_name_changed}/>
|
|
722
|
+
<ListTitle a={nameAttrib} onChange={on_name_changed} hrefFunc={getHRefFunc()}/>
|
|
719
723
|
<ListSummary a={emailAttrib} readonly/>
|
|
720
724
|
|
|
721
725
|
<ListStaticProperty name="Membership" a="membership_tag"/>
|
|
@@ -6,6 +6,7 @@ export default class Tenant extends SvelteComponentTyped<{
|
|
|
6
6
|
nameAttrib?: string | undefined;
|
|
7
7
|
emailAttrib?: string | undefined;
|
|
8
8
|
refAttrib?: string | undefined;
|
|
9
|
+
hrefAttrib?: string | undefined;
|
|
9
10
|
showFiles?: boolean | undefined;
|
|
10
11
|
showAccessRoles?: boolean | undefined;
|
|
11
12
|
}, {
|
|
@@ -22,6 +23,7 @@ declare const __propDef: {
|
|
|
22
23
|
nameAttrib?: string | undefined;
|
|
23
24
|
emailAttrib?: string | undefined;
|
|
24
25
|
refAttrib?: string | undefined;
|
|
26
|
+
hrefAttrib?: string | undefined;
|
|
25
27
|
showFiles?: boolean | undefined;
|
|
26
28
|
showAccessRoles?: boolean | undefined;
|
|
27
29
|
};
|
package/vertical.toolbar.svelte
CHANGED
|
@@ -28,10 +28,12 @@
|
|
|
28
28
|
import { popNavigationPage } from './utils';
|
|
29
29
|
|
|
30
30
|
|
|
31
|
-
export let appConfig;
|
|
31
|
+
export let appConfig = undefined;
|
|
32
32
|
export let mobile=false;
|
|
33
33
|
export let clearsContext = 'sel props'
|
|
34
34
|
|
|
35
|
+
export let definedTabs = undefined
|
|
36
|
+
export let mainToolbarConfig = undefined
|
|
35
37
|
|
|
36
38
|
let tabs = new Array();
|
|
37
39
|
let config = null;
|
|
@@ -46,10 +48,19 @@
|
|
|
46
48
|
let can_add_new_group = false;
|
|
47
49
|
|
|
48
50
|
$: {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
if(appConfig)
|
|
52
|
+
{
|
|
53
|
+
config = appConfig.mainToolbar;
|
|
54
|
+
has_selection_details = appConfig.selectionDetails;
|
|
55
|
+
if(has_selection_details)
|
|
56
|
+
selection_detils_caption = appConfig.selectionDetails.caption ?? 'Properties'
|
|
57
|
+
}
|
|
58
|
+
else
|
|
59
|
+
{
|
|
60
|
+
has_selection_details = false;
|
|
61
|
+
config = mainToolbarConfig;
|
|
62
|
+
}
|
|
63
|
+
|
|
53
64
|
is_logged_in = $session.isActive;
|
|
54
65
|
show_sign_in_out_icons = config.signin ? true : false;
|
|
55
66
|
sign_in_href = $signInHRef;
|
|
@@ -57,23 +68,38 @@
|
|
|
57
68
|
|
|
58
69
|
tabs = new Array();
|
|
59
70
|
|
|
60
|
-
|
|
61
|
-
{
|
|
62
|
-
const ctab = appConfig.sidebar[key];
|
|
63
|
-
const can_show = (ctab.authorized && is_logged_in) || (!ctab.authorized)
|
|
64
|
-
if(can_show)
|
|
65
|
-
tabs.push({key: key, icon: ctab.icon});
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
// there is no current visible sidebar
|
|
69
|
-
if($main_sidebar_visible_store != '*')
|
|
71
|
+
if(definedTabs && Array.isArray(definedTabs) && definedTabs.length > 0)
|
|
70
72
|
{
|
|
71
|
-
|
|
73
|
+
tabs = [...definedTabs]
|
|
74
|
+
}
|
|
75
|
+
else
|
|
76
|
+
{
|
|
77
|
+
Object.keys(appConfig.sidebar).forEach( (key) =>
|
|
78
|
+
{
|
|
79
|
+
const ctab = appConfig.sidebar[key];
|
|
80
|
+
const can_show = (ctab.authorized && is_logged_in) || (!ctab.authorized)
|
|
81
|
+
if(can_show)
|
|
82
|
+
{
|
|
83
|
+
const tab = {
|
|
84
|
+
key: key,
|
|
85
|
+
icon: ctab.icon,
|
|
86
|
+
onclick: (e) => on_navigator_tab_clicked(e, key)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
tabs.push(tab);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
// there is no current visible sidebar
|
|
94
|
+
if($main_sidebar_visible_store != '*')
|
|
72
95
|
{
|
|
73
|
-
if(tabs.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
96
|
+
if(tabs.every( (e) => e.key != $main_sidebar_visible_store))
|
|
97
|
+
{
|
|
98
|
+
if(tabs.length)
|
|
99
|
+
show_sidebar(tabs[0].key);
|
|
100
|
+
else
|
|
101
|
+
hide_sidebar();
|
|
102
|
+
}
|
|
77
103
|
}
|
|
78
104
|
}
|
|
79
105
|
|
|
@@ -94,9 +120,11 @@
|
|
|
94
120
|
|
|
95
121
|
}
|
|
96
122
|
|
|
97
|
-
function
|
|
123
|
+
function on_navigator_tab_clicked(e, key)
|
|
98
124
|
{
|
|
99
|
-
|
|
125
|
+
e.stopPropagation();
|
|
126
|
+
|
|
127
|
+
if(!mobile)
|
|
100
128
|
toggle_sidebar(key);
|
|
101
129
|
else
|
|
102
130
|
{
|
|
@@ -331,7 +359,7 @@
|
|
|
331
359
|
<button
|
|
332
360
|
class="h-16 px-0 flex justify-center items-center w-full text-stone-300 hover:text-stone-100"
|
|
333
361
|
class:bg-orange-500={isSelected}
|
|
334
|
-
on:click
|
|
362
|
+
on:click={tab.onclick}>
|
|
335
363
|
|
|
336
364
|
<Icon class="w-5 h-5" component={tab.icon}/>
|
|
337
365
|
</button>
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
/** @typedef {typeof __propDef.events} VerticalEvents */
|
|
3
3
|
/** @typedef {typeof __propDef.slots} VerticalSlots */
|
|
4
4
|
export default class Vertical extends SvelteComponentTyped<{
|
|
5
|
-
appConfig
|
|
5
|
+
appConfig?: any;
|
|
6
6
|
mobile?: boolean | undefined;
|
|
7
7
|
clearsContext?: string | undefined;
|
|
8
|
+
definedTabs?: any;
|
|
9
|
+
mainToolbarConfig?: any;
|
|
8
10
|
}, {
|
|
9
11
|
[evt: string]: CustomEvent<any>;
|
|
10
12
|
}, {}> {
|
|
@@ -15,9 +17,11 @@ export type VerticalSlots = typeof __propDef.slots;
|
|
|
15
17
|
import { SvelteComponentTyped } from "svelte";
|
|
16
18
|
declare const __propDef: {
|
|
17
19
|
props: {
|
|
18
|
-
appConfig
|
|
20
|
+
appConfig?: any;
|
|
19
21
|
mobile?: boolean | undefined;
|
|
20
22
|
clearsContext?: string | undefined;
|
|
23
|
+
definedTabs?: any;
|
|
24
|
+
mainToolbarConfig?: any;
|
|
21
25
|
};
|
|
22
26
|
events: {
|
|
23
27
|
[evt: string]: CustomEvent<any>;
|