@fishawack/lab-velocity 2.0.0-beta.6 → 2.0.0-beta.61

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 +221 -31
  14. package/_Build/vue/components/form/Wysiwyg2.vue +87 -2
  15. package/_Build/vue/components/form/wysiwyg2-video.js +41 -0
  16. package/_Build/vue/components/layout/Alert.vue +5 -5
  17. package/_Build/vue/components/layout/Audit.vue +159 -0
  18. package/_Build/vue/{modules/AuthModule/components/VBreadcrumbs.vue → components/layout/Breadcrumbs.vue} +4 -4
  19. package/_Build/vue/{modules/AuthModule/components → components/layout}/Chips.vue +2 -2
  20. package/_Build/vue/components/layout/Footer.vue +11 -10
  21. package/_Build/vue/{modules/AuthModule/components/VFormFooter.vue → components/layout/FormFooter.vue} +2 -2
  22. package/_Build/vue/{modules/AuthModule/components → components/layout}/FormRole.vue +8 -8
  23. package/_Build/vue/components/layout/Layout.vue +94 -0
  24. package/_Build/vue/components/layout/Navigation.vue +83 -0
  25. package/_Build/vue/{modules/AuthModule/components/VPageHeader.vue → components/layout/PageHeader.vue} +14 -8
  26. package/_Build/vue/components/layout/SideBar.vue +26 -0
  27. package/_Build/vue/{modules/AuthModule/components/VTable.vue → components/layout/Table.vue} +24 -12
  28. package/_Build/vue/{modules/AuthModule/components/VTableSorter.vue → components/layout/TableSorter.vue} +92 -48
  29. package/_Build/vue/components/layout/TokenDisplay.vue +52 -0
  30. package/_Build/vue/components/layout/pageTitle.vue +1 -1
  31. package/_Build/vue/components/navigation/Menu.vue +6 -1
  32. package/_Build/vue/components/navigation/MenuItem.vue +7 -2
  33. package/_Build/vue/components/navigation/MenuItemGroup.vue +7 -2
  34. package/_Build/vue/modules/AuthModule/js/axios.js +21 -1
  35. package/_Build/vue/modules/AuthModule/js/clear-cookies.js +34 -0
  36. package/_Build/vue/modules/AuthModule/js/guest-request.js +32 -0
  37. package/_Build/vue/modules/AuthModule/js/impersonation-banner.js +102 -0
  38. package/_Build/vue/modules/AuthModule/js/router.js +91 -114
  39. package/_Build/vue/modules/AuthModule/js/store.js +23 -6
  40. package/_Build/vue/modules/AuthModule/routes/PCompanies/columns.js +268 -0
  41. package/_Build/vue/modules/AuthModule/routes/PCompanies/resource.js +213 -0
  42. package/_Build/vue/modules/AuthModule/routes/PIntegrations/columns.js +58 -0
  43. package/_Build/vue/modules/AuthModule/routes/PIntegrations/resource.js +79 -0
  44. package/_Build/vue/modules/AuthModule/routes/PTeams/columns.js +78 -0
  45. package/_Build/vue/modules/AuthModule/routes/PTeams/resource.js +251 -0
  46. package/_Build/vue/modules/AuthModule/routes/PUsers/SetPasswordAction.vue +51 -0
  47. package/_Build/vue/modules/AuthModule/routes/PUsers/SetPasswordDialog.vue +138 -0
  48. package/_Build/vue/modules/AuthModule/routes/PUsers/columns.js +349 -0
  49. package/_Build/vue/modules/AuthModule/routes/PUsers/resource.js +239 -0
  50. package/_Build/vue/modules/AuthModule/routes/account-exists.vue +2 -2
  51. package/_Build/vue/modules/AuthModule/routes/change-password.vue +28 -32
  52. package/_Build/vue/modules/AuthModule/routes/container.vue +2 -11
  53. package/_Build/vue/modules/AuthModule/routes/expired-reset.vue +4 -4
  54. package/_Build/vue/modules/AuthModule/routes/expired-verification.vue +10 -9
  55. package/_Build/vue/modules/AuthModule/routes/force-reset.vue +44 -58
  56. package/_Build/vue/modules/AuthModule/routes/forgot.vue +10 -5
  57. package/_Build/vue/modules/AuthModule/routes/login.vue +12 -19
  58. package/_Build/vue/modules/AuthModule/routes/logincallback.vue +1 -3
  59. package/_Build/vue/modules/AuthModule/routes/loginsso.vue +14 -10
  60. package/_Build/vue/modules/AuthModule/routes/logout.vue +14 -5
  61. package/_Build/vue/modules/AuthModule/routes/logoutheadless.vue +16 -5
  62. package/_Build/vue/modules/AuthModule/routes/register.vue +24 -28
  63. package/_Build/vue/modules/AuthModule/routes/reset.vue +20 -14
  64. package/_Build/vue/modules/AuthModule/routes/success-forgot.vue +14 -8
  65. package/_Build/vue/modules/AuthModule/routes/success-reset.vue +2 -2
  66. package/_Build/vue/modules/AuthModule/routes/success-verify.vue +1 -3
  67. package/_Build/vue/modules/AuthModule/routes/verify.vue +11 -14
  68. package/_Build/vue/modules/resource/Children/create.vue +99 -0
  69. package/_Build/vue/modules/resource/Children/edit.vue +124 -0
  70. package/_Build/vue/modules/resource/Children/index.vue +42 -0
  71. package/_Build/vue/modules/resource/Children/partials/form.vue +111 -0
  72. package/_Build/vue/modules/resource/Children/show.vue +170 -0
  73. package/_Build/vue/modules/resource/index.js +562 -0
  74. package/_Build/vue/modules/resource/parent.vue +63 -0
  75. package/_Build/vue/modules/resource/trashable.js +104 -0
  76. package/_base.scss +0 -1
  77. package/_defaults.scss +2 -2
  78. package/components/_auth.scss +19 -61
  79. package/components/_datepicker.scss +1 -0
  80. package/components/_descriptions.scss +2 -0
  81. package/components/_footer.scss +1 -0
  82. package/components/_form.scss +18 -0
  83. package/components/_header.scss +3 -27
  84. package/components/_layout.scss +56 -0
  85. package/components/_menu.scss +0 -5
  86. package/components/_sidebar.scss +12 -27
  87. package/components/_table.scss +3 -0
  88. package/components/_token-display.scss +41 -0
  89. package/components/_wysiwyg2.scss +10 -0
  90. package/general.scss +1 -0
  91. package/index.js +31 -1
  92. package/package.json +7 -4
  93. package/_Build/vue/components/layout/sideBar.vue +0 -25
  94. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/Upload/upload.vue +0 -259
  95. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/create.vue +0 -62
  96. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/edit.vue +0 -98
  97. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/index.vue +0 -90
  98. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/partials/form.vue +0 -181
  99. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/Children/show.vue +0 -266
  100. package/_Build/vue/modules/AuthModule/adminRoutes/PCompanies/parent.vue +0 -36
  101. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/create.vue +0 -112
  102. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/edit.vue +0 -103
  103. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/index.vue +0 -112
  104. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/partials/form.vue +0 -173
  105. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/Children/show.vue +0 -123
  106. package/_Build/vue/modules/AuthModule/adminRoutes/PUsers/parent.vue +0 -36
  107. package/components/_input.scss +0 -0
  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
