shared-ritm 1.3.117 → 1.3.118

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 (76) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/shared-ritm.es.js +11 -11
  3. package/dist/shared-ritm.umd.js +2 -2
  4. package/dist/types/api/services/PhotoService.d.ts +40 -0
  5. package/dist/types/api/types/Api_Tasks.d.ts +2 -0
  6. package/dist/types/stories/Button.stories.d.ts +13 -0
  7. package/dist/types/stories/Checkbox.stories.d.ts +7 -0
  8. package/dist/types/stories/Confirm.stories.d.ts +8 -0
  9. package/dist/types/stories/DatePicker.stories.d.ts +8 -0
  10. package/dist/types/stories/Dropdown.stories.d.ts +8 -0
  11. package/dist/types/stories/File.stories.d.ts +8 -0
  12. package/dist/types/stories/Icon.stories.d.ts +7 -0
  13. package/dist/types/stories/Input.stories.d.ts +11 -0
  14. package/dist/types/stories/InputNew.stories.d.ts +12 -0
  15. package/dist/types/stories/InputSearch.stories.d.ts +10 -0
  16. package/dist/types/stories/Loader.stories.d.ts +8 -0
  17. package/dist/types/stories/Select.stories.d.ts +7 -0
  18. package/dist/types/stories/Toggle.stories.d.ts +8 -0
  19. package/package.json +70 -70
  20. package/src/App.vue +2461 -2461
  21. package/src/api/services/AuthService.ts +67 -67
  22. package/src/api/services/ControlsService.ts +100 -100
  23. package/src/api/services/EquipmentService.ts +68 -68
  24. package/src/api/services/InstrumentsService.ts +76 -76
  25. package/src/api/services/MetricsService.ts +148 -148
  26. package/src/api/services/RepairsService.ts +111 -111
  27. package/src/api/services/UserIssueService.ts +32 -32
  28. package/src/api/services/UserService.ts +129 -129
  29. package/src/api/services/VideoService.ts +118 -118
  30. package/src/api/types/Api_Auth.ts +121 -121
  31. package/src/api/types/Api_Controls.ts +112 -112
  32. package/src/api/types/Api_Equipment.ts +54 -54
  33. package/src/api/types/Api_Instruments.ts +182 -182
  34. package/src/api/types/Api_Metrics.ts +84 -84
  35. package/src/api/types/Api_Repairs.ts +200 -200
  36. package/src/api/types/Api_Search.ts +81 -81
  37. package/src/api/types/Api_Tasks.ts +378 -376
  38. package/src/api/types/Api_User.ts +160 -160
  39. package/src/api/types/Api_User_Issue.ts +36 -36
  40. package/src/api/types/Api_Video.ts +244 -244
  41. package/src/common/app-button/Button.stories.ts +369 -369
  42. package/src/common/app-checkbox/AppCheckbox.vue +31 -31
  43. package/src/common/app-checkbox/Checkbox.stories.ts +252 -252
  44. package/src/common/app-date-picker/DatePicker.stories.ts +66 -66
  45. package/src/common/app-datepicker/Datepicker.stories.ts +145 -145
  46. package/src/common/app-dialogs/AppConfirmDialog.vue +109 -109
  47. package/src/common/app-dialogs/Confirm.stories.ts +93 -93
  48. package/src/common/app-dropdown/Dropdown.stories.ts +94 -94
  49. package/src/common/app-file/File.stories.ts +104 -104
  50. package/src/common/app-icon/AppIcon.vue +110 -110
  51. package/src/common/app-icon/Icon.stories.ts +91 -91
  52. package/src/common/app-input/Input.stories.ts +160 -160
  53. package/src/common/app-input-new/AppInputNew.vue +181 -181
  54. package/src/common/app-input-new/InputNew.stories.ts +240 -240
  55. package/src/common/app-input-search/InputSearch.stories.ts +149 -149
  56. package/src/common/app-layout/components/AppLayoutHeader.vue +289 -289
  57. package/src/common/app-loader/Loader.stories.ts +114 -114
  58. package/src/common/app-modal/index.vue +101 -101
  59. package/src/common/app-select/Select.stories.ts +155 -155
  60. package/src/common/app-sidebar/AppSidebar.vue +174 -174
  61. package/src/common/app-table/AppTable.vue +313 -313
  62. package/src/common/app-table/components/ModalSelect.stories.ts +323 -323
  63. package/src/common/app-table/components/ModalSelect.vue +302 -302
  64. package/src/common/app-table/components/TableModal.vue +369 -369
  65. package/src/common/app-table/controllers/useColumnSelector.ts +45 -45
  66. package/src/common/app-table/controllers/useTableModel.ts +97 -97
  67. package/src/common/app-toggle/AppToggle.vue +12 -12
  68. package/src/common/app-toggle/Toggle.stories.ts +245 -245
  69. package/src/common/app-wrapper/AppWrapper.vue +31 -31
  70. package/src/configs/storybook.ts +14 -14
  71. package/src/icons/sidebar/user-requests-icon.vue +23 -23
  72. package/src/index.ts +134 -134
  73. package/src/shared/styles/general.css +140 -140
  74. package/src/styles/variables.sass +12 -12
  75. package/src/utils/files.ts +38 -38
  76. package/src/utils/helpers.ts +59 -59
