@freteclick/quasar-financial-ui 1.0.113 → 1.0.114

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.
@@ -1,102 +1,103 @@
1
1
  <template>
2
- <div>
3
- <div class="row q-mb-md q-gutter-sm justify-end">
4
- <q-btn
5
- label="Cadastrar fornecedor"
6
- icon="add"
7
- size="sm"
8
- color="secondary"
9
- @click="dialogs.provider.visible = true"
10
- />
11
- <q-btn
12
- label="Cadastrar categoria"
13
- icon="add"
14
- size="sm"
15
- color="secondary"
16
- @click="dialogs.category.visible = true"
17
- />
2
+ <div class="expense-create">
3
+ <div class="expense-create__shortcuts">
4
+ <div class="expense-create__shortcuts-copy">
5
+ <span>ATALHOS</span>
6
+ <strong>Cadastros complementares</strong>
7
+ <small>Cadastre fornecedor ou categoria sem sair da despesa.</small>
8
+ </div>
9
+ <div class="expense-create__shortcut-actions">
10
+ <q-btn
11
+ outline
12
+ no-caps
13
+ rounded
14
+ color="primary"
15
+ icon="storefront"
16
+ label="Novo fornecedor"
17
+ @click="dialogs.provider.visible = true"
18
+ />
19
+ <q-btn
20
+ outline
21
+ no-caps
22
+ rounded
23
+ color="primary"
24
+ icon="category"
25
+ label="Nova categoria"
26
+ @click="dialogs.category.visible = true"
27
+ />
28
+ </div>
18
29
  </div>
19
- <q-form @submit="addExpense">
20
- <div class="row">
21
- <div class="col-xs-12 q-mb-md">
30
+
31
+ <q-form @submit="addExpense" class="expense-create__form">
32
+ <div class="expense-create__section-heading">
33
+ <div class="expense-create__section-icon">
34
+ <q-icon name="edit_note" />
35
+ </div>
36
+ <div>
37
+ <span>DADOS PRINCIPAIS</span>
38
+ <strong>Informações da despesa</strong>
39
+ </div>
40
+ </div>
41
+ <div class="expense-create__grid">
42
+ <div class="expense-create__field">
22
43
  <q-select
44
+ v-model="item.category"
23
45
  stack-label
24
46
  emit-value
25
47
  map-options
26
48
  lazy-rules
27
- v-model="item.category"
49
+ outlined
50
+ dense
28
51
  :label="$t('Categoria da despesa')"
29
52
  :options="categories"
30
53
  :rules="[(val) => val !== null || 'Selecione uma categoria']"
31
54
  />
32
55
  </div>
33
- <div class="col-xs-12 q-mb-md">
34
- <q-input
35
- lazy-rules
36
- stack-label
37
- v-model="item.description"
38
- type="text"
39
- :label="$t('Descrição da despesa')"
40
- class="q-mt-md"
41
- :rules="[isInvalid()]"
42
- />
43
- </div>
44
- <div class="col-xs-12 q-mb-md">
56
+ <div class="expense-create__field">
45
57
  <PeopleAutocomplete
46
58
  :source="searchPeople"
47
59
  :isLoading="isSearching"
48
60
  label="Definir o fornecedor"
49
61
  @selected="onSelectClient"
50
- placeholder="Pesquisar..."
62
+ placeholder="Pesquisar fornecedor..."
51
63
  />
52
64
  </div>
53
- <div class="col-xs-12 q-mb-md">
65
+ <div class="expense-create__field expense-create__field--wide">
54
66
  <q-input
55
- lazy-rules
67
+ v-model="item.description"
68
+ type="text"
56
69
  stack-label
57
- reverse-fill-mask
70
+ lazy-rules
71
+ outlined
72
+ dense
73
+ :label="$t('Descrição da despesa')"
74
+ :rules="[isInvalid()]"
75
+ />
76
+ </div>
77
+ <div class="expense-create__field">
78
+ <q-input
58
79
  v-model="item.amount"
80
+ reverse-fill-mask
59
81
  prefix="R$"
60
82
  type="text"
83
+ stack-label
84
+ lazy-rules
85
+ outlined
86
+ dense
61
87
  :label="$t('Valor')"
62
- class="q-mt-md"
63
88
  :rules="[isInvalid()]"
