shared-ritm 1.2.90 → 1.2.91

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 (120) hide show
  1. package/README.md +103 -103
  2. package/dist/index.css +1 -1
  3. package/dist/shared-ritm.es.js +29 -28
  4. package/dist/shared-ritm.umd.js +3 -3
  5. package/package.json +64 -64
  6. package/src/App.vue +2461 -2461
  7. package/src/api/services/AuthService.ts +64 -64
  8. package/src/api/services/CommentsService.ts +24 -24
  9. package/src/api/services/ControlsService.ts +65 -65
  10. package/src/api/services/FileService.ts +17 -17
  11. package/src/api/services/GanttService.ts +17 -17
  12. package/src/api/services/InstrumentsService.ts +23 -22
  13. package/src/api/services/MetricsService.ts +110 -110
  14. package/src/api/services/ProjectsService.ts +68 -68
  15. package/src/api/services/RepairsService.ts +119 -119
  16. package/src/api/services/SearchService.ts +16 -16
  17. package/src/api/services/TasksService.ts +145 -145
  18. package/src/api/services/UserService.ts +71 -71
  19. package/src/api/services/VideoService.ts +17 -17
  20. package/src/api/settings/ApiService.ts +123 -123
  21. package/src/api/types/Api_Comment.ts +40 -40
  22. package/src/api/types/Api_Controls.ts +72 -72
  23. package/src/api/types/Api_Files.ts +7 -7
  24. package/src/api/types/Api_Instruments.ts +98 -98
  25. package/src/api/types/Api_Projects.ts +55 -55
  26. package/src/api/types/Api_Repairs.ts +115 -115
  27. package/src/api/types/Api_Search.ts +48 -48
  28. package/src/api/types/Api_Service.ts +9 -9
  29. package/src/api/types/Api_Tasks.ts +315 -315
  30. package/src/api/types/Api_User.ts +87 -87
  31. package/src/common/app-button/AppButton.vue +173 -173
  32. package/src/common/app-checkbox/AppCheckbox.vue +26 -26
  33. package/src/common/app-date-picker/AppDatePicker.vue +81 -81
  34. package/src/common/app-datepicker/AppDatepicker.vue +165 -165
  35. package/src/common/app-dialogs/AppConfirmDialog.vue +99 -99
  36. package/src/common/app-dropdown/AppDropdown.vue +31 -31
  37. package/src/common/app-icon/AppIcon.vue +108 -108
  38. package/src/common/app-input/AppInput.vue +148 -148
  39. package/src/common/app-input-new/AppInputNew.vue +152 -152
  40. package/src/common/app-input-search/AppInputSearch.vue +174 -174
  41. package/src/common/app-layout/AppLayout.vue +84 -84
  42. package/src/common/app-layout/components/AppLayoutHeader.vue +246 -246
  43. package/src/common/app-layout/components/AppLayoutPage.vue +16 -16
  44. package/src/common/app-loader/index.vue +43 -43
  45. package/src/common/app-page-layout/AppPageLayout.vue +122 -122
  46. package/src/common/app-select/AppSelect.vue +157 -157
  47. package/src/common/app-sheet/AppSheet.vue +120 -120
  48. package/src/common/app-sheet-new/AppSheetNew.vue +246 -246
  49. package/src/common/app-sidebar/AppSidebar.vue +168 -168
  50. package/src/common/app-sidebar/components/SidebarMenu.vue +37 -37
  51. package/src/common/app-sidebar/components/SidebarMenuItem.vue +148 -148
  52. package/src/common/app-table/AppTable.vue +305 -305
  53. package/src/common/app-table/AppTableLayout.vue +126 -126
  54. package/src/common/app-table/components/ModalSelect.vue +270 -270
  55. package/src/common/app-table/components/TableModal.vue +331 -331
  56. package/src/common/app-table/components/TablePagination.vue +152 -152
  57. package/src/common/app-table/controllers/useBaseTable.ts +45 -45
  58. package/src/common/app-table/controllers/useColumnSelector.ts +38 -38
  59. package/src/common/app-table/controllers/useTableModel.ts +93 -93
  60. package/src/common/app-toggle/AppToggle.vue +24 -24
  61. package/src/common/app-wrapper/AppWrapper.vue +28 -28
  62. package/src/global.d.ts +1 -1
  63. package/src/icons/components/arrow-down-icon.vue +25 -25
  64. package/src/icons/components/arrow-frame-icon.vue +19 -19
  65. package/src/icons/components/arrow-square.vue +22 -22
  66. package/src/icons/components/table-filter-icon.vue +30 -30
  67. package/src/icons/dialogs/RemoveIcon.vue +12 -12
  68. package/src/icons/dialogs/SafetyIcon.vue +12 -12
  69. package/src/icons/header/NotificationIcon.vue +18 -18
  70. package/src/icons/header/PersonIcon.vue +11 -11
  71. package/src/icons/header/SettingIcon.vue +14 -14
  72. package/src/icons/header/flashIcon.vue +24 -24
  73. package/src/icons/header/searchStatusIcon.vue +24 -24
  74. package/src/icons/header/smallCapsIcon.vue +34 -34
  75. package/src/icons/sidebar/assign-module-icon.vue +36 -36
  76. package/src/icons/sidebar/instrument-history-icon.vue +32 -32
  77. package/src/icons/sidebar/instrument-order-icon.vue +38 -38
  78. package/src/icons/sidebar/instrument-work-zone-icon.vue +18 -18
  79. package/src/icons/sidebar/instruments-icon.vue +45 -45
  80. package/src/icons/sidebar/logo-icon.vue +15 -15
  81. package/src/icons/sidebar/logout-icon.vue +13 -13
  82. package/src/icons/sidebar/modules-icon.vue +16 -16
  83. package/src/icons/sidebar/notifications-icon.vue +24 -24
  84. package/src/icons/sidebar/order-icon.vue +44 -44
  85. package/src/icons/sidebar/pass-icon.vue +38 -38
  86. package/src/icons/sidebar/positions-icon.vue +42 -42
  87. package/src/icons/sidebar/preorder-icon.vue +19 -19
  88. package/src/icons/sidebar/projects-icon.vue +31 -31
  89. package/src/icons/sidebar/repair-object-icon.vue +18 -18
  90. package/src/icons/sidebar/repairs-icon.vue +20 -20
  91. package/src/icons/sidebar/roles-icon.vue +26 -26
  92. package/src/icons/sidebar/status-history-icon.vue +24 -24
  93. package/src/icons/sidebar/tasks-icon.vue +28 -28
  94. package/src/icons/sidebar/tasks_tasks-icon.vue +39 -39
  95. package/src/icons/sidebar/tasks_today-icon.vue +27 -27
  96. package/src/icons/sidebar/teams-icon.vue +32 -32
  97. package/src/icons/sidebar/user-icon.vue +18 -18
  98. package/src/icons/sidebar/users-icon.vue +46 -46
  99. package/src/icons/sidebar/videosources-icon.vue +19 -19
  100. package/src/icons/sidebar/videowall-icon.vue +13 -13
  101. package/src/icons/sidebar/videozones-icon.vue +21 -21
  102. package/src/icons/sidebar/warehouses-icon.vue +43 -43
  103. package/src/icons/sidebar/workshop-icon.vue +100 -100
  104. package/src/icons/sidebar/workzones-icon.vue +22 -22
  105. package/src/icons/task/attention-icon.vue +13 -13
  106. package/src/icons/task/clock-icon.vue +10 -10
  107. package/src/icons/task/delete-icon.vue +10 -10
  108. package/src/icons/task/fire-icon.vue +16 -16
  109. package/src/index.ts +112 -112
  110. package/src/main.ts +28 -28
  111. package/src/quasar-user-options.ts +17 -17
  112. package/src/router/index.ts +10 -10
  113. package/src/shared/styles/general.css +124 -124
  114. package/src/shims-vue.d.ts +5 -5
  115. package/src/styles/variables.sass +12 -12
  116. package/src/utils/confirm.ts +12 -12
  117. package/src/utils/faceApiHelper.ts +137 -137
  118. package/src/utils/helpers.ts +59 -59
  119. package/src/utils/notification.ts +9 -9
  120. package/dist/types/api/services/PhotoService.d.ts +0 -40
