@fishawack/lab-velocity 2.0.0-beta.5 → 2.0.0-beta.50

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 (111) hide show
  1. package/README.md +467 -36
  2. package/_Build/js/libs/build-id.js +14 -0
  3. package/_Build/js/libs/filters.js +36 -0
  4. package/_Build/js/libs/globals.js +7 -0
  5. package/_Build/js/libs/router.js +22 -0
  6. package/_Build/js/libs/routes.js +29 -0
  7. package/_Build/js/libs/store.js +21 -0
  8. package/_Build/js/libs/utility.js +161 -0
  9. package/_Build/vue/components/basic/Button.vue +1 -1
  10. package/_Build/vue/components/form/Avatar.vue +90 -0
  11. package/_Build/vue/components/form/Checkbox.vue +10 -0
  12. package/_Build/vue/components/form/InputNumber.vue +1 -1
  13. package/_Build/vue/components/form/Select.vue +223 -33
  14. package/_Build/vue/components/form/Spinner.vue +5 -0
  15. package/_Build/vue/components/layout/Alert.vue +5 -5
  16. package/_Build/vue/components/layout/Audit.vue +143 -0
  17. package/_Build/vue/{modules/AuthModule/components/VBreadcrumbs.vue → components/layout/Breadcrumbs.vue} +4 -4
  18. package/_Build/vue/{modules/AuthModule/components → components/layout}/Chips.vue +2 -2
  19. package/_Build/vue/components/layout/Footer.vue +11 -10
  20. package/_Build/vue/{modules/AuthModule/components/VFormFooter.vue → components/layout/FormFooter.vue} +13 -7
  21. package/_Build/vue/{modules/AuthModule/components → components/layout}/FormRole.vue +10 -8
  22. package/_Build/vue/components/layout/Layout.vue +94 -0
  23. package/_Build/vue/components/layout/Navigation.vue +77 -0
  24. package/_Build/vue/{modules/AuthModule/components/VPageHeader.vue → components/layout/PageHeader.vue} +14 -8
  25. package/_Build/vue/components/layout/SideBar.vue +26 -0
  26. package/_Build/vue/{modules/AuthModule/components/VTable.vue → components/layout/Table.vue} +37 -16
  27. package/_Build/vue/{modules/AuthModule/components/VTableSorter.vue → components/layout/TableSorter.vue} +108 -52
  28. package/_Build/vue/components/layout/TokenDisplay.vue +52 -0
  29. package/_Build/vue/components/layout/pageTitle.vue +1 -1
  30. package/_Build/vue/components/navigation/MenuItem.vue +7 -2
  31. package/_Build/vue/components/navigation/MenuItemGroup.vue +7 -2
  32. package/_Build/vue/modules/AuthModule/js/axios.js +21 -1
  33. package/_Build/vue/modules/AuthModule/js/guest-request.js +32 -0
  34. package/_Build/vue/modules/AuthModule/js/impersonation-banner.js +102 -0
  35. package/_Build/vue/modules/AuthModule/js/router.js +91 -114
  36. package/_Build/vue/modules/AuthModule/js/store.js +23 -6
  37. package/_Build/vue/modules/AuthModule/routes/PCompanies/columns.js +268 -0
  38. package/_Build/vue/modules/AuthModule/routes/PCompanies/resource.js +213 -0
  39. package/_Build/vue/modules/AuthModule/routes/PIntegrations/columns.js +58 -0
  40. package/_Build/vue/modules/AuthModule/routes/PIntegrations/resource.js +79 -0
  41. package/_Build/vue/modules/AuthModule/routes/PTeams/columns.js +78 -0
  42. package/_Build/vue/modules/AuthModule/routes/PTeams/resource.js +251 -0
  43. package/_Build/vue/modules/AuthModule/routes/PUsers/SetPasswordAction.vue +51 -0
  44. package/_Build/vue/modules/AuthModule/routes/PUsers/SetPasswordDialog.vue +138 -0
  45. package/_Build/vue/modules/AuthModule/routes/PUsers/columns.js +349 -0
  46. package/_Build/vue/modules/AuthModule/routes/PUsers/resource.js +239 -0
  47. package/_Build/vue/modules/AuthModule/routes/account-exists.vue +2 -2
  48. package/_Build/vue/modules/AuthModule/routes/change-password.vue +28 -32
  49. package/_Build/vue/modules/AuthModule/routes/container.vue +2 -11
  50. package/_Build/vue/modules/AuthModule/routes/expired-reset.vue +4 -4
  51. package/_Build/vue/modules/AuthModule/routes/expired-verification.vue +10 -9
  52. package/_Build/vue/modules/AuthModule/routes/force-reset.vue +44 -58
  53. package/_Build/vue/modules/AuthModule/routes/forgot.vue +10 -5
  54. package/_Build/vue/modules/AuthModule/routes/login.vue +12 -19
  55. package/_Build/vue/modules/AuthModule/routes/logincallback.vue +1 -3
  56. package/_Build/vue/modules/AuthModule/routes/loginsso.vue +14 -10
  57. package/_Build/vue/modules/AuthModule/routes/logout.vue +17 -5
  58. package/_Build/vue/modules/AuthModule/routes/logoutheadless.vue +1 -3
  59. package/_Build/vue/modules/AuthModule/routes/register.vue +24 -28
  60. package/_Build/vue/modules/AuthModule/routes/reset.vue +20 -14
  61. package/_Build/vue/modules/AuthModule/routes/success-forgot.vue +14 -8
  62. package/_Build/vue/modules/AuthModule/routes/success-reset.vue +2 -2
  63. package/_Build/vue/modules/AuthModule/routes/success-verify.vue +1 -3
  64. package/_Build/vue/modules/AuthModule/routes/verify.vue +11 -14
  65. package/_Build/vue/modules/resource/Children/create.vue +81 -0
  66. package/_Build/vue/modules/resource/Children/edit.vue +106 -0
  67. package/_Build/vue/modules/resource/Children/index.vue +42 -0
  68. package/_Build/vue/modules/resource/Children/partials/form.vue +111 -0
  69. package/_Build/vue/modules/resource/Children/show.vue +166 -0
  70. package/_Build/vue/modules/resource/index.js +561 -0
  71. package/_Build/vue/modules/resource/parent.vue +63 -0
  72. package/_Build/vue/modules/resource/trashable.js +104 -0
  73. package/_base.scss +0 -1
  74. package/_defaults.scss +2 -13
  75. package/_variables.scss +9 -4
  76. package/{modules/_AuthModule.scss → components/_auth.scss} +19 -68
  77. package/components/_datepicker.scss +1 -0
  78. package/components/_descriptions.scss +2 -0
  79. package/components/_footer.scss +1 -0
  80. package/components/_form.scss +18 -0
  81. package/components/_header.scss +3 -27
  82. package/components/_layout.scss +56 -0
  83. package/components/_menu.scss +0 -5
  84. package/components/_sidebar.scss +12 -27
  85. package/components/_table.scss +3 -0
  86. package/components/_token-display.scss +41 -0
  87. package/general.scss +1 -0
  88. package/index.js +31 -1
  89. package/package.json +7 -4
  90. package/vendor.scss +0 -1
  91. package/_Build/vue/components/layout/sideBar.vue +0 -25
  92. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/Upload/upload.vue +0 -251
  93. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/create.vue +0 -62
  94. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/edit.vue +0 -98
  95. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/index.vue +0 -90
  96. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/partials/form.vue +0 -173
  97. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/show.vue +0 -262
  98. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/parent.vue +0 -36
  99. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/create.vue +0 -112
  100. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/edit.vue +0 -103
  101. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/index.vue +0 -112
  102. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/partials/form.vue +0 -169
  103. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/show.vue +0 -120
  104. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/parent.vue +0 -36
  105. package/components/_input.scss +0 -0
  106. package/modules/_AuthVariables.scss +0 -7
  107. /package/_Build/vue/{modules/AuthModule/components → components/layout}/AuthModal.vue +0 -0
  108. /package/_Build/vue/{modules/AuthModule/components → components/layout}/Chip.vue +0 -0
  109. /package/_Build/vue/{modules/AuthModule/components/VPasswordValidation.vue → components/layout/PasswordValidation.vue} +0 -0
  110. /package/_Build/vue/{modules/AuthModule/components/VRoleLegend.vue → components/layout/RoleLegend.vue} +0 -0
  111. /package/{modules → components}/_modal.scss +0 -0
