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

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 (112) 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/clear-cookies.js +33 -0
  34. package/_Build/vue/modules/AuthModule/js/guest-request.js +32 -0
  35. package/_Build/vue/modules/AuthModule/js/impersonation-banner.js +102 -0
  36. package/_Build/vue/modules/AuthModule/js/router.js +91 -114
  37. package/_Build/vue/modules/AuthModule/js/store.js +23 -6
  38. package/_Build/vue/modules/AuthModule/routes/PCompanies/columns.js +268 -0
  39. package/_Build/vue/modules/AuthModule/routes/PCompanies/resource.js +213 -0
  40. package/_Build/vue/modules/AuthModule/routes/PIntegrations/columns.js +58 -0
  41. package/_Build/vue/modules/AuthModule/routes/PIntegrations/resource.js +79 -0
  42. package/_Build/vue/modules/AuthModule/routes/PTeams/columns.js +78 -0
  43. package/_Build/vue/modules/AuthModule/routes/PTeams/resource.js +251 -0
  44. package/_Build/vue/modules/AuthModule/routes/PUsers/SetPasswordAction.vue +51 -0
  45. package/_Build/vue/modules/AuthModule/routes/PUsers/SetPasswordDialog.vue +138 -0
  46. package/_Build/vue/modules/AuthModule/routes/PUsers/columns.js +349 -0
  47. package/_Build/vue/modules/AuthModule/routes/PUsers/resource.js +239 -0
  48. package/_Build/vue/modules/AuthModule/routes/account-exists.vue +2 -2
  49. package/_Build/vue/modules/AuthModule/routes/change-password.vue +28 -32
  50. package/_Build/vue/modules/AuthModule/routes/container.vue +2 -11
  51. package/_Build/vue/modules/AuthModule/routes/expired-reset.vue +4 -4
  52. package/_Build/vue/modules/AuthModule/routes/expired-verification.vue +10 -9
  53. package/_Build/vue/modules/AuthModule/routes/force-reset.vue +44 -58
  54. package/_Build/vue/modules/AuthModule/routes/forgot.vue +10 -5
  55. package/_Build/vue/modules/AuthModule/routes/login.vue +12 -19
  56. package/_Build/vue/modules/AuthModule/routes/logincallback.vue +1 -3
  57. package/_Build/vue/modules/AuthModule/routes/loginsso.vue +14 -10
  58. package/_Build/vue/modules/AuthModule/routes/logout.vue +14 -5
  59. package/_Build/vue/modules/AuthModule/routes/logoutheadless.vue +5 -3
  60. package/_Build/vue/modules/AuthModule/routes/register.vue +24 -28
  61. package/_Build/vue/modules/AuthModule/routes/reset.vue +20 -14
  62. package/_Build/vue/modules/AuthModule/routes/success-forgot.vue +14 -8
  63. package/_Build/vue/modules/AuthModule/routes/success-reset.vue +2 -2
  64. package/_Build/vue/modules/AuthModule/routes/success-verify.vue +1 -3
  65. package/_Build/vue/modules/AuthModule/routes/verify.vue +11 -14
  66. package/_Build/vue/modules/resource/Children/create.vue +81 -0
  67. package/_Build/vue/modules/resource/Children/edit.vue +106 -0
  68. package/_Build/vue/modules/resource/Children/index.vue +42 -0
  69. package/_Build/vue/modules/resource/Children/partials/form.vue +111 -0
  70. package/_Build/vue/modules/resource/Children/show.vue +166 -0
  71. package/_Build/vue/modules/resource/index.js +561 -0
  72. package/_Build/vue/modules/resource/parent.vue +63 -0
  73. package/_Build/vue/modules/resource/trashable.js +104 -0
  74. package/_base.scss +0 -1
  75. package/_defaults.scss +2 -13
  76. package/_variables.scss +9 -4
  77. package/{modules/_AuthModule.scss → components/_auth.scss} +19 -68
  78. package/components/_datepicker.scss +1 -0
  79. package/components/_descriptions.scss +2 -0
  80. package/components/_footer.scss +1 -0
  81. package/components/_form.scss +18 -0
  82. package/components/_header.scss +3 -27
  83. package/components/_layout.scss +56 -0
  84. package/components/_menu.scss +0 -5
  85. package/components/_sidebar.scss +12 -27
  86. package/components/_table.scss +3 -0
  87. package/components/_token-display.scss +41 -0
  88. package/general.scss +1 -0
  89. package/index.js +31 -1
  90. package/package.json +6 -4
  91. package/vendor.scss +0 -1
  92. package/_Build/vue/components/layout/sideBar.vue +0 -25
  93. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/Upload/upload.vue +0 -251
  94. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/create.vue +0 -62
  95. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/edit.vue +0 -98
  96. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/index.vue +0 -90
  97. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/partials/form.vue +0 -173
  98. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/show.vue +0 -262
  99. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/parent.vue +0 -36
  100. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/create.vue +0 -112
  101. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/edit.vue +0 -103
  102. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/index.vue +0 -112
  103. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/partials/form.vue +0 -169
  104. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/show.vue +0 -120
  105. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/parent.vue +0 -36
  106. package/components/_input.scss +0 -0
  107. package/modules/_AuthVariables.scss +0 -7
  108. /package/_Build/vue/{modules/AuthModule/components → components/layout}/AuthModal.vue +0 -0
  109. /package/_Build/vue/{modules/AuthModule/components → components/layout}/Chip.vue +0 -0
  110. /package/_Build/vue/{modules/AuthModule/components/VPasswordValidation.vue → components/layout/PasswordValidation.vue} +0 -0
  111. /package/_Build/vue/{modules/AuthModule/components/VRoleLegend.vue → components/layout/RoleLegend.vue} +0 -0
  112. /package/{modules → components}/_modal.scss +0 -0