@@ -1,246 +1,246 @@
1
- <template>
2
- <q-header :class="[$style.header, { [$style[`header-full`]]: fullWidth }]">
3
- <q-toolbar :class="$style.toolbar">
4
- <h1>{{ pageTitle }}</h1>
5
- <div :class="$style['action-buttons']">
6
- <div :class="$style['person']" @click="clickProfile">
7
- <app-icon name="person-icon" />
8
- <div :class="$style['person__info']">
9
- <p style="font-weight: 700; font-size: 14px">{{ shortName }}</p>
10
- <p style="font-weight: 300; font-size: 12px">{{ positionName }}</p>
11
- </div>
12
- </div>
13
- <div :class="$style['action-wrapper']">
14
- <!-- <q-btn :class="$style['notification']" flat padding="sm" :ripple="false" @click="clickNotification">-->
15
- <!-- <app-icon color="white" size="28px" name="notifications-icon" />-->
16
- <!-- </q-btn>-->
17
- <q-separator color="white" vertical size="1px" />
18
- <q-btn
19
- ref="refMenuSettings"
20
- flat
21
- padding="sm"
22
- :ripple="false"
23
- :class="[$style['settings'], { [$style['settings__open']]: isSettingsOpened }]"
24
- @click="openSettingsMenu"
25
- >
26
- <app-icon size="28px" name="setting-icon" />
27
- <q-menu max-height="160px" :offset="[-18, 4]" :class="$style['settings-menu']">
28
- <q-list v-for="item in settingsMenuItems" :key="item.name" :class="$style['settings-menu__list']">
29
- <q-item
30
- v-show="item.isShow"
31
- v-close-popup
32
- :class="$style['settings-menu__item']"
33
- clickable
34
- @click="clickSettingsMenuItem(item)"
35
- >{{ item.label }}</q-item
36
- >
37
- </q-list>
38
- </q-menu>
39
- </q-btn>
40
- </div>
41
-
42
- <!-- <app-button icon="person" text-color="black" :label="shortName" rounded :class="$style['button-person']" />-->
43
- </div>
44
- </q-toolbar>
45
- </q-header>
46
- </template>
47
-
48
- <script lang="ts" setup>
49
- import { computed, defineProps, ref, withDefaults } from 'vue'
50
- import { onClickOutside } from '@vueuse/core'
51
- import AppIcon from '@/common/app-icon/AppIcon.vue'
52
-
53
- interface Props {
54
- userData: any
55
- fullWidth?: boolean
56
- pageTitle?: string
57
- settingsMenuItems?: { label: string; name: string; isShow: boolean }[]
58
- }
59
-
60
- const emits = defineEmits(['clickSettingsMenuItem', 'clickNotification', 'clickProfile'])
61
-
62
- const props = withDefaults(defineProps<Props>(), {
63
- pageTitle: '',
64
- })
65
-
66
- const refMenuSettings = ref(null)
67
- const isSettingsOpened = ref(false)
68
-
69
- // const settingsMenuItems = ref([
70
- // { label: 'Поиск инструментов', name: 'instrument-search', isShow: true },
71
- // { label: 'Мониторинг оборудования', name: 'equipment-monitoring', isShow: true },
72
- // { label: 'Root-режим выключен', name: 'root-off', isShow: true },
73
- // { label: 'Root-режим включен', name: 'root-on', isShow: false },
74
- // ])
75
-
76
- const shortName = computed(
77
- () =>
78
- `${props.userData?.last_name} ${props.userData?.first_name} ${props.userData?.patronymic?.[0] || ''}${
79
- props.userData?.patronymic?.[0] ? '.' : ''
80
- }`,
81
- )
82
-
83
- const positionName = computed(() => props.userData?.positions?.[0]?.display_name)
84
-
85
- const openSettingsMenu = () => {
86
- return (isSettingsOpened.value = !isSettingsOpened.value)
87
- }
88
-
89
- const clickProfile = () => emits('clickProfile')
90
- const clickSettingsMenuItem = (item: any) => emits('clickSettingsMenuItem', item.name)
91
- const clickNotification = () => emits('clickNotification')
92
-
93
- onClickOutside(refMenuSettings, () => (isSettingsOpened.value = false))
94
- </script>
95
-
96
- <style lang="scss" module>
97
- .header {
98
- height: 100px;
99
- background: transparent;
100
- margin: 0 auto;
101
- max-width: 1300px;
102
- }
103
- .header-full {
104
- max-width: 100%;
105
- padding-right: 30px;
106
- padding-left: 30px;
107
- }
108
- .toolbar {
109
- padding: 0;
110
- min-height: 100%;
111
- h1 {
112
- font-weight: 600;
113
- font-size: 28px;
114
- line-height: 100%;
115
- font-family: Montserrat, sans-serif;
116
- }
117
- }
118
-
119
- .header-search {
120
- width: 412px;
121
- font-size: 16px;
122
- }
123
-
124
- .action-buttons {
125
- flex: 1;
126
- position: relative;
127
- display: flex;
128
- align-items: center;
129
- column-gap: 16px;
130
- justify-content: end;
131
- }
132
-
133
- .button {
134
- padding: 12px;
135
- background: white;
136
- transition: all 0.3s ease, color 0.3s ease;
137
- }
138
-
139
- .button-person {
140
- padding: 10px 14px;
141
- background: white;
142
- }
143
-
144
- .person {
145
- display: flex;
146
- align-items: center;
147
- gap: 6px;
148
- padding: 20px 12px;
149
- height: 44px;
150
- border-radius: 10px;
151
- cursor: pointer;
152
- background-color: white;
153
- box-shadow: 0 1px 5px rgba(0, 0, 0, 0.2), 0 2px 2px rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12);
154
- transition: all 0.3s ease;
155
- &__info {
156
- display: flex;
157
- flex-direction: column;
158
- user-select: none;
159
- p {
160
- line-height: 1.2;
161
- margin: 0;
162
- padding: 0;
163
- font-family: 'Nunito Sans', sans-serif;
164
- color: rgb(63, 140, 255);
165
- }
166
- }
167
- &:hover {
168
- background-color: #e1e0e0;
169
- transform: scale(1.01);
170
- }
171
- &:active {
172
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3), 0 4px 4px rgba(0, 0, 0, 0.2), 0 6px 2px -5px rgba(0, 0, 0, 0.2);
173
- }
174
- }
175
-
176
- .notification {
177
- cursor: pointer;
178
- transition: transform 0.3s ease;
179
- &:hover {
180
- transform: scale(1.1);
181
- }
182
- :global(.q-focus-helper) {
183
- display: none;
184
- }
185
- }
186
-
187
- .settings {
188
- cursor: pointer;
189
- transition: transform 0.3s ease;
190
- &__open {
191
- transform: rotate(90deg);
192
- }
193
- :global(.q-focus-helper) {
194
- display: none;
195
- }
196
- }
197
-
198
- .settings-menu {
199
- min-width: 210px;
200
- border-radius: 8px;
201
- &__list {
202
- min-width: 210px;
203
- }
204
- &__item {
205
- align-items: center;
206
- font-family: 'Nunito Sans', sans-serif;
207
- color: rgb(63, 140, 255);
208
- }
209
- }
210
-
211
- .action-wrapper {
212
- height: 32px;
213
- justify-content: space-between;
214
- align-items: center;
215
- display: flex;
216
- gap: 12px;
217
- }
218
-
219
- @media (max-width: 1440px) {
220
- .header {
221
- height: 100px;
222
- background: transparent;
223
- margin: 0 auto;
224
- max-width: 874px;
225
- }
226
- .header-search {
227
- width: 343px;
228
- font-size: 16px;
229
- }
230
- .action-buttons {
231
- position: relative;
232
- display: flex;
233
- align-items: center;
234
- column-gap: 8px;
235
- }
236
- .button {
237
- padding: 10px;
238
- background: white;
239
- transition: all 0.3s ease, color 0.3s ease;
240
- }
241
- .button-person {
242
- padding: 8px 10px;
243
- background: white;
244
- }
245
- }
246
- </style>
1
+ <template>
2
+ <q-header :class="[$style.header, { [$style[`header-full`]]: fullWidth }]">
3
+ <q-toolbar :class="$style.toolbar">
4
+ <h1>{{ pageTitle }}</h1>
5
+ <div :class="$style['action-buttons']">
6
+ <div :class="$style['person']" @click="clickProfile">
7
+ <app-icon name="person-icon" />
8
+ <div :class="$style['person__info']">
9
+ <p style="font-weight: 700; font-size: 14px">{{ shortName }}</p>
10
+ <p style="font-weight: 300; font-size: 12px">{{ positionName }}</p>
11
+ </div>
12
+ </div>
13
+ <div :class="$style['action-wrapper']">
14
+ <!-- <q-btn :class="$style['notification']" flat padding="sm" :ripple="false" @click="clickNotification">-->
15
+ <!-- <app-icon color="white" size="28px" name="notifications-icon" />-->
16
+ <!-- </q-btn>-->
17
+ <q-separator color="white" vertical size="1px" />
18
+ <q-btn
19
+ ref="refMenuSettings"
20
+ flat
21
+ padding="sm"
22
+ :ripple="false"
23
+ :class="[$style['settings'], { [$style['settings__open']]: isSettingsOpened }]"
24
+ @click="openSettingsMenu"
25
+ >
26
+ <app-icon size="28px" name="setting-icon" />
27
+ <q-menu max-height="160px" :offset="[-18, 4]" :class="$style['settings-menu']">
28
+ <q-list v-for="item in settingsMenuItems" :key="item.name" :class="$style['settings-menu__list']">
29
+ <q-item
30
+ v-show="item.isShow"
31
+ v-close-popup
32
+ :class="$style['settings-menu__item']"
33
+ clickable
34
+ @click="clickSettingsMenuItem(item)"
35
+ >{{ item.label }}</q-item
36
+ >
37
+ </q-list>
38
+ </q-menu>
39
+ </q-btn>
40
+ </div>
41
+
42
+ <!-- <app-button icon="person" text-color="black" :label="shortName" rounded :class="$style['button-person']" />-->
43
+ </div>
44
+ </q-toolbar>
45
+ </q-header>
46
+ </template>
47
+
48
+ <script lang="ts" setup>
49
+ import { computed, defineProps, ref, withDefaults } from 'vue'
50
+ import { onClickOutside } from '@vueuse/core'
51
+ import AppIcon from '@/common/app-icon/AppIcon.vue'
52
+
53
+ interface Props {
54
+ userData: any
55
+ fullWidth?: boolean
56
+ pageTitle?: string
57
+ settingsMenuItems?: { label: string; name: string; isShow: boolean }[]
58
+ }
59
+
60
+ const emits = defineEmits(['clickSettingsMenuItem', 'clickNotification', 'clickProfile'])
61
+
62
+ const props = withDefaults(defineProps<Props>(), {
63
+ pageTitle: '',
64
+ })
65
+
66
+ const refMenuSettings = ref(null)
67
+ const isSettingsOpened = ref(false)
68
+
69
+ // const settingsMenuItems = ref([
70
+ // { label: 'Поиск инструментов', name: 'instrument-search', isShow: true },
71
+ // { label: 'Мониторинг оборудования', name: 'equipment-monitoring', isShow: true },
72
+ // { label: 'Root-режим выключен', name: 'root-off', isShow: true },
73
+ // { label: 'Root-режим включен', name: 'root-on', isShow: false },
74
+ // ])
75
+
76
+ const shortName = computed(
77
+ () =>
78
+ `${props.userData?.last_name} ${props.userData?.first_name} ${props.userData?.patronymic?.[0] || ''}${
79
+ props.userData?.patronymic?.[0] ? '.' : ''
80
+ }`,
81
+ )
82
+
83
+ const positionName = computed(() => props.userData?.positions?.[0]?.display_name)
84
+
85
+ const openSettingsMenu = () => {
86
+ return (isSettingsOpened.value = !isSettingsOpened.value)
87
+ }
88
+
89
+ const clickProfile = () => emits('clickProfile')
90
+ const clickSettingsMenuItem = (item: any) => emits('clickSettingsMenuItem', item.name)
91
+ const clickNotification = () => emits('clickNotification')
92
+
93
+ onClickOutside(refMenuSettings, () => (isSettingsOpened.value = false))
94
+ </script>
95
+
96
+ <style lang="scss" module>
97
+ .header {
98
+ height: 100px;
99
+ background: transparent;
100
+ margin: 0 auto;
101
+ max-width: 1300px;
102
+ }
103
+ .header-full {
104
+ max-width: 100%;
105
+ padding-right: 30px;
106
+ padding-left: 30px;
107
+ }
108
+ .toolbar {
109
+ padding: 0;
110
+ min-height: 100%;
111
+ h1 {
112
+ font-weight: 600;
113
+ font-size: 28px;
114
+ line-height: 100%;
115
+ font-family: Montserrat, sans-serif;
116
+ }
117
+ }
118
+
119
+ .header-search {
120
+ width: 412px;
121
+ font-size: 16px;
122
+ }
123
+
124
+ .action-buttons {
125
+ flex: 1;
126
+ position: relative;
127
+ display: flex;
128
+ align-items: center;
129
+ column-gap: 16px;
130
+ justify-content: end;
131
+ }
132
+
133
+ .button {
134
+ padding: 12px;
135
+ background: white;
136
+ transition: all 0.3s ease, color 0.3s ease;
137
+ }
138
+
139
+ .button-person {
140
+ padding: 10px 14px;
141
+ background: white;
142
+ }
143
+
144
+ .person {
145
+ display: flex;
146
+ align-items: center;
147
+ gap: 6px;
148
+ padding: 20px 12px;
149
+ height: 44px;
150
+ border-radius: 10px;
151
+ cursor: pointer;
152
+ background-color: white;
153
+ box-shadow: 0 1px 5px rgba(0, 0, 0, 0.2), 0 2px 2px rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12);
154
+ transition: all 0.3s ease;
155
+ &__info {
156
+ display: flex;
157
+ flex-direction: column;
158
+ user-select: none;
159
+ p {
160
+ line-height: 1.2;
161
+ margin: 0;
162
+ padding: 0;
163
+ font-family: 'Nunito Sans', sans-serif;
164
+ color: rgb(63, 140, 255);
165
+ }
166
+ }
167
+ &:hover {
168
+ background-color: #e1e0e0;
169
+ transform: scale(1.01);
170
+ }
171
+ &:active {
172
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3), 0 4px 4px rgba(0, 0, 0, 0.2), 0 6px 2px -5px rgba(0, 0, 0, 0.2);
173
+ }
174
+ }
175
+
176
+ .notification {
177
+ cursor: pointer;
178
+ transition: transform 0.3s ease;
179
+ &:hover {
180
+ transform: scale(1.1);
181
+ }
182
+ :global(.q-focus-helper) {
183
+ display: none;
184
+ }
185
+ }
186
+
187
+ .settings {
188
+ cursor: pointer;
189
+ transition: transform 0.3s ease;
190
+ &__open {
191
+ transform: rotate(90deg);
192
+ }
193
+ :global(.q-focus-helper) {
194
+ display: none;
195
+ }
196
+ }
197
+
198
+ .settings-menu {
199
+ min-width: 210px;
200
+ border-radius: 8px;
201
+ &__list {
202
+ min-width: 210px;
203
+ }
204
+ &__item {
205
+ align-items: center;
206
+ font-family: 'Nunito Sans', sans-serif;
207
+ color: rgb(63, 140, 255);
208
+ }
209
+ }
210
+
211
+ .action-wrapper {
212
+ height: 32px;
213
+ justify-content: space-between;
214
+ align-items: center;
215
+ display: flex;
216
+ gap: 12px;
217
+ }
218
+
219
+ @media (max-width: 1440px) {
220
+ .header {
221
+ height: 100px;
222
+ background: transparent;
223
+ margin: 0 auto;
224
+ max-width: 874px;
225
+ }
226
+ .header-search {
227
+ width: 343px;
228
+ font-size: 16px;
229
+ }
230
+ .action-buttons {
231
+ position: relative;
232
+ display: flex;
233
+ align-items: center;
234
+ column-gap: 8px;
235
+ }
236
+ .button {
237
+ padding: 10px;
238
+ background: white;
239
+ transition: all 0.3s ease, color 0.3s ease;
240
+ }
241
+ .button-person {
242
+ padding: 8px 10px;
243
+ background: white;
244
+ }
245
+ }
246
+ </style>
@@ -1,16 +1,16 @@
1
- <template>
2
- <q-page class="page-container">
3
- <slot />
4
- </q-page>
5
- </template>
6
-
7
- <script setup lang="ts"></script>
8
-
9
- <style scoped lang="scss">
10
- .page-container {
11
- display: flex;
12
- flex-direction: column;
13
- padding: 0px 30px;
14
- height: 100%;
15
- }
16
- </style>
1
+ <template>
2
+ <q-page class="page-container">
3
+ <slot />
4
+ </q-page>
5
+ </template>
6
+
7
+ <script setup lang="ts"></script>
8
+
9
+ <style scoped lang="scss">
10
+ .page-container {
11
+ display: flex;
12
+ flex-direction: column;
13
+ padding: 0px 30px;
14
+ height: 100%;
15
+ }
16
+ </style>
@@ -1,43 +1,43 @@
1
- <template>
2
- <div :class="{ 'loader-backdrop': backdrop && loading }">
3
- <q-spinner v-if="loading" :size="size" class="loader-spinner" :thickness="thickness" />
4
- </div>
5
- </template>
6
-
7
- <script setup lang="ts">
8
- interface Props {
9
- backdrop: boolean
10
- loading: boolean
11
- thickness: number
12
- size: string
13
- }
14
- const props = withDefaults(defineProps<Props>(), {
15
- backdrop: false,
16
- loading: false,
17
- thickness: 2,
18
- size: 'md',
19
- })
20
-
21
- // <app-loader :loading="logged" :backdrop="true" />
22
- </script>
23
-
24
- <style scoped lang="scss">
25
- .loader {
26
- //&-backdrop {
27
- // top: 0;
28
- // bottom: 0;
29
- // left: 0;
30
- // right: 0;
31
- // background-color: rgba(255, 255, 255, 0.1);
32
- // position: absolute;
33
- // z-index: 9999;
34
- //}
35
- &-spinner {
36
- position: absolute;
37
- color: #1d64ff;
38
- top: 44%;
39
- left: 48%;
40
- z-index: 9999;
41
- }
42
- }
43
- </style>
1
+ <template>
2
+ <div :class="{ 'loader-backdrop': backdrop && loading }">
3
+ <q-spinner v-if="loading" :size="size" class="loader-spinner" :thickness="thickness" />
4
+ </div>
5
+ </template>
6
+
7
+ <script setup lang="ts">
8
+ interface Props {
9
+ backdrop: boolean
10
+ loading: boolean
11
+ thickness: number
12
+ size: string
13
+ }
14
+ const props = withDefaults(defineProps<Props>(), {
15
+ backdrop: false,
16
+ loading: false,
17
+ thickness: 2,
18
+ size: 'md',
19
+ })
20
+
21
+ // <app-loader :loading="logged" :backdrop="true" />
22
+ </script>
23
+
24
+ <style scoped lang="scss">
25
+ .loader {
26
+ //&-backdrop {
27
+ // top: 0;
28
+ // bottom: 0;
29
+ // left: 0;
30
+ // right: 0;
31
+ // background-color: rgba(255, 255, 255, 0.1);
32
+ // position: absolute;
33
+ // z-index: 9999;
34
+ //}
35
+ &-spinner {
36
+ position: absolute;
37
+ color: #1d64ff;
38
+ top: 44%;
39
+ left: 48%;
40
+ z-index: 9999;
41
+ }
42
+ }
43
+ </style>