@bildvitta/quasar-ui-asteroid 3.5.0-beta.4 → 3.5.0-beta.5

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,7 +1,7 @@
1
1
  {
2
2
  "name": "@bildvitta/quasar-ui-asteroid",
3
3
  "description": "Asteroid",
4
- "version": "3.5.0-beta.4",
4
+ "version": "3.5.0-beta.5",
5
5
  "author": "Bild & Vitta <systemteam@bild.com.br>",
6
6
  "license": "MIT",
7
7
  "main": "dist/asteroid.cjs.min.js",
@@ -1,47 +1,59 @@
1
1
  <template>
2
- <section class="q-mb-lg">
3
- <div v-if="showFilters" class="q-gutter-x-md row">
4
- <div v-if="showSearch" class="col">
2
+ <section class="q-mb-xl qas-filters">
3
+ <div v-if="showFilters" class="q-col-gutter-x-md row">
4
+ <div v-if="showSearch" class="col-12 col-md-6">
5
5
  <slot :filter="filter" name="search">
6
6
  <q-form v-if="useSearch" @submit.prevent="filter()">
7
- <qas-input v-model="search" data-cy="filters-search-input" :debounce="debounce" dense hide-bottom-space :outlined="false" :placeholder="searchPlaceholder" type="search">
7
+ <qas-input v-model="search" class="bg-white q-px-sm qas-filters__input rounded-borders-sm shadow-2" data-cy="filters-search-input" :debounce="debounce" dense hide-bottom-space input-class="ellipsis text-grey-8" :outlined="false" :placeholder="searchPlaceholder" type="search">
8
+ <template #prepend>
9
+ <q-icon v-if="useSearchOnType" color="grey-8" name="o_search" />
10
+ <qas-btn v-else color="grey-9" flat icon="o_search" padding="0" @click="filter()" />
11
+ </template>
12
+
8
13
  <template #append>
9
- <qas-btn v-if="hasSearch" color="grey-9" flat icon="o_clear" unelevated @click="clearSearch" />
10
- <qas-btn v-if="!debounce" color="grey-9" flat icon="o_search" type="submit" unelevated @click="filter()" />
14
+ <qas-btn v-if="hasSearch" class="q-mr-sm" color="grey-9" flat icon="o_clear" padding="0" size="sm" @click="clearSearch" />
15
+
16
+ <qas-btn v-if="useFilterButton" :color="filterButtonColor" data-cy="filters-btn" flat icon="o_tune" padding="0">
17
+ <q-menu anchor="center right" class="full-width" max-width="270px" self="top right">
18
+ <div v-if="isFetching" class="q-pa-xl text-center">
19
+ <q-spinner color="grey" size="2em" />
20
+ </div>
21
+
22
+ <div v-else-if="hasFetchError" class="q-pa-xl text-center">
23
+ <q-icon color="negative" name="o_warning" size="2em" />
24
+ </div>
25
+
26
+ <q-form v-else class="q-gutter-y-md q-pa-md" @submit.prevent="filter()">
27
+ <div v-for="(field, index) in fields" :key="index">
28
+ <qas-field v-model="filters[field.name]" :data-cy="`filters-${field.name}-field`" :field="field" v-bind="fieldsProps[field.name]" />
29
+ </div>
30
+
31
+ <div class="q-col-gutter-x-md q-mt-xl row">
32
+ <div class="col-6">
33
+ <qas-btn class="full-width" data-cy="filters-clear-btn" label="Limpar" outline size="12px" @click="clearFilters" />
34
+ </div>
35
+
36
+ <div class="col-6">
37
+ <qas-btn class="full-width" color="primary" data-cy="filters-submit-btn" label="Filtrar" size="12px" type="submit" />
38
+ </div>
39
+ </div>
40
+ </q-form>
41
+ </q-menu>
42
+ </qas-btn>
11
43
  </template>
12
44
  </qas-input>
13
45
  </q-form>
14
46
  </slot>
15
47
  </div>
16
48
 
17
- <slot v-if="showFilterButton" :filter="filter" name="filter-button">
18
- <qas-btn v-if="useFilterButton" :color="filterButtonColor" data-cy="filters-btn" flat icon="o_filter_list" :label="filterButtonLabel">
19
- <q-menu class="full-width" max-width="240px">
20
- <div v-if="isFetching" class="q-pa-xl text-center">
21
- <q-spinner color="grey" size="2em" />
22
- </div>
23
-
24
- <div v-else-if="hasFetchError" class="q-pa-xl text-center">
25
- <q-icon color="negative" name="o_warning" size="2em" />
26
- </div>
27
-
28
- <q-form v-else class="q-gutter-y-md q-pa-md" @submit.prevent="filter()">
29
- <div v-for="(field, index) in fields" :key="index">
30
- <qas-field v-model="filters[field.name]" :data-cy="`filters-${field.name}-field`" dense :field="field" v-bind="fieldsProps[field.name]" />
31
- </div>
32
-
33
- <div class="text-right">
34
- <qas-btn class="q-mr-sm" data-cy="filters-clear-btn" flat label="Limpar" :no-caps="false" size="12px" unelevated @click="clearFilters" />
35
- <qas-btn color="primary" data-cy="filters-submit-btn" label="Filtrar" :no-caps="false" size="12px" type="submit" unelevated />
36
- </div>
37
- </q-form>
38
- </q-menu>
39
- </qas-btn>
40
- </slot>
49
+ <div class="col-12 col-md-6">
50
+ <slot name="right-side" />
51
+ </div>
41
52
  </div>
42
53
 
43
- <div v-if="useChip && hasActiveFilters" class="q-mt-md">
44
- <q-chip v-for="(filterItem, key) in activeFilters" :key="key" color="primary" :data-cy="`filters-${filterItem.value}-chip`" dense removable size="md" text-color="white" @remove="removeFilter(filterItem)">{{ filterItem.label }} = "{{ getChipValue(filterItem.value) }}"</q-chip>
54
+ <div v-if="hasChip" class="q-mt-md">
55
+ <!-- TODO rever com novo estilo -->
56
+ <q-chip v-for="(filterItem, key) in activeFilters" :key="key" color="white" :data-cy="`filters-${filterItem.value}-chip`" dense icon-remove="o_close" removable size="md" text-color="grey-8" @remove="removeFilter(filterItem)">{{ getChipValue(filterItem.value) }}</q-chip>
45
57
  </div>
46
58
 
47
59
  <slot :context="mx_context" :filter="filter" :filters="activeFilters" :remove-filter="removeFilter" />
@@ -150,7 +162,7 @@ export default {
150
162
  },
151
163
 
152
164
  debounce () {
153
- return this.useSearchOnType ? '500' : ''
165
+ return this.useSearchOnType ? '800' : ''
154
166
  },
155
167
 
156
168
  fields () {
@@ -161,6 +173,7 @@ export default {
161
173
  return this.hasActiveFilters ? 'primary' : 'grey-9'
162
174
  },
163
175
 
176
+ // TODO: remover
164
177
  filterButtonLabel () {
165
178
  return this.$q.screen.gt.xs ? 'Filtrar' : undefined
166
179
  },
@@ -187,6 +200,10 @@ export default {
187
200
 
188
201
  showSearch () {
189
202
  return !!this.$slots.search || this.useSearch
203
+ },
204
+
205
+ hasChip () {
206
+ return this.useChip && this.hasActiveFilters
190
207
  }
191
208
  },
192
209
 
@@ -330,3 +347,46 @@ export default {
330
347
  }
331
348
  }
332
349
  </script>
350
+
351
+ <style lang="scss">
352
+ // TODO rever
353
+ .qas-filters {
354
+ .q-field::before {
355
+ border: 2px solid transparent;
356
+ border-radius: 4px;
357
+ bottom: 0;
358
+ content: '';
359
+ left: 0;
360
+ pointer-events: none;
361
+ position: absolute;
362
+ right: 0;
363
+ top: 0;
364
+ transition: border-color var(--qas-generic-transition);
365
+ }
366
+
367
+ .q-field--focused::before {
368
+ border-color: var(--q-primary);
369
+ color: var(--q-primary);
370
+ }
371
+
372
+ .q-field--dense .q-field__prepend {
373
+ padding-right: var(--qas-spacing-xs);
374
+ }
375
+
376
+ .q-field--dense .q-field__append {
377
+ padding-left: var(--qas-spacing-sm);
378
+ }
379
+
380
+ &__input {
381
+ .q-field__control::before,
382
+ .q-field__control::after {
383
+ display: none;
384
+ }
385
+
386
+ .q-field__native {
387
+ padding-bottom: var(--qas-spacing-sm);
388
+ padding-top: var(--qas-spacing-sm);
389
+ }
390
+ }
391
+ }
392
+ </style>
@@ -56,13 +56,6 @@ slots:
56
56
  desc: função usada para fazer o filtro
57
57
  type: Function
58
58
 
59
- filter-button:
60
- desc: Slot para seção do botão do menu lateral.
61
- scope:
62
- filter:
63
- desc: função usada para fazer o filtro
64
- type: Function
65
-
66
59
  default:
67
60
  desc: Slot para acessar o final do componente.
68
61
  scope:
@@ -428,6 +428,8 @@ export default {
428
428
  }
429
429
 
430
430
  this.mx_setErrors()
431
+ this.$emit('update:errors', this.mx_errors)
432
+
431
433
  NotifySuccess(response.data.status.text || this.defaultNotifyMessages.success)
432
434
  this.$emit('submit-success', response, this.modelValue)
433
435
 
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <q-toolbar class="justify-between q-mb-lg q-px-none">
2
+ <q-toolbar class="justify-between q-mb-xl q-px-none">
3
3
  <div class="ellipsis">
4
4
  <q-toolbar-title v-if="title" class="text-bold text-h5">
5
5
  {{ title }}
@@ -71,6 +71,11 @@ props:
71
71
  type: String
72
72
  examples: [value-key="uuid"]
73
73
 
74
+ use-search:
75
+ desc: Controla se vai ou não ter campo de busca no select.
76
+ default: undefined
77
+ type: Boolean
78
+
74
79
  use-lazy-loading:
75
80
  desc: Controla a busca pela store "fetchFieldOptions".
76
81
  default: false
package/src/index.scss CHANGED
@@ -11,6 +11,7 @@ $accent: var(--q-accent);
11
11
  :root {
12
12
  --qas-background-color: #fbfbfb;
13
13
  --qas-generic-border-radius: 8px;
14
+ --qas-generic-transition: 300ms;
14
15
  }
15
16
 
16
17
  $background-color: var(--qas-background-color);