package/index.js CHANGED
@@ -1,13 +1,26 @@
1
1
  import Router from "./_Build/vue/modules/AuthModule/js/router.js";
2
2
  import Axios from "./_Build/vue/modules/AuthModule/js/axios.js";
3
3
  import Store from "./_Build/vue/modules/AuthModule/js/store.js";
4
+ import { ImpersonationPlugin } from "./_Build/vue/modules/AuthModule/js/impersonation-banner.js";
4
5
 
5
6
  export const Auth = {
6
7
  Router,
7
8
  Axios,
8
9
  Store,
10
+ ImpersonationPlugin,
9
11
  };
10
12
 
13
+ export { default as Resource } from "./_Build/vue/modules/resource/index.js";
14
+
15
+ export { default as UserResource } from "./_Build/vue/modules/AuthModule/routes/PUsers/resource.js";
16
+ export { default as UserColumns } from "./_Build/vue/modules/AuthModule/routes/PUsers/columns.js";
17
+ export { default as CompanyResource } from "./_Build/vue/modules/AuthModule/routes/PCompanies/resource.js";
18
+ export { default as CompanyColumns } from "./_Build/vue/modules/AuthModule/routes/PCompanies/columns.js";
19
+ export { default as TeamResource } from "./_Build/vue/modules/AuthModule/routes/PTeams/resource.js";
20
+ export { default as TeamColumns } from "./_Build/vue/modules/AuthModule/routes/PTeams/columns.js";
21
+ export { default as IntegrationResource } from "./_Build/vue/modules/AuthModule/routes/PIntegrations/resource.js";
22
+ export { default as IntegrationColumns } from "./_Build/vue/modules/AuthModule/routes/PIntegrations/columns.js";
23
+
11
24
  export { default as Button } from "./_Build/vue/components/basic/Button.vue";
