@nixweb/nixloc-ui 0.0.300 → 0.0.301

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 (158) hide show
  1. package/package.json +1 -1
  2. package/src/App.vue +13 -0
  3. package/src/component/forms/Button.vue +163 -0
  4. package/src/component/forms/ButtonFilter.vue +75 -0
  5. package/src/component/forms/ButtonGroup.vue +67 -0
  6. package/src/component/forms/ButtonSub.vue +98 -0
  7. package/src/component/forms/ButtonToggle.vue +77 -0
  8. package/src/component/forms/CheckboxGroup.vue +69 -0
  9. package/src/component/forms/CheckboxServer.vue +192 -0
  10. package/src/component/forms/CheckboxSimple.vue +60 -0
  11. package/src/component/forms/Color.vue +38 -0
  12. package/src/component/forms/DateTime.vue +170 -0
  13. package/src/component/forms/DateYearMonth.vue +193 -0
  14. package/src/component/forms/Dropdown.vue +236 -0
  15. package/src/component/forms/EditorHtml.vue +132 -0
  16. package/src/component/forms/FileUpload.vue +170 -0
  17. package/src/component/forms/ImageUpload.vue +214 -0
  18. package/src/component/forms/IncrementDecrement.vue +148 -0
  19. package/src/component/forms/InputAddressGoogle.vue +171 -0
  20. package/src/component/forms/InputCallToAction.vue +135 -0
  21. package/src/component/forms/InputDecimal.vue +153 -0
  22. package/src/component/forms/InputDecimalDiscount.vue +78 -0
  23. package/src/component/forms/InputNumber.vue +160 -0
  24. package/src/component/forms/InputPassword.vue +148 -0
  25. package/src/component/forms/InputTag.vue +125 -0
  26. package/src/component/forms/InputText.vue +174 -0
  27. package/src/component/forms/InputTextEdit.vue +69 -0
  28. package/src/component/forms/InputWhatsApp.vue +48 -0
  29. package/src/component/forms/Modal.vue +57 -0
  30. package/src/component/forms/RadioGroup.vue +91 -0
  31. package/src/component/forms/Select.vue +378 -0
  32. package/src/component/forms/SelectStatic.vue +198 -0
  33. package/src/component/forms/SideBar.vue +100 -0
  34. package/src/component/forms/Slider.vue +18 -0
  35. package/src/component/forms/TextArea.vue +138 -0
  36. package/src/component/forms/Toggle.vue +72 -0
  37. package/src/component/layout/Account.vue +131 -0
  38. package/src/component/layout/Alert.vue +88 -0
  39. package/src/component/layout/Badge.vue +111 -0
  40. package/src/component/layout/BarFloating.vue +68 -0
  41. package/src/component/layout/FixedBar.vue +103 -0
  42. package/src/component/layout/Gantt.vue +128 -0
  43. package/src/component/layout/Header.vue +56 -0
  44. package/src/component/layout/HideShow.vue +62 -0
  45. package/src/component/layout/IconMolded.vue +59 -0
  46. package/src/component/layout/LoadingFullPage.vue +27 -0
  47. package/src/component/layout/Menu.vue +287 -0
  48. package/src/component/layout/Molded.vue +30 -0
  49. package/src/component/layout/NewAccount.vue +136 -0
  50. package/src/component/layout/NewHeader.vue +60 -0
  51. package/src/component/layout/NewIconMolded.vue +71 -0
  52. package/src/component/layout/NewMenu.vue +456 -0
  53. package/src/component/layout/Panel.vue +185 -0
  54. package/src/component/layout/Popover.vue +126 -0
  55. package/src/component/layout/ScrollBar.vue +57 -0
  56. package/src/component/layout/Tab.vue +135 -0
  57. package/src/component/layout/Tag.vue +97 -0
  58. package/src/component/layout/Wizard.vue +211 -0
  59. package/src/component/rental/DisplayCalculatePeriod.vue +49 -0
  60. package/src/component/rental/DisplayPeriodRent.vue +55 -0
  61. package/src/component/rental/DisplayTotalization.vue +86 -0
  62. package/src/component/report/Fields.vue +109 -0
  63. package/src/component/report/Report.vue +314 -0
  64. package/src/component/report/ReportTable.vue +112 -0
  65. package/src/component/report/Totalization.vue +34 -0
  66. package/src/component/shared/CodeEditor.vue +128 -0
  67. package/src/component/shared/Collapse.vue +131 -0
  68. package/src/component/shared/Confirmation.vue +74 -0
  69. package/src/component/shared/DocumentEditor.vue +99 -0
  70. package/src/component/shared/DocumentPreview.vue +81 -0
  71. package/src/component/shared/DocumentPublic.vue +33 -0
  72. package/src/component/shared/ExportExcel.vue +56 -0
  73. package/src/component/shared/ExportPDF.vue +116 -0
  74. package/src/component/shared/FullCalendar.vue +174 -0
  75. package/src/component/shared/HeaderReport.vue +47 -0
  76. package/src/component/shared/HorizontalFilter.vue +64 -0
  77. package/src/component/shared/ListNotifications.vue +70 -0
  78. package/src/component/shared/Loading.vue +107 -0
  79. package/src/component/shared/LoadingCard.vue +65 -0
  80. package/src/component/shared/LoadingMoreButton.vue +23 -0
  81. package/src/component/shared/Messages.vue +109 -0
  82. package/src/component/shared/PDFViewer.vue +24 -0
  83. package/src/component/shared/Pagination.vue +108 -0
  84. package/src/component/shared/ParameterLegend.vue +169 -0
  85. package/src/component/shared/ProgressBar.vue +25 -0
  86. package/src/component/shared/QueryButton.vue +66 -0
  87. package/src/component/shared/Report.vue +200 -0
  88. package/src/component/shared/SaveCancel.vue +99 -0
  89. package/src/component/shared/Search.vue +174 -0
  90. package/src/component/shared/SelectOption.vue +162 -0
  91. package/src/component/shared/Table.vue +174 -0
  92. package/src/component/shared/TableButton.vue +36 -0
  93. package/src/component/shared/TableDraggable.vue +117 -0
  94. package/src/component/shared/TableImport.vue +93 -0
  95. package/src/component/shared/TableItem.vue +214 -0
  96. package/src/component/shared/TableTotalPerPage.vue +78 -0
  97. package/src/component/shared/TableTotalRecords.vue +44 -0
  98. package/src/component/shared/TableTotalization.vue +47 -0
  99. package/src/component/shared/TimeLine.vue +42 -0
  100. package/src/component/shared/Timer.vue +78 -0
  101. package/src/component/shared/Tip.vue +42 -0
  102. package/src/component/shared/Toast.vue +69 -0
  103. package/src/component/shared/ToggleTheme.vue +128 -0
  104. package/src/component/shared/TotalizationReport.vue +86 -0
  105. package/src/component/shared/VerticalFilter.vue +97 -0
  106. package/src/component/shared/automation/ActivitiesList.vue +44 -0
  107. package/src/component/shared/automation/AddRule.vue +61 -0
  108. package/src/component/shared/automation/AutomationBuilder.vue +27 -0
  109. package/src/component/shared/automation/DynamicComponentList.vue +86 -0
  110. package/src/component/shared/automation/SelectRule.vue +98 -0
  111. package/src/component/shared/automation/components/BillingByRent.vue +98 -0
  112. package/src/component/shared/automation/components/SendEmail.vue +94 -0
  113. package/src/component/shared/file-manager/FileManager.vue +391 -0
  114. package/src/component/shared/filter-builder/FilterBuilder.vue +221 -0
  115. package/src/component/shared/filter-builder/FilterQuery.vue +94 -0
  116. package/src/component/shared/query-builder/AddRule.vue +203 -0
  117. package/src/component/shared/query-builder/ConvertToOdata.js +86 -0
  118. package/src/component/shared/query-builder/DynamicComponent.vue +161 -0
  119. package/src/component/shared/query-builder/DynamicComponentList.vue +70 -0
  120. package/src/component/shared/query-builder/Fields.vue +93 -0
  121. package/src/component/shared/query-builder/QueryBuilder.vue +69 -0
  122. package/src/component/shared/query-builder/Rules.vue +68 -0
  123. package/src/component/shared/query-builder/SelectRule.vue +97 -0
  124. package/src/component/shared/query-builder/Tags.vue +59 -0
  125. package/src/component/shared/query-builder/utilities.js +22 -0
  126. package/src/component/signature/Payment.vue +161 -0
  127. package/src/component/signature/Warning.vue +76 -0
  128. package/src/component/template/ListViewWithDataHandler.vue +429 -0
  129. package/src/component/template/ReportCreateUpdate.vue +110 -0
  130. package/src/component/template/ViewTemplateConfiguration.vue +64 -0
  131. package/src/component/template/ViewTemplateDocumentView.vue +213 -0
  132. package/src/component/template/ViewTemplateImportFile.vue +347 -0
  133. package/src/component/template/ViewTemplateReportList.vue +217 -0
  134. package/src/component/template/ViewTemplateReportPreview.vue +432 -0
  135. package/src/component/template/ViewTemplateSelectOption.vue +46 -0
  136. package/src/component/template/ViewTemplateWithSalveCancel.vue +32 -0
  137. package/src/component/template/ViewTemplateWithTable.vue +62 -0
  138. package/src/component/template/model/Report.js +6 -0
  139. package/src/component/training/Course.vue +344 -0
  140. package/src/component/training/CourseView.vue +190 -0
  141. package/src/component/value-objects/Address.js +11 -0
  142. package/src/component/value-objects/Address.vue +157 -0
  143. package/src/component/value-objects/Contact.js +7 -0
  144. package/src/component/value-objects/Contact.vue +106 -0
  145. package/src/component/value-objects/Person.js +10 -0
  146. package/src/component/value-objects/Person.vue +129 -0
  147. package/src/config/axios.js +9 -0
  148. package/src/config/dicas.js +15 -0
  149. package/src/config/router.js +14 -0
  150. package/src/config/token.js +15 -0
  151. package/src/main.js +23 -0
  152. package/src/store/modules/automation.js +31 -0
  153. package/src/store/modules/generic.js +816 -0
  154. package/src/store/modules/report.js +278 -0
  155. package/src/store/modules/user.js +67 -0
  156. package/src/store/modules/util.js +26 -0
  157. package/src/store/modules/validation.js +39 -0
  158. package/src/store/store.js +14 -0
