@nixweb/nixloc-ui 0.0.294 → 0.0.296

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nixweb/nixloc-ui",
3
- "version": "0.0.294",
3
+ "version": "0.0.296",
4
4
  "description": "Componentes UI",
5
5
  "author": "Fábio Ávila <fabio@nixweb.com.br>",
6
6
  "private": false,
@@ -47,11 +47,11 @@ export default {
47
47
  }
48
48
 
49
49
  .top.notCollapsed {
50
- left: 270px;
50
+ left: 180px;
51
51
  }
52
52
 
53
53
  .top.collapsed {
54
- left: 65px;
54
+ left: 60px;
55
55
  }
56
56
 
57
57
  .div-theme {
@@ -5,78 +5,68 @@
5
5
  <span class="header-logo" @click="editProfile">
6
6
  <img class="photo" :src="urlPhoto" />
7
7
  </span>
8
- <Button class="sidebar-toggler" @click="toggleSidebar">
9
- <span>
10
- <i v-if="menuCollapsed" class="fa-solid fa-angle-right icon-menu-arrow"></i>
11
- <i v-else class="fa-solid fa-angle-left icon-menu-arrow"></i>
12
- </span>
13
- </Button>
14
- </div>
15
- <div v-if="menuCollapsed">
16
- <br><br>
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>
17
15
  </div>
16
+
18
17
  <ScrollBar :minHeight="pageSize" :maxHeight="pageSize">
19
18
  <div :class="{ 'sub': menuCollapsed }">
20
19
  <div v-for="(item, index) in menuFilter(true)">
21
- <div>
20
+ <div @mouseover="handleMouseOver(item.title, item.module)">
22
21
  <div :ref="item.title" v-if="menuCollapsed" class="molded-icon text-center" :class="{
23
22
  'menu-active': moduleActive === item.module,
24
23
  'module-selected': module === item.module
25
- }" @mouseover="handleMouseOver(item.title, item.module)">
26
- <i :class="item.icon"></i>
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>
27
29
  </div>
28
30
  <div class="molded-icon-open" :class="{
29
31
  'menu-active': moduleActive === item.module
30
- }" v-else @click="toggleSubMenu(item.title, item.module)">
32
+ }" v-else @mouseover="handleMouseOver(item.title, item.module)">
31
33
  <b-row>
32
- <b-col sm="1">
33
- <i :class="item.icon"></i>
34
- </b-col>
35
- <b-col sm="8">
36
- <span class="title-menu">{{ item.title }} </span>
37
- </b-col>
38
- <b-col sm="1">
39
- <div>
40
- <i v-if="titleSubMenu == item.title" class="fa-sharp fa-solid fa-angle-down"
41
- :class="{ 'rotate': titleSubMenu == item.title }"></i>
42
-
43
- <i v-else class="fa-sharp fa-solid fa-angle-down"
44
- :class="{ 'rotate-down': titleSubMenu != item.title }"></i>
45
- </div>
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>
46
43
  </b-col>
47
44
  </b-row>
48
45
  </div>
49
46
  </div>
50
47
 
51
- <transition name="slide-fade">
52
- <div class="sub-menu" v-if="!menuCollapsed && titleSubMenu == item.title">
53
- <div v-for="(item, index) in subMenuFilter(false)" :key="index">
54
- <div v-if="item.title" class="sub-menu-title"
55
- @click.prevent="navegateTo(item, item.module)">
56
- <b-row>
57
- <b-col sm="3"> <i :class="item.icon"></i></b-col>
58
- <span> {{ item.title }}</span>
59
- </b-row>
60
- </div>
61
- </div>
62
- </div>
63
- </transition>
64
-
65
48
  <transition name="slide-fade">
66
49
  <div :ref="item.title + 'sub'" class="sub-menu-collapsed sub-menu"
67
- v-if="menuCollapsed && titleSubMenuCollapsed == item.title">
50
+ :style="'margin-left:' + (menuCollapsed ? 85 : 200) + 'px'"
51
+ v-if="titleSubMenuCollapsed == item.title">
68
52
  <div v-for="(item, index) in subMenuFilter(false)" :key="index">
69
53
  <div :class="{ 'sub-menu-title-collapsed': item.title }"
