@live-change/access-control-frontend 0.9.38 → 0.9.40

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.
@@ -31,7 +31,7 @@
31
31
  v-model="synchronizedPublicAccess.userRoles"
32
32
  :feedback="false" toggleMask :disabled="disabled" />
33
33
  </div>
34
- <div class="p-field field mb-6" v-if="isMounted && requestedRolesVisible"
34
+ <div class="p-field field mb-6 col-span-12 md:col-span-6" v-if="isMounted && requestedRolesVisible"
35
35
  :class="autoGrantRequestsVisible ? 'col-6' : 'col-12'">
36
36
  <label for="availablePublicAccess" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">Roles available to request:</label>
37
37
  <MultiSelect id="userPublicAccess" class="w-full" inputClass="w-full"
@@ -40,7 +40,7 @@
40
40
  v-model="synchronizedPublicAccess.availableRoles"
41
41
  :feedback="false" toggleMask :disabled="disabled" />
42
42
  </div>
43
- <div class="p-field field mb-6 col-span-6" v-if="isMounted && autoGrantRequestsVisible">
43
+ <div class="p-field field mb-6 col-span-12 md:col-span-6" v-if="isMounted && autoGrantRequestsVisible">
44
44
  <label for="autoGrantRequests" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
45
45
  Automatically grant number of requests:
46
46
  </label>
@@ -11,31 +11,88 @@
11
11
 
12
12
  <template #default>
13
13
 
14
- <TabView :pt="{ panelcontainer:{ class: 'px-1' } }" v-model:activeIndex="tabIndex">
15
- <TabPanel header="Single user">
16
-
17
- <command-form service="accessControl" action="inviteEmail"
18
- ref="inviteForm"
19
- v-slot="{ data }"
20
- :parameters="{ objectType, object }"
21
- :initialValues="{ roles: availableRoles }"
22
- @done="handleInvited" keepOnDone>
23
-
24
- <div class="flex flex-row flex-wrap items-center" style="margin-left: -0.5rem; margin-right: -0.5rem;">
25
- <div class="col-span-12 md:col-span-6 py-1">
14
+ <Tabs v-model:value="tabIndex" class="w-full">
15
+ <TabList>
16
+ <Tab value="0">Single user</Tab>
17
+ <Tab value="1">Multiple users</Tab>
18
+ </TabList>
19
+ <TabPanels>
20
+ <TabPanel value="0">
21
+
22
+ <command-form service="accessControl" action="inviteEmail"
23
+ ref="inviteForm"
24
+ v-slot="{ data }"
25
+ :parameters="{ objectType, object }"
26
+ :initialValues="{ roles: availableRoles }"
27
+ @done="handleInvited" keepOnDone>
28
+
29
+ <div class="grid grid-cols-12 gap-4 formgrid p-fluid mb-2 pt-2">
30
+ <div class="col-span-12 md:col-span-6 mb-2">
31
+ <div class="p-field">
32
+ <label for="email" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
33
+ Email address
34
+ </label>
35
+ <InputText id="email" type="text" class="w-full"
36
+ aria-describedby="email-help" :invalid="!!data.emailError"
37
+ v-model="data.email" />
38
+ <Message v-if="data.emailError" severity="error" variant="simple" size="small">
39
+ {{ t(`errors.${data.emailError}`) }}
40
+ </Message>
41
+ </div>
42
+ </div>
43
+ <div class="col-span-12 md:col-span-6 mb-2">
44
+ <div class="p-field ">
45
+ <label for="inviteAccess" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
46
+ Roles
47
+ </label>
48
+ <Dropdown v-if="!multiRole" id="inviteAccess" class="w-14em w-full"
49
+ :options="['none'].concat(availableRoles)"
50
+ :optionLabel="optionLabel"
51
+ :modelValue="data.roles?.[0] ?? 'none'"
52
+ @update:modelValue="newValue => data.roles = [newValue]"
53
+ :feedback="false" toggleMask />
54
+ <MultiSelect v-if="multiRole" id="inviteAccess" class="w-full"
55
+ :options="availableRoles"
56
+ :optionLabel="optionLabel"
57
+ v-model="data.roles"
58
+ :feedback="false" toggleMask />
59
+ <Message v-if="data.rolesError" severity="error" variant="simple" size="small">
60
+ {{ t(`errors.${data.rolesError}`) }}
61
+ </Message>
62
+ </div>
63
+ </div>
64
+ </div>
65
+ <div class="p-field">
66
+ <label for="inviteMessage" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
67
+ Message ( optional )
68
+ </label>
69
+ <Textarea id="inviteMessage" v-model="data.message" :autoResize="true" rows="3" class="w-full" />
70
+ </div>
71
+
72
+ </command-form>
73
+
74
+ </TabPanel>
75
+ <TabPanel value="1">
76
+
77
+ <command-form service="accessControl" action="inviteManyEmailsFromText"
78
+ ref="inviteManyForm"
79
+ v-slot="{ data }"
80
+ :parameters="{ objectType, object }"
81
+ :initialValues="{ roles: availableRoles }"
82
+ @done="handleInvitedMany" keepOnDone>
83
+
26
84
  <div class="p-field mb-4">