12
25
  export { default as Link } from "./_Build/vue/components/basic/link.vue";
13
26
 
@@ -22,14 +35,24 @@ export { default as Switch } from "./_Build/vue/components/form/Switch.vue";
22
35
  export { default as Wysiwyg } from "./_Build/vue/components/form/Wysiwyg.vue";
23
36
  export { default as Wysiwyg2 } from "./_Build/vue/components/form/Wysiwyg2.vue";
24
37
  export { default as Upload } from "./_Build/vue/components/form/Upload.vue";
38
+ export { default as Avatar } from "./_Build/vue/components/form/Avatar.vue";
25
39
  export { default as InputNumber } from "./_Build/vue/components/form/InputNumber.vue";
26
40
 
27
- export { default as SideBar } from "./_Build/vue/components/layout/sideBar.vue";
41
+ export { default as RoleLegend } from "./_Build/vue/components/layout/RoleLegend.vue";
42
+ export { default as FormRole } from "./_Build/vue/components/layout/FormRole.vue";
43
+ export { default as TableSorter } from "./_Build/vue/components/layout/TableSorter.vue";
44
+ export { default as Chip } from "./_Build/vue/components/layout/Chip.vue";
45
+ export { default as Chips } from "./_Build/vue/components/layout/Chips.vue";
46
+ export { default as SideBar } from "./_Build/vue/components/layout/SideBar.vue";
28
47
  export { default as Footer } from "./_Build/vue/components/layout/Footer.vue";
29
48
  export { default as Header } from "./_Build/vue/components/layout/Header.vue";
49
+ export { default as Layout } from "./_Build/vue/components/layout/Layout.vue";
50
+ export { default as Navigation } from "./_Build/vue/components/layout/Navigation.vue";
30
51
  export { default as PageTitle } from "./_Build/vue/components/layout/pageTitle.vue";
31
52
  export { default as Alert } from "./_Build/vue/components/layout/Alert.vue";
32
53
  export { default as Tooltip } from "./_Build/vue/components/layout/Tooltip.vue";
54
+ export { default as Audit } from "./_Build/vue/components/layout/Audit.vue";
55
+ export { default as TokenDisplay } from "./_Build/vue/components/layout/TokenDisplay.vue";
33
56
  export { default as Menu } from "./_Build/vue/components/navigation/Menu.vue";
