shared-ritm 1.3.114 → 1.3.116

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 (78) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/shared-ritm.es.js +16 -12
  3. package/dist/shared-ritm.umd.js +3 -3
  4. package/dist/types/api/services/EquipmentService.d.ts +1 -0
  5. package/dist/types/api/types/Api_Equipment.d.ts +12 -8
  6. package/package.json +70 -70
  7. package/src/App.vue +2461 -2461
  8. package/src/api/services/AuthService.ts +67 -67
  9. package/src/api/services/ControlsService.ts +100 -100
  10. package/src/api/services/EquipmentService.ts +68 -64
  11. package/src/api/services/InstrumentsService.ts +76 -76
  12. package/src/api/services/MetricsService.ts +148 -148
  13. package/src/api/services/RepairsService.ts +111 -111
  14. package/src/api/services/UserIssueService.ts +32 -32
  15. package/src/api/services/UserService.ts +129 -129
  16. package/src/api/services/VideoService.ts +118 -118
  17. package/src/api/settings/ApiService.ts +2 -1
  18. package/src/api/types/Api_Auth.ts +121 -121
  19. package/src/api/types/Api_Controls.ts +112 -112
  20. package/src/api/types/Api_Equipment.ts +54 -50
  21. package/src/api/types/Api_Instruments.ts +182 -182
  22. package/src/api/types/Api_Metrics.ts +84 -84
  23. package/src/api/types/Api_Repairs.ts +200 -200
  24. package/src/api/types/Api_Search.ts +81 -81
  25. package/src/api/types/Api_Tasks.ts +376 -376
  26. package/src/api/types/Api_User.ts +160 -160
  27. package/src/api/types/Api_User_Issue.ts +36 -36
  28. package/src/api/types/Api_Video.ts +244 -244
  29. package/src/common/app-button/Button.stories.ts +369 -369
  30. package/src/common/app-checkbox/AppCheckbox.vue +31 -31
  31. package/src/common/app-checkbox/Checkbox.stories.ts +252 -252
  32. package/src/common/app-date-picker/DatePicker.stories.ts +66 -66
  33. package/src/common/app-datepicker/Datepicker.stories.ts +145 -145
  34. package/src/common/app-dialogs/AppConfirmDialog.vue +109 -109
  35. package/src/common/app-dialogs/Confirm.stories.ts +93 -93
  36. package/src/common/app-dropdown/Dropdown.stories.ts +94 -94
  37. package/src/common/app-file/File.stories.ts +104 -104
  38. package/src/common/app-icon/AppIcon.vue +110 -110
  39. package/src/common/app-icon/Icon.stories.ts +91 -91
  40. package/src/common/app-input/Input.stories.ts +160 -160
  41. package/src/common/app-input-new/AppInputNew.vue +181 -181
  42. package/src/common/app-input-new/InputNew.stories.ts +240 -240
  43. package/src/common/app-input-search/InputSearch.stories.ts +149 -149
  44. package/src/common/app-layout/components/AppLayoutHeader.vue +289 -289
  45. package/src/common/app-loader/Loader.stories.ts +114 -114
  46. package/src/common/app-modal/index.vue +101 -101
  47. package/src/common/app-select/Select.stories.ts +155 -155
  48. package/src/common/app-sidebar/AppSidebar.vue +174 -174
  49. package/src/common/app-table/AppTable.vue +313 -313
  50. package/src/common/app-table/components/ModalSelect.stories.ts +323 -323
  51. package/src/common/app-table/components/ModalSelect.vue +302 -302
  52. package/src/common/app-table/components/TableModal.vue +369 -369
  53. package/src/common/app-table/controllers/useColumnSelector.ts +45 -45
  54. package/src/common/app-table/controllers/useTableModel.ts +97 -97
  55. package/src/common/app-toggle/AppToggle.vue +12 -12
  56. package/src/common/app-toggle/Toggle.stories.ts +245 -245
  57. package/src/common/app-wrapper/AppWrapper.vue +31 -31
  58. package/src/configs/storybook.ts +14 -14
  59. package/src/icons/sidebar/user-requests-icon.vue +23 -23
  60. package/src/index.ts +134 -134
  61. package/src/shared/styles/general.css +140 -140
  62. package/src/styles/variables.sass +12 -12
  63. package/src/utils/files.ts +38 -38
  64. package/src/utils/helpers.ts +59 -59
  65. package/dist/types/api/services/PhotoService.d.ts +0 -40
  66. package/dist/types/stories/Button.stories.d.ts +0 -13
  67. package/dist/types/stories/Checkbox.stories.d.ts +0 -7
  68. package/dist/types/stories/Confirm.stories.d.ts +0 -8
  69. package/dist/types/stories/DatePicker.stories.d.ts +0 -8
  70. package/dist/types/stories/Dropdown.stories.d.ts +0 -8
  71. package/dist/types/stories/File.stories.d.ts +0 -8
  72. package/dist/types/stories/Icon.stories.d.ts +0 -7
  73. package/dist/types/stories/Input.stories.d.ts +0 -11
  74. package/dist/types/stories/InputNew.stories.d.ts +0 -12
  75. package/dist/types/stories/InputSearch.stories.d.ts +0 -10
  76. package/dist/types/stories/Loader.stories.d.ts +0 -8
  77. package/dist/types/stories/Select.stories.d.ts +0 -7
  78. package/dist/types/stories/Toggle.stories.d.ts +0 -8
