shared-ritm 1.2.98 → 1.2.99

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