shared-ritm 1.3.114 → 1.3.115

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 (77) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/shared-ritm.es.js +14 -11
  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/types/Api_Auth.ts +121 -121
  18. package/src/api/types/Api_Controls.ts +112 -112
  19. package/src/api/types/Api_Equipment.ts +54 -50
  20. package/src/api/types/Api_Instruments.ts +182 -182
  21. package/src/api/types/Api_Metrics.ts +84 -84
  22. package/src/api/types/Api_Repairs.ts +200 -200
  23. package/src/api/types/Api_Search.ts +81 -81
  24. package/src/api/types/Api_Tasks.ts +376 -376
  25. package/src/api/types/Api_User.ts +160 -160
  26. package/src/api/types/Api_User_Issue.ts +36 -36
  27. package/src/api/types/Api_Video.ts +244 -244
  28. package/src/common/app-button/Button.stories.ts +369 -369
  29. package/src/common/app-checkbox/AppCheckbox.vue +31 -31
  30. package/src/common/app-checkbox/Checkbox.stories.ts +252 -252
  31. package/src/common/app-date-picker/DatePicker.stories.ts +66 -66
  32. package/src/common/app-datepicker/Datepicker.stories.ts +145 -145
  33. package/src/common/app-dialogs/AppConfirmDialog.vue +109 -109
  34. package/src/common/app-dialogs/Confirm.stories.ts +93 -93
  35. package/src/common/app-dropdown/Dropdown.stories.ts +94 -94
  36. package/src/common/app-file/File.stories.ts +104 -104
  37. package/src/common/app-icon/AppIcon.vue +110 -110
  38. package/src/common/app-icon/Icon.stories.ts +91 -91
  39. package/src/common/app-input/Input.stories.ts +160 -160
  40. package/src/common/app-input-new/AppInputNew.vue +181 -181
  41. package/src/common/app-input-new/InputNew.stories.ts +240 -240
  42. package/src/common/app-input-search/InputSearch.stories.ts +149 -149
  43. package/src/common/app-layout/components/AppLayoutHeader.vue +289 -289
  44. package/src/common/app-loader/Loader.stories.ts +114 -114
  45. package/src/common/app-modal/index.vue +101 -101
  46. package/src/common/app-select/Select.stories.ts +155 -155
  47. package/src/common/app-sidebar/AppSidebar.vue +174 -174
  48. package/src/common/app-table/AppTable.vue +313 -313
  49. package/src/common/app-table/components/ModalSelect.stories.ts +323 -323
  50. package/src/common/app-table/components/ModalSelect.vue +302 -302
  51. package/src/common/app-table/components/TableModal.vue +369 -369
  52. package/src/common/app-table/controllers/useColumnSelector.ts +45 -45
  53. package/src/common/app-table/controllers/useTableModel.ts +97 -97
  54. package/src/common/app-toggle/AppToggle.vue +12 -12
  55. package/src/common/app-toggle/Toggle.stories.ts +245 -245
  56. package/src/common/app-wrapper/AppWrapper.vue +31 -31
  57. package/src/configs/storybook.ts +14 -14
  58. package/src/icons/sidebar/user-requests-icon.vue +23 -23
  59. package/src/index.ts +134 -134
  60. package/src/shared/styles/general.css +140 -140
  61. package/src/styles/variables.sass +12 -12
  62. package/src/utils/files.ts +38 -38
  63. package/src/utils/helpers.ts +59 -59
  64. package/dist/types/api/services/PhotoService.d.ts +0 -40
  65. package/dist/types/stories/Button.stories.d.ts +0 -13
  66. package/dist/types/stories/Checkbox.stories.d.ts +0 -7
  67. package/dist/types/stories/Confirm.stories.d.ts +0 -8
  68. package/dist/types/stories/DatePicker.stories.d.ts +0 -8
  69. package/dist/types/stories/Dropdown.stories.d.ts +0 -8
  70. package/dist/types/stories/File.stories.d.ts +0 -8
  71. package/dist/types/stories/Icon.stories.d.ts +0 -7
  72. package/dist/types/stories/Input.stories.d.ts +0 -11
  73. package/dist/types/stories/InputNew.stories.d.ts +0 -12
  74. package/dist/types/stories/InputSearch.stories.d.ts +0 -10
  75. package/dist/types/stories/Loader.stories.d.ts +0 -8
  76. package/dist/types/stories/Select.stories.d.ts +0 -7
  77. 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
+ }