@@ -1,240 +1,240 @@
1
- import type { Meta, StoryObj } from '@storybook/vue3'
2
- import AppInputNew from '@/common/app-input-new/AppInputNew.vue'
3
-
4
- const meta: Meta<typeof AppInputNew> = {
5
- title: 'Components/AppInputNew',
6
- component: AppInputNew,
7
- tags: ['autodocs'],
8
- argTypes: {
9
- label: {
10
- control: 'text',
11
- description: 'Подпись над полем ввода.',
12
- table: { category: '🔤 Текст' },
13
- },
14
- placeholder: {
15
- control: 'text',
16
- description: 'Текст-подсказка внутри поля.',
17
- table: { category: '🔤 Текст' },
18
- },
19
- required: {
20
- control: 'boolean',
21
- description: 'Показывает звёздочку (*) рядом с лейблом.',
22
- table: { category: '🔤 Текст' },
23
- },
24
-
25
- modelValue: {
26
- control: 'text',
27
- },
28
- type: {
29
- control: 'select',
30
- options: ['text', 'password', 'number', 'email', 'tel'],
31
- description: 'Тип HTML-инпута.',
32
- },
33
-
34
- disable: {
35
- control: 'boolean',
36
- table: { category: '⚡ Состояния' },
37
- },
38
- readonly: {
39
- control: 'boolean',
40
- table: { category: '⚡ Состояния' },
41
- },
42
- error: {
43
- control: 'boolean',
44
- table: { category: '⚡ Состояния' },
45
- },
46
- loading: {
47
- control: 'boolean',
48
- table: { category: '⚡ Состояния' },
49
- },
50
-
51
- clearable: {
52
- control: 'boolean',
53
- description: 'Показывает иконку крестика для очистки поля.',
54
- table: { category: '⚙️ Поведение' },
55
- },
56
- copyable: {
57
- control: 'boolean',
58
- description: 'Показывает иконку копирования содержимого в буфер обмена.',
59
- table: { category: '⚙️ Поведение' },
60
- },
61
- uuid: {
62
- control: 'boolean',
63
- description: 'Показывает кнопку "UUID", генерирующую уникальный идентификатор.',
64
- table: { category: '⚙️ Поведение' },
65
- },
66
- debounce: {
67
- control: 'number',
68
- description: 'Задержка в миллисекундах перед эмитом значения.',
69
- table: { category: '⚙️ Поведение' },
70
- },
71
- autocomplete: {
72
- control: 'text',
73
- description: 'Значение атрибута autocomplete (например, "off", "email").',
74
- table: { category: '⚙️ Поведение' },
75
- },
76
-
77
- rules: {
78
- control: false,
79
- description: 'Массив функций валидации.',
80
- },
81
-
82
- inputClass: {
83
- control: 'text',
84
- description: 'Дополнительные CSS-классы для q-input.',
85
- },
86
- },
87
- args: {
88
- label: 'Имя',
89
- placeholder: 'Введите имя...',
90
- modelValue: '',
91
- type: 'text',
92
- required: false,
93
- disable: false,
94
- readonly: false,
95
- error: false,
96
- loading: false,
97
- clearable: true,
98
- copyable: false,
99
- uuid: false,
100
- debounce: 0,
101
- autocomplete: 'off',
102
- },
103
- }
104
-
105
- export default meta
106
-
107
- type Story = StoryObj<typeof AppInputNew>
108
-
109
- export const Default: Story = {}
110
-
111
- export const InputTypes: Story = {
112
- render: () => ({
113
- components: { AppInputNew },
114
- template: `
115
- <div style="display: flex; flex-direction: column; gap: 20px;">
116
- <AppInputNew v-model="textValue" label="Текст" placeholder="Обычное текстовое поле" />
117
- <AppInputNew v-model="passwordValue" label="Пароль" type="password" placeholder="••••••••" />
118
- <AppInputNew v-model="emailValue" label="Email" type="email" placeholder="user@example.com" />
119
- <AppInputNew v-model="telValue" label="Телефон" type="tel" placeholder="+7 (999) 000-00-00" />
120
- <AppInputNew v-model="numberValue" label="Число" type="number" placeholder="Только цифры" />
121
- </div>
122
- `,
123
- data() {
124
- return {
125
- textValue: '',
126
- passwordValue: '',
127
- emailValue: '',
128
- telValue: '',
129
- numberValue: null as number | null,
130
- }
131
- },
132
- }),
133
- }
134
-
135
- export const Features: Story = {
136
- render: () => ({
137
- components: { AppInputNew },
138
- template: `
139
- <div style="display: flex; flex-direction: column; gap: 20px;">
140
- <AppInputNew
141
- v-model="clearableValue"
142
- label="С очисткой"
143
- placeholder="Напишите что-нибудь"
144
- :clearable="true"
145
- />
146
- <AppInputNew
147
- v-model="copyableValue"
148
- label="С копированием"
149
- placeholder="Скопируйте меня"
150
- :copyable="true"
151
- />
152
- <AppInputNew
153
- v-model="uuidValue"
154
- label="С генерацией UUID"
155
- placeholder="Нажмите UUID"
156
- :uuid="true"
157
- />
158
- </div>
159
- `,
160
- data() {
161
- return {
162
- clearableValue: 'Текст для очистки',
163
- copyableValue: 'secret-token-123',
164
- uuidValue: '',
165
- }
166
- },
167
- }),
168
- }
169
-
170
- export const States: Story = {
171
- render: () => ({
172
- components: { AppInputNew },
173
- template: `
174
- <div style="display: flex; flex-direction: column; gap: 20px;">
175
- <AppInputNew v-model="activeValue" label="Обычное" placeholder="Активное поле" />
176
- <AppInputNew v-model="disabledValue" label="Отключено" placeholder="Недоступно" :disable="true" />
177
- <AppInputNew v-model="readonlyValue" label="Только для чтения" placeholder="Нельзя редактировать" :readonly="true" />
178
- <AppInputNew v-model="errorValue" label="С ошибкой" placeholder="Ошибка валидации" :error="true" />
179
- <AppInputNew v-model="loadingValue" label="Загрузка" placeholder="Загружается..." :loading="true" />
180
- </div>
181
- `,
182
- data() {
183
- return {
184
- activeValue: '',
185
- disabledValue: 'недоступно',
186
- readonlyValue: 'только чтение',
187
- errorValue: 'ошибка!',
188
- loadingValue: 'загрузка...',
189
- }
190
- },
191
- }),
192
- }
193
-
194
- export const WithLabel: Story = {
195
- render: () => ({
196
- components: { AppInputNew },
197
- template: `
198
- <AppInputNew v-model="requiredValue" label="Обязательное поле" :required="true" placeholder="Это поле обязательно" />
199
- `,
200
- data() {
201
- return {
202
- requiredValue: '',
203
- }
204
- },
205
- }),
206
- }
207
-
208
- export const Password: Story = {
209
- render: () => ({
210
- components: { AppInputNew },
211
- template: `
212
- <AppInputNew v-model="password" label="Пароль" type="password" />
213
- `,
214
- data() {
215
- return {
216
- password: '',
217
- }
218
- },
219
- }),
220
- }
221
-
222
- export const WithAppendSlot: Story = {
223
- render: () => ({
224
- components: { AppInputNew },
225
- template: `
226
- <AppInputNew v-model="slotValue" label="С кастомным append">
227
- <template #append>
228
- <span style="background: #eef4ff; padding: 0 8px; border-radius: 4px; font-size: 14px; color: #3f8cff;">
229
- RUB
230
- </span>
231
- </template>
232
- </AppInputNew>
233
- `,
234
- data() {
235
- return {
236
- slotValue: '',
237
- }
238
- },
239
- }),
240
- }
1
+ import type { Meta, StoryObj } from '@storybook/vue3'
2
+ import AppInputNew from '@/common/app-input-new/AppInputNew.vue'
3
+
4
+ const meta: Meta<typeof AppInputNew> = {
5
+ title: 'Components/AppInputNew',
6
+ component: AppInputNew,
7
+ tags: ['autodocs'],
8
+ argTypes: {
9
+ label: {
10
+ control: 'text',
11
+ description: 'Подпись над полем ввода.',
12
+ table: { category: '🔤 Текст' },
13
+ },
14
+ placeholder: {
15
+ control: 'text',
16
+ description: 'Текст-подсказка внутри поля.',
17
+ table: { category: '🔤 Текст' },
18
+ },
19
+ required: {
20
+ control: 'boolean',
21
+ description: 'Показывает звёздочку (*) рядом с лейблом.',
22
+ table: { category: '🔤 Текст' },
23
+ },
24
+
25
+ modelValue: {
26
+ control: 'text',
27
+ },
28
+ type: {
29
+ control: 'select',
30
+ options: ['text', 'password', 'number', 'email', 'tel'],
31
+ description: 'Тип HTML-инпута.',
32
+ },
33
+
34
+ disable: {
35
+ control: 'boolean',
36
+ table: { category: '⚡ Состояния' },
37
+ },
38
+ readonly: {
39
+ control: 'boolean',
40
+ table: { category: '⚡ Состояния' },
41
+ },
42
+ error: {
43
+ control: 'boolean',
44
+ table: { category: '⚡ Состояния' },
45
+ },
46
+ loading: {
47
+ control: 'boolean',
48
+ table: { category: '⚡ Состояния' },
49
+ },
50
+
51
+ clearable: {
52
+ control: 'boolean',
53
+ description: 'Показывает иконку крестика для очистки поля.',
54
+ table: { category: '⚙️ Поведение' },
55
+ },
56
+ copyable: {
57
+ control: 'boolean',
58
+ description: 'Показывает иконку копирования содержимого в буфер обмена.',
59
+ table: { category: '⚙️ Поведение' },
60
+ },
61
+ uuid: {
62
+ control: 'boolean',
63
+ description: 'Показывает кнопку "UUID", генерирующую уникальный идентификатор.',
64
+ table: { category: '⚙️ Поведение' },
65
+ },
66
+ debounce: {
67
+ control: 'number',
68
+ description: 'Задержка в миллисекундах перед эмитом значения.',
69
+ table: { category: '⚙️ Поведение' },
70
+ },
71
+ autocomplete: {
72
+ control: 'text',
73
+ description: 'Значение атрибута autocomplete (например, "off", "email").',
74
+ table: { category: '⚙️ Поведение' },
75
+ },
76
+
77
+ rules: {
78
+ control: false,
79
+ description: 'Массив функций валидации.',
80
+ },
81
+
82
+ inputClass: {
83
+ control: 'text',
84
+ description: 'Дополнительные CSS-классы для q-input.',
85
+ },
86
+ },
87
+ args: {
88
+ label: 'Имя',
89
+ placeholder: 'Введите имя...',
90
+ modelValue: '',
91
+ type: 'text',
92
+ required: false,
93
+ disable: false,
94
+ readonly: false,
95
+ error: false,
96
+ loading: false,
97
+ clearable: true,
98
+ copyable: false,
99
+ uuid: false,
100
+ debounce: 0,
101
+ autocomplete: 'off',
102
+ },
103
+ }
104
+
105
+ export default meta
106
+
107
+ type Story = StoryObj<typeof AppInputNew>
108
+
109
+ export const Default: Story = {}
110
+
111
+ export const InputTypes: Story = {
112
+ render: () => ({
113
+ components: { AppInputNew },
114
+ template: `
115
+ <div style="display: flex; flex-direction: column; gap: 20px;">
116
+ <AppInputNew v-model="textValue" label="Текст" placeholder="Обычное текстовое поле" />
117
+ <AppInputNew v-model="passwordValue" label="Пароль" type="password" placeholder="••••••••" />
118
+ <AppInputNew v-model="emailValue" label="Email" type="email" placeholder="user@example.com" />
119
+ <AppInputNew v-model="telValue" label="Телефон" type="tel" placeholder="+7 (999) 000-00-00" />
120
+ <AppInputNew v-model="numberValue" label="Число" type="number" placeholder="Только цифры" />
121
+ </div>
122
+ `,
123
+ data() {
124
+ return {
125
+ textValue: '',
126
+ passwordValue: '',
127
+ emailValue: '',
128
+ telValue: '',
129
+ numberValue: null as number | null,
130
+ }
131
+ },
132
+ }),
133
+ }
134
+
135
+ export const Features: Story = {
136
+ render: () => ({
137
+ components: { AppInputNew },
138
+ template: `
139
+ <div style="display: flex; flex-direction: column; gap: 20px;">
140
+ <AppInputNew
141
+ v-model="clearableValue"
142
+ label="С очисткой"
143
+ placeholder="Напишите что-нибудь"
144
+ :clearable="true"
145
+ />
146
+ <AppInputNew
147
+ v-model="copyableValue"
148
+ label="С копированием"
149
+ placeholder="Скопируйте меня"
150
+ :copyable="true"
151
+ />
152
+ <AppInputNew
153
+ v-model="uuidValue"
154
+ label="С генерацией UUID"
155
+ placeholder="Нажмите UUID"
156
+ :uuid="true"
157
+ />
158
+ </div>
159
+ `,
160
+ data() {
161
+ return {
162
+ clearableValue: 'Текст для очистки',
163
+ copyableValue: 'secret-token-123',
164
+ uuidValue: '',
165
+ }
166
+ },
167
+ }),
168
+ }
169
+
170
+ export const States: Story = {
171
+ render: () => ({
172
+ components: { AppInputNew },
173
+ template: `
174
+ <div style="display: flex; flex-direction: column; gap: 20px;">
175
+ <AppInputNew v-model="activeValue" label="Обычное" placeholder="Активное поле" />
176
+ <AppInputNew v-model="disabledValue" label="Отключено" placeholder="Недоступно" :disable="true" />
177
+ <AppInputNew v-model="readonlyValue" label="Только для чтения" placeholder="Нельзя редактировать" :readonly="true" />
178
+ <AppInputNew v-model="errorValue" label="С ошибкой" placeholder="Ошибка валидации" :error="true" />
179
+ <AppInputNew v-model="loadingValue" label="Загрузка" placeholder="Загружается..." :loading="true" />
180
+ </div>
181
+ `,
182
+ data() {
183
+ return {
184
+ activeValue: '',
185
+ disabledValue: 'недоступно',
186
+ readonlyValue: 'только чтение',
187
+ errorValue: 'ошибка!',
188
+ loadingValue: 'загрузка...',
189
+ }
190
+ },
191
+ }),
192
+ }
193
+
194
+ export const WithLabel: Story = {
195
+ render: () => ({
196
+ components: { AppInputNew },
197
+ template: `
198
+ <AppInputNew v-model="requiredValue" label="Обязательное поле" :required="true" placeholder="Это поле обязательно" />
199
+ `,
200
+ data() {
201
+ return {
202
+ requiredValue: '',
203
+ }
204
+ },
205
+ }),
206
+ }
207
+
208
+ export const Password: Story = {
209
+ render: () => ({
210
+ components: { AppInputNew },
211
+ template: `
212
+ <AppInputNew v-model="password" label="Пароль" type="password" />
213
+ `,
214
+ data() {
215
+ return {
216
+ password: '',
217
+ }
218
+ },
219
+ }),
220
+ }
221
+
222
+ export const WithAppendSlot: Story = {
223
+ render: () => ({
224
+ components: { AppInputNew },
225
+ template: `
226
+ <AppInputNew v-model="slotValue" label="С кастомным append">
227
+ <template #append>
228
+ <span style="background: #eef4ff; padding: 0 8px; border-radius: 4px; font-size: 14px; color: #3f8cff;">
229
+ RUB
230
+ </span>
231
+ </template>
232
+ </AppInputNew>
233
+ `,
234
+ data() {
235
+ return {
236
+ slotValue: '',
237
+ }
238
+ },
239
+ }),
240
+ }