34
57
  export { default as MenuItem } from "./_Build/vue/components/navigation/MenuItem.vue";
35
58
  export { default as MenuItemGroup } from "./_Build/vue/components/navigation/MenuItemGroup.vue";
@@ -40,3 +63,10 @@ export { default as BreadcrumbsItem } from "./_Build/vue/components/navigation/B
40
63
  export { default as Icon } from "./_Build/vue/components/Icon.vue";
41
64
  export { default as Svg } from "./_Build/vue/components/Svg.vue";
42
65
  export { default as Loader } from "./_Build/vue/components/layout/Loader.vue";
66
+
67
+ export { default as Filters } from "./_Build/js/libs/filters.js";
68
+ export {
69
+ ucfirst,
70
+ calendarFormat,
71
+ dateFormat,
72
+ } from "./_Build/js/libs/filters.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fishawack/lab-velocity",
3
- "version": "2.0.0-beta.5",
3
+ "version": "2.0.0-beta.50",
4
4
  "description": "Avalere Health branded style system",
5
5
  "scripts": {
6
6
  "setup": "npm ci || npm i && npm run content",
@@ -54,18 +54,21 @@
54
54
  "@tiptap/starter-kit": "^2.11.2",
55
55
  "@tiptap/vue-3": "^2.11.2",
56
56
  "axios": "^1.11.0",
57
- "element-plus": "^2.7.8",
57
+ "dayjs": "^1.11.20",
58
+ "element-plus": "^2.11.8",
58
59
  "form-backend-validation": "github:mikemellor11/form-backend-validation#master",
60
+ "js-cookie": "^3.0.5",
59
61
  "lodash": "^4.17.21",
60
62
  "quill": "^1.3.7",
61
63
  "sanitize-html": "^2.13.1"
62
64
  },
63
65
  "files": [
64
66
  "*.scss",
65
- "modules",
66
67
  "components",
68
+ "_Build/js/libs",
67
69
  "_Build/vue/components",
68
- "_Build/vue/modules/AuthModule"
70
+ "_Build/vue/modules/AuthModule",
71
+ "_Build/vue/modules/resource"
69
72
  ],
70
73
  "main": "index.js",
