diff --git a/app/Filters/FilterAbstract.php b/app/Filters/FilterAbstract.php
index ee93886..13d9e62 100644
--- a/app/Filters/FilterAbstract.php
+++ b/app/Filters/FilterAbstract.php
@@ -165,9 +165,10 @@ abstract class FilterAbstract
*
* @param array $attributes Attributes currently visible.
* @param User|null $user Current logged in user or null.
+ * @param object $modelData Model data if a single object is requested.
* @return mixed
*/
- protected function seeAttributes(array $attributes, mixed $user)
+ protected function seeAttributes(array $attributes, mixed $user, ?object $modelData = null)
{
return $attributes;
}
@@ -224,7 +225,7 @@ abstract class FilterAbstract
}
/* Run attribute modifiers*/
- $modifiedAttribs = $this->seeAttributes($attributes, $this->request->user());
+ $modifiedAttribs = $this->seeAttributes($attributes, $this->request->user(), $model);
if (is_array($modifiedAttribs) === true) {
$attributes = $modifiedAttribs;
}
diff --git a/app/Filters/UserFilter.php b/app/Filters/UserFilter.php
index 1aa5849..398969d 100644
--- a/app/Filters/UserFilter.php
+++ b/app/Filters/UserFilter.php
@@ -19,11 +19,12 @@ class UserFilter extends FilterAbstract
*
* @param array $attributes Attributes currently visible.
* @param User|null $user Current logged in user or null.
+ * @param object $userData User model if single object is requested.
* @return mixed
*/
- protected function seeAttributes(array $attributes, mixed $user)
+ protected function seeAttributes(array $attributes, mixed $user, ?object $userData = null)
{
- if ($user?->hasPermission('admin/users') !== true) {
+ if ($user?->hasPermission('admin/users') !== true && ($user === null || $userData === null || $user?->id !== $userData?->id)) {
return ['id', 'username'];
}
}
diff --git a/resources/js/components/SMButton.vue b/resources/js/components/SMButton.vue
index 9eeb6dd..aae03c5 100644
--- a/resources/js/components/SMButton.vue
+++ b/resources/js/components/SMButton.vue
@@ -129,31 +129,31 @@ const handleClickItem = (item: string) => {
vertical-align: middle;
cursor: pointer;
}
+
+ ul {
+ position: absolute;
+ z-index: 1;
+ top: 100%;
+ left: 0;
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ background-color: #f9f9f9;
+ border: 1px solid #ddd;
+ }
+
+ li {
+ padding: 12px 16px;
+ cursor: pointer;
+ }
+
+ li:hover {
+ background-color: #f1f1f1;
+ }
}
// New content here
.dropdown {
position: relative;
}
-
-ul {
- position: absolute;
- z-index: 1;
- top: 100%;
- left: 0;
- list-style: none;
- padding: 0;
- margin: 0;
- background-color: #f9f9f9;
- border: 1px solid #ddd;
-}
-
-li {
- padding: 12px 16px;
- cursor: pointer;
-}
-
-li:hover {
- background-color: #f1f1f1;
-}
diff --git a/resources/js/components/SMCarousel.vue b/resources/js/components/SMCarousel.vue
index 05b4e1d..a1a5549 100644
--- a/resources/js/components/SMCarousel.vue
+++ b/resources/js/components/SMCarousel.vue
@@ -56,7 +56,7 @@ const handleMouseLeave = () => {
const handleSlidePrev = () => {
if (currentSlide.value == 0) {
- currentSlide.value = maxSlide;
+ currentSlide.value = maxSlide.value;
} else {
currentSlide.value--;
}
@@ -165,10 +165,12 @@ const disconnectMutationObserver = () => {
.carousel-slide-prev {
left: 1rem;
+ filter: drop-shadow(0px 0px 2px rgba(0, 0, 0, 1));
}
.carousel-slide-next {
right: 1rem;
+ filter: drop-shadow(0px 0px 2px rgba(0, 0, 0, 1));
}
.carousel-slide-indicators {
diff --git a/resources/js/components/SMCarouselSlide.vue b/resources/js/components/SMCarouselSlide.vue
index 6433c64..5a29c20 100644
--- a/resources/js/components/SMCarouselSlide.vue
+++ b/resources/js/components/SMCarouselSlide.vue
@@ -22,6 +22,8 @@
@@ -54,6 +59,10 @@ defineProps({
min-width: map-get($spacer, 5) * 12;
box-shadow: 4px 4px 20px rgba(0, 0, 0, 0.5);
+ &.dialog-noshadow {
+ box-shadow: none !important;
+ }
+
& > h1 {
margin-top: 0;
}
diff --git a/resources/js/components/SMInput.vue b/resources/js/components/SMInput.vue
index af9a690..ff3dba3 100644
--- a/resources/js/components/SMInput.vue
+++ b/resources/js/components/SMInput.vue
@@ -17,7 +17,8 @@
type == 'email' ||
type == 'password' ||
type == 'email' ||
- type == 'url'
+ type == 'url' ||
+ type == 'daterange'
"
:type="type"
:placeholder="placeholder"
@@ -130,8 +131,8 @@ const objForm = inject("form", props.form);
const objControl =
!isEmpty(objForm) && props.control != "" ? objForm[props.control] : null;
-const label = ref("");
-const feedbackInvalid = ref("");
+const label = ref(props.label);
+const feedbackInvalid = ref(props.feedbackInvalid);
watch(
() => props.label,
@@ -238,6 +239,7 @@ const inline = computed(() => {
display: flex;
flex-direction: column;
margin-bottom: map-get($spacer, 4);
+ flex: 1;
&.sm-input-active {
label {
diff --git a/resources/js/components/SMNavbar.vue b/resources/js/components/SMNavbar.vue
index f18dadd..70528ec 100644
--- a/resources/js/components/SMNavbar.vue
+++ b/resources/js/components/SMNavbar.vue
@@ -73,7 +73,7 @@ const menuItems = [
name: "workshops",
label: "Workshops",
to: "/workshops",
- icon: "shapes-outline",
+ icon: "library-outline",
},
// {
// name: "courses",
@@ -107,7 +107,7 @@ const menuItems = [
name: "dashboard",
label: "Dashboard",
to: "/dashboard",
- icon: "apps-outline",
+ icon: "grid-outline",
show: () => userStore.id,
inNav: false,
},
diff --git a/resources/js/components/SMPage.vue b/resources/js/components/SMPage.vue
index 82e00f4..53c22df 100644
--- a/resources/js/components/SMPage.vue
+++ b/resources/js/components/SMPage.vue
@@ -13,18 +13,23 @@
class="sm-page"
:style="styleObject">
+
@@ -168,6 +170,7 @@ onMounted(async () => {
flex-direction: column;
border: 1px solid $border-color;
border-radius: 12px;
+ overflow: hidden;
box-shadow: 0 0 28px rgba(0, 0, 0, 0.05);
max-width: 21rem;
width: 100%;
@@ -227,6 +230,7 @@ onMounted(async () => {
flex-direction: column;
flex: 1;
padding: 0 map-get($spacer, 3) map-get($spacer, 3) map-get($spacer, 3);
+ background-color: #fff;
}
.panel-title {
@@ -241,7 +245,7 @@ onMounted(async () => {
font-size: 80%;
margin-bottom: 0.4rem;
- svg {
+ ion-icon {
flex: 0 1 1rem;
margin-right: map-get($spacer, 1);
padding-top: 0.1rem;
diff --git a/resources/js/components/dialogs/SMDialogChangePassword.vue b/resources/js/components/dialogs/SMDialogChangePassword.vue
index ecd8f2f..c49427e 100644
--- a/resources/js/components/dialogs/SMDialogChangePassword.vue
+++ b/resources/js/components/dialogs/SMDialogChangePassword.vue
@@ -2,36 +2,39 @@
Change Password
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/js/views/WorkshopView.vue b/resources/js/views/WorkshopView.vue
index 6e70863..1c832df 100644
--- a/resources/js/views/WorkshopView.vue
+++ b/resources/js/views/WorkshopView.vue
@@ -1,14 +1,9 @@
-
+
-
-
-
+ :style="{ backgroundImage: `url('${imageUrl}')` }">
+
Registration for this event has closed
@@ -38,7 +33,9 @@
@@ -48,7 +45,9 @@
@@ -77,8 +76,8 @@
-
-
+
+