shared-ritm 1.2.111 → 1.2.113

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 (34) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/shared-ritm.es.js +13 -11
  3. package/dist/shared-ritm.umd.js +6 -6
  4. package/dist/types/api/services/ComentsServise.d.ts +10 -0
  5. package/dist/types/api/services/PhotoService.d.ts +51 -38
  6. package/dist/types/api/services/VideoService.d.ts +1 -0
  7. package/dist/types/api/types/Api_Users.d.ts +43 -0
  8. package/package.json +64 -64
  9. package/src/api/services/BrigadesService.ts +32 -32
  10. package/src/api/services/EquipmentService.ts +29 -29
  11. package/src/api/services/InstrumentsService.ts +63 -63
  12. package/src/api/services/ModulesService.ts +27 -27
  13. package/src/api/services/ProjectsService.ts +72 -72
  14. package/src/api/services/SearchService.ts +22 -22
  15. package/src/api/services/UserService.ts +101 -101
  16. package/src/api/services/VideoService.ts +66 -62
  17. package/src/api/settings/ApiService.ts +124 -124
  18. package/src/api/types/Api_Brigades.ts +36 -36
  19. package/src/api/types/Api_Equipment.ts +3 -3
  20. package/src/api/types/Api_Instruments.ts +136 -136
  21. package/src/api/types/Api_Modules.ts +21 -21
  22. package/src/api/types/Api_Search.ts +77 -77
  23. package/src/api/types/Api_User.ts +117 -117
  24. package/src/api/types/Api_Video.ts +123 -123
  25. package/src/common/app-input-new/AppInputNew.vue +175 -175
  26. package/src/common/app-layout/components/AppLayoutHeader.vue +3 -2
  27. package/src/common/app-sheet-new/AppSheetNew.vue +246 -246
  28. package/src/common/app-table/AppTable.vue +314 -314
  29. package/src/common/app-table/AppTableLayout.vue +137 -137
  30. package/src/common/app-table/components/ModalSelect.vue +270 -270
  31. package/src/common/app-table/components/TableModal.vue +356 -356
  32. package/src/common/app-table/controllers/useBaseTable.ts +45 -45
  33. package/src/index.ts +122 -122
  34. package/src/styles/variables.sass +12 -12
