@humandialog/forms.svelte 1.3.17 → 1.4.0
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 +77 -46
- package/components/combo/combo.svelte +18 -15
- package/components/combo/combo.svelte.d.ts +1 -0
- package/components/contextmenu.svelte +25 -6
- 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 +20 -0
- 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 +17 -5
- 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/sidebar/sidebar.item.svelte +12 -8
- package/components/tags.svelte +15 -7
- package/components/tags.svelte.d.ts +2 -0
- package/desk.svelte +5 -5
- package/index.d.ts +7 -2
- package/index.js +7 -2
- package/operations.svelte +61 -12
- package/package.json +4 -2
- package/stores.d.ts +3 -0
- package/stores.js +25 -2
- package/tenant.members.svelte +61 -59
- package/tenant.members.svelte.d.ts +2 -0
package/index.js
CHANGED
|
@@ -45,6 +45,7 @@ export { default as ListInserter } from './components/list/list.inserter.svelte'
|
|
|
45
45
|
export { default as ListDateProperty } from './components/list/list.date.svelte';
|
|
46
46
|
export { default as ListComboProperty } from './components/list/list.combo.svelte';
|
|
47
47
|
export { default as ListStaticProperty } from './components/list/list.static.svelte';
|
|
48
|
+
export { default as ListTags } from './components/list/list.tags.svelte';
|
|
48
49
|
export { default as Modal } from './modal.svelte';
|
|
49
50
|
export { default as MembersPage } from './tenant.members.svelte';
|
|
50
51
|
export { default as Console } from './console.svelte';
|
|
@@ -62,9 +63,13 @@ export { default as KanbanTagsProperty } from './components/kanban/kanban.tags.s
|
|
|
62
63
|
export { default as KanbanCallbacks } from './components/kanban/kanban.callbacks.svelte';
|
|
63
64
|
export { KanbanColumnTop, KanbanColumnBottom } from './components/kanban/Kanban';
|
|
64
65
|
export { selectItem, activateItem, clearActiveItem, isActive, isSelected, getActive, editable, startEditing, saveCurrentEditable, selectable, handleSelect, isDeviceSmallerThan, resizeImage, refreshToolbarOperations, isOnScreenKeyboardVisible, randomString, UI, } from './utils';
|
|
65
|
-
export { getFormattedStringDate, getNiceStringDate, dayName, monthName } from './components/date_utils';
|
|
66
|
-
export { mainContentPageReloader, reloadMainContentPage, reloadWholeApp, alerts, addAlert, onErrorShowAlert, main_sidebar_visible_store } from './stores.js';
|
|
66
|
+
export { getNiceStringDateTime, getFormattedStringDate, getNiceStringDate, dayName, monthName } from './components/date_utils';
|
|
67
|
+
export { mainContentPageReloader, reloadMainContentPage, reloadWholeApp, alerts, addAlert, onErrorShowAlert, main_sidebar_visible_store, tagsReloader, reloadVisibleTags } from './stores.js';
|
|
67
68
|
export { data_tick_store, // tmp
|
|
68
69
|
hasSelectedItem, hasDataItem, setNavigatorTitle } from "./stores";
|
|
69
70
|
export { contextToolbarOperations, pageToolbarOperations, contextItemsStore, contextTypesStore } from './stores'; // tmp
|
|
70
71
|
export { informModification, informModificationEx, informItem, pushChanges } from './updates'; // tmp
|
|
72
|
+
export { default as IcH1 } from './components/document/internal/h1.icon.svelte';
|
|
73
|
+
export { default as IcH2 } from './components/document/internal/h2.icon.svelte';
|
|
74
|
+
export { default as IcH3 } from './components/document/internal/h3.icon.svelte';
|
|
75
|
+
export { default as IcH4 } from './components/document/internal/h4.icon.svelte';
|
package/operations.svelte
CHANGED
|
@@ -6,21 +6,20 @@ $:
|
|
|
6
6
|
let operations = [];
|
|
7
7
|
let leftOperations = [];
|
|
8
8
|
let rightOperations = [];
|
|
9
|
+
let hasOperations = false;
|
|
9
10
|
function update(...args) {
|
|
10
|
-
let
|
|
11
|
+
let opVer = 0;
|
|
11
12
|
if ($contextToolbarOperations && Array.isArray($contextToolbarOperations) && $contextToolbarOperations.length > 0) {
|
|
12
13
|
operations = $contextToolbarOperations;
|
|
13
14
|
} else if ($contextToolbarOperations && $contextToolbarOperations.operations && $contextToolbarOperations.operations.length > 0) {
|
|
14
15
|
operations = $contextToolbarOperations.operations;
|
|
15
|
-
|
|
16
|
-
isOpVer1 = true;
|
|
16
|
+
opVer = $contextToolbarOperations.opver ?? 0;
|
|
17
17
|
} else {
|
|
18
18
|
if (Array.isArray($pageToolbarOperations))
|
|
19
19
|
operations = $pageToolbarOperations;
|
|
20
20
|
else {
|
|
21
21
|
operations = $pageToolbarOperations.operations;
|
|
22
|
-
|
|
23
|
-
isOpVer1 = true;
|
|
22
|
+
opVer = $pageToolbarOperations.opver ?? 0;
|
|
24
23
|
}
|
|
25
24
|
}
|
|
26
25
|
leftOperations = [];
|
|
@@ -28,7 +27,7 @@ function update(...args) {
|
|
|
28
27
|
let AOperations = [];
|
|
29
28
|
let BOperations = [];
|
|
30
29
|
let COperations = [];
|
|
31
|
-
if (
|
|
30
|
+
if (opVer == 1) {
|
|
32
31
|
operations.forEach((group) => {
|
|
33
32
|
if (group.operations && group.operations.length > 0) {
|
|
34
33
|
AOperations = [...AOperations, ...group.operations.filter((o) => o.tbr == "A")];
|
|
@@ -38,10 +37,56 @@ function update(...args) {
|
|
|
38
37
|
});
|
|
39
38
|
leftOperations = [...AOperations, ...BOperations];
|
|
40
39
|
rightOperations = [...COperations];
|
|
40
|
+
} else if (opVer == 2) {
|
|
41
|
+
operations.forEach((group) => {
|
|
42
|
+
if (group.tbr) {
|
|
43
|
+
const expandOperation = {
|
|
44
|
+
caption: group.caption ?? "",
|
|
45
|
+
icon: group.icon ?? void 0,
|
|
46
|
+
preAction: group.preAction,
|
|
47
|
+
activeFunc: group.activeFunc,
|
|
48
|
+
menu: group.operations
|
|
49
|
+
};
|
|
50
|
+
switch (group.tbr) {
|
|
51
|
+
case "A":
|
|
52
|
+
AOperations.push(expandOperation);
|
|
53
|
+
break;
|
|
54
|
+
case "B":
|
|
55
|
+
BOperations.push(expandOperation);
|
|
56
|
+
break;
|
|
57
|
+
case "C":
|
|
58
|
+
COperations.push(expandOperation);
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
group.operations.forEach((op) => {
|
|
63
|
+
if (op.tbr) {
|
|
64
|
+
const tbrOperation = {
|
|
65
|
+
...op
|
|
66
|
+
};
|
|
67
|
+
if (op.hideToolbarCaption)
|
|
68
|
+
tbrOperation.caption = "";
|
|
69
|
+
switch (op.tbr) {
|
|
70
|
+
case "A":
|
|
71
|
+
AOperations.push(tbrOperation);
|
|
72
|
+
break;
|
|
73
|
+
case "B":
|
|
74
|
+
BOperations.push(tbrOperation);
|
|
75
|
+
break;
|
|
76
|
+
case "C":
|
|
77
|
+
COperations.push(tbrOperation);
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
leftOperations = [...AOperations, ...BOperations];
|
|
84
|
+
rightOperations = [...COperations];
|
|
41
85
|
} else {
|
|
42
86
|
leftOperations = operations.filter((o) => !o.right);
|
|
43
87
|
rightOperations = operations.filter((o) => o.right == true);
|
|
44
88
|
}
|
|
89
|
+
hasOperations = leftOperations.length > 0 || rightOperations.length > 0;
|
|
45
90
|
}
|
|
46
91
|
function on_click(e, operation) {
|
|
47
92
|
if (!operation)
|
|
@@ -49,6 +94,8 @@ function on_click(e, operation) {
|
|
|
49
94
|
let owner = e.target;
|
|
50
95
|
while (owner && owner.tagName != "BUTTON")
|
|
51
96
|
owner = owner.parentElement;
|
|
97
|
+
if (operation.preAction)
|
|
98
|
+
operation.preAction(owner);
|
|
52
99
|
if (operation.action) {
|
|
53
100
|
operation.action(owner);
|
|
54
101
|
return;
|
|
@@ -74,6 +121,7 @@ function isOperationActivated(operation) {
|
|
|
74
121
|
}
|
|
75
122
|
</script>
|
|
76
123
|
|
|
124
|
+
{#if hasOperations}
|
|
77
125
|
<section class="flex flex-row no-print h-10 bg-stone-600 dark:bg-stone-950 overflow-x-clip overflow-y-hidden py-0 text-xs whitespace-nowrap">
|
|
78
126
|
<div class="flex flex-row"
|
|
79
127
|
class:flex-row-reverse={mobile}>
|
|
@@ -85,7 +133,7 @@ function isOperationActivated(operation) {
|
|
|
85
133
|
{#each operation.toolbox as operation}
|
|
86
134
|
<button type="button"
|
|
87
135
|
class="py-2.5 px-4
|
|
88
|
-
text-
|
|
136
|
+
text-sm font-thin text-stone-100 dark:text-stone-300 dark:hover:text-white
|
|
89
137
|
hover:bg-stone-700 dark:hover:bg-stone-800 active:bg-stone-300 dark:active:bg-stone-600
|
|
90
138
|
border-stone-200 focus:outline-none dark:border-stone-600
|
|
91
139
|
inline-flex items-center"
|
|
@@ -94,7 +142,7 @@ function isOperationActivated(operation) {
|
|
|
94
142
|
on:click={(e) => {on_click(e, operation)}}
|
|
95
143
|
on:mousedown={mousedown}>
|
|
96
144
|
{#if operation.icon}
|
|
97
|
-
<div class="w-
|
|
145
|
+
<div class="w-5 h-5 mr-1"><svelte:component this={operation.icon}/></div>
|
|
98
146
|
{/if}
|
|
99
147
|
{#if operation.caption}
|
|
100
148
|
<span class="ml-1">{operation.caption}</span>
|
|
@@ -105,7 +153,7 @@ function isOperationActivated(operation) {
|
|
|
105
153
|
|
|
106
154
|
<button type="button"
|
|
107
155
|
class="py-2.5 px-4
|
|
108
|
-
text-
|
|
156
|
+
text-sm font-thin text-stone-100 dark:text-stone-300 dark:hover:text-white
|
|
109
157
|
hover:bg-stone-700 dark:hover:bg-stone-800 active:bg-stone-300 dark:active:bg-stone-600
|
|
110
158
|
border-stone-200 focus:outline-none dark:border-stone-600
|
|
111
159
|
inline-flex items-center"
|
|
@@ -114,7 +162,7 @@ function isOperationActivated(operation) {
|
|
|
114
162
|
on:click={(e) => {on_click(e, operation)}}
|
|
115
163
|
on:mousedown={mousedown}>
|
|
116
164
|
{#if operation.icon}
|
|
117
|
-
<div class="w-
|
|
165
|
+
<div class="w-5 h-5 mr-1"><svelte:component this={operation.icon}/></div>
|
|
118
166
|
{/if}
|
|
119
167
|
{#if operation.caption}
|
|
120
168
|
<span class="ml-1">{operation.caption}</span>
|
|
@@ -133,7 +181,7 @@ function isOperationActivated(operation) {
|
|
|
133
181
|
{@const isActive=isOperationActivated(operation)}
|
|
134
182
|
<button type="button"
|
|
135
183
|
class="py-2.5 px-4
|
|
136
|
-
text-
|
|
184
|
+
text-sm font-thin text-stone-100 dark:text-stone-300 dark:hover:text-white
|
|
137
185
|
hover:bg-stone-700 dark:hover:bg-stone-800 active:bg-stone-300 dark:active:bg-stone-600
|
|
138
186
|
border-stone-200 focus:outline-none dark:border-stone-600
|
|
139
187
|
inline-flex items-center"
|
|
@@ -142,7 +190,7 @@ function isOperationActivated(operation) {
|
|
|
142
190
|
on:click={(e) => {on_click(e, operation)}}
|
|
143
191
|
on:mousedown={mousedown}>
|
|
144
192
|
{#if operation.icon}
|
|
145
|
-
<div class="w-
|
|
193
|
+
<div class="w-5 h-5 mr-1"><svelte:component this={operation.icon}/></div>
|
|
146
194
|
{/if}
|
|
147
195
|
{#if operation.caption}
|
|
148
196
|
<span class="ml-1">{operation.caption}</span>
|
|
@@ -152,6 +200,7 @@ function isOperationActivated(operation) {
|
|
|
152
200
|
{/each}
|
|
153
201
|
</div>
|
|
154
202
|
</section>
|
|
203
|
+
{/if}
|
|
155
204
|
|
|
156
205
|
<style>
|
|
157
206
|
@media print
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@humandialog/forms.svelte",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
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.8.
|
|
29
|
+
"@humandialog/auth.svelte": "^1.8.8",
|
|
30
30
|
"@tiptap/core": "^2.11.0",
|
|
31
31
|
"@tiptap/extension-bullet-list": "^2.11.5",
|
|
32
32
|
"@tiptap/extension-code-block": "^2.11.5",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"@tiptap/suggestion": "^2.11.0",
|
|
44
44
|
"flowbite-svelte": "^0.44.4",
|
|
45
45
|
"pdfjs-dist": "^4.10.38",
|
|
46
|
+
"qs": "^6.14.0",
|
|
46
47
|
"svelte-icons": "^2.1.0",
|
|
47
48
|
"svelte-spa-router": "^4.0.1"
|
|
48
49
|
},
|
|
@@ -125,6 +126,7 @@
|
|
|
125
126
|
"./components/list/list.static.svelte": "./components/list/list.static.svelte",
|
|
126
127
|
"./components/list/list.summary.svelte": "./components/list/list.summary.svelte",
|
|
127
128
|
"./components/list/list.svelte": "./components/list/list.svelte",
|
|
129
|
+
"./components/list/list.tags.svelte": "./components/list/list.tags.svelte",
|
|
128
130
|
"./components/list/list.title.svelte": "./components/list/list.title.svelte",
|
|
129
131
|
"./components/list/List": "./components/list/List.js",
|
|
130
132
|
"./components/menu": "./components/menu.js",
|
package/stores.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export function hasSelectedItem(): boolean;
|
|
|
5
5
|
export function hasDataItem(): boolean;
|
|
6
6
|
export function reloadMainContentPage(): void;
|
|
7
7
|
export function reloadWholeApp(): void;
|
|
8
|
+
export function reloadVisibleTags(): void;
|
|
8
9
|
export function set_dark_mode_default(value: any): void;
|
|
9
10
|
export function set_default_tools_visible(value: any, force: any): void;
|
|
10
11
|
export function restore_defults(): void;
|
|
@@ -35,7 +36,9 @@ export const nav_titles: import("svelte/store").Writable<{}>;
|
|
|
35
36
|
export const mainContentPageReloader: import("svelte/store").Writable<number>;
|
|
36
37
|
export const wholeAppReloader: import("svelte/store").Writable<number>;
|
|
37
38
|
export const alerts: import("svelte/store").Writable<never[]>;
|
|
39
|
+
export const tagsReloader: import("svelte/store").Writable<number>;
|
|
38
40
|
export function addAlert(txt: any): void;
|
|
41
|
+
export function removeAlert(alert: any): void;
|
|
39
42
|
export function onErrorShowAlert(txt: any): void;
|
|
40
43
|
export const dark_mode_store: import("svelte/store").Writable<any>;
|
|
41
44
|
export const main_sidebar_visible_store: import("svelte/store").Writable<any>;
|
package/stores.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import {writable, get} from 'svelte/store';
|
|
3
|
-
import {SCREEN_SIZES} from './utils.js'
|
|
3
|
+
import {SCREEN_SIZES, randomString} from './utils.js'
|
|
4
4
|
|
|
5
5
|
export const data_tick_store = writable(1);
|
|
6
6
|
export const contextItemsStore = writable({focused:'', data: null, sel: null})
|
|
@@ -14,6 +14,7 @@ export const nav_titles = writable({});
|
|
|
14
14
|
export const mainContentPageReloader = writable(1);
|
|
15
15
|
export const wholeAppReloader = writable(1)
|
|
16
16
|
export const alerts = writable([])
|
|
17
|
+
export const tagsReloader = writable(1)
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
let toolsActionsOperationsStack = []
|
|
@@ -42,10 +43,26 @@ export function popToolsActionsOperations()
|
|
|
42
43
|
|
|
43
44
|
export const addAlert = (txt) => {
|
|
44
45
|
let al = get(alerts)
|
|
45
|
-
|
|
46
|
+
const alert = {
|
|
47
|
+
msg: txt,
|
|
48
|
+
id: randomString(6),
|
|
49
|
+
timeoutId: setTimeout(() => removeAlert(alert), 10000)
|
|
50
|
+
}
|
|
51
|
+
al = [alert, ...al];
|
|
46
52
|
alerts.set(al);
|
|
47
53
|
}
|
|
48
54
|
|
|
55
|
+
export const removeAlert = (alert) => {
|
|
56
|
+
let al = get(alerts)
|
|
57
|
+
const idx = al.findIndex((a) => a.id == alert.id)
|
|
58
|
+
if(idx >= 0)
|
|
59
|
+
{
|
|
60
|
+
clearTimeout(alert.timeoutId)
|
|
61
|
+
al.splice(idx, 1)
|
|
62
|
+
alerts.set(al)
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
49
66
|
export const onErrorShowAlert = addAlert;
|
|
50
67
|
|
|
51
68
|
export function setNavigatorTitle(key, title)
|
|
@@ -81,6 +98,12 @@ export function reloadWholeApp()
|
|
|
81
98
|
wholeAppReloader.set(val);
|
|
82
99
|
}
|
|
83
100
|
|
|
101
|
+
export function reloadVisibleTags()
|
|
102
|
+
{
|
|
103
|
+
let val = get(tagsReloader);
|
|
104
|
+
val += 1;
|
|
105
|
+
tagsReloader.set(val);
|
|
106
|
+
}
|
|
84
107
|
|
|
85
108
|
let has_saved_dark_mode = false;
|
|
86
109
|
function create_dark_mode_store()
|
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,26 @@
|
|
|
285
297
|
}
|
|
286
298
|
|
|
287
299
|
let page_operations={
|
|
288
|
-
opver:
|
|
300
|
+
opver: 2,
|
|
289
301
|
operations: [
|
|
290
302
|
{
|
|
291
303
|
caption: 'View',
|
|
292
304
|
operations: [
|
|
293
305
|
{
|
|
294
306
|
icon: FaUserPlus,
|
|
295
|
-
caption: '',
|
|
307
|
+
caption: 'Add user',
|
|
296
308
|
action: (focused) => { create_new_user(); },
|
|
297
|
-
|
|
309
|
+
// fab: 'M10',
|
|
298
310
|
tbr: 'A'
|
|
299
311
|
},
|
|
300
|
-
|
|
312
|
+
// przenieść na stronie /profile
|
|
313
|
+
/* {
|
|
301
314
|
icon: FaUserSlash,
|
|
302
|
-
caption: '',
|
|
315
|
+
caption: 'Delete application account',
|
|
303
316
|
action: (f) => {askToDeleteApplicationAccount();},
|
|
304
|
-
fab: 'S00',
|
|
317
|
+
//fab: 'S00',
|
|
305
318
|
tbr: 'C'
|
|
306
|
-
}
|
|
319
|
+
}*/
|
|
307
320
|
]
|
|
308
321
|
}
|
|
309
322
|
]
|
|
@@ -317,18 +330,14 @@
|
|
|
317
330
|
action: (focused) => { list.edit(user, nameAttrib) }
|
|
318
331
|
},
|
|
319
332
|
{
|
|
320
|
-
caption: 'Users management',
|
|
333
|
+
caption: 'Users management (auth role)',
|
|
321
334
|
action: (focused) => { list.edit(user, 'Privileges') }
|
|
322
335
|
}];
|
|
323
336
|
|
|
324
337
|
if(showAccessRoles)
|
|
325
338
|
{
|
|
326
339
|
operations.push({
|
|
327
|
-
|
|
328
|
-
});
|
|
329
|
-
|
|
330
|
-
operations.push({
|
|
331
|
-
caption: 'Access role',
|
|
340
|
+
caption: 'Access role (app role)',
|
|
332
341
|
action: (focused) => { list.edit(user, 'Access') }
|
|
333
342
|
});
|
|
334
343
|
}
|
|
@@ -336,7 +345,7 @@
|
|
|
336
345
|
if(showFiles)
|
|
337
346
|
{
|
|
338
347
|
operations.push({
|
|
339
|
-
caption: 'External files',
|
|
348
|
+
caption: 'External files (files role)',
|
|
340
349
|
action: (focused) => { list.edit(user, 'Files') }
|
|
341
350
|
});
|
|
342
351
|
}
|
|
@@ -346,74 +355,62 @@
|
|
|
346
355
|
|
|
347
356
|
let user_operations = (user) => {
|
|
348
357
|
|
|
349
|
-
let operations = [
|
|
358
|
+
let operations = [
|
|
359
|
+
{
|
|
360
|
+
caption: 'Fetch info',
|
|
361
|
+
icon: FaInfo,
|
|
362
|
+
action: (f) => fetch_user_details(user),
|
|
363
|
+
tbr: 'A'
|
|
364
|
+
}
|
|
365
|
+
];
|
|
350
366
|
|
|
351
367
|
if(user.removed)
|
|
352
368
|
{
|
|
353
|
-
operations = [
|
|
369
|
+
operations = [ ...operations,
|
|
354
370
|
{
|
|
355
371
|
icon: FaUserPlus,
|
|
356
|
-
caption: '',
|
|
372
|
+
caption: 'Revert removing',
|
|
357
373
|
action: (f) => askToAddAgain(user),
|
|
358
|
-
fab: 'M10',
|
|
359
|
-
tbr: '
|
|
374
|
+
// fab: 'M10',
|
|
375
|
+
tbr: 'A'
|
|
360
376
|
}
|
|
361
377
|
];
|
|
362
378
|
}
|
|
363
379
|
else
|
|
364
380
|
{
|
|
365
381
|
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
|
-
|
|
382
|
+
|
|
387
383
|
operations.push({
|
|
388
|
-
|
|
384
|
+
icon: FaPen,
|
|
385
|
+
caption: 'Change',
|
|
386
|
+
menu: edit_operations,
|
|
387
|
+
//fab: 'M20',
|
|
388
|
+
tbr: 'A'
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
operations.push({
|
|
392
|
+
caption: 'Remove user',
|
|
389
393
|
icon: FaUserMinus,
|
|
390
394
|
action: (focused) => askToRemove(user),
|
|
391
|
-
|
|
392
|
-
tbr: '
|
|
395
|
+
// fab: 'M30',
|
|
396
|
+
tbr: 'A'
|
|
393
397
|
});
|
|
394
398
|
}
|
|
395
399
|
|
|
396
400
|
|
|
397
401
|
return {
|
|
398
|
-
opver:
|
|
402
|
+
opver: 2,
|
|
399
403
|
operations: [
|
|
400
404
|
{
|
|
401
405
|
caption: 'User',
|
|
406
|
+
// tbr: 'B',
|
|
402
407
|
operations: operations
|
|
403
408
|
}
|
|
404
409
|
]
|
|
405
410
|
}
|
|
406
411
|
}
|
|
407
412
|
|
|
408
|
-
|
|
409
|
-
if(user.removed)
|
|
410
|
-
return [];
|
|
411
|
-
|
|
412
|
-
let edit_operations = get_edit_operations(user);
|
|
413
|
-
return {
|
|
414
|
-
grid: edit_operations
|
|
415
|
-
}
|
|
416
|
-
}
|
|
413
|
+
|
|
417
414
|
|
|
418
415
|
let data_item =
|
|
419
416
|
{
|
|
@@ -695,7 +692,13 @@
|
|
|
695
692
|
create_new_user();
|
|
696
693
|
}
|
|
697
694
|
|
|
698
|
-
|
|
695
|
+
function getHRefFunc()
|
|
696
|
+
{
|
|
697
|
+
if(!hrefAttrib)
|
|
698
|
+
return undefined
|
|
699
|
+
else
|
|
700
|
+
return (user) => { return user[hrefAttrib]}
|
|
701
|
+
}
|
|
699
702
|
|
|
700
703
|
</script>
|
|
701
704
|
|
|
@@ -713,9 +716,8 @@
|
|
|
713
716
|
<List objects={reef_users}
|
|
714
717
|
title='Members'
|
|
715
718
|
toolbarOperations={user_operations}
|
|
716
|
-
contextMenu={user_context_menu}
|
|
717
719
|
bind:this={list}>
|
|
718
|
-
<ListTitle a={nameAttrib} onChange={on_name_changed}/>
|
|
720
|
+
<ListTitle a={nameAttrib} onChange={on_name_changed} hrefFunc={getHRefFunc()}/>
|
|
719
721
|
<ListSummary a={emailAttrib} readonly/>
|
|
720
722
|
|
|
721
723
|
<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
|
};
|