@@ -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,173 +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
- <VelCheckbox
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
- <VelCheckbox
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
- <VelCheckbox
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
- <VelButton
70
- type="secondary"
71
- @click="
72
- form.roles = [];
73
- enableRoles = false;
74
- "
75
- >
76
- Reset roles
77
- </VelButton>
78
- <FormRole :form="form" />
79
- </template>
80
- <template v-else>
81
- <VelButton @click="enableRoles = true">
82
- <GIcon name="icon-plus" embed asis class="fill-0 mr" />
83
- Override roles
84
- </VelButton>
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
- import VelButton from "../../../../../../components/basic/Button.vue";
100
- import VelCheckbox from "../../../../../../components/form/Checkbox.vue";
101
-
102
- export default {
103
- components: {
104
- VFormFooter: require("../../../../components/VFormFooter.vue").default,
105
- FormRole: require("../../../../components/FormRole.vue").default,
106
- VelCheckbox,
107
- VelButton,
108
- },
109
- props: {
110
- form: {
111
- required: true,
112
- type: Object,
113
- },
114
- submit: {
115
- required: true,
116
- type: Function,
117
- },
118
- method: {
119
- required: true,
120
- type: String,
121
- },
122
- },
123
-
124
- data() {
125
- return {
126
- companies: null,
127
- enableRoles: null,
128
- company: null,
129
- };
130
- },
131
-
132
- computed: {
133
- domain() {
134
- return this.form.email?.split("@")[1];
135
- },
136
- },
137
-
138
- watch: {
139
- "form.roles": {
140
- handler(newVal) {
141
- if (this.enableRoles === null) {
142
- this.enableRoles = newVal.length > 0;
143
- }
144
- },
145
- },
146
- "form.email": debounce(function () {
147
- if (this.domain) {
148
- axios
149
- .get("/api/companies", {
150
- params: {
151
- "filter[domains.domain]": this.domain,
152
- },
153
- })
154
- .then((res) => {
155
- this.company = res.data.data[0];
156
- })
157
- .catch((error) => {
158
- console.error("Error fetching company:", error);
159
- this.company = null;
160
- });
161
- } else {
162
- this.company = null;
163
- }
164
- }, 500),
165
- },
166
-
167
- mounted() {
168
- axios.getAll("/api/companies").then((res) => {
169
- this.companies = res.data.data;
170
- });
171
- },
172
- };
173
- </script>
@@ -1,123 +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
- <VelButton
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
- </VelButton>
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
- <VelSpinner />
73
- </div>
74
- </div>
75
- </div>
76
- </template>
77
-
78
- <script>
79
- import axios from "axios";
80
- import VelButton from "../../../../../components/basic/Button.vue";
81
- import VelSpinner from "../../../../../components/form/Spinner.vue";
82
-
83
- export default {
84
- name: "PShow",
85
-
86
- components: {
87
- VBreadcrumbs: require("../../../components/VBreadcrumbs.vue").default,
88
- VPageHeader: require("../../../components/VPageHeader.vue").default,
89
- FormRole: require("../../../components/FormRole.vue").default,
90
- VelButton,
91
- VelSpinner,
92
- },
93
-
94
- props: {
95
- breadcrumbs: {
96
- type: Array,
97
- required: true,
98
- },
99
- },
100
-
101
- data() {
102
- return {
103
- user: null,
104
- addBreadcrumbs: [...this.$props.breadcrumbs],
105
- };
106
- },
107
-
108
- mounted() {
109
- axios
110
- .get(`/api/users/${this.$route.params.id}?include=company`)
111
- .then((res) => {
112
- this.user = res.data.data;
113
- this.addBreadcrumbs.push({
114
- href: {
115
- name: "users.show",
116
- param: this.user.id,
117
- },
118
- text: this.user.name,
119
- });
120
- });
121
- },
122
- };
123
- </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