diff --git a/.nova/Configuration.json b/.nova/Configuration.json deleted file mode 100644 index 0db3279..0000000 --- a/.nova/Configuration.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} diff --git a/app/Conductors/UserConductor.php b/app/Conductors/UserConductor.php index cc8d125..5324261 100644 --- a/app/Conductors/UserConductor.php +++ b/app/Conductors/UserConductor.php @@ -41,7 +41,7 @@ class UserConductor extends Conductor $data = $model->toArray(); if ($user === null || ($user->hasPermission('admin/users') === false && strcasecmp($user->id, $model->id) !== 0)) { - $fields = ['id', 'username']; + $fields = ['id', 'username', 'display_name']; $data = arrayLimitKeys($data, $fields); } diff --git a/public/274jCYSAlHm9P8vTE4CBwZAGgBycxorBHxbyvHNe.jpg b/public/274jCYSAlHm9P8vTE4CBwZAGgBycxorBHxbyvHNe.jpg new file mode 100644 index 0000000..90cbbb2 Binary files /dev/null and b/public/274jCYSAlHm9P8vTE4CBwZAGgBycxorBHxbyvHNe.jpg differ diff --git a/resources/css/app.scss b/resources/css/app.scss index 06cdd01..3e2428e 100644 --- a/resources/css/app.scss +++ b/resources/css/app.scss @@ -1,6 +1,5 @@ @import "variables.scss"; @import "utils.scss"; -@import "data-table.scss"; @import "tinymce.scss"; @import "prism.css"; diff --git a/resources/css/data-table.scss b/resources/css/data-table.scss deleted file mode 100644 index 8af6d3d..0000000 --- a/resources/css/data-table.scss +++ /dev/null @@ -1,62 +0,0 @@ -@import "vue3-easy-data-table/dist/style.css"; -.vue3-easy-data-table { - border-radius: 12px; - - .vue3-easy-data-table__header tr { - background-color: var(--easy-table-header-background-color); - } - - .vue3-easy-data-table__header th { - background-color: transparent; - } - - .vue3-easy-data-table__body td { - white-space: nowrap; - // overflow: hidden; - text-overflow: ellipsis; - } - - .vue3-easy-data-table__main { - border-top-left-radius: 12px; - border-top-right-radius: 12px; - } - - .vue3-easy-data-table__footer { - border-bottom-left-radius: 12px; - border-bottom-right-radius: 12px; - } - - td.easy-data-table-cell-center { - text-align: center !important; - } - - th.easy-data-table-cell-center .header { - justify-content: center !important; - } - - .action-wrapper { - a { - color: $font-color; - } - } -} - -:root { - --easy-table-border: #{1px solid $border-color}; - --easy-table-row-border: #{1px solid $border-color}; - - --easy-table-header-font-size: #{calc($font-size / 1.1)}; - --easy-table-header-background-color: #{$secondary-background-color}; - --easy-table-header-item-padding: 20px 20px; - - --easy-table-body-row-font-size: #{calc($font-size / 1.2)}; - --easy-table-body-item-padding: 20px 20px; - --easy-table-body-row-hover-background-color: #e5f3fd; - - --easy-table-footer-font-size: #{calc($font-size / 1.2)}; - --easy-table-footer-background-color: #{$secondary-background-color}; - --easy-table-footer-padding: 20px 20px; - --easy-table-footer-height: auto; - - --easy-table-message-font-size: #{calc($font-size / 1.2)}; -} diff --git a/resources/css/datepicker.scss b/resources/css/datepicker.scss deleted file mode 100644 index 4ebf6ae..0000000 --- a/resources/css/datepicker.scss +++ /dev/null @@ -1,70 +0,0 @@ -@import "@vuepic/vue-datepicker/dist/main.css"; - -.dp__menu { - border-radius: 12px; - padding: 1rem; - box-shadow: 4px 4px 12px rgba(0, 0, 0, 0.2); -} - -.dp__input { - padding: 0.75rem 1rem; - border: 1px solid $border-color; - border-radius: 12px; - padding: map-get($spacer, 2) map-get($spacer, 3) map-get($spacer, 2) #{calc( - map-get($spacer, 4) * 1.2 - )}; - - &::placeholder { - opacity: 1 !important; - } -} - -.dp__action_row { - flex-direction: column; - - .dp__selection_preview { - width: auto; - font-size: 0.9rem; - } - - .dp__action_buttons { - width: 100%; - display: flex; - justify-content: space-between; - margin-top: map-get($spacer, 2); - - .dp__action { - padding: map-get($spacer, 1) map-get($spacer, 3); - font-size: 1rem; - color: white; - font-weight: 800; - border-width: 2px; - border-style: solid; - border-radius: 24px; - transition: background-color 0.1s, color 0.1s; - cursor: pointer; - background-color: $secondary-color; - border-color: $secondary-color; - - &:hover { - background-color: #fff; - text-decoration: none; - color: $secondary-color; - } - - &.dp__select { - background-color: $primary-color; - border-color: $primary-color; - - &:hover { - background-color: #fff; - color: $primary-color; - } - } - } - } -} - -.dp__theme_light { - --dp-success-color: #{$primary-color}; -} diff --git a/resources/css/utils.scss b/resources/css/utils.scss index 71fbd2a..1c796ce 100644 --- a/resources/css/utils.scss +++ b/resources/css/utils.scss @@ -78,6 +78,10 @@ flex: 1; } +.flex-grow-1 { + flex-grow: 1; +} + .flex-0 { flex: 0 !important; } diff --git a/resources/depreciated/ProgressStore.ts b/resources/depreciated/ProgressStore.ts deleted file mode 100644 index d03cb97..0000000 --- a/resources/depreciated/ProgressStore.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { defineStore } from "pinia"; -import { clamp } from "../helpers/utils"; - -export interface ProgressStore { - spinner: number; - status: number; - opacity: number; - queue: number; - timeoutID: number | null; -} - -export const useProgressStore = defineStore({ - id: "progress", - state: (): ProgressStore => ({ - spinner: 0, - status: 0, - opacity: 0, - queue: 0, - timeoutID: null, - }), - - actions: { - start() { - if (this.queue == 0 && this.opacity == 0) { - this.set(0); - - const work = () => { - window.setTimeout(() => { - if (this.status < 1) { - this._trickle(); - work(); - } - }, 200); - }; - - work(); - - if (this.opacity == 0) { - if (this.timeoutID != null) { - window.clearTimeout(this.timeoutID); - } - - this.timeoutID = window.setTimeout(() => { - this._show(); - this.timeoutID = null; - }, 2000); - } - - if (this.spinner == 0) { - this.spinner = 1; - } - } - - ++this.queue; - }, - - set(number: number) { - const n = clamp(number, 0.08, 1); - this.status = n; - }, - - finish() { - if (this.queue > 0) { - --this.queue; - } - }, - - _trickle() { - const n = this.status; - - if (this.queue == 0) { - if (this.opacity == 0 && this.timeoutID != null) { - this._hide(); - window.clearTimeout(this.timeoutID); - this.timeoutID = null; - } else if (this.timeoutID == null) { - this.timeoutID = window.setTimeout(() => { - this.set(1); - this.timeoutID = null; - - this.timeoutID = window.setTimeout(() => { - this._hide(); - this.timeoutID = null; - - window.setTimeout(() => { - this.status = 0; - }, 150); - }, 500); - }, 500); - } - } - - if (n > 0 && n < 1) { - let amount = 0; - - if (n >= 0 && n < 0.2) { - amount = 0.1; - } else if (n >= 0.2 && n < 0.5) { - amount = 0.04; - } else if (n >= 0.5 && n < 0.8) { - amount = 0.02; - } else if (n >= 0.8 && n < 0.99) { - amount = 0.005; - } else { - amount = 0; - } - - this.set(clamp(n + amount, 0, 0.994)); - } - }, - - _show() { - this.opacity = 1; - }, - - _hide() { - this.opacity = 0; - - if (this.spinner == 1) { - this.spinner = 0; - } - }, - }, -}); diff --git a/resources/depreciated/SMCarousel.vue b/resources/depreciated/SMCarousel.vue deleted file mode 100644 index 461699c..0000000 --- a/resources/depreciated/SMCarousel.vue +++ /dev/null @@ -1,280 +0,0 @@ - - - - - diff --git a/resources/depreciated/SMCarouselSlide.vue b/resources/depreciated/SMCarouselSlide.vue deleted file mode 100644 index 5e0f175..0000000 --- a/resources/depreciated/SMCarouselSlide.vue +++ /dev/null @@ -1,194 +0,0 @@ - - - - - diff --git a/resources/depreciated/SMProgress.vue b/resources/depreciated/SMProgress.vue deleted file mode 100644 index 19a9115..0000000 --- a/resources/depreciated/SMProgress.vue +++ /dev/null @@ -1,86 +0,0 @@ - - - - - diff --git a/resources/js/components/SMBreadcrumbs.vue b/resources/js/components/SMBreadcrumbs.vue deleted file mode 100644 index 4d6edf7..0000000 --- a/resources/js/components/SMBreadcrumbs.vue +++ /dev/null @@ -1,147 +0,0 @@ - - - - - diff --git a/resources/js/components/SMContainer.vue b/resources/js/components/SMContainer.vue index b1fbef1..2e5dbef 100644 --- a/resources/js/components/SMContainer.vue +++ b/resources/js/components/SMContainer.vue @@ -42,7 +42,7 @@ const slots = useSlots(); flex-direction: column; padding: 0 16px; max-width: 1200px; - // align-items: center; + align-items: center; margin: 0 auto; &.full { diff --git a/resources/js/components/SMDatePicker.vue b/resources/js/components/SMDatePicker.vue deleted file mode 100644 index a148f88..0000000 --- a/resources/js/components/SMDatePicker.vue +++ /dev/null @@ -1,134 +0,0 @@ - - - diff --git a/resources/js/components/SMInput.vue b/resources/js/components/SMInput.vue index a6368b7..b89c15d 100644 --- a/resources/js/components/SMInput.vue +++ b/resources/js/components/SMInput.vue @@ -26,7 +26,7 @@ :type="props.type" class="input-control" :disabled="disabled" - v-bind="{ id: id }" + v-bind="{ id: id, autofocus: props.autofocus }" v-model="value" @focus="handleFocus" @blur="handleBlur" @@ -101,6 +101,11 @@ const props = defineProps({ default: "", required: false, }, + autofocus: { + type: Boolean, + default: false, + required: false, + }, }); const slots = useSlots(); diff --git a/resources/js/components/SMLoading.vue b/resources/js/components/SMLoading.vue new file mode 100644 index 0000000..791e0d7 --- /dev/null +++ b/resources/js/components/SMLoading.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/resources/js/components/SMLoadingIcon.vue b/resources/js/components/SMLoadingIcon.vue index d4e1872..34e1bac 100644 --- a/resources/js/components/SMLoadingIcon.vue +++ b/resources/js/components/SMLoadingIcon.vue @@ -21,7 +21,7 @@ const props = defineProps({ .loading-icon-balls { display: inline-block; position: relative; - width: 3em; + width: 2.5em; height: 0.5em; div { @@ -34,41 +34,22 @@ const props = defineProps({ animation-timing-function: cubic-bezier(0, 1, 1, 0); } div:nth-child(1) { - left: 0.3em; + left: 0em; animation: sm-loading-icon1 0.6s infinite; } div:nth-child(2) { - left: 0.3em; + left: 0em; animation: sm-loading-icon2 0.6s infinite; } div:nth-child(3) { - left: 1.2em; + left: 1em; animation: sm-loading-icon2 0.6s infinite; } div:nth-child(4) { - left: 2.1em; + left: 2em; animation: sm-loading-icon3 0.6s infinite; } - &.large { - div { - width: 1.5em; - height: 1.5em; - } - div:nth-child(1) { - left: 0em; - } - div:nth-child(2) { - left: 0em; - } - div:nth-child(3) { - left: 3em; - } - div:nth-child(4) { - left: 6em; - } - } - @keyframes sm-loading-icon1 { 0% { transform: scale(0); @@ -90,7 +71,37 @@ const props = defineProps({ transform: translate(0, 0); } 100% { - transform: translate(3em, 0); + transform: translate(1em, 0); + } + } + + &.large { + width: 7.5em; + height: 1.5em; + + div { + width: 1.5em; + height: 1.5em; + } + + div:nth-child(2) { + animation: sm-loading-large-icon2 0.6s infinite; + } + div:nth-child(3) { + left: 3em; + animation: sm-loading-large-icon2 0.6s infinite; + } + div:nth-child(4) { + left: 6em; + } + + @keyframes sm-loading-large-icon2 { + 0% { + transform: translate(0, 0); + } + 100% { + transform: translate(3em, 0); + } } } } diff --git a/resources/js/components/SMNavbar.vue b/resources/js/components/SMNavbar.vue index d9c0658..9a45a6d 100644 --- a/resources/js/components/SMNavbar.vue +++ b/resources/js/components/SMNavbar.vue @@ -1,33 +1,33 @@