@@ -1,114 +1,114 @@
1
- import type { Meta, StoryObj } from '@storybook/vue3'
2
- import AppLoader from '@/common/app-loader/index.vue'
3
-
4
- const meta: Meta<typeof AppLoader> = {
5
- title: 'Components/AppLoader',
6
- component: AppLoader,
7
- tags: ['autodocs'],
8
- argTypes: {
9
- loading: {
10
- control: 'boolean',
11
- description: 'Показывать ли спиннер',
12
- },
13
- backdrop: {
14
- control: 'boolean',
15
- description: 'Показывать затемнение фона при загрузке',
16
- table: { disable: true },
17
- },
18
- size: {
19
- control: 'select',
20
- options: ['xs', 'sm', 'md', 'lg', 'xl'],
21
- description: 'Размер спиннера',
22
- },
23
- thickness: {
24
- control: 'number',
25
- description: 'Толщина линии спиннера (в px)',
26
- },
27
- },
28
- args: {
29
- loading: true,
30
- backdrop: false,
31
- size: 'md',
32
- thickness: 2,
33
- },
34
- }
35
-
36
- export default meta
37
- type Story = StoryObj<typeof AppLoader>
38
-
39
- export const GlobalLoader: Story = {
40
- render: args => ({
41
- components: { AppLoader },
42
- setup() {
43
- return { args }
44
- },
45
- template: `
46
- <div style="position: relative; height: 300px;">
47
- <app-loader v-bind="args" />
48
-
49
- <h2>Контент страницы</h2>
50
- </div>
51
- `,
52
- }),
53
- args: {
54
- loading: true,
55
- backdrop: true,
56
- size: 'lg',
57
- },
58
- }
59
-
60
- export const Size: Story = {
61
- render: () => ({
62
- components: { AppLoader },
63
- template: `
64
- <div style="display: flex; flex-wrap: wrap; gap: 32px; padding: 24px; background: white;">
65
- <div style="text-align: center; width: 100px; height: 100px; position: relative; border: 1px solid #eee; border-radius: 8px;">
66
- <app-loader :loading="true" size="xs" />
67
- <div style="margin-top: 8px; font-size: 12px; color: #666;">xs</div>
68
- </div>
69
- <div style="text-align: center; width: 100px; height: 100px; position: relative; border: 1px solid #eee; border-radius: 8px;">
70
- <app-loader :loading="true" size="sm" />
71
- <div style="margin-top: 8px; font-size: 12px; color: #666;">sm</div>
72
- </div>
73
- <div style="text-align: center; width: 100px; height: 100px; position: relative; border: 1px solid #eee; border-radius: 8px;">
74
- <app-loader :loading="true" size="md" />
75
- <div style="margin-top: 8px; font-size: 12px; color: #666;">md</div>
76
- </div>
77
- <div style="text-align: center; width: 100px; height: 100px; position: relative; border: 1px solid #eee; border-radius: 8px;">
78
- <app-loader :loading="true" size="lg" />
79
- <div style="margin-top: 8px; font-size: 12px; color: #666;">lg</div>
80
- </div>
81
- <div style="text-align: center; width: 100px; height: 100px; position: relative; border: 1px solid #eee; border-radius: 8px;">
82
- <app-loader :loading="true" size="xl" />
83
- <div style="margin-top: 8px; font-size: 12px; color: #666;">xl</div>
84
- </div>
85
- </div>
86
- `,
87
- }),
88
- }
89
-
90
- export const Thickness: Story = {
91
- render: () => ({
92
- components: { AppLoader },
93
- template: `
94
- <div style="display: flex; flex-wrap: wrap; gap: 32px; padding: 24px; background: white;">
95
- <div style="text-align: center; width: 120px; height: 120px; position: relative; border: 1px solid #eee; border-radius: 8px;">
96
- <app-loader :loading="true" size="lg" :thickness="1" />
97
- <div style="margin-top: 8px; font-size: 12px; color: #666;">thickness=1</div>
98
- </div>
99
- <div style="text-align: center; width: 120px; height: 120px; position: relative; border: 1px solid #eee; border-radius: 8px;">
100
- <app-loader :loading="true" size="lg" :thickness="2" />
101
- <div style="margin-top: 8px; font-size: 12px; color: #666;">thickness=2</div>
102
- </div>
103
- <div style="text-align: center; width: 120px; height: 120px; position: relative; border: 1px solid #eee; border-radius: 8px;">
104
- <app-loader :loading="true" size="lg" :thickness="3" />
105
- <div style="margin-top: 8px; font-size: 12px; color: #666;">thickness=3</div>
106
- </div>
107
- <div style="text-align: center; width: 120px; height: 120px; position: relative; border: 1px solid #eee; border-radius: 8px;">
108
- <app-loader :loading="true" size="lg" :thickness="5" />
109
- <div style="margin-top: 8px; font-size: 12px; color: #666;">thickness=5</div>
110
- </div>
111
- </div>
112
- `,
113
- }),
114
- }
1
+ import type { Meta, StoryObj } from '@storybook/vue3'
2
+ import AppLoader from '@/common/app-loader/index.vue'
3
+
4
+ const meta: Meta<typeof AppLoader> = {
5
+ title: 'Components/AppLoader',
6
+ component: AppLoader,
7
+ tags: ['autodocs'],
8
+ argTypes: {
9
+ loading: {
10
+ control: 'boolean',
11
+ description: 'Показывать ли спиннер',
12
+ },
13
+ backdrop: {
14
+ control: 'boolean',
15
+ description: 'Показывать затемнение фона при загрузке',
16
+ table: { disable: true },
17
+ },
18
+ size: {
19
+ control: 'select',
20
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
21
+ description: 'Размер спиннера',
22
+ },
23
+ thickness: {
24
+ control: 'number',
25
+ description: 'Толщина линии спиннера (в px)',
26
+ },
27
+ },
28
+ args: {
29
+ loading: true,
30
+ backdrop: false,
31
+ size: 'md',
32
+ thickness: 2,
33
+ },
34
+ }
35
+
36
+ export default meta
37
+ type Story = StoryObj<typeof AppLoader>
38
+
39
+ export const GlobalLoader: Story = {
40
+ render: args => ({
41
+ components: { AppLoader },
42
+ setup() {
43
+ return { args }
44
+ },
45
+ template: `
46
+ <div style="position: relative; height: 300px;">
47
+ <app-loader v-bind="args" />
48
+
49
+ <h2>Контент страницы</h2>
50
+ </div>
51
+ `,
52
+ }),
53
+ args: {
54
+ loading: true,
55
+ backdrop: true,
56
+ size: 'lg',
57
+ },
58
+ }
59
+
60
+ export const Size: Story = {
61
+ render: () => ({
62
+ components: { AppLoader },
63
+ template: `
64
+ <div style="display: flex; flex-wrap: wrap; gap: 32px; padding: 24px; background: white;">
65
+ <div style="text-align: center; width: 100px; height: 100px; position: relative; border: 1px solid #eee; border-radius: 8px;">
66
+ <app-loader :loading="true" size="xs" />
67
+ <div style="margin-top: 8px; font-size: 12px; color: #666;">xs</div>
68
+ </div>
69
+ <div style="text-align: center; width: 100px; height: 100px; position: relative; border: 1px solid #eee; border-radius: 8px;">
70
+ <app-loader :loading="true" size="sm" />
71
+ <div style="margin-top: 8px; font-size: 12px; color: #666;">sm</div>
72
+ </div>
73
+ <div style="text-align: center; width: 100px; height: 100px; position: relative; border: 1px solid #eee; border-radius: 8px;">
74
+ <app-loader :loading="true" size="md" />
75
+ <div style="margin-top: 8px; font-size: 12px; color: #666;">md</div>
76
+ </div>
77
+ <div style="text-align: center; width: 100px; height: 100px; position: relative; border: 1px solid #eee; border-radius: 8px;">
78
+ <app-loader :loading="true" size="lg" />
79
+ <div style="margin-top: 8px; font-size: 12px; color: #666;">lg</div>
80
+ </div>
81
+ <div style="text-align: center; width: 100px; height: 100px; position: relative; border: 1px solid #eee; border-radius: 8px;">
82
+ <app-loader :loading="true" size="xl" />
83
+ <div style="margin-top: 8px; font-size: 12px; color: #666;">xl</div>
84
+ </div>
85
+ </div>
86
+ `,
87
+ }),
88
+ }
89
+
90
+ export const Thickness: Story = {
91
+ render: () => ({
92
+ components: { AppLoader },
93
+ template: `
94
+ <div style="display: flex; flex-wrap: wrap; gap: 32px; padding: 24px; background: white;">
95
+ <div style="text-align: center; width: 120px; height: 120px; position: relative; border: 1px solid #eee; border-radius: 8px;">
96
+ <app-loader :loading="true" size="lg" :thickness="1" />
97
+ <div style="margin-top: 8px; font-size: 12px; color: #666;">thickness=1</div>
98
+ </div>
99
+ <div style="text-align: center; width: 120px; height: 120px; position: relative; border: 1px solid #eee; border-radius: 8px;">
100
+ <app-loader :loading="true" size="lg" :thickness="2" />
101
+ <div style="margin-top: 8px; font-size: 12px; color: #666;">thickness=2</div>
102
+ </div>
103
+ <div style="text-align: center; width: 120px; height: 120px; position: relative; border: 1px solid #eee; border-radius: 8px;">
104
+ <app-loader :loading="true" size="lg" :thickness="3" />
105
+ <div style="margin-top: 8px; font-size: 12px; color: #666;">thickness=3</div>
106
+ </div>
107
+ <div style="text-align: center; width: 120px; height: 120px; position: relative; border: 1px solid #eee; border-radius: 8px;">
108
+ <app-loader :loading="true" size="lg" :thickness="5" />
109
+ <div style="margin-top: 8px; font-size: 12px; color: #666;">thickness=5</div>
110
+ </div>
111
+ </div>
112
+ `,
113
+ }),
114
+ }
@@ -1,101 +1,101 @@
1
- <template>
2
- <q-dialog v-model="model">
3
- <q-card class="modal" :style="{ width, 'max-width': width || 'unset', maxHeight: maxHeight || '600px' }">
4
- <q-card-section class="section">
5
- <div v-if="title" class="title" :class="{ ellipsis }" :title="title" :style="titleStyle">
6
- {{ title }}
7
- </div>
8
-
9
- <slot />
10
-
11
- <div v-if="loading" class="loader-overlay">
12
- <q-spinner-audio class="loader-spinner" size="md" :thickness="3" color="primary" />
13
- </div>
14
- </q-card-section>
15
-
16
- <q-card-actions align="center" class="btn__wrapper">
17
- <slot name="actions" />
18
- </q-card-actions>
19
- </q-card>
20
- </q-dialog>
21
- </template>
22
-
23
- <script setup lang="ts">
24
- import { defineProps, defineEmits, defineModel } from 'vue'
25
-
26
- type Props = {
27
- modelValue?: boolean
28
- title?: string
29
- width?: string
30
- loading?: boolean
31
- maxHeight?: string
32
- ellipsis?: boolean
33
- titleStyle?: string
34
- }
35
-
36
- defineProps<Props>()
37
-
38
- const emit = defineEmits(['update:modelValue'])
39
-
40
- const model = defineModel<boolean>()
41
- </script>
42
-
43
- <style scoped lang="scss">
44
- .modal {
45
- display: grid;
46
- border-radius: 0.5rem;
47
- grid-template-rows: 1fr auto;
48
- font-family: NunitoSansFont, sans-serif;
49
- color: #1d425d;
50
- overflow: hidden;
51
-
52
- .section {
53
- position: relative;
54
- display: grid;
55
- grid-template-rows: auto 1fr;
56
- justify-items: center;
57
- gap: 0.5rem;
58
- background-color: white;
59
- overflow: auto;
60
-
61
- .loader-overlay {
62
- width: 100%;
63
- height: 100%;
64
- position: absolute;
65
- inset: 0;
66
- z-index: 10;
67
- background: rgba(255, 255, 255, 0.8);
68
- display: flex;
69
- align-items: center;
70
- justify-content: center;
71
- }
72
- .loader-spinner {
73
- z-index: 11;
74
- }
75
- }
76
-
77
- .title {
78
- width: 100%;
79
- font-size: 32px;
80
- font-weight: 700;
81
- }
82
-
83
- .btn__wrapper {
84
- width: 100%;
85
- background-color: var(--light-blue);
86
- padding: 1rem;
87
- }
88
- }
89
- </style>
90
-
91
- <style lang="scss">
92
- .modal {
93
- .btn__wrapper {
94
- button {
95
- padding: 13px 37px;
96
- border-radius: 4px;
97
- color: var(--action-text-color);
98
- }
99
- }
100
- }
101
- </style>
1
+ <template>
2
+ <q-dialog v-model="model">
3
+ <q-card class="modal" :style="{ width, 'max-width': width || 'unset', maxHeight: maxHeight || '600px' }">
4
+ <q-card-section class="section">
5
+ <div v-if="title" class="title" :class="{ ellipsis }" :title="title" :style="titleStyle">
6
+ {{ title }}
7
+ </div>
8
+
9
+ <slot />
10
+
11
+ <div v-if="loading" class="loader-overlay">
12
+ <q-spinner-audio class="loader-spinner" size="md" :thickness="3" color="primary" />
13
+ </div>
14
+ </q-card-section>
15
+
16
+ <q-card-actions align="center" class="btn__wrapper">
17
+ <slot name="actions" />
18
+ </q-card-actions>
19
+ </q-card>
20
+ </q-dialog>
21
+ </template>
22
+
23
+ <script setup lang="ts">
24
+ import { defineProps, defineEmits, defineModel } from 'vue'
25
+
26
+ type Props = {
27
+ modelValue?: boolean
28
+ title?: string
29
+ width?: string
30
+ loading?: boolean
31
+ maxHeight?: string
32
+ ellipsis?: boolean
33
+ titleStyle?: string
34
+ }
35
+
36
+ defineProps<Props>()
37
+
38
+ const emit = defineEmits(['update:modelValue'])
39
+
40
+ const model = defineModel<boolean>()
41
+ </script>
42
+
43
+ <style scoped lang="scss">
44
+ .modal {
45
+ display: grid;
46
+ border-radius: 0.5rem;
47
+ grid-template-rows: 1fr auto;
48
+ font-family: NunitoSansFont, sans-serif;
49
+ color: #1d425d;
50
+ overflow: hidden;
51
+
52
+ .section {
53
+ position: relative;
54
+ display: grid;
55
+ grid-template-rows: auto 1fr;
56
+ justify-items: center;
57
+ gap: 0.5rem;
58
+ background-color: white;
59
+ overflow: auto;
60
+
61
+ .loader-overlay {
62
+ width: 100%;
63
+ height: 100%;
64
+ position: absolute;
65
+ inset: 0;
66
+ z-index: 10;
67
+ background: rgba(255, 255, 255, 0.8);
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: center;
71
+ }
72
+ .loader-spinner {
73
+ z-index: 11;
74
+ }
75
+ }
76
+
77
+ .title {
78
+ width: 100%;
79
+ font-size: 32px;
80
+ font-weight: 700;
81
+ }
82
+
83
+ .btn__wrapper {
84
+ width: 100%;
85
+ background-color: var(--light-blue);
86
+ padding: 1rem;
87
+ }
88
+ }
89
+ </style>
90
+
91
+ <style lang="scss">
92
+ .modal {
93
+ .btn__wrapper {
94
+ button {
95
+ padding: 13px 37px;
96
+ border-radius: 4px;
97
+ color: var(--action-text-color);
98
+ }
99
+ }
100
+ }
101
+ </style>