@@ -1,175 +1,175 @@
1
- <template>
2
- <div class="app-input-new">
3
- <label v-if="label" class="app-input-new__label">
4
- {{ label }}
5
- <span v-if="required" class="required">*</span>
6
- </label>
7
-
8
- <q-input
9
- v-model="model"
10
- filled
11
- :type="inputType"
12
- :rules="rules"
13
- :placeholder="placeholder"
14
- :disable="disable"
15
- :readonly="readonly"
16
- :class="inputClass"
17
- :error="error"
18
- :autocomplete="autocomplete"
19
- @blur="emit('blur')"
20
- >
21
- <slot />
22
- <template #append>
23
- <slot name="append" />
24
- <q-icon
25
- v-if="type === 'password'"
26
- :name="isVisiblePass ? 'visibility' : 'visibility_off'"
27
- color="primary"
28
- class="cursor-pointer"
29
- @click="isVisiblePass = !isVisiblePass"
30
- />
31
- <q-icon
32
- v-if="clearable && String(model)?.length"
33
- name="close"
34
- class="cursor-pointer clear-input"
35
- @click="model = null"
36
- />
37
- <q-btn
38
- v-if="uuid && !disable && !readonly"
39
- flat
40
- no-caps
41
- label="UUID"
42
- size="sm"
43
- class="q-ml-sm uuid-btn"
44
- @click="model = uuidv4()"
45
- />
46
- <q-icon
47
- v-if="copyable"
48
- name="content_copy"
49
- class="cursor-pointer q-ml-sm copy-icon"
50
- color="primary"
51
- :disable="!model"
52
- @click="copyToClipboard"
53
- />
54
- </template>
55
- </q-input>
56
- </div>
57
- </template>
58
-
59
- <script setup lang="ts">
60
- import { defineEmits, defineProps, computed, ref } from 'vue'
61
- import { uuidv4 } from '@/utils/helpers'
62
- import { notificationSettings } from '@/utils/notification'
63
- import { QInputProps, useQuasar } from 'quasar'
64
-
65
- const props = defineProps<
66
- QInputProps & {
67
- modelValue?: string | number | null
68
- label?: string
69
- placeholder?: string
70
- rules?: ((val: string | number | null | undefined) => boolean | string)[]
71
- inputClass?: string
72
- required?: boolean
73
- readonly?: boolean
74
- disable?: boolean
75
- uuid?: boolean
76
- clearable?: boolean
77
- copyable?: boolean
78
- error?: boolean
79
- autocomplete?: string
80
- }
81
- >()
82
-
83
- const emit = defineEmits<{
84
- (e: 'update:modelValue', val?: string | number | null): void
85
- (e: 'blur', val?: string | number | null): void
86
- }>()
87
-
88
- const $q = useQuasar()
89
-
90
- const isVisiblePass = ref(false)
91
-
92
- const model = computed({
93
- get: () => getValue(props.modelValue),
94
- set: (newValue?: string | number | null) => emit('update:modelValue', getValue(newValue)),
95
- })
96
-
97
- const inputType = computed(() => (props.type === 'password' && isVisiblePass.value ? 'text' : props.type))
98
-
99
- const getValue = (value?: string | number | null) => {
100
- if (props.type === 'number') return value ? +value : value
101
-
102
- return value
103
- }
104
-
105
- const copyToClipboard = () => {
106
- if (!model.value && model.value !== 0) return
107
-
108
- navigator.clipboard.writeText(model.value.toString()).then(() => {
109
- $q.notify(notificationSettings('success', 'Данные скопированы'))
110
- })
111
- }
112
- </script>
113
-
114
- <style scoped lang="scss">
115
- .app-input-new {
116
- display: flex;
117
- flex-direction: column;
118
- margin-bottom: 15px;
119
-
120
- &__label {
121
- font-size: 14px;
122
- font-weight: 700;
123
- color: #7d8592;
124
- }
125
-
126
- .required {
127
- color: #f65160;
128
- font-weight: bold;
129
- }
130
-
131
- .clear-input {
132
- color: #d8e0f0;
133
- }
134
-
135
- .uuid-btn {
136
- height: 32px;
137
- padding: 0 10px;
138
- border: 1px solid #3f8cff;
139
- color: #3f8cff;
140
- font-weight: 700;
141
- font-size: 14px;
142
- background: white;
143
- border-radius: 6px;
144
-
145
- :deep(.block) {
146
- line-height: normal;
147
- }
148
- }
149
-
150
- :deep(.q-placeholder) {
151
- color: #7d8592;
152
- }
153
-
154
- :deep(.q-field__control) {
155
- min-height: 58px;
156
- border-radius: 8px;
157
- border: 1px solid #d8e0f0;
158
- background: #fff;
159
- box-shadow: 0 1px 2px 0 rgba(184, 200, 224, 0.22);
160
- }
161
-
162
- :deep(.q-field--filled .q-field__control:before) {
163
- background: #fff !important;
164
- border: none;
165
- }
166
-
167
- :deep(.q-field--with-bottom) {
168
- padding-bottom: 0;
169
- }
170
-
171
- :deep(.q-field__bottom) {
172
- padding: 0;
173
- }
174
- }
175
- </style>
1
+ <template>
2
+ <div class="app-input-new">
3
+ <label v-if="label" class="app-input-new__label">
4
+ {{ label }}
5
+ <span v-if="required" class="required">*</span>
6
+ </label>
7
+
8
+ <q-input
9
+ v-model="model"
10
+ filled
11
+ :type="inputType"
12
+ :rules="rules"
13
+ :placeholder="placeholder"
14
+ :disable="disable"
15
+ :readonly="readonly"
16
+ :class="inputClass"
17
+ :error="error"
18
+ :autocomplete="autocomplete"
19
+ @blur="emit('blur')"
20
+ >
21
+ <slot />
22
+ <template #append>
23
+ <slot name="append" />
24
+ <q-icon
25
+ v-if="type === 'password'"
26
+ :name="isVisiblePass ? 'visibility' : 'visibility_off'"
27
+ color="primary"
28
+ class="cursor-pointer"
29
+ @click="isVisiblePass = !isVisiblePass"
30
+ />
31
+ <q-icon
32
+ v-if="clearable && String(model)?.length"
33
+ name="close"
34
+ class="cursor-pointer clear-input"
35
+ @click="model = null"
36
+ />
37
+ <q-btn
38
+ v-if="uuid && !disable && !readonly"
39
+ flat
40
+ no-caps
41
+ label="UUID"
42
+ size="sm"
43
+ class="q-ml-sm uuid-btn"
44
+ @click="model = uuidv4()"
45
+ />
46
+ <q-icon
47
+ v-if="copyable"
48
+ name="content_copy"
49
+ class="cursor-pointer q-ml-sm copy-icon"
50
+ color="primary"
51
+ :disable="!model"
52
+ @click="copyToClipboard"
53
+ />
54
+ </template>
55
+ </q-input>
56
+ </div>
57
+ </template>
58
+
59
+ <script setup lang="ts">
60
+ import { defineEmits, defineProps, computed, ref } from 'vue'
61
+ import { uuidv4 } from '@/utils/helpers'
62
+ import { notificationSettings } from '@/utils/notification'
63
+ import { QInputProps, useQuasar } from 'quasar'
64
+
65
+ const props = defineProps<
66
+ QInputProps & {
67
+ modelValue?: string | number | null
68
+ label?: string
69
+ placeholder?: string
70
+ rules?: ((val: string | number | null | undefined) => boolean | string)[]
71
+ inputClass?: string
72
+ required?: boolean
73
+ readonly?: boolean
74
+ disable?: boolean
75
+ uuid?: boolean
76
+ clearable?: boolean
77
+ copyable?: boolean
78
+ error?: boolean
79
+ autocomplete?: string
80
+ }
81
+ >()
82
+
83
+ const emit = defineEmits<{
84
+ (e: 'update:modelValue', val?: string | number | null): void
85
+ (e: 'blur', val?: string | number | null): void
86
+ }>()
87
+
88
+ const $q = useQuasar()
89
+
90
+ const isVisiblePass = ref(false)
91
+
92
+ const model = computed({
93
+ get: () => getValue(props.modelValue),
94
+ set: (newValue?: string | number | null) => emit('update:modelValue', getValue(newValue)),
95
+ })
96
+
97
+ const inputType = computed(() => (props.type === 'password' && isVisiblePass.value ? 'text' : props.type))
98
+
99
+ const getValue = (value?: string | number | null) => {
100
+ if (props.type === 'number') return value ? +value : value
101
+
102
+ return value
103
+ }
104
+
105
+ const copyToClipboard = () => {
106
+ if (!model.value && model.value !== 0) return
107
+
108
+ navigator.clipboard.writeText(model.value.toString()).then(() => {
109
+ $q.notify(notificationSettings('success', 'Данные скопированы'))
110
+ })
111
+ }
112
+ </script>
113
+
114
+ <style scoped lang="scss">
115
+ .app-input-new {
116
+ display: flex;
117
+ flex-direction: column;
118
+ margin-bottom: 15px;
119
+
120
+ &__label {
121
+ font-size: 14px;
122
+ font-weight: 700;
123
+ color: #7d8592;
124
+ }
125
+
126
+ .required {
127
+ color: #f65160;
128
+ font-weight: bold;
129
+ }
130
+
131
+ .clear-input {
132
+ color: #d8e0f0;
133
+ }
134
+
135
+ .uuid-btn {
136
+ height: 32px;
137
+ padding: 0 10px;
138
+ border: 1px solid #3f8cff;
139
+ color: #3f8cff;
140
+ font-weight: 700;
141
+ font-size: 14px;
142
+ background: white;
143
+ border-radius: 6px;
144
+
145
+ :deep(.block) {
146
+ line-height: normal;
147
+ }
148
+ }
149
+
150
+ :deep(.q-placeholder) {
151
+ color: #7d8592;
152
+ }
153
+
154
+ :deep(.q-field__control) {
155
+ min-height: 58px;
156
+ border-radius: 8px;
157
+ border: 1px solid #d8e0f0;
158
+ background: #fff;
159
+ box-shadow: 0 1px 2px 0 rgba(184, 200, 224, 0.22);
160
+ }
161
+
162
+ :deep(.q-field--filled .q-field__control:before) {
163
+ background: #fff !important;
164
+ border: none;
165
+ }
166
+
167
+ :deep(.q-field--with-bottom) {
168
+ padding-bottom: 0;
169
+ }
170
+
171
+ :deep(.q-field__bottom) {
172
+ padding: 0;
173
+ }
174
+ }
175
+ </style>
@@ -3,6 +3,7 @@
3
3
  <q-toolbar :class="$style.toolbar">