64
89
  mask="#,##"
65
90
  fill-mask="0"
66
91
  />
67
92
  </div>
68
- <div class="col-xs-12 q-mb-md text-center">
69
- <q-radio
70
- v-model="item.recurrence"
71
- val="single"
72
- :label="$t('Pagamento único')"
73
- />
74
- <q-radio
75
- v-model="item.recurrence"
76
- val="monthly"
77
- :label="$t('Pagamento recorrente')"
78
- />
79
- </div>
80
- <div v-if="item.recurrence == 'single'" class="col-xs-12 q-mb-md">
81
- <q-select
82
- stack-label
83
- emit-value
84
- map-options
85
- lazy-rules
86
- v-model="item.parcels"
87
- :label="$t('Número de parcelas')"
88
- :options="parcels"
89
- class="q-mb-sm"
90
- :rules="[(val) => val !== null || 'Selecione um número']"
91
- />
92
- </div>
93
- <div class="col-xs-12 q-mb-md">
93
+ <div class="expense-create__field">
94
94
  <q-input
95
- stack-label
96
95
  v-model="item.dueDate"
96
+ stack-label
97
+ outlined
98
+ dense
97
99
  :label="$t('Data primeiro vencimento')"
98
100
  mask="##/##/####"
99
- class="q-mb-sm"
100
101
  :rules="[isInvalid('date')]"
101
102
  >
102
103
  <template v-slot:append>
@@ -116,61 +117,103 @@
116
117
  </template>
117
118
  </q-input>
118
119
  </div>
120
+ <div class="expense-create__field expense-create__field--wide">
121
+ <div class="expense-create__recurrence">
122
+ <div class="expense-create__recurrence-copy">
123
+ <div class="expense-create__recurrence-icon">
124
+ <q-icon name="autorenew" />
125
+ </div>
126
+ <div>
127
+ <strong>Recorrência</strong>
128
+ <span>Escolha como esta despesa será cobrada.</span>
129
+ </div>
130
+ </div>
131
+ <q-btn-toggle
132
+ v-model="item.recurrence"
133
+ no-caps
134
+ unelevated
135
+ toggle-color="primary"
136
+ color="grey-2"
137
+ text-color="grey-8"
138
+ :options="[
139
+ { label: $t('Pagamento único'), value: 'single' },
140
+ { label: $t('Pagamento recorrente'), value: 'monthly' },
141
+ ]"
142
+ />
143
+ </div>
144
+ </div>
145
+ <div v-if="item.recurrence === 'single'" class="expense-create__field">
146
+ <q-select
147
+ v-model="item.parcels"
148
+ stack-label
149
+ emit-value
150
+ map-options
151
+ lazy-rules
152
+ outlined
153
+ dense
154
+ :label="$t('Número de parcelas')"
155
+ :options="parcels"
156
+ :rules="[(val) => val !== null || 'Selecione um número']"
157
+ />
158
+ </div>
119
159
  </div>
120
- <div class="row justify-end">
160
+
161
+ <footer class="expense-create__footer">
162
+ <span>Confira os dados antes de salvar.</span>
121
163
  <q-btn
122
164
  :loading="saving"
123
165
  icon="save"
124
166
  type="submit"
125
- :label="$t('Salvar')"
126
- size="md"
167
+ label="Salvar despesa"
127
168
  color="primary"
128
- class="q-mt-md"
169
+ unelevated
170
+ no-caps
171
+ class="expense-create__save"
129
172
  />
130
- </div>
173
+ </footer>
131
174
  </q-form>
132
175
 
133
176
  <q-dialog v-model="dialogs.category.visible" @before-show="resetCategory">