@@ -1,112 +0,0 @@
1
- <template>
2
- <VBreadcrumbs :items="breadcrumbs" />
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
- api="users"
13
- :json-data="jsonData"
14
- defaults="include=company"
15
- :fixed-height="false"
16
- :display-edit-action="$store.getters.can('write users')"
17
- />
18
-
19
- <VRoleLegend class="mt-5" />
20
- </div>
21
- </div>
22
- </template>
23
-
24
- <script>
25
- export default {
26
- name: "PIndex",
27
-
28
- components: {
29
- VBreadcrumbs: require("../../../components/VBreadcrumbs.vue").default,
30
- VTableSorter: require("../../../components/VTableSorter.vue").default,
31
- VRoleLegend: require("../../../components/VRoleLegend.vue").default,
32
- },
33
-
34
- props: {
35
- breadcrumbs: {
36
- type: Array,
37
- required: true,
38
- },
39
- },
40
-
41
- data() {
42
- return {
43
- jsonData: {
44
- label: "user",
45
- multiLabel: "users",
46
- pageLink: "users",
47
- api: "/api/users",
48
- searchable: {
49
- label: "Search users",
50
- value: "email",
51
- },
52
- tableStructure: [
53
- {
54
- label: "Name",
55
- key: "name",
56
- sortable: true,
57
- },
58
- {
59
- label: "Email",
60
- key: "email",
61
- sortable: true,
62
- },
63
- {
64
- label: "Company",
65
- sortable: true,
66
- component: {
67
- is: () => "router-link",
68
- props: (row) => ({
69
- to: {
70
- name: "companies.show",
71
- params: { id: row.company_id },
72
- },
73
- text: row.company.name,
74
- }),
75
- },
76
- },
77
- {
78
- label: "Role",
79
- component: {
80
- module: (row) => {
81
- if (
82
- !row.overrides_roles_and_permissions ||
83
- row.roles.length === 1
84
- )
85
- return require("../../../components/Chip.vue")
86
- .default;
87
-
88
- return require("../../../components/Chips.vue")
89
- .default;
90
- },
91
- props: (row) => {
92
- if (!row.overrides_roles_and_permissions)
93
- return {
94
- name: "inherited",
95
- label: "Inherited",
96
- };
97
-
98
- return row.roles.length === 1
99
- ? {
100
- name: row.roles[0].name,
101
- label: row.roles[0].label,
102
- }
103
- : { array: row.roles };
104
- },
105
- },
106
- },
107
- ],
108
- },
109
- };
110
- },
111
- };
112
- </script>
@@ -1,169 +0,0 @@
1
- <!-- eslint-disable vue/no-mutating-props -->
2
- <template>
3
- <form class="" @submit.prevent="submit">
4
- <template v-if="method !== 'patch'">
5
- <el-basic
6
- v-model="form.name"
7
- name="name"
8
- :error="form.errors"
9
- type="text"
10
- placeholder="Name"
11
- label="Name"
12
- />
13
-
14
- <el-basic
15
- v-model="form.email"
16
- placeholder="Email"
17
- label="Email"
18
- type="text"
19
- name="email"
20
- :error="form.errors"
21
- />
22
-
23
- Company: <span v-text="company?.name" />
24
-
25
- <hr class="my-3 hr-muted" />
26
-
27
- <el-checkbox
28
- v-model="form.notify_user"
29
- name="notify_user"
30
- :error="form.errors"
31
- label="Send email to notify user of account and password"
32
- />
33
- <el-checkbox
34
- v-model="form.force_password_change"
35
- name="force_password_change"
36
- :error="form.errors"
37
- label="Force password change on first login"
38
- />
39
- <el-checkbox
40
- v-model="form.set_password"
41
- name="set_password"
42
- :error="form.errors"
43
- label="Auto generate password"
44
- />
45
- <template v-if="!form.set_password">
46
- <el-basic
47
- v-model="form.password"
48
- name="password"
49
- :error="form.errors"
50
- type="password"
51
- placeholder="Password"
52
- label="Password"
53
- />
54
- <el-basic
55
- v-model="form.password_confirmation"
56
- name="password_confirmation"
57
- :error="form.errors"
58
- type="password"
59
- placeholder="Password Confirmation"
60
- label="Password Confirmation"
61
- />
62
- </template>
63
-
64
- <hr class="my-5 hr-muted" />
65
- </template>
66
-
67
- <template v-if="$store.getters.can('edit roles')">
68
- <template v-if="enableRoles">
69
- <el-button
70
- type="secondary"
71
- @click="
72
- form.roles = [];
73
- enableRoles = false;
74
- "
75
- >
76
- Reset roles
77
- </el-button>
78
- <FormRole :form="form" />
79
- </template>
80
- <template v-else>
81
- <el-button @click="enableRoles = true">
82
- <GIcon name="icon-plus" embed asis class="fill-0 mr" />
83
- Override roles
84
- </el-button>
85
- <p class="mt-2">
86
- Roles will be inherited from the company level.
87
- </p>
88
- </template>
89
- <hr class="my-5 hr-muted" />
90
- </template>
91
-
92
- <VFormFooter :loading="form.processing" />
93
- </form>
94
- </template>
95
-
96
- <script>
97
- import axios from "axios";
98
- import { debounce } from "lodash";
99
-
100
- export default {
101
- components: {
102
- VFormFooter: require("../../../../components/VFormFooter.vue").default,
103
- FormRole: require("../../../../components/FormRole.vue").default,
104
- },
105
- props: {
106
- form: {
107
- required: true,
108
- type: Object,
109
- },
110
- submit: {
111
- required: true,
112
- type: Function,
113
- },
114
- method: {
115
- required: true,
116
- type: String,
117
- },
118
- },
119
-
120
- data() {
121
- return {
122
- companies: null,
123
- enableRoles: null,
124
- company: null,
125
- };
126
- },
127
-
128
- computed: {
129
- domain() {
130
- return this.form.email?.split("@")[1];
131
- },
132
- },
133
-
134
- watch: {
135
- "form.roles": {
136
- handler(newVal) {
137
- if (this.enableRoles === null) {
138
- this.enableRoles = newVal.length > 0;
139
- }
140
- },
141
- },
142
- "form.email": debounce(function () {
143
- if (this.domain) {
144
- axios
145
- .get("/api/companies", {
146
- params: {
147
- "filter[domains.domain]": this.domain,
148
- },
149
- })
150
- .then((res) => {
151
- this.company = res.data.data[0];
152
- })
153
- .catch((error) => {
154
- console.error("Error fetching company:", error);
155
- this.company = null;
156
- });
157
- } else {
158
- this.company = null;
159
- }
160
- }, 500),
161
- },
162
-
163
- mounted() {
164
- axios.getAll("/api/companies").then((res) => {
165
- this.companies = res.data.data;
166
- });
167
- },
168
- };
169
- </script>
@@ -1,120 +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
- <template v-if="user">
11
- <div class="bg-0 p-3 box-shadow-1 border-r-4 mb-6">
12
- <VPageHeader
13
- icon="icon-user"
14
- :title="`${user.name} ${user.last_name ?? ''}`"
15
- >
16
- <el-button
17
- v-if="$store.getters.can('write users')"
18
- tag="a"
19
- type="primary"
20
- @click="
21
- $router.push({
22
- name: 'users.edit',
23
- param: user.id,
24
- })
25
- "
26
- >
27
- <GIcon
28
- class="fill-0 mr-0.5"
29
- name="icon-edit"
30
- embed
31
- artboard
32
- />
33
- Edit user
34
- </el-button>
35
- </VPageHeader>
36
-
37
- <hr class="my-3 hr-muted" />
38
-
39
- <table>
40
- <tbody>
41
- <tr>
42
- <td class="p">Email</td>
43
- <td class="p">{{ user.email }}</td>
44
- </tr>
45
- <tr>
46
- <td class="p">Company</td>
47
- <td class="p">
48
- <router-link
49
- :to="{
50
- name: 'companies.show',
51
- params: { id: user.company.id },
52
- }"
53
- >
54
- {{ user.company?.name }}
55
- </router-link>
56
- </td>
57
- </tr>
58
- </tbody>
59
- </table>
60
-
61
- <hr class="my-3 hr-muted" />
62
-
63
- <FormRole
64
- :overrides="user.overrides_roles_and_permissions"
65
- :form="{ roles: user.roles.map((d) => d.id) }"
66
- :readonly="true"
67
- />
68
- </div>
69
- </template>
70
-
71
- <div v-else class="absolute transform-center text-center">
72
- <GSpinner class="fill-5" />
73
- <p v-text="`Loading...`" />
74
- </div>
75
- </div>
76
- </div>
77
- </template>
78
-
79
- <script>
80
- import axios from "axios";
81
-
82
- export default {
83
- name: "PShow",
84
-
85
- components: {
86
- VBreadcrumbs: require("../../../components/VBreadcrumbs.vue").default,
87
- VPageHeader: require("../../../components/VPageHeader.vue").default,
88
- FormRole: require("../../../components/FormRole.vue").default,
89
- },
90
-
91
- props: {
92
- breadcrumbs: {
93
- type: Array,
94
- required: true,
95
- },
96
- },
97
-
98
- data() {
99
- return {
100
- user: null,
101
- addBreadcrumbs: [...this.$props.breadcrumbs],
102
- };
103
- },
104
-
105
- mounted() {
106
- axios
107
- .get(`/api/users/${this.$route.params.id}?include=company`)
108
- .then((res) => {
109
- this.user = res.data.data;
110
- this.addBreadcrumbs.push({
111
- href: {
112
- name: "users.show",
113
- param: this.user.id,
114
- },
115
- text: this.user.name,
116
- });
117
- });
118
- },
119
- };
120
- </script>
@@ -1,36 +0,0 @@
1
- <template>
2
- <PageTitle title="Users" />
3
-
4
- <router-view :key="$route.path" :breadcrumbs="breadcrumbs" />
5
- </template>
6
-
7
- <script>
8
- import PageTitle from "../../../../components/layout/pageTitle.vue";
9
-
10
- export default {
11
- name: "PUsers",
12
-
13
- components: {
14
- PageTitle,
15
- },
16
-
17
- data() {
18
- return {
19
- breadcrumbs: [
20
- {
21
- href: {
22
- name: "index",
23
- },
24
- text: "Home",
25
- },
26
- {
27
- href: {
28
- name: "users.index",
29
- },
30
- text: "Users",
31
- },
32
- ],
33
- };
34
- },
35
- };
36
- </script>
File without changes
@@ -1,7 +0,0 @@
1
- $am-spacing: 8px;
2
- $am-highlight: #3c976e;
3
-
4
- $color8: #f2f2f2; //Used
5
- $color10: #dcdbdb;
6
- $color12: #5c5c5c;
7
- $colorAlert: #d53a3a;
File without changes