71
74
  "release": {
package/vendor.scss CHANGED
@@ -15,7 +15,6 @@
15
15
  @import "@fishawack/lab-ui/_typography.scss";
16
16
  @import "@fishawack/lab-ui/_grid.scss";
17
17
  @import "@fishawack/lab-ui/_button.scss";
18
-
19
18
  @import "@fishawack/lab-ui/_utilities.scss";
20
19
 
21
20
  // Element-plus base style
@@ -1,25 +0,0 @@
1
- <template>
2
- <div class="vel-side-bar" :class="{ active: active }">
3
- <div>
4
- <slot name="navigation" />
5
- </div>
6
-
7
- <div class="vel-side-bar__bottom">
8
- <button class="vel-side-bar__button" @click="active = !active">
9
- <slot name="expand"> > </slot>
10
- </button>
11
- </div>
12
- </div>
13
- </template>
14
-
15
- <script>
16
- export default {
17
- name: "SideBar",
18
-
19
- data() {
20
- return {
21
- active: true,
22
- };
23
- },
24
- };
25
- </script>
@@ -1,251 +0,0 @@
1
- <template>
2
- <VBreadcrumbs :items="breadcrumbs" class="mb-8" container-classes="m-0" />
3
-
4
- <div class="container px-6 tablet:px-4 mobile:px-2 mb-8 ml-0 mr-0">
5
- <div class="grid__1/2">
6
- <div class="grid__1/1 grid justify-between mb-4 items-end">
7
- <h2 class="h1">User import</h2>
8
- <div>
9
- <el-button
10
- tag="a"
11
- type="secondary"
12
- href="/media/content/files/example.csv"
13
- download
14
- >
15
- <GIcon
16
- class="fill-1 mr-0.5"
17
- name="icon-download"
18
- embed
19
- artboard
20
- />
21
- Download example file
22
- </el-button>
23
- </div>
24
- </div>
25
- <div class="grid__1/1">
26
- <el-select
27
- v-model="form.roles"
28
- placeholder="Select"
29
- multiple
30
- name="roles"
31
- :error="form.errors"
32
- label="Roles"
33
- :options="[
34
- {
35
- label: 'Administrator',
36
- value: '1',
37
- },
38
- {
39
- label: 'Subscriber',
40
- value: '2',
41
- },
42
- ]"
43
- />
44
-
45
- <el-select
46
- v-if="form.roles && form.roles.length"
47
- v-model="form.permissions"
48
- placeholder="Select"
49
- multiple
50
- name="permissions"
51
- :error="form.errors"
52
- label="Permissions"
53
- :options="[
54
- {
55
- label: `Inherit Permissions`,
56
- value: null,
57
- },
58
- //{ // temporarily disabled as not used yet
59
- // label: &quot;Approve Content&quot;,
60
- // value: &quot;2&quot;
61
- //},
62
- {
63
- label: 'View content',
64
- value: '3',
65
- },
66
- {
67
- label: 'Write content',
68
- value: '4',
69
- disabled: !form.roles.includes(1),
70
- },
71
- {
72
- label: 'Delete content',
73
- value: '5',
74
- disabled: !form.roles.includes(1),
75
- },
76
- ]"
77
- />
78
- </div>
79
- <div class="grid__1/1">
80
- <hr class="my-3 hr-muted" />
81
-
82
- <el-upload
83
- ref="upload"
84
- v-model="form.files"
85
- name="files"
86
- label="Upload spreadsheet"
87
- :auto-upload="false"
88
- :limit="1"
89
- :on-exceed="handleExceed"
90
- >
91
- <template #trigger>
92
- <el-button
93
- class="mt"
94
- type="primary"
95
- :disabled="form.processing || form.files.length"
96
- >Select file</el-button
97
- >
98
- </template>
99
-
100
- <el-button
101
- class="ml relative button--spinner"
102
- type="success"
103
- :disabled="form.processing || !form.files.length"
104
- @click="submitUpload"
105
- >
106
- <span :class="{ active: !form.processing }"
107
- >Upload</span
108
- >
109
- <GSpinner :class="{ active: form.processing }" />
110
- </el-button>
111
-
112
- <small class="block my color-muted"
113
- >Upload one spreadsheet with a size less than
114
- 50MB</small
115
- >
116
- </el-upload>
117
- </div>
118
- </div>
119
- </div>
120
- </template>
121
-
122
- <script>
123
- "use strict";
124
-
125
- import Form from "form-backend-validation";
126
- import { ElMessageBox, genFileId } from "element-plus";
127
-
128
- export default {
129
- name: "Create",
130
-
131
- components: {
132
- VBreadcrumbs: require("../../../../components/VBreadcrumbs.vue")
133
- .default,
134
- },
135
-
136
- data() {
137
- return {
138
- id: null,
139
- breadcrumbs: [
140
- {
141
- href: {
142
- name: "index",
143
- },
144
- text: "Home",
145
- },
146
- ],
147
- form: new Form(
148
- {
149
- step: 0,
150
- files: [],
151
- roles: [2],
152
- permissions: [null],
153
- company_id: null,
154
- },
155
- {
156
- http: window.axios,
157
- },
158
- ),
159
- };
160
- },
161
-
162
- watch: {
163
- "form.roles": {
164
- handler(newVal) {
165
- const subscriptions = [
166
- 3, // view content
167
- 4, // write content
168
- 5, // delete content
169
- ];
170
-
171
- if (!newVal.includes(1)) {
172
- this.form.permissions = this.form.permissions.filter(
173
- (item) => subscriptions.includes(item),
174
- );
175
-
176
- if (!newVal.includes(2)) {
177
- this.form.permissions = this.form.permissions.filter(
178
- (item) => !subscriptions.includes(item),
179
- );
180
- }
181
- }
182
- },
183
- },
184
- },
185
-
186
- async mounted() {
187
- this.id = this.$route.params.id;
188
- this.form.company_id = this.id;
189
- window.axios.get(`/api/companies/${this.id}`).then((res) => {
190
- const company = res.data.data;
191
- this.breadcrumbs.push(
192
- {
193
- href: {
194
- name: "companies.show",
195
- param: this.id,
196
- },
197
- text: company.name,
198
- },
199
- {
200
- href: {
201
- name: "companies.pload",
202
- },
203
- text: "User upload",
204
- },
205
- );
206
- });
207
- },
208
-
209
- methods: {
210
- submitUpload() {
211
- this.form.post(`/api/users/import`).then(({ data }) => {
212
- this.open(data);
213
- });
214
- },
215
-
216
- handleExceed(files) {
217
- this.$refs.upload.clearFiles();
218
-
219
- const file = files[0];
220
- file.uid = genFileId();
221
-
222
- this.$refs.upload.handleStart(file);
223
- },
224
-
225
- open(data) {
226
- let html = "Succesfully imported all users";
227
-
228
- if (data.length > 0) {
229
- html =
230
- "Errors detected on upload following emails were not added to the system<table>";
231
- for (let x = 0; x < data.length; x++) {
232
- html += `<tr><td>${data[x].email}</td></tr>`;
233
- }
234
- html += "</table>";
235
- }
236
-
237
- ElMessageBox.alert(html, {
238
- confirmButtonText: "Ok",
239
- dangerouslyUseHTMLString: true,
240
- })
241
- .then(() => {
242
- this.$router.replace({
243
- name: "companies.show",
244
- params: { id: this.id },
245
- });
246
- })
247
- .catch(() => {});
248
- },
249
- },
250
- };
251
- </script>
@@ -1,62 +0,0 @@
1
- <template>
2
- <VBreadcrumbs :items="breadcrumbs" class="mb-8" container-classes="m-0" />
3
-
4
- <div class="container px-6 tablet:px-4 mobile:px-2 mb-8 ml-0 mr-0">
5
- <div class="grid__1/1">
6
- <div class="grid__1/1 mb-4">
7
- <h2 class="h1">Create Company</h2>
8
- </div>
9
- <div class="mt grid__1/2">
10
- <XForm ref="form" :form="form" :submit="submit" />
11
- </div>
12
- </div>
13
- </div>
14
- </template>
15
-
16
- <script>
17
- import Form from "form-backend-validation";
18
-
19
- export default {
20
- name: "PCreate",
21
-
22
- components: {
23
- VBreadcrumbs: require("../../../components/VBreadcrumbs.vue").default,
24
- XForm: require("./partials/form.vue").default,
25
- },
26
-
27
- props: {
28
- breadcrumbs: {
29
- type: Array,
30
- required: true,
31
- },
32
- },
33
-
34
- data() {
35
- return {
36
- form: new Form({
37
- name: null,
38
- domains: [],
39
- roles: [],
40
- sso_client_id: undefined,
41
- sso_tenant: undefined,
42
- sso_client_secret: undefined,
43
- sso_type: undefined,
44
- }),
45
- };
46
- },
47
-
48
- methods: {
49
- async submit() {
50
- try {
51
- let res = await this.form.post(`/api/companies`);
52
- this.$router.replace({
53
- name: "companies.show",
54
- params: { id: res.data.id },
55
- });
56
- } catch (e) {
57
- this.$root.errors(e);
58
- }
59
- },
60
- },
61
- };
62
- </script>
@@ -1,98 +0,0 @@
1
- <template>
2
- <VBreadcrumbs
3
- :items="addBreadcrumbs"
4
- class="mb-8"
5
- container-classes="m-0"
6
- />
7
-
8
- <div class="container px-6 tablet:px-4 mobile:px-2 mb-8 ml-0 mr-0">
9
- <div class="grid__1/1">
10
- <div class="grid__1/1 mb-4">
11
- <h2 class="h1">Edit Company</h2>
12
- </div>
13
- <div class="grid__1/2">
14
- <XForm
15
- :id="id"
16
- ref="form"
17
- :form="form"
18
- :submit="submit"
19
- method="patch"
20
- />
21
- </div>
22
- </div>
23
- </div>
24
- </template>
25
-
26
- <script>
27
- import Form from "form-backend-validation";
28
- export default {
29
- name: "PEdit",
30
-
31
- components: {
32
- VBreadcrumbs: require("../../../components/VBreadcrumbs.vue").default,
33
- XForm: require("./partials/form.vue").default,
34
- },
35
-
36
- props: {
37
- breadcrumbs: {
38
- type: Array,
39
- required: true,
40
- },
41
- },
42
-
43
- data() {
44
- return {
45
- id: null,
46
- form: new Form({
47
- name: null,
48
- domains: [],
49
- roles: [],
50
- primary_contact: null,
51
- sso_client_id: undefined,
52
- sso_tenant: undefined,
53
- sso_client_secret: undefined,
54
- sso_type: undefined,
55
- }),
56
- addBreadcrumbs: [...this.$props.breadcrumbs],
57
- };
58
- },
59
-
60
- async mounted() {
61
- this.id = this.$route.params.id;
62
- window.axios
63
- .get(`/api/companies/${this.id}?include=primary_contact`)
64
- .then((res) => {
65
- const company = res.data.data;
66
- this.form.name = company.name;
67
- this.form.primary_contact = company?.primary_contact?.id;
68
- this.form.domains = company.domains;
69
- this.form.roles = company.roles.map((val) => val.id);
70
- this.form.sso_client_id = company.sso_client_id;
71
- this.form.sso_tenant = company.sso_tenant;
72
- this.form.sso_client_secret = company.sso_client_secret;
73
- this.form.sso_type = company.sso_type;
74
- this.addBreadcrumbs.push({
75
- href: {
76
- name: "companies.show",
77
- param: this.id,
78
- },
79
- text: company.name,
80
- });
81
- });
82
- },
83
-
84
- methods: {
85
- async submit() {
86
- try {
87
- let res = await this.form.patch(`/api/companies/${this.id}`);
88
- this.$router.replace({
89
- name: "companies.show",
90
- params: { id: res.data.id },
91
- });
92
- } catch (e) {
93
- this.$root.errors(e);
94
- }
95
- },
96
- },
97
- };
98
- </script>
@@ -1,90 +0,0 @@
1
- <template>
2
- <VBreadcrumbs :items="breadcrumbs" class="mb-8" container-classes="m-0" />
3
-
4
- <div class="container px-6 tablet:px-4 mobile:px-2 mb-8 ml-0 mr-0">
5
- <div class="grid__1/1">
6
- <h2 class="h1 pb-4">
7
- {{ breadcrumbs[breadcrumbs.length - 1].text }}
8
- </h2>
9
-
10
- <VTableSorter
11
- key="PIndex"
12
- :json-data="jsonData"
13
- api="companies"
14
- :fixed-height="false"
15
- :display-edit-action="$store.getters.can('write companies')"
16
- />
17
-
18
- <VRoleLegend class="mt-5" />
19
- </div>
20
- </div>
21
- </template>
22
-
23
- <script>
24
- export default {
25
- name: "PIndex",
26
-
27
- components: {
28
- VBreadcrumbs: require("../../../components/VBreadcrumbs.vue").default,
29
- VTableSorter: require("../../../components/VTableSorter.vue").default,
30
- VRoleLegend: require("../../../components/VRoleLegend.vue").default,
31
- },
32
-
33
- props: {
34
- breadcrumbs: {
35
- type: Array,
36
- required: true,
37
- },
38
- },
39
-
40
- data() {
41
- return {
42
- jsonData: {
43
- label: "company",
44
- multiLabel: "companies",
45
- pageLink: "companies",
46
- api: "/api/companies",
47
- searchable: {
48
- label: "Search companies",
49
- value: "name",
50
- },
51
- tableStructure: [
52
- {
53
- label: "Name",
54
- key: "name",
55
- sortable: true,
56
- },
57
- {
58
- label: "Total users",
59
- key: "user_count",
60
- sortable: false,
61
- width: "150",
62
- },
63
- {
64
- label: "Role",
65
- component: {
66
- module: (row) => {
67
- if (row.roles.length === 1)
68
- return require("../../../components/Chip.vue")
69
- .default;
70
-
71
- return require("../../../components/Chips.vue")
72
- .default;
73
- },
74
- props: (row) =>
75
- row.roles.length === 1
76
- ? {
77
- name: row.roles[0].name,
78
- label: row.roles[0].label,
79
- }
80
- : { array: row.roles },
81
- },
82
- },
83
- ],
84
- },
85
- };
86
- },
87
-
88
- mounted() {},
89
- };
90
- </script>