134
- <q-card style="width: 700px; max-width: 80vw">
135
- <q-card-section class="row items-center">
136
- <div class="text-h6">Cadastro de categoria</div>
137
- <q-space />
138
- <q-btn icon="close" flat round dense v-close-popup />
139
- </q-card-section>
140
- <q-card-section>
141
- <q-form @submit="addCategory" class="q-mb-md">
142
- <div class="row">
143
- <div class="col-xs-12 q-mb-md">
144
- <q-select
145
- stack-label
146
- emit-value
147
- map-options
148
- v-model="dialogs.category.expense.parent"
149
- :label="$t('Categoria pai')"
150
- :options="categories"
151
- />
152
- </div>
153
- <div class="col-xs-12 q-mb-md">
154
- <q-input
155
- lazy-rules
156
- stack-label
157
- v-model="dialogs.category.expense.name"
158
- type="text"
159
- :label="$t('Nome sub-categoria')"
160
- class="q-mt-md"
161
- :rules="[isInvalid()]"
162
- />
163
- </div>
164
- </div>
177
+ <q-card class="expense-create__subdialog">
178
+ <header class="expense-create__subdialog-header">
179
+ <div>
180
+ <span>CADASTRO COMPLEMENTAR</span>
181
+ <h3>Cadastrar categoria</h3>
182
+ </div>
183
+ <q-btn icon="close" flat round dense v-close-popup aria-label="Fechar" />
184
+ </header>
185
+ <q-card-section class="expense-create__subdialog-body">
186
+ <q-form @submit="addCategory" class="expense-create__subdialog-form">
187
+ <q-select
188
+ v-model="dialogs.category.expense.parent"
189
+ stack-label
190
+ emit-value
191
+ map-options
192
+ outlined
193
+ dense
194
+ :label="$t('Categoria pai')"
195
+ :options="categories"
196
+ />
197
+ <q-input
198
+ v-model="dialogs.category.expense.name"
199
+ type="text"
200
+ lazy-rules
201
+ stack-label
202
+ outlined
203
+ dense
204
+ :label="$t('Nome sub-categoria')"
205
+ :rules="[isInvalid()]"
206
+ />
165
207
  <div class="row justify-end">
166
208
  <q-btn
167
209
  :loading="dialogs.category.saving"
168
210
  icon="save"
169
211
  type="submit"
170
- :label="$t('Salvar')"
171
- size="md"
212
+ :label="$t('Salvar categoria')"
172
213
  color="primary"
173
- class="q-mt-md"
214
+ unelevated
215
+ no-caps
216
+ class="expense-create__subdialog-save"
174
217
  />
175
218
  </div>
176
219
  </q-form>
@@ -179,85 +222,68 @@
179
222
  </q-dialog>
180
223
 
181
224
  <q-dialog v-model="dialogs.provider.visible">
182
- <q-card style="width: 700px; max-width: 80vw">
183
- <q-card-section class="row items-center">
184
- <div class="text-h6">Cadastro de fornecedor</div>
185
- <q-space />
186
- <q-btn icon="close" flat round dense v-close-popup />
187
- </q-card-section>
188
- <q-card-section>
189
- <q-form @submit="addProvider" class="q-mb-md">
190
- <div class="row">
191
- <div class="col-xs-12 q-mb-md">
192
- <div class="row justify-center">
193
- <q-btn-toggle
194
- no-caps
195
- v-model="dialogs.provider.item.type"
196
- toggle-color="primary"
197
- :options="[
198
- { label: 'Pessoa Jurídica', value: 'J' },
199
- { label: 'Pessoa Física', value: 'F' },
200
- ]"
201
- />
202
- </div>
203
- </div>
204
- <div class="col-xs-12">
205
- <q-input
206
- stack-label
207
- lazy-rules
208
- unmasked-value
209
- v-model="dialogs.provider.item.document"
210
- type="text"
211
- :label="
212
- dialogs.provider.item.type == 'J' ? $t('CNPJ') : $t('CPF')
213
- "
214
- :mask="
215
- dialogs.provider.item.type == 'J'
216
- ? '##.###.###/####-##'
217
- : '###.###.###-##'
218
- "
219
- />
220
- </div>
221
- <div class="col-xs-12">
222
- <q-input
223
- stack-label
224
- lazy-rules
225
- v-model="dialogs.provider.item.name"
226
- type="text"
227
- class="q-mb-sm"
228
- :label="
229
- dialogs.provider.item.type == 'J'
230
- ? $t('Razão social')
231
- : $t('Nome')
232
- "
233
- :rules="[isInvalid('name')]"
234
- />
235
- </div>
236
- <div class="col-xs-12">
237
- <q-input
238
- stack-label
239
- lazy-rules
240
- v-model="dialogs.provider.item.alias"
241
- type="text"
242
- class="q-mb-sm"
243
- :label="
244
- dialogs.provider.item.type == 'J'
245
- ? $t('Nome Fantasia')
246
- : $t('Sobrenome')
247
- "
248
- :rules="[isInvalid('alias')]"
249
- />
250
- </div>
225
+ <q-card class="expense-create__subdialog">
226
+ <header class="expense-create__subdialog-header">
227
+ <div>
228
+ <span>CADASTRO COMPLEMENTAR</span>
229
+ <h3>Cadastrar fornecedor</h3>
230
+ </div>
231
+ <q-btn icon="close" flat round dense v-close-popup aria-label="Fechar" />
232
+ </header>
233
+ <q-card-section class="expense-create__subdialog-body">
234
+ <q-form @submit="addProvider" class="expense-create__subdialog-form">
235
+ <div class="row justify-center">
236
+ <q-btn-toggle
237
+ no-caps
238
+ v-model="dialogs.provider.item.type"
239
+ toggle-color="primary"
240
+ :options="[
241
+ { label: 'Pessoa Jurídica', value: 'J' },
242
+ { label: 'Pessoa Física', value: 'F' },
243
+ ]"
244
+ />
251
245
  </div>