4
4
  <h1>{{ pageTitle }}</h1>
5
5
  <div :class="$style['action-buttons']">
6
+ {{ settingsMenuItems.find(x => x.name === 'root' && x.isShow()) }}
6
7
  <div :class="$style['person']" @click="clickProfile">
7
8
  <app-icon name="person-icon" />
8
9
  <div :class="$style['person__info']">
@@ -27,7 +28,7 @@
27
28
  <q-menu max-height="160px" :offset="[-18, 4]" :class="$style['settings-menu']">
28
29
  <q-list v-for="item in settingsMenuItems" :key="item.name" :class="$style['settings-menu__list']">
29
30
  <q-item
30
- v-show="item.isShow"
31
+ v-show="item.isShow()"
31
32
  v-close-popup
32
33
  :class="$style['settings-menu__item']"
33
34
  clickable
@@ -54,7 +55,7 @@ interface Props {
54
55
  userData: any
55
56
  fullWidth?: boolean
56
57
  pageTitle?: string
57
- settingsMenuItems?: { label: string; name: string; isShow: boolean }[]
58
+ settingsMenuItems?: { label: string; name: string; isShow: () => boolean }[]
58
59
  }
59
60
 
60
61
  const emits = defineEmits(['clickSettingsMenuItem', 'clickNotification', 'clickProfile'])