shared-ritm 1.3.122 → 1.3.124

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