246
+ <q-input
247
+ v-model="dialogs.provider.item.document"
248
+ type="text"
249
+ stack-label
250
+ lazy-rules
251
+ unmasked-value
252
+ outlined
253
+ dense
254
+ :label="dialogs.provider.item.type == 'J' ? $t('CNPJ') : $t('CPF')"
255
+ :mask="dialogs.provider.item.type == 'J' ? '##.###.###/####-##' : '###.###.###-##'"
256
+ />
257
+ <q-input
258
+ v-model="dialogs.provider.item.name"
259
+ type="text"
260
+ stack-label
261
+ lazy-rules
262
+ outlined
263
+ dense
264
+ :label="dialogs.provider.item.type == 'J' ? $t('Razão social') : $t('Nome')"
265
+ :rules="[isInvalid('name')]"
266
+ />
267
+ <q-input
268
+ v-model="dialogs.provider.item.alias"
269
+ type="text"
270
+ stack-label
271
+ lazy-rules
272
+ outlined
273
+ dense
274
+ :label="dialogs.provider.item.type == 'J' ? $t('Nome Fantasia') : $t('Sobrenome')"
275
+ :rules="[isInvalid('alias')]"
276
+ />
252
277
  <div class="row justify-end">
253
278
  <q-btn
254
279
  :loading="dialogs.provider.saving"
255
280
  icon="save"
256
281
  type="submit"
257
- :label="$t('Salvar')"
258
- size="md"
282
+ :label="$t('Salvar fornecedor')"
259
283
  color="primary"
260
- class="q-mt-md"
284
+ unelevated
285
+ no-caps
286
+ class="expense-create__subdialog-save"
261
287
  />
262
288
  </div>
263
289
  </q-form>
@@ -412,6 +438,7 @@ export default {
412
438
  });
413
439
 
414
440
  this.loadCategories();
441
+ this.dialogs.category.visible = false;
415
442
  })
416
443
  .finally(() => {
417
444
  this.dialogs.category.saving = false;
@@ -438,6 +465,7 @@ export default {
438
465
  position: "bottom",
439
466
  type: "positive",
440
467
  });
468
+ this.dialogs.provider.visible = false;
441
469
  })