27
85
  <label for="email" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
28
- Email address
86
+ Email addresses (newline or comma separated)
29
87
  </label>
30
- <InputText id="email" type="text" class="w-full"
31
- aria-describedby="email-help" :invalid="!!data.emailError"
32
- v-model="data.email" />
33
- <Message v-if="data.emailError" severity="error" variant="simple" size="small">
34
- {{ t(`errors.${data.emailError}`) }}
88
+ <Textarea id="emailsText" type="text" class="w-full"
89
+ rows="4"
90
+ aria-describedby="emails-help" :invalid="!!data.emailsTextError"
91
+ v-model="data.emailsText" />
92
+ <Message v-if="data.emailsTextError" severity="error" variant="simple" size="small">
93
+ {{ t(`errors.${data.emailsTextError}`) }}
35
94
  </Message>
36
95
  </div>
37
- </div>
38
- <div class="col-span-12 md:col-span-6">
39
96
  <div class="p-field mb-4">
40
97
  <label for="inviteAccess" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
41
98
  Roles
@@ -47,77 +104,26 @@
47
104
  @update:modelValue="newValue => data.roles = [newValue]"
48
105
  :feedback="false" toggleMask />
49
106
  <MultiSelect v-if="multiRole" id="inviteAccess" class="w-full"
50
- :options="availableRoles"
51
- :optionLabel="optionLabel"
52
- v-model="data.roles"
53
- :feedback="false" toggleMask />
107
+ :options="availableRoles"
108
+ :optionLabel="optionLabel"
109
+ v-model="data.roles"
110
+ :feedback="false" toggleMask />
54
111
  <Message v-if="data.rolesError" severity="error" variant="simple" size="small">
55
112
  {{ t(`errors.${data.rolesError}`) }}
56
113
  </Message>
57
114
  </div>
58
- </div>
59
- </div>
60
- <div class="p-field mb-1">
61
- <label for="inviteMessage" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
62
- Message ( optional )
63
- </label>
64
- <Textarea id="inviteMessage" v-model="data.message" :autoResize="true" rows="3" class="w-full" />
65
- </div>
66
-
67
- </command-form>
68
-
69
- </TabPanel>
70
- <TabPanel header="Multiple users">
71
-
72
- <command-form service="accessControl" action="inviteManyEmailsFromText"
73
- ref="inviteManyForm"
74
- v-slot="{ data }"
75
- :parameters="{ objectType, object }"
76
- :initialValues="{ roles: availableRoles }"
77
- @done="handleInvitedMany" keepOnDone>
78
-
79
- <div class="p-field mb-4">
80
- <label for="email" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
81
- Email addresses (newline or comma separated)
82
- </label>
83
- <Textarea id="emailsText" type="text" class="w-full"
84
- rows="4"
85
- aria-describedby="emails-help" :invalid="!!data.emailsTextError"
86
- v-model="data.emailsText" />
87
- <Message v-if="data.emailsTextError" severity="error" variant="simple" size="small">
88
- {{ t(`errors.${data.emailsTextError}`) }}
89
- </Message>
90
- </div>
91
- <div class="p-field mb-4">
92
- <label for="inviteAccess" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
93
- Roles
115
+ <div class="p-field mb-1">
116
+ <label for="inviteMessage" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
117
+ Message ( optional )
94
118
  </label>
95
- <Dropdown v-if="!multiRole" id="inviteAccess" class="w-14em w-full"
96
- :options="['none'].concat(availableRoles)"
97
- :optionLabel="optionLabel"
98
- :modelValue="data.roles?.[0] ?? 'none'"
99
- @update:modelValue="newValue => data.roles = [newValue]"
100
- :feedback="false" toggleMask />
101
- <MultiSelect v-if="multiRole" id="inviteAccess" class="w-full"
102
- :options="availableRoles"
103
- :optionLabel="optionLabel"
104
- v-model="data.roles"
105
- :feedback="false" toggleMask />
106
- <Message v-if="data.rolesError" severity="error" variant="simple" size="small">
107
- {{ t(`errors.${data.rolesError}`) }}
108
- </Message>
119
+ <Textarea id="inviteMessage" v-model="data.message" :autoResize="true" rows="3" class="w-full" />
109
120
  </div>
110
- <div class="p-field mb-1">
111
- <label for="inviteMessage" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
112
- Message ( optional )
113
- </label>
114
- <Textarea id="inviteMessage" v-model="data.message" :autoResize="true" rows="3" class="w-full" />
115
- </div>
116
121
 