@@ -0,0 +1,136 @@
1
+ <template>
2
+ <div>
3
+ <div class="icon-logout" @click="execute">
4
+ <i class="fa-duotone fa-solid fa-right-from-bracket"></i>
5
+ </div>
6
+ <div class="profile-container" v-if="hideShow">
7
+ <div class="item-header text-center">
8
+ <span>Conta</span>
9
+ </div>
10
+ <div class="profile-content" v-for="item in items" :key="item.title">
11
+ <div class="item-content" @click="navegateTo(item.routeName)">
12
+ <div class="title-container">
13
+ <span>
14
+ <i :class="item.classIcon"></i>
15
+ <span class="title-profile title-input">{{ item.title }}</span>
16
+ </span>
17
+ </div>
18
+ </div>
19
+ </div>
20
+ <div class="profile-content" @click="execute">
21
+ <div class="item-content">
22
+ <div class="title-container">
23
+ <span>
24
+ <i class="fas fa-sign-in"></i>
25
+ <span class="title-profile title-input">Sair</span>
26
+ </span>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </template>
33
+ <script>
34
+ export default {
35
+ name: "Account",
36
+ props: {
37
+ items: [],
38
+ exited: Function,
39
+ },
40
+ data() {
41
+ return {
42
+ hideShow: false,
43
+ };
44
+ },
45
+ methods: {
46
+ navegateTo(routeName) {
47
+ this.$router.push({ name: routeName });
48
+ this.hideShow = false;
49
+ },
50
+ execute() {
51
+ if (this.exited) this.exited();
52
+ },
53
+ },
54
+ };
55
+ </script>
56
+ <style scoped>
57
+ .icon-logout {
58
+ padding-left: 12px;
59
+ padding-top: 2px;
60
+ margin-top: -43px;
61
+ margin-right: 28px;
62
+ cursor: pointer;
63
+ position: fixed;
64
+ float: right;
65
+ left: auto;
66
+ right: 0;
67
+ width: 40px;
68
+ height: 40px;
69
+ border-radius: 12px;
70
+ color: #F0134D;
71
+ font-size: 22px;
72
+ }
73
+
74
+ img {
75
+ border-radius: 50%;
76
+ height: 40px;
77
+ width: 40px;
78
+ }
79
+
80
+ .profile-container {
81
+ position: fixed;
82
+ float: right;
83
+ left: auto;
84
+ right: 0;
85
+ margin-right: 20px;
86
+ height: 100%;
87
+ z-index: 1000;
88
+ width: 190px;
89
+ margin-top: 26px;
90
+ background-color: white;
91
+ height: auto;
92
+ border-bottom: 1px solid #e9ebec;
93
+ }
94
+
95
+ .profile-content {
96
+ right: 0;
97
+ height: 100%;
98
+ z-index: 101;
99
+ width: 190px;
100
+ height: auto;
101
+ }
102
+
103
+ .item-header {
104
+ padding: 8px 20px;
105
+ background: #f8f8f8;
106
+ border-left: 1px solid #e9ebec;
107
+ border-right: 1px solid #e9ebec;
108
+ border-top: 1px solid #e9ebec;
109
+ }
110
+
111
+ .item-content {
112
+ padding-left: 15px;
113
+ height: 45px;
114
+ background: white;
115
+ border: 1px solid #e9ebec;
116
+ border-bottom: 0px solid #e9ebec;
117
+ cursor: pointer;
118
+ }
119
+
120
+ .item-content:hover {
121
+ background: #f8f8f8;
122
+ }
123
+
124
+ .title-container {
125
+ padding-top: 10px;
126
+ }
127
+
128
+ .title-container:hover {
129
+ padding-top: 10px;
130
+ color: #37597c;
131
+ }
132
+
133
+ .title-profile {
134
+ padding-left: 10px;
135
+ }
136
+ </style>
@@ -0,0 +1,60 @@
1
+ <template>
2
+ <div>
3
+ <div :class="['top', { collapsed: menuCollapsed, notCollapsed: !menuCollapsed }]">
4
+ <div class="side-by-side top-space">
5
+ <slot></slot>
6
+ </div>
7
+ <div class="side-by-side div-theme">
8
+ <ToggleTheme />
9
+ </div>
10
+ </div>
11
+ </div>
12
+ </template>
13
+
14
+ <script>
15
+
16
+ import ToggleTheme from "@nixweb/nixloc-ui/src/component/shared/ToggleTheme.vue";
17
+
18
+ import { mapState } from "vuex";
19
+
20
+ export default {
21
+ name: "Top",
22
+ components: {
23
+ ToggleTheme
24
+ },
25
+ props: {
26
+ backgroundColor: {
27
+ type: String,
28
+ default: "#4680A5",
29
+ },
30
+ },
31
+ computed: {
32
+ ...mapState("generic", ["menuCollapsed"]),
33
+ },
34
+ };
35
+ </script>
36
+
37
+ <style scoped>
38
+ .top {
39
+ position: fixed;
40
+ padding-left: 30px;
41
+ padding-top: 5px;
42
+ right: 0px;
43
+ height: 58px;
44
+ transition: all 0.3s ease;
45
+ background-color: #FAFAFC;
46
+ z-index: 1000;
47
+ }
48
+
49
+ .top.notCollapsed {
50
+ left: 180px;
51
+ }
52
+
53
+ .top.collapsed {
54
+ left: 60px;
55
+ }
56
+
57
+ .div-theme {
58
+ margin-left: 15px;
59
+ }
60
+ </style>
@@ -0,0 +1,71 @@
1
+ <template>
2
+ <div>
3
+ <div v-for="icon in icons" class="molded-icon side-by-side" @click="executeEvent(icon.eventName)" v-b-tooltip.hover
4
+ :title="icon.tooltip">
5
+ <div :class="{
6
+ 'icon-active-header': moduleActive === icon.module,
7
+ }" class="icon-molded-icon">
8
+ <i :class="icon.icon"></i>
9
+ </div>
10
+ </div>
11
+ </div>
12
+ </template>
13
+
14
+ <script>
15
+ import { mapMutations } from "vuex";
16
+
17
+ export default {
18
+ name: "IconMolded",
19
+ props: {
20
+ icons: Array,
21
+ },
22
+ data() {
23
+ return { moduleActive: "" };
24
+ },
25
+ methods: {
26
+ ...mapMutations("generic", ["addEvent"]),
27
+ executeEvent(eventName) {
28
+ this.addEvent({
29
+ name: eventName,
30
+ });
31
+ this.addEvent({
32
+ name: "cleanMenuSelected",
33
+ });
34
+ },
35
+ },
36
+ watch: {
37
+ $route: {
38
+ handler: function (router) {
39
+ this.moduleActive = router.matched[0].props.default.module;
40
+ },
41
+ deep: true,
42
+ },
43
+ },
44
+ };
45
+ </script>
46
+
47
+ <style scoped>
48
+ .molded-icon {
49
+ height: 38px;
50
+ width: 38px;
51
+ margin-left: 10px;
52
+ margin-top: 4px;
53
+ cursor: pointer;
54
+ }
55
+
56
+ .icon-molded-icon {
57
+ font-size: 20px;
58
+ margin-left: 10px;
59
+ color: #2C3453;
60
+ }
61
+
62
+ .module-active {
63
+ border-radius: 50px;
64
+ background-color: #2C3453;
65
+ }
66
+
67
+ .icon-active-header {
68
+ color: #D98621;
69
+ font-size: 22px;
70
+ }
71
+ </style>
@@ -0,0 +1,456 @@
1
+ <template>
2
+ <div>
3
+ <div :class="['sidebar', { collapsed: menuCollapsed }]">
4
+ <div class="sidebar-header">
5
+ <span class="header-logo" @click="editProfile">
6
+ <img class="photo" :src="urlPhoto" />
7
+ </span>
8
+ <div :style="'margin-left:' + (menuCollapsed ? 55 : 170) + 'px'" class="div-menu-toggle"
9
+ @click="toggleSidebar">
10
+ <div class="icon-menu-arrow">
11
+ <i v-if="menuCollapsed" class="fa-solid fa-angle-right "></i>
12
+ <i v-else class="fa-solid fa-angle-left"></i>
13
+ </div>
14
+ </div>
15
+ </div>
16
+
17
+ <ScrollBar :minHeight="pageSize" :maxHeight="pageSize">
18
+ <div :class="{ 'sub': menuCollapsed }">
19
+ <div v-for="(item, index) in menuFilter(true)">
20
+ <div @mouseover="handleMouseOver(item.title, item.module)">
21
+ <div :ref="item.title" v-if="menuCollapsed" class="molded-icon text-center" :class="{
22
+ 'menu-active': moduleActive === item.module,
23
+ 'module-selected': module === item.module
24
+ }">
25
+ <i :style="'font-size:18px'" :class="item.icon"></i>
26
+ <div v-if="false" :style="'margin-top:-16px'">
27
+ <span class="title-menu-collapsed">{{ item.abbreviatedTitle }}</span>
28
+ </div>
29
+ </div>
30
+ <div class="molded-icon-open" :class="{
31
+ 'menu-active': moduleActive === item.module
32
+ }" v-else @mouseover="handleMouseOver(item.title, item.module)">
33
+ <b-row>
34
+ <b-col sm="12">
35
+ <b-row>
36
+ <b-col sm="2">
37
+ <i :class="item.icon"></i>
38
+ </b-col>
39
+ <b-col sm="10">
40
+ <span class="title-menu">{{ item.title }} </span>
41
+ </b-col>
42
+ </b-row>
43
+ </b-col>
44
+ </b-row>
45
+ </div>
46
+ </div>
47
+
48
+ <transition name="slide-fade">
49
+ <div :ref="item.title + 'sub'" class="sub-menu-collapsed sub-menu"
50
+ :style="'margin-left:' + (menuCollapsed ? 85 : 200) + 'px'"
51
+ v-if="titleSubMenuCollapsed == item.title">
52
+ <div v-for="(item, index) in subMenuFilter(false)" :key="index">
53
+ <div :class="{ 'sub-menu-title-collapsed': item.title }"
54
+ @click.prevent="navegateTo(item, item.module)">
55
+ <b-row>
56
+ <b-col sm="2" v-if="item.title">
57
+ <i :class="item.icon"></i>
58
+
59
+ </b-col>
60
+ <b-col sm="9">
61
+ <div v-if="item.groupName" class="div-group">
62
+ {{ item.groupName }}
63
+ </div>
64
+ <span>
65
+ <span> {{ item.title }}</span>
66
+ <span class="div-support" v-if="item.isVisible == 'support'">
67
+ Suporte
68
+ </span>
69
+ </span>
70
+ </b-col>
71
+ </b-row>
72
+ </div>
73
+ </div>
74
+ </div>
75
+ </transition>
76
+ </div>
77
+ <br>
78
+ <br>
79
+ <br>
80
+ </div>
81
+ </ScrollBar>
82
+ </div>
83
+ </div>
84
+ </template>
85
+
86
+ <script>
87
+
88
+ import ScrollBar from "@nixweb/nixloc-ui/src/component/layout/ScrollBar.vue";
89
+
90
+ import { mapState, mapMutations, mapGetters } from "vuex";
91
+
92
+ export default {
93
+ props: {
94
+ urlPhoto: String,
95
+ },
96
+ components: {
97
+ ScrollBar
98
+ },
99
+ data() {
100
+ return {
101
+ module: "",
102
+ moduleActive: "",
103
+ isSidebarCollapsed: true,
104
+ openDropdowns: {},
105
+ titleSubMenu: "",
106
+ titleSubMenuCollapsed: "",
107
+ pageSize: 0,
108
+ distanceFromBottom: 0,
109
+ };
110
+ },
111
+ mounted() {
112
+ this.updatePageSize();
113
+ window.addEventListener('resize', this.updatePageSize);
114
+
115
+ if (!localStorage.getItem('menuCollapsed')) {
116
+ localStorage.setItem('menuCollapsed', this.isSidebarCollapsed ? "closed" : "open");
117
+ }
118
+
119
+ if (localStorage.getItem('menuCollapsed') === 'open') {
120
+ this.toggleMenu(false);
121
+ } else {
122
+ this.toggleMenu(true);
123
+ }
124
+
125
+ if (this.$route.matched[0])
126
+ this.moduleActive = this.$route.matched[0].props.default.module;
127
+
128
+ },
129
+ beforeDestroy() {
130
+ window.removeEventListener('resize', this.updatePageSize);
131
+ },
132
+ computed: {
133
+ ...mapState("user", ["menu", "userLogged"]),
134
+ ...mapState("generic", ["menuCollapsed"]),
135
+ ...mapGetters("generic", ["event"]),
136
+ },
137
+ methods: {
138
+ ...mapMutations("generic", ["addEvent", "toggleMenu"]),
139
+ updatePageSize() {
140
+ const windowHeight = window.innerHeight;
141
+ this.pageSize = windowHeight;
142
+ },
143
+ toggleSidebar() {
144
+ this.isSidebarCollapsed = !this.isSidebarCollapsed;
145
+ this.toggleMenu(this.isSidebarCollapsed);
146
+ localStorage.setItem('menuCollapsed', this.isSidebarCollapsed ? "closed" : "open");
147
+ this.titleSubMenu = "";
148
+ this.titleSubMenuCollapsed = "";
149
+ },
150
+ toggleSubMenu(title, module) {
151
+ this.module = module;
152
+ if (this.titleSubMenu === title) {
153
+ this.titleSubMenu = "";
154
+ } else {
155
+ this.titleSubMenu = title;
156
+ }
157
+ },
158
+ handleMouseOver(title, module) {
159
+ this.module = module;
160
+ this.titleSubMenuCollapsed = title;
161
+
162
+ var divSub = this.$refs[title + 'sub'];
163
+
164
+ if (divSub) {
165
+ let self = this;
166
+ setTimeout(function () {
167
+ const heightSubMenu = divSub[0].getBoundingClientRect();
168
+
169
+ if (heightSubMenu.top < 0 || heightSubMenu.left < 0 || heightSubMenu.bottom > window.innerHeight || heightSubMenu.right > window.innerWidth) {
170
+ divSub[0].style.bottom = '0px';
171
+ }
172
+
173
+ }, 100);
174
+ }
175
+ },
176
+ handleMouseLeave() {
177
+ this.titleSubMenuCollapsed = "";
178
+ if (this.menuCollapsed)
179
+ this.module = "";
180
+ },
181
+ menuFilter(isModule) {
182
+ let filter = [];
183
+ this.menu.items.forEach(function (obj) {
184
+ if (obj.isModule == isModule) filter.push(obj);
185
+ });
186
+ return filter.sort((a, b) => a.order - b.order);
187
+ },
188
+ subMenuFilter(isModule) {
189
+ let filter = [];
190
+ let self = this;
191
+ let userLogged = this.userLogged.user.userName;
192
+ this.menu.items.forEach(function (obj) {
193
+ if (obj.isModule == isModule && obj.module === self.module) {
194
+ if (obj.isVisible == "all") filter.push(obj);
195
+
196
+ if (obj.isVisible == "support" && userLogged == "UserTemp")
197
+ filter.push(obj);
198
+ }
199
+ });
200
+ return filter;
201
+ },
202
+ navegateTo(item, module) {
203
+ this.$router.push({
204
+ name: item.routeName,
205
+ });
206
+
207
+ this.moduleActive = module;
208
+ this.titleSubMenuCollapsed = "";
209
+ },
210
+ editProfile() {
211
+ this.addEvent({ name: "clickedProfile" });
212
+ },
213
+ },
214
+ watch: {
215
+ event: {
216
+ handler: function (event) {
217
+ if (event.name == "handleMouseOver") {
218
+ this.handleMouseLeave();
219
+ }
220
+ },
221
+ deep: true,
222
+ },
223
+ $route: {
224
+ handler: function (router) {
225
+ this.moduleActive = router.matched[0].props.default.module;
226
+ },
227
+ deep: true,
228
+ },
229
+ },
230
+ };
231
+ </script>
232
+
233
+ <style scoped>
234
+ .sidebar {
235
+ position: fixed;
236
+ top: 0;
237
+ left: 0;
238
+ width: 200px;
239
+ height: 100vh;
240
+ border-radius: 0px 20px 0px 0px;
241
+ background-color: #577696;
242
+ transition: all 0.4s ease;
243
+ z-index: 1000;
244
+ }
245
+
246
+ .sidebar.collapsed {
247
+ width: 85px;
248
+ }
249
+
250
+ .sidebar .sidebar-header {
251
+ display: flex;
252
+ position: relative;
253
+ padding: 10px 20px;
254
+ align-items: center;
255
+ justify-content: space-between;
256
+ }
257
+
258
+ .sidebar-header .header-logo img {
259
+ width: 46px;
260
+ height: 46px;
261
+ display: block;
262
+ object-fit: contain;
263
+ cursor: pointer;
264
+ border-radius: 50%;
265
+ }
266
+
267
+ .sidebar-header .sidebar-toggler,
268
+ .sidebar-menu-button {
269
+ position: absolute;
270
+ left: 70px;
271
+ height: 30px;
272
+ width: 30px;
273
+ color: #151A2D;
274
+ border: none;
275
+ cursor: pointer;
276
+ display: flex;
277
+ background: #EEF2FF;
278
+ align-items: center;
279
+ justify-content: center;
280
+ border-radius: 50px;
281
+ transition: 0.4s ease;
282
+ }
283
+
284
+ .sidebar.collapsed .sidebar-header .sidebar-toggler {
285
+ transform: translate(-4px, 65px);
286
+ }
287
+
288
+ .div-menu-toggle {
289
+ position: fixed;
290
+ font-size: 18px;
291
+ top: 25px;
292
+ width: 20px;
293
+ height: 20px;
294
+ background-color: #D98621;
295
+ border-radius: 50%;
296
+ cursor: pointer;
297
+ z-index: 2000;
298
+ transition: all 0.4s ease;
299
+ }
300
+
301
+ .molded-icon-open {
302
+ padding-left: 10px;
303
+ cursor: pointer;
304
+ margin-top: 10px;
305
+ color: white;
306
+ font-size: 17px;
307
+ margin: 15px;
308
+ border-radius: 10px;
309
+ transition: all 0.3s ease;
310
+ }
311
+
312
+ .molded-icon-open:hover {
313
+ color: #2C3453;
314
+ background-color: white;
315
+ }
316
+
317
+ .menu-active {
318
+ background-color: #D98621;
319
+ }
320
+
321
+ .module-selected {
322
+ color: #2C3453 !important;
323
+ background-color: white !important;
324
+ }
325
+
326
+ .icon-menu-arrow {
327
+ font-size: 14px;
328
+ margin-top: -4px;
329
+ margin-left: 6px;
330
+ color: white;
331
+ }
332
+
333
+ .molded-icon {
334
+ cursor: pointer;
335
+ color: white;
336
+ font-size: 18px;
337
+ margin: 13px;
338
+ border-radius: 10px;
339
+ transition: all 0.3s ease;
340
+ }
341
+
342
+ .molded-icon:hover {
343
+ background-color: white;
344
+ color: #2C3453;
345
+ border-radius: 10px;
346
+ transition: all 0.8s ease;
347
+ }
348
+
349
+ .sub {
350
+ cursor: pointer;
351
+ transition: all 0.3s ease;
352
+ }
353
+
354
+ .sub-menu {
355
+ margin: 15px;
356
+ padding: 10px;
357
+ border-radius: 15px;
358
+ color: white;
359
+ font-size: 14px;
360
+ background-color: #2C3453;
361
+ transition: all 0.5s ease;
362
+ }
363
+
364
+ .sub-menu-title {
365
+ cursor: pointer;
366
+ border-radius: 8px;
367
+ padding: 5px;
368
+ transition: all 1s ease;
369
+ }
370
+
371
+ .sub-menu-title:hover {
372
+ padding: 5px;
373
+ color: #2C3453;
374
+ background-color: white;
375
+ font-weight: bold;
376
+ transition: all 0.8s ease;
377
+ }
378
+
379
+ .sub-menu-collapsed {
380
+ width: 260px;
381
+ margin-top: -100px;
382
+ position: absolute;
383
+ border-radius: 0px 15px 15px 0px;
384
+ background-color: #2C3453;
385
+ cursor: pointer;
386
+ }
387
+
388
+ .sub-menu-title-collapsed {
389
+ padding: 10px;
390
+ border-radius: 8px;
391
+ font-size: 13px;
392
+ }
393
+
394
+ .sub-menu-title-collapsed:hover {
395
+ background-color: white;
396
+ color: #2C3453;
397
+ transition: all 0.8s ease;
398
+ }
399
+
400
+ .rotate {
401
+ transform: rotate(180deg);
402
+ transition: transform 0.5s ease;
403
+ }
404
+
405
+ .rotate-down {
406
+ transform: rotate(360deg);
407
+ transition: transform 0.5s ease;
408
+ }
409
+
410
+ .title-menu {
411
+ font-size: 13px;
412
+ }
413
+
414
+ .title-menu-collapsed {
415
+ font-size: 11.5px;
416
+ }
417
+
418
+ .div-arrow {
419
+ margin-left: 50px;
420
+ }
421
+
422
+ .div-menu-bottom {
423
+ position: absolute;
424
+ bottom: 0;
425
+ left: 0;
426
+ width: 100%;
427
+ padding: 10px;
428
+ }
429
+
430
+ .div-icon-bottom {
431
+ cursor: pointer;
432
+ font-size: 17px;
433
+ color: white;
434
+ border-radius: 10px;
435
+ background-color: #2C3453;
436
+ }
437
+
438
+ .title-logout {
439
+ font-size: 16px;
440
+ margin-left: 10px;
441
+ }
442
+
443
+ .div-group {
444
+ margin-left: 10px;
445
+ padding: 5px;
446
+ }
447
+
448
+ .div-support {
449
+ background-color: #0A36DB;
450
+ font-size: 11px;
451
+ border-radius: 20px;
452
+ padding: 1px 2px 2px 2px;
453
+ margin-left: 5px;
454
+ color: white !important;
455
+ }
456
+ </style>