70
54
  @click.prevent="navegateTo(item, item.module)">
71
55
  <b-row>
72
56
  <b-col sm="2" v-if="item.title">
73
57
  <i :class="item.icon"></i>
58
+
74
59
  </b-col>
75
60
  <b-col sm="9">
76
61
  <div v-if="item.groupName" class="div-group">
77
62
  {{ item.groupName }}
78
63
  </div>
79
- <span> {{ item.title }}</span>
64
+ <span>
65
+ <span> {{ item.title }}</span>
66
+ <span class="div-support" v-if="item.isVisible == 'support'">
67
+ Suporte
68
+ </span>
69
+ </span>
80
70
  </b-col>
81
71
  </b-row>
82
72
  </div>
@@ -89,7 +79,6 @@
89
79
  <br>
90
80
  </div>
91
81
  </ScrollBar>
92
-
93
82
  </div>
94
83
  </div>
95
84
  </template>
@@ -246,7 +235,7 @@ export default {
246
235
  position: fixed;
247
236
  top: 0;
248
237
  left: 0;
249
- width: 275px;
238
+ width: 200px;
250
239
  height: 100vh;
251
240
  border-radius: 0px 20px 0px 0px;
252
241
  background-color: #577696;
@@ -278,7 +267,7 @@ export default {
278
267
  .sidebar-header .sidebar-toggler,
279
268
  .sidebar-menu-button {
280
269
  position: absolute;
281
- right: 23px;
270
+ left: 70px;
282
271
  height: 30px;
283
272
  width: 30px;
284
273
  color: #151A2D;
@@ -296,6 +285,19 @@ export default {
296
285
  transform: translate(-4px, 65px);
297
286
  }
298
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
+
299
301
  .molded-icon-open {
300
302
  padding-left: 10px;
301
303
  cursor: pointer;
@@ -322,16 +324,17 @@ export default {
322
324
  }
323
325
 
324
326
  .icon-menu-arrow {
325
- font-size: 17px;
326
- margin-top: 7px;
327
+ font-size: 14px;
328
+ margin-top: -4px;
329
+ margin-left: 6px;
330
+ color: white;
327
331
  }
328
332
 
329
333
  .molded-icon {
330
334
  cursor: pointer;
331
- padding: 1px;
332
335
  color: white;
333
336
  font-size: 18px;
334
- margin: 10px;
337
+ margin: 13px;
335
338
  border-radius: 10px;
336
339
  transition: all 0.3s ease;
337
340
  }
@@ -339,7 +342,6 @@ export default {
339
342
  .molded-icon:hover {
340
343
  background-color: white;
341
344
  color: #2C3453;
342
- margin: 10px;
343
345
  border-radius: 10px;
344
346
  transition: all 0.8s ease;
345
347
  }
@@ -377,15 +379,16 @@ export default {
377
379
  .sub-menu-collapsed {
378
380
  width: 260px;
379
381
  margin-top: -100px;
380
- margin-left: 85px;
381
382
  position: absolute;
382
383
  border-radius: 0px 15px 15px 0px;
383
384
  background-color: #2C3453;
385
+ cursor: pointer;
384
386
  }
385
387
 
386
388
  .sub-menu-title-collapsed {
387
389
  padding: 10px;
388
390
  border-radius: 8px;
391
+ font-size: 13px;
389
392
  }
390
393
 
391
394
  .sub-menu-title-collapsed:hover {
@@ -405,8 +408,11 @@ export default {
405
408
  }
406
409
 
407
410
  .title-menu {
408
- font-size: 14px;
409
- padding: 20px;
411
+ font-size: 13px;
412
+ }
413
+
414
+ .title-menu-collapsed {
415
+ font-size: 11.5px;
410
416
  }
411
417
 
412
418
  .div-arrow {
@@ -438,4 +444,12 @@ export default {
438
444
  margin-left: 10px;
439
445
  padding: 5px;
440
446
  }
447
+
448
+ .div-support {
449
+ background-color: #0A36DB;
450
+ font-size: 11px;
451
+ border-radius: 20px;
452
+ padding: 2px;
453
+ color: white !important;
454
+ }
441
455
  </style>
@@ -9,7 +9,11 @@
9
9
  </VerticalFilter>
10
10
  </div>
11
11
  <div class="local-container" :class="{ 'layout-small': layout == 'small' }">
12
- <Messages v-if="!modal.open" />
12
+ <div v-if="!modal.open && !vodal.open" class="div-message-panel">
13
+ <Messages />
14
+ </div>
15
+ <br>
16
+ <br>
13
17
  <div class="row">
14
18
  <div class="col-10">
15
19
  <div class="div-title">
@@ -94,7 +98,7 @@ export default {
94
98
  },
95
99
  computed: {
96
100
  ...mapGetters("generic", ["isLoading", "event"]),
97
- ...mapState("generic", ["modal", "menuCollapsed"]),
101
+ ...mapState("generic", ["modal", "vodal", "menuCollapsed"]),
98
102
  },
99
103
  methods: {
100
104
  ...mapMutations("generic", ["addLoading"]),
@@ -144,7 +148,7 @@ export default {
144
148
 
145
149
  .panel {
146
150
  padding-right: 30px;
147
- margin-left: 190px;
151
+ margin-left: 130px;
148
152
  }
149
153
 
150
154
  .panel.collapsed {
@@ -166,4 +170,16 @@ export default {
166
170
  .div-back:hover {
167
171
  color: #505050;
168
172
  }
173
+
174
+ .div-message-panel {
175
+ width: calc(100% - 60px);
176
+ position: fixed;
177
+ top: -55px;
178
+ left: 30px;
179
+ right: 30px;
180
+ margin: 0;
181
+ z-index: 2000 !important;
182
+ transition: top 0.5s ease;
183
+ }
184
+
169
185
  </style>
@@ -40,7 +40,6 @@ export default {
40
40
  }
41
41
  },
42
42
  set(newValue) {
43
- console.log(newValue);
44
43
  if (this.editMode) {
45
44
  this.updateDocumentHtmlFinal(newValue);
46
45
  } else {
@@ -1,18 +1,16 @@
1
1
  <template>
2
2
  <div>
3
3
  <div :class="{ 'div-message': !modal.open }" v-if="storageNotification.length > 0">
4
- <div>
5
- <Alert type="danger">
6
- <div class="side-by-side" v-for="notification in storageNotification">
7
- <div class="side-by-side text">
8
- {{ notification.message }}
9
- </div>
4
+ <Alert type="danger">
5
+ <div class="side-by-side" v-for="(notification, index) in storageNotification" :key="index">
6
+ <div class="side-by-side text">
7
+ {{ notification.message }}
10
8
  </div>
11
- </Alert>
12
- </div>
13
- <b-alert v-show="false" :show="countdown" dismissible variant="danger" @dismissed="countdown = 0"
14
- @dismiss-count-down="countdownChanged">
15
- </b-alert>
9
+ </div>
10
+ <div class="progress-bar-container">
11
+ <div class="progress-bar" :style="{ width: progressWidth + '%' }"></div>
12
+ </div>
13
+ </Alert>
16
14
  </div>
17
15
  </div>
18
16
  </template>
@@ -26,9 +24,10 @@ export default {
26
24
  name: "Messages",
27
25
  data() {
28
26
  return {
29
- maxSeconds: 20,
30
- countdown: 20,
27
+ maxSeconds: 10,
28
+ countdown: 10,
31
29
  storageNotification: [],
30
+ progressWidth: 100,
32
31
  };
33
32
  },
34
33
  computed: {
@@ -38,11 +37,13 @@ export default {
38
37
  notifications() {
39
38
  if (this.notifications.length > 0) {
40
39
  this.storageNotification = this.notifications;
41
- this.countdown = 5;
40
+ this.countdown = this.maxSeconds;
41
+ this.progressWidth = 100;
42
+ this.startCountdown();
42
43
  }
43
44
  },
44
- countdown() {
45
- if (this.countdown === 0) {
45
+ countdown(newCountdown) {
46
+ if (newCountdown === 0) {
46
47
  this.storageNotification = [];
47
48
  this.removeNotificarions();
48
49
  }
@@ -50,34 +51,59 @@ export default {
50
51
  },
51
52
  methods: {
52
53
  ...mapMutations("generic", ["removeNotificarions"]),
53
- countdownChanged(countdown) {
54
- this.countdown = countdown;
54
+
55
+ startCountdown() {
56
+ this.countdownInterval = setInterval(() => {
57
+ if (this.countdown > 0) {
58
+ this.countdown--;
59
+ this.updateProgressBar();
60
+ } else {
61
+ clearInterval(this.countdownInterval);
62
+ }
63
+ }, 1000);
55
64
  },
56
- messages(notifications) {
57
- var message = "";
58
- notifications.forEach(function (notification) {
59
- message += notification.message + " ";
60
- });
61
65
 
62
- return message;
66
+ updateProgressBar() {
67
+ // Atualiza a largura da barra de progresso
68
+ this.progressWidth = (this.countdown / this.maxSeconds) * 100;
63
69
  },
64
70
  },
65
71
  };
66
72
  </script>
73
+
67
74
  <style scoped>
68
75
  .div-message {
69
76
  margin-top: 50px;
77
+ transition: all 0.5s ease !important;
78
+ z-index: 2000;
70
79
  }
71
80
 
72
- .div-message-modal {
73
- margin-bottom: 5px;
74
- }
75
-
76
- .invalid {
77
- color: #f0134d;
81
+ .side-by-side {
82
+ display: flex;
83
+ justify-content: space-between;
78
84
  }
79
85
 
80
86
  .text {
81
87
  margin-right: 10px;
82
88
  }
89
+
90
+ .progress-bar-container {
91
+ width: 100%;
92
+ height: 3px;
93
+ background-color: #e0e0e0;
94
+ border-radius: 5px;
95
+ margin-top: 10px;
96
+ }
97
+
98
+ .progress-bar {
99
+ height: 100%;
100
+ background-color: #FF0201;
101
+ border-radius: 50px;
102
+ transition: width 1s ease-out;
103
+ }
104
+
105
+ .div-countdown {
106
+ margin-top: 10px;
107
+ font-size: 16px;
108
+ }
83
109
  </style>
@@ -2,7 +2,8 @@
2
2
  <div>
3
3
  <FixedBar :position="positionFixedBar" backgroundColor="#FAFAFC"
4
4
  v-show="formDirty && !modal.open && on || showFixed">
5
- <div class="margin" :style="'margin-bottom:' + marginBottom + 'px'">
5
+ <div :class="{ collapsed: menuCollapsed, notCollapsed: !menuCollapsed }"
6
+ :style="'margin-bottom:' + marginBottom + 'px'">
6
7
  <Button _key="cancelSaveCancel" eventName="cancelSaveCancel" title="Cancelar" type="danger" size="small"
7
8
  :clicked="cancel" />
8
9
  <Button _key="saveSaveCancel" :eventName="eventName" classIcon="fa-solid fa-floppy-disk" title="Salvar"
@@ -67,7 +68,7 @@ export default {
67
68
  ...mapState("generic", ["loading"]),
68
69
  ...mapGetters("generic", ["event"]),
69
70
  ...mapGetters("validation", ["isFormValid"]),
70
- ...mapState("generic", ["modal"]),
71
+ ...mapState("generic", ["modal", "menuCollapsed"]),
71
72
  },
72
73
  methods: {
73
74
  ...mapMutations("validation", ["updateFormDirty", "resetValidation"]),
@@ -86,7 +87,13 @@ export default {
86
87
  };
87
88
  </script>
88
89
  <style scoped>
89
- .margin {
90
+ .collapsed {
90
91
  margin-left: 0px;
92
+ transition: all 0.4s ease;
93
+ }
94
+
95
+ .notCollapsed {
96
+ margin-left: 130px;
97
+ transition: all 0.4s ease;
91
98
  }
92
99
  </style>
@@ -1,9 +1,9 @@
1
1
  <template>
2
2
  <div>
3
- <div class="icon-print" v-print="'#printMe'">
3
+ <div class="icon-print" v-print="'#printTable'">
4
4
  <i title="Imprimir" class="fas fa-print"></i>
5
5
  </div>
6
- <table id="printMe" class="table table-responsive-xs">
6
+ <table id="printTable" class="table table-responsive-xs">
7
7
  <thead>
8
8
  <tr>
9
9
  <th class="td-checkbox" v-if="showChecks">