117
- </command-form>
122
+ </command-form>
118
123
 
119
- </TabPanel>
120
- </TabView>
124
+ </TabPanel>
125
+ </TabPanels>
126
+ </Tabs>
121
127
 
122
128
  </template>
123
129
 
@@ -152,8 +158,11 @@
152
158
 
153
159
  import ProgressSpinner from 'primevue/progressspinner'
154
160
 
155
- import TabView from 'primevue/tabview'
156
- import TabPanel from 'primevue/tabpanel'
161
+ import Tabs from 'primevue/tabs';
162
+ import TabList from 'primevue/tablist';
163
+ import Tab from 'primevue/tab';
164
+ import TabPanels from 'primevue/tabpanels';
165
+ import TabPanel from 'primevue/tabpanel';
157
166
 
158
167
  import Button from "primevue/button"
159
168
  import Dropdown from "primevue/dropdown"
@@ -193,7 +202,7 @@
193
202
 
194
203
  const { availableRoles, multiRole, object, objectType } = toRefs(props)
195
204
 
196
- const tabIndex = ref(0)
205
+ const tabIndex = ref('0')
197
206
 
198
207
  const visible = defineModel('visible', { required: true })
199
208
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@live-change/access-control-frontend",
3
- "version": "0.9.38",
3
+ "version": "0.9.40",
4
4
  "scripts": {
5
5
  "memDev": "node server/start.js memDev --enableSessions --initScript ./init.js --dbAccess",
6
6
  "localDevInit": "rm tmp.db; lcli localDev --enableSessions --initScript ./init.js",
@@ -21,22 +21,22 @@
21
21
  },
22
22
  "type": "module",
23
23
  "dependencies": {
24
- "@live-change/access-control-service": "^0.9.38",
25
- "@live-change/cli": "^0.9.38",
26
- "@live-change/dao": "^0.9.38",
27
- "@live-change/dao-vue3": "^0.9.38",
28
- "@live-change/dao-websocket": "^0.9.38",
29
- "@live-change/db-admin": "^0.9.38",
30
- "@live-change/framework": "^0.9.38",
31
- "@live-change/frontend-base": "^0.9.38",
32
- "@live-change/password-authentication-service": "^0.9.38",
33
- "@live-change/secret-code-service": "^0.9.38",
34
- "@live-change/secret-link-service": "^0.9.38",
35
- "@live-change/session-service": "^0.9.38",
36
- "@live-change/user-frontend": "^0.9.38",
37
- "@live-change/user-service": "^0.9.38",
38
- "@live-change/vue3-components": "^0.9.38",
39
- "@live-change/vue3-ssr": "^0.9.38",
24
+ "@live-change/access-control-service": "^0.9.40",
25
+ "@live-change/cli": "^0.9.40",
26
+ "@live-change/dao": "^0.9.40",
27
+ "@live-change/dao-vue3": "^0.9.40",
28
+ "@live-change/dao-websocket": "^0.9.40",
29
+ "@live-change/db-admin": "^0.9.40",
30
+ "@live-change/framework": "^0.9.40",
31
+ "@live-change/frontend-base": "^0.9.40",
32
+ "@live-change/password-authentication-service": "^0.9.40",
33
+ "@live-change/secret-code-service": "^0.9.40",
34
+ "@live-change/secret-link-service": "^0.9.40",
35
+ "@live-change/session-service": "^0.9.40",
36
+ "@live-change/user-frontend": "^0.9.40",
37
+ "@live-change/user-service": "^0.9.40",
38
+ "@live-change/vue3-components": "^0.9.40",
39
+ "@live-change/vue3-ssr": "^0.9.40",
40
40
  "@vueuse/core": "^12.3.0",
41
41
  "codeceptjs-assert": "^0.0.5",
42
42
  "compression": "^1.7.5",
@@ -53,7 +53,7 @@
53
53
  "vue3-scroll-border": "0.1.6"
54
54
  },
55
55
  "devDependencies": {
56
- "@live-change/codeceptjs-helper": "^0.9.38",
56
+ "@live-change/codeceptjs-helper": "^0.9.40",
57
57
  "codeceptjs": "^3.6.10",
58
58
  "generate-password": "1.7.1",
59
59
  "playwright": "1.49.1",
@@ -64,5 +64,5 @@
64
64
  "author": "Michał Łaszczewski <michal@laszczewski.pl>",
65
65
  "license": "BSD-3-Clause",
66
66
  "description": "",
67
- "gitHead": "9b2e398863273d9bc51b54df30b498a2da154c98"
67
+ "gitHead": "d25366854a7a30557fd8f8e428a2e02cabb5b323"
68
68
  }