442
470
  .catch((error) => {
443
471
  this.$q.notify({
@@ -537,3 +565,318 @@ export default {
537
565
  },
538
566
  };
539
567
  </script>
568
+
569
+ <style lang="scss" scoped>
570
+ .expense-create__shortcuts {
571
+ display: flex;
572
+ align-items: center;
573
+ justify-content: space-between;
574
+ gap: 16px;
575
+ margin-bottom: 22px;
576
+ padding: 14px 16px;
577
+ border: 1px solid #e7edf4;
578
+ border-radius: 14px;
579
+ background: #f8fafc;
580
+ }
581
+
582
+ .expense-create__shortcuts-copy {
583
+ display: flex;
584
+ min-width: 0;
585
+ flex-direction: column;
586
+ }
587
+
588
+ .expense-create__shortcuts-copy span {
589
+ color: #7890aa;
590
+ font-size: 9px;
591
+ font-weight: 750;
592
+ letter-spacing: 0.12em;
593
+ }
594
+
595
+ .expense-create__shortcuts-copy strong {
596
+ margin-top: 3px;
597
+ color: #263b52;
598
+ font-size: 13px;
599
+ font-weight: 700;
600
+ }
601
+
602
+ .expense-create__shortcuts-copy small {
603
+ margin-top: 2px;
604
+ color: #7b8b9c;
605
+ font-size: 11px;
606
+ }
607
+
608
+ .expense-create__shortcut-actions {
609
+ display: flex;
610
+ flex: 0 0 auto;
611
+ flex-wrap: wrap;
612
+ gap: 8px;
613
+ }
614
+
615
+ .expense-create__shortcut-actions .q-btn {
616
+ min-height: 36px;
617
+ padding: 0 12px;
618
+ border-radius: 9px;
619
+ font-size: 11px;
620
+ }
621
+
622
+ .expense-create__section-heading {
623
+ display: flex;
624
+ align-items: center;
625
+ gap: 11px;
626
+ margin-bottom: 16px;
627
+ }
628
+
629
+ .expense-create__section-icon {
630
+ display: grid;
631
+ width: 36px;
632
+ height: 36px;
633
+ flex: 0 0 auto;
634
+ place-items: center;
635
+ border-radius: 11px;
636
+ color: #2a659e;
637
+ background: #edf4ff;
638
+ font-size: 19px;
639
+ }
640
+
641
+ .expense-create__section-heading > div:last-child {
642
+ display: flex;
643
+ flex-direction: column;
644
+ gap: 2px;
645
+ }
646
+
647
+ .expense-create__section-heading span {
648
+ color: #7890aa;
649
+ font-size: 9px;
650
+ font-weight: 750;
651
+ letter-spacing: 0.12em;
652
+ }
653
+
654
+ .expense-create__section-heading strong {
655
+ color: #263b52;
656
+ font-size: 13px;
657
+ font-weight: 700;
658
+ }
659
+
660
+ .expense-create__grid {
661
+ display: grid;
662
+ grid-template-columns: repeat(2, minmax(0, 1fr));
663
+ gap: 16px;
664
+ }
665
+
666
+ .expense-create__field {
667
+ min-width: 0;
668
+ }
669
+
670
+ .expense-create__field--wide {
671
+ grid-column: 1 / -1;
672
+ }
673
+
674
+ .expense-create :deep(.q-field) {
675
+ width: 100%;
676
+ }
677
+
678
+ .expense-create :deep(.q-field__control),
679
+ .expense-create :deep(.q-field__control:before),
680
+ .expense-create :deep(.q-field__control:after) {
681
+ border-radius: 10px;
682
+ }
683
+
684
+ .expense-create__recurrence {
685
+ display: flex;
686
+ align-items: center;
687
+ justify-content: space-between;
688
+ gap: 16px;
689
+ padding: 14px 16px;
690
+ border: 1px solid #e7edf4;
691
+ border-radius: 13px;
692
+ background: #fbfdff;
693
+ }
694
+
695
+ .expense-create__recurrence-copy {
696
+ display: flex;
697
+ align-items: center;
698
+ min-width: 0;
699
+ flex: 1 1 auto;
700
+ flex-direction: row;
701
+ gap: 10px;
702
+ }
703
+
704
+ .expense-create__recurrence-icon {
705
+ display: grid;
706
+ width: 36px;
707
+ height: 36px;
708
+ flex: 0 0 auto;
709
+ place-items: center;
710
+ border-radius: 11px;
711
+ color: #2a659e;
712
+ background: #edf4ff;
713
+ font-size: 18px;
714
+ }
715
+
716
+ .expense-create__recurrence-copy > div:last-child {
717
+ display: flex;
718
+ min-width: 0;
719
+ flex-direction: column;
720
+ }
721
+
722
+ .expense-create__recurrence strong {
723
+ color: #263b52;
724
+ font-size: 12px;
725
+ font-weight: 700;
726
+ }
727
+
728
+ .expense-create__recurrence span {
729
+ margin-top: 3px;
730
+ color: #7b8b9c;
731
+ font-size: 11px;
732
+ }
733
+
734
+ .expense-create__recurrence :deep(.q-btn-toggle) {
735
+ flex: 0 0 auto;
736
+ overflow: hidden;
737
+ border-radius: 9px;
738
+ }
739
+
740
+ .expense-create__recurrence :deep(.q-btn) {
741
+ min-height: 36px;
742
+ padding: 0 12px;
743
+ font-size: 11px;
744
+ }
745
+
746
+ .expense-create__footer {
747
+ display: flex;
748
+ align-items: center;
749
+ justify-content: space-between;
750
+ gap: 14px;
751
+ margin-top: 20px;
752
+ padding-top: 16px;
753
+ border-top: 1px solid #edf1f6;
754
+ }
755
+
756
+ .expense-create__footer > span {
757
+ color: #8795a5;
758
+ font-size: 11px;
759
+ }
760
+
761
+ .expense-create__save {
762
+ min-height: 42px;
763
+ padding: 0 20px;
764
+ border-radius: 10px;
765
+ font-weight: 700;
766
+ }
767
+
768
+ .expense-create__subdialog {
769
+ width: min(100%, 560px);
770
+ overflow: hidden;
771
+ border-radius: 18px;
772
+ }
773
+
774
+ .expense-create__subdialog-header {
775
+ display: flex;
776
+ align-items: flex-start;
777
+ justify-content: space-between;
778
+ gap: 14px;
779
+ padding: 21px 24px 18px;
780
+ color: #fff;
781
+ background: linear-gradient(115deg, #15395d 0%, #1b568b 100%);
782
+ }
783
+
784
+ .expense-create__subdialog-header span {
785
+ color: #c3d8ee;
786
+ font-size: 9px;
787
+ font-weight: 750;
788
+ letter-spacing: 0.12em;
789
+ }
790
+
791
+ .expense-create__subdialog-header h3 {
792
+ margin: 5px 0 0;
793
+ font-size: 18px;
794
+ font-weight: 700;
795
+ }
796
+
797
+ .expense-create__subdialog-header .q-btn {
798
+ color: #fff;
799
+ }
800
+
801
+ .expense-create__subdialog-body {
802
+ max-height: min(70vh, 600px);
803
+ overflow-y: auto;
804
+ padding: 22px 24px 24px;
805
+ }
806
+
807
+ .expense-create__subdialog-form {
808
+ display: flex;
809
+ flex-direction: column;
810
+ gap: 16px;
811
+ }
812
+
813
+ .expense-create__subdialog-form :deep(.q-field__control),
814
+ .expense-create__subdialog-form :deep(.q-field__control:before),
815
+ .expense-create__subdialog-form :deep(.q-field__control:after) {
816
+ border-radius: 10px;
817
+ }
818
+
819
+ .expense-create__subdialog-save {
820
+ min-height: 40px;
821
+ padding: 0 18px;
822
+ border-radius: 10px;
823
+ }
824
+
825
+ @media (max-width: 600px) {
826
+ .expense-create__shortcuts {
827
+ align-items: flex-start;
828
+ flex-direction: column;
829
+ gap: 12px;
830
+ padding: 13px;
831
+ }
832
+
833
+ .expense-create__shortcut-actions {
834
+ width: 100%;
835
+ }
836
+
837
+ .expense-create__shortcut-actions .q-btn {
838
+ flex: 1 1 auto;
839
+ }
840
+
841
+ .expense-create__grid {
842
+ grid-template-columns: minmax(0, 1fr);
843
+ gap: 13px;
844
+ }
845
+
846
+ .expense-create__field--wide {
847
+ grid-column: auto;
848
+ }
849
+
850
+ .expense-create__recurrence {
851
+ align-items: flex-start;
852
+ flex-direction: column;
853
+ }
854
+
855
+ .expense-create__recurrence :deep(.q-btn-toggle) {
856
+ width: 100%;
857
+ }
858
+
859
+ .expense-create__recurrence :deep(.q-btn) {
860
+ flex: 1 1 50%;
861
+ }
862
+
863
+ .expense-create__footer {
864
+ align-items: stretch;
865
+ flex-direction: column;
866
+ }
867
+
868
+ .expense-create__save {
869
+ width: 100%;
870
+ }
871
+
872
+ .expense-create__subdialog {
873
+ width: calc(100vw - 24px);
874
+ }
875
+
876
+ .expense-create__subdialog-header,
877
+ .expense-create__subdialog-body {
878
+ padding-right: 18px;
879
+ padding-left: 18px;
880
+ }
881
+ }
882
+ </style>