@bildvitta/quasar-ui-asteroid 3.0.0-beta.15 → 3.0.0-beta.18

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 (41) hide show
  1. package/dist/api/QasDialog.json +1 -1
  2. package/dist/api/QasFormGenerator.json +33 -2
  3. package/dist/api/QasFormView.json +8 -0
  4. package/dist/api/QasListView.json +12 -0
  5. package/dist/api/QasSearchBox.json +80 -1
  6. package/dist/api/QasSelect.json +75 -2
  7. package/dist/api/QasSingleView.json +8 -0
  8. package/dist/asteroid.cjs.css +1 -1
  9. package/dist/asteroid.cjs.js +724 -232
  10. package/dist/asteroid.cjs.min.js +2 -2
  11. package/dist/asteroid.esm.js +726 -234
  12. package/dist/asteroid.esm.min.js +2 -2
  13. package/dist/asteroid.umd.css +1 -1
  14. package/dist/asteroid.umd.js +727 -236
  15. package/dist/asteroid.umd.min.js +2 -2
  16. package/dist/vetur/asteroid-attributes.json +72 -4
  17. package/dist/vetur/asteroid-tags.json +20 -3
  18. package/package.json +1 -1
  19. package/src/components/dialog/QasDialog.yml +1 -1
  20. package/src/components/field/QasField.vue +3 -2
  21. package/src/components/form-generator/QasFormGenerator.vue +85 -12
  22. package/src/components/form-generator/QasFormGenerator.yml +16 -2
  23. package/src/components/form-view/QasFormView.vue +12 -26
  24. package/src/components/form-view/QasFormView.yml +6 -0
  25. package/src/components/input/QasInput.vue +1 -1
  26. package/src/components/list-view/QasListView.vue +15 -8
  27. package/src/components/list-view/QasListView.yml +10 -0
  28. package/src/components/search-box/QasSearchBox.vue +135 -35
  29. package/src/components/search-box/QasSearchBox.yml +66 -1
  30. package/src/components/select/QasSelect.vue +58 -42
  31. package/src/components/select/QasSelect.yml +59 -2
  32. package/src/components/select-list/QasSelectList.vue +1 -0
  33. package/src/components/single-view/QasSingleView.vue +6 -4
  34. package/src/components/single-view/QasSingleView.yml +6 -0
  35. package/src/components/uploader/QasUploader.vue +1 -1
  36. package/src/helpers/get-normalized-options.js +20 -0
  37. package/src/helpers/index.js +1 -0
  38. package/src/mixins/generator.js +10 -2
  39. package/src/mixins/index.js +2 -0
  40. package/src/mixins/search-filter.js +227 -0
  41. package/src/mixins/view.js +22 -1
@@ -64,7 +64,7 @@
64
64
  "persistent": {
65
65
  "desc": "Define se o dialog vai fechar ou não após clicar fora do dialog.",
66
66
  "default": true,
67
- "type": "Object"
67
+ "type": "Boolean"
68
68
  },
69
69
  "use-close-button": {
70
70
  "desc": "Define se vai ter ou não Ícone de fechar o dialog.",
@@ -38,16 +38,44 @@
38
38
  "{ email: { name: 'email', type: 'email', label: 'E-mail' } }"
39
39
  ]
40
40
  },
41
+ "fieldset": {
42
+ "desc": "Lista para agrupar elementos por rótulo (label).",
43
+ "default": {},
44
+ "type": "Object",
45
+ "examples": [
46
+ "{ personalInformation: { label: 'Informações pessoais', fields: [name, email] } }"
47
+ ]
48
+ },
49
+ "fieldset-gutter": {
50
+ "desc": "Espaçamento entre rótulos (label).",
51
+ "default": "lg",
52
+ "type": [
53
+ "String",
54
+ "Boolean"
55
+ ],
56
+ "examples": [
57
+ "xs",
58
+ "sm",
59
+ "md",
60
+ "lg",
61
+ "xl",
62
+ false
63
+ ]
64
+ },
41
65
  "gutter": {
42
66
  "desc": "Espaçamento entre colunas.",
43
67
  "default": "md",
44
- "type": "String",
68
+ "type": [
69
+ "String",
70
+ "Boolean"
71
+ ],
45
72
  "examples": [
46
73
  "xs",
47
74
  "sm",
48
75
  "md",
49
76
  "lg",
50
- "xl"
77
+ "xl",
78
+ false
51
79
  ]
52
80
  },
53
81
  "model-value": {
@@ -78,6 +106,9 @@
78
106
  }
79
107
  }
80
108
  },
109
+ "legend-[nome-da-chave]": {
110
+ "desc": "Acessa o slot de um rótulo (label)."
111
+ },
81
112
  "events": {
82
113
  "@update:model-value -> function(value)": {
83
114
  "desc": "Dispara quando o model-value altera, também usado para v-model.",
@@ -4,6 +4,14 @@
4
4
  "desc": "Componente para C.R.U.D. responsável pela pela criação (Create) e edição (Update)."
5
5
  },
6
6
  "props": {
7
+ "before-fetch": {
8
+ "desc": "Callback para controlar como funciona o comportamento do fetch.",
9
+ "default": null,
10
+ "type": "Function",
11
+ "examples": [
12
+ "beforeFetch({ payload, resolve })"
13
+ ]
14
+ },
7
15
  "before-submit": {
8
16
  "desc": "Callback para controlar como funciona o comportamento do submit.",
9
17
  "default": null,
@@ -4,6 +4,14 @@
4
4
  "desc": "Componente para C.R.U.D. responsável pela parte de listagem (Read)."
5
5
  },
6
6
  "props": {
7
+ "before-fetch": {
8
+ "desc": "Callback para controlar como funciona o comportamento do fetchList.",
9
+ "default": null,
10
+ "type": "Function",
11
+ "examples": [
12
+ "beforeFetch({ payload, resolve, done })"
13
+ ]
14
+ },
7
15
  "entity": {
8
16
  "desc": "Entidade da store, por exemplo se tiver que trabalhar com modulo de usuários, teremos o model \"users\" na store, que vai ser nossa \"entity\".",
9
17
  "required": true,
@@ -76,6 +84,10 @@
76
84
  "desc": "Controla o [pull-to-refresh](https://quasar.dev/vue-components/pull-to-refresh#basic).",
77
85
  "default": true,
78
86
  "type": "Boolean"
87
+ },
88
+ "use-results-area-only": {
89
+ "desc": "Controla se irá sempre ser exibido os resultados independente se não há nenhum resultado a ser exibido.",
90
+ "type": "Boolean"
79
91
  }
80
92
  },
81
93
  "slots": {
@@ -9,6 +9,28 @@
9
9
  "default": "100px",
10
10
  "type": "String"
11
11
  },
12
+ "empty-result-text": {
13
+ "desc": "Define o texto dentro do box quando a lista está vazia.",
14
+ "default": "Não há resultados disponíveis.",
15
+ "type": "String"
16
+ },
17
+ "entity": {
18
+ "desc": "Entidade enviada para a action \"fetchFieldOptions\" (usar somente quando \"useLazyLoading\" estiver habilitada).",
19
+ "default": "",
20
+ "type": "String",
21
+ "examples": [
22
+ "users"
23
+ ]
24
+ },
25
+ "fetching": {
26
+ "desc": "Usado para saber quando o componente está fazendo fetching (usar somente quando \"useLazyLoading\" estiver habilitada).",
27
+ "default": false,
28
+ "type": "Boolean",
29
+ "model": true,
30
+ "examples": [
31
+ "v-model:fetching=\"isFetching\""
32
+ ]
33
+ },
12
34
  "fuse-options": {
13
35
  "desc": "Opções do Fuse.js (https://fusejs.io/api/options.html).",
14
36
  "debugger": true,
@@ -26,8 +48,20 @@
26
48
  "default": "300px",
27
49
  "type": "String"
28
50
  },
51
+ "lazy-loading-props": {
52
+ "desc": "Propriedades para o lazy loading (usar somente quando \"useLazyLoading\" estiver habilitada).",
53
+ "type": "Object",
54
+ "debugger": true,
55
+ "default": {
56
+ "decamelizeFieldName": true,
57
+ "url": "",
58
+ "params": {
59
+ "limit": 48
60
+ }
61
+ }
62
+ },
29
63
  "list": {
30
- "desc": "Lista onde ocorrerá a busca (array de objetos).",
64
+ "desc": "Lista onde ocorrerá a busca sendo array de objetos (usar somente quando \"useLazyLoading\" **NÃO** estiver habilitada).",
31
65
  "default": [],
32
66
  "type": "String"
33
67
  },
@@ -39,6 +73,13 @@
39
73
  ],
40
74
  "model": true
41
75
  },
76
+ "name": {
77
+ "desc": "Nome do campo a ser enviado para a action \"fetchFieldOptions\" (usar somente quando \"useLazyLoading\" estiver habilitada).",
78
+ "type": "String",
79
+ "examples": [
80
+ "cities"
81
+ ]
82
+ },
42
83
  "placeholder": {
43
84
  "desc": "Placeholder do campo de pesquisa.",
44
85
  "default": "Pesquisar",
@@ -57,6 +98,11 @@
57
98
  "desc": "Controla o slot \"empty-result\".",
58
99
  "default": true,
59
100
  "type": "Boolean"
101
+ },
102
+ "use-lazy-loading": {
103
+ "desc": "Controla a busca pela store \"fetchFieldOptions\".",
104
+ "default": false,
105
+ "type": "Boolean"
60
106
  }
61
107
  },
62
108
  "slots": {
@@ -65,6 +111,9 @@
65
111
  },
66
112
  "empty-result": {
67
113
  "desc": "Acesso ao conteúdo quando a busca não retorne resultado e a prop \"useEmptySlot\" seja \"true\"."
114
+ },
115
+ "loading": {
116
+ "desc": "Acesso ao conteúdo do loading que contém o \"<q-spinner-dots />\".."
68
117
  }
69
118
  },
70
119
  "events": {
@@ -89,6 +138,36 @@
89
138
  "type": "Array"
90
139
  }
91
140
  }
141
+ },
142
+ "@update:fetching -> function (value)": {
143
+ "desc": "Dispara toda vez que o campo de busca faz o fetch do lazy loading",
144
+ "params": {
145
+ "value": {
146
+ "desc": "Novo valor do v-model:fetching",
147
+ "default": false,
148
+ "type": "Boolean"
149
+ }
150
+ }
151
+ },
152
+ "@fetch-options-success -> function (value)": {
153
+ "desc": "Dispara toda vez que o campo de busca faz o fetch do lazy loading com sucesso.",
154
+ "params": {
155
+ "value": {
156
+ "desc": "Valor retornado pela action \"fetchFieldOptions\"",
157
+ "default": {},
158
+ "type": "Object"
159
+ }
160
+ }
161
+ },
162
+ "@fetch-options-error -> function (value)": {
163
+ "desc": "Dispara toda vez que o campo de busca faz o fetch do lazy loading e cai em uma exceção.",
164
+ "params": {
165
+ "value": {
166
+ "desc": "Valor retornado pela action \"fetchFieldOptions\"",
167
+ "default": {},
168
+ "type": "Object"
169
+ }
170
+ }
92
171
  }
93
172
  }
94
173
  }
@@ -7,6 +7,23 @@
7
7
  "desc": "Componente para select que implementa o \"QSelect\" repassando propriedades, slots e eventos."
8
8
  },
9
9
  "props": {
10
+ "entity": {
11
+ "desc": "Entidade enviada para a action \"fetchFieldOptions\" (usar somente quando \"useLazyLoading\" estiver habilitada).",
12
+ "default": "",
13
+ "type": "String",
14
+ "examples": [
15
+ "users"
16
+ ]
17
+ },
18
+ "fetching": {
19
+ "desc": "Usado para saber quando o componente está fazendo fetching (usar somente quando \"useLazyLoading\" estiver habilitada).",
20
+ "default": false,
21
+ "type": "Boolean",
22
+ "model": true,
23
+ "examples": [
24
+ "v-model:fetching=\"isFetching\""
25
+ ]
26
+ },
10
27
  "fuse-options": {
11
28
  "desc": "Opções do Fuse.js (https://fusejs.io/api/options.html).",
12
29
  "type": "Object",
@@ -27,6 +44,18 @@
27
44
  "label-key=\"name\""
28
45
  ]
29
46
  },
47
+ "lazy-loading-props": {
48
+ "desc": "Propriedades para o lazy loading (usar somente quando \"useLazyLoading\" estiver habilitada).",
49
+ "type": "Object",
50
+ "debugger": true,
51
+ "default": {
52
+ "decamelizeFieldName": true,
53
+ "url": "",
54
+ "params": {
55
+ "limit": 48
56
+ }
57
+ }
58
+ },
30
59
  "model-value": {
31
60
  "desc": "Model do componente.",
32
61
  "default": [],
@@ -34,13 +63,21 @@
34
63
  "Array",
35
64
  "Object",
36
65
  "String",
37
- "Number"
66
+ "Number",
67
+ "Boolean"
38
68
  ],
39
69
  "examples": [
40
70
  "v-model=\"value\""
41
71
  ],
42
72
  "model": true
43
73
  },
74
+ "name": {
75
+ "desc": "Nome do campo a ser enviado para a action \"fetchFieldOptions\" (usar somente quando \"useLazyLoading\" estiver habilitada).",
76
+ "type": "String",
77
+ "examples": [
78
+ "cities"
79
+ ]
80
+ },
44
81
  "no-option-label": {
45
82
  "desc": "Rótulo padrão de quando os options estão vazios.",
46
83
  "default": "Nenhum resultado foi encontrado.",
@@ -61,6 +98,11 @@
61
98
  "use-search": {
62
99
  "desc": "Controla se vai ou não ter campo de busca no select.",
63
100
  "type": "Boolean"
101
+ },
102
+ "use-lazy-loading": {
103
+ "desc": "Controla a busca pela store \"fetchFieldOptions\".",
104
+ "default": false,
105
+ "type": "Boolean"
64
106
  }
65
107
  },
66
108
  "events": {
@@ -73,10 +115,41 @@
73
115
  "Array",
74
116
  "Object",
75
117
  "String",
76
- "Number"
118
+ "Number",
119
+ "Boolean"
77
120
  ]
78
121
  }
79
122
  }
123
+ },
124
+ "@update:fetching -> function (value)": {
125
+ "desc": "Dispara toda vez que o campo de busca faz o fetch do lazy loading",
126
+ "params": {
127
+ "value": {
128
+ "desc": "Novo valor do v-model:fetching",
129
+ "default": false,
130
+ "type": "Boolean"
131
+ }
132
+ }
133
+ },
134
+ "@fetch-options-success -> function (value)": {
135
+ "desc": "Dispara toda vez que o campo de busca faz o fetch do lazy loading com sucesso.",
136
+ "params": {
137
+ "value": {
138
+ "desc": "Valor retornado pela action \"fetchFieldOptions\"",
139
+ "default": {},
140
+ "type": "Object"
141
+ }
142
+ }
143
+ },
144
+ "@fetch-options-error -> function (value)": {
145
+ "desc": "Dispara toda vez que o campo de busca faz o fetch do lazy loading e cai em uma exceção.",
146
+ "params": {
147
+ "value": {
148
+ "desc": "Valor retornado pela action \"fetchFieldOptions\"",
149
+ "default": {},
150
+ "type": "Object"
151
+ }
152
+ }
80
153
  }
81
154
  }
82
155
  }
@@ -4,6 +4,14 @@
4
4
  "desc": "Componente para C.R.U.D. responsável pela visualização (Read) ou conhecido também como \"show\"."
5
5
  },
6
6
  "props": {
7
+ "before-fetch": {
8
+ "desc": "Callback para controlar como funciona o comportamento do fetchSingle.",
9
+ "default": null,
10
+ "type": "Function",
11
+ "examples": [
12
+ "beforeFetch({ payload, resolve, done })"
13
+ ]
14
+ },
7
15
  "custom-id": {
8
16
  "desc": "Por padrão, o componente vai pegar o \"id\" que vem como parâmetro na url, caso queira que o id seja diferente da url, use esta prop.",
9
17
  "type": "String",
@@ -1 +1 @@
1
- @import"https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,400;0,700;1,400;1,700&display=swap";:root{--qas-background-color: #f5f5f5;--qas-generic-border-radius: 8px}h1{font-size:6rem;font-weight:800;letter-spacing:0;line-height:6rem;margin:0}h2{font-size:3.75rem;font-weight:700;letter-spacing:0;line-height:3.75rem;margin:0}h3{font-size:3rem;font-weight:600;letter-spacing:0;line-height:2.5rem;margin:0}h4{font-size:2.125rem;font-weight:800;letter-spacing:0;line-height:2.5rem;margin:0}h5{font-size:1.5rem;font-weight:700;letter-spacing:0;line-height:2rem;margin:0}h6{font-size:1.25rem;font-weight:600;letter-spacing:0;line-height:2rem;margin:0}body{background-color:var(--qas-background-color)}.q-field--outlined .q-field__inner{background-color:#fff;border-radius:var(--qas-generic-border-radius)}.q-radio__inner::before{color:var(--q-primary)}.q-tabs__arrow{color:var(--q-primary)}.bg-no-repeat{background-repeat:no-repeat !important}.bg-size-contain{background-size:contain !important}.bg-size-cover{background-size:cover !important}.bg-position-bottom{background-position:bottom !important}.bg-position-center{background-position:center !important}.bg-position-left{background-position:left !important}.bg-position-right{background-position:right !important}.bg-position-top{background-position:top !important}.border-secondary-contrast:not(.border-top):not(.border-left):not(.border-bottom):not(.border-right),.border-secondary:not(.border-top):not(.border-left):not(.border-bottom):not(.border-right),.border-primary-contrast:not(.border-top):not(.border-left):not(.border-bottom):not(.border-right),.border-primary:not(.border-top):not(.border-left):not(.border-bottom):not(.border-right){border-width:1px !important}.border-primary{border:0 solid var(--q-primary) !important}.border-primary-contrast{border:0 solid var(--q-primary-contrast) !important}.border-secondary{border:0 solid var(--q-secondary) !important}.border-secondary-contrast{border:0 solid var(--q-secondary-contrast) !important}.border-top{border-top-width:1px !important}.border-left{border-left-width:1px !important}.border-bottom{border-bottom-width:1px !important}.border-right{border-right-width:1px !important}.rounded-borders-sm{border-radius:calc(var(--qas-generic-border-radius) / 2) !important}.rounded-borders-lg{border-radius:calc(var(--qas-generic-border-radius) * 2) !important}.rounded-borders-top{border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-borders-right{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-borders-bottom{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-borders-left{border-bottom-right-radius:0 !important;border-top-right-radius:0 !important}.container,.container-xs,.container-sm,.container-md,.container-lg,.container-xl{margin-left:auto;margin-right:auto;max-width:1280px;width:calc(100% - 80px)}.container.spaced,.container-xs.spaced,.container-sm.spaced,.container-md.spaced,.container-lg.spaced,.container-xl.spaced{padding-bottom:20px;padding-top:20px}@media(max-width: 599px){.container,.container-xs,.container-sm,.container-md,.container-lg,.container-xl{width:calc(100% - 20px)}}.container-xs{max-width:599px !important}.container-sm{max-width:1023px !important}.container-md{max-width:1439px !important}.container-lg{max-width:1919px !important}body{font-family:Inter,system-ui,sans-serif}.qs-lh-xs{line-height:.85 !important}.qs-lh-sm{line-height:1 !important}.qs-lh-md{line-height:1.15 !important}.qs-lh-lg{line-height:1.3 !important}.qs-lh-xl{line-height:1.5 !important}.opacity-10{opacity:0.1 !important}.opacity-20{opacity:0.2 !important}.opacity-30{opacity:0.3 !important}.opacity-40{opacity:0.4 !important}.opacity-50{opacity:0.5 !important}.opacity-60{opacity:0.6 !important}.opacity-70{opacity:0.7 !important}.opacity-80{opacity:0.8 !important}.opacity-90{opacity:0.9 !important}.text-baseline{vertical-align:baseline !important}.text-break{word-break:break-all !important}.text-underline{text-decoration:underline !important}.text-no-decoration{text-decoration:none !important}.unset{all:unset}a.unset,button.unset{cursor:pointer}.qas-actions-menu__list{width:265px;z-index:1}.qas-alert{border-style:solid;border-width:0 10px}.qas-app-bar__toolbar{height:70px}.qas-app-bar__brand{height:24px;margin-right:8px;position:relative;top:4px}.qas-app-bar__user{background-color:var(--qas-background-color);transition:background-color .3s cubic-bezier(0.25, 0.8, 0.5, 1)}.qas-app-bar__user:focus,.qas-app-bar__user:hover{background-color:rgba(255,255,255,.2)}.qas-app-bar__user-data{max-width:180px}.qas-app-bar__user-menu{width:260px}@media(max-width: 599px){.qas-app-bar__user-data{display:none}}.q-expansion-item--expanded .q-item:not(.qas-app-menu--active.q-item){background-color:#fafafa}.qas-list-items .q-list>.q-item{padding:24px 16px}.qas-map__draw{height:300px;width:100%}.qas-nested-fields__actions{height:56px}.qas-signature-pad__canvas{border:1px solid rgba(0,0,0,.12)}.qas-table-generator .q-table th{font-weight:bold}.qas-table-generator--mobile{margin:0 -10px}.qas-table-generator--mobile .q-table{margin-left:10px}.qas-uploader__input{display:none}.qas-transfer__icon{transform:rotate(-90deg)}
1
+ @import"https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,400;0,700;1,400;1,700&display=swap";:root{--qas-background-color: #f5f5f5;--qas-generic-border-radius: 8px}h1{font-size:6rem;font-weight:800;letter-spacing:0;line-height:6rem;margin:0}h2{font-size:3.75rem;font-weight:700;letter-spacing:0;line-height:3.75rem;margin:0}h3{font-size:3rem;font-weight:600;letter-spacing:0;line-height:2.5rem;margin:0}h4{font-size:2.125rem;font-weight:800;letter-spacing:0;line-height:2.5rem;margin:0}h5{font-size:1.5rem;font-weight:700;letter-spacing:0;line-height:2rem;margin:0}h6{font-size:1.25rem;font-weight:600;letter-spacing:0;line-height:2rem;margin:0}body{background-color:var(--qas-background-color)}.q-field--outlined .q-field__inner{background-color:#fff;border-radius:var(--qas-generic-border-radius)}.q-radio__inner::before{color:var(--q-primary)}.q-tabs__arrow{color:var(--q-primary)}.bg-no-repeat{background-repeat:no-repeat !important}.bg-size-contain{background-size:contain !important}.bg-size-cover{background-size:cover !important}.bg-position-bottom{background-position:bottom !important}.bg-position-center{background-position:center !important}.bg-position-left{background-position:left !important}.bg-position-right{background-position:right !important}.bg-position-top{background-position:top !important}.border-secondary-contrast:not(.border-top):not(.border-left):not(.border-bottom):not(.border-right),.border-secondary:not(.border-top):not(.border-left):not(.border-bottom):not(.border-right),.border-primary-contrast:not(.border-top):not(.border-left):not(.border-bottom):not(.border-right),.border-primary:not(.border-top):not(.border-left):not(.border-bottom):not(.border-right){border-width:1px !important}.border-primary{border:0 solid var(--q-primary) !important}.border-primary-contrast{border:0 solid var(--q-primary-contrast) !important}.border-secondary{border:0 solid var(--q-secondary) !important}.border-secondary-contrast{border:0 solid var(--q-secondary-contrast) !important}.border-top{border-top-width:1px !important}.border-left{border-left-width:1px !important}.border-bottom{border-bottom-width:1px !important}.border-right{border-right-width:1px !important}.rounded-borders-sm{border-radius:calc(var(--qas-generic-border-radius) / 2) !important}.rounded-borders-lg{border-radius:calc(var(--qas-generic-border-radius) * 2) !important}.rounded-borders-top{border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-borders-right{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-borders-bottom{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-borders-left{border-bottom-right-radius:0 !important;border-top-right-radius:0 !important}.container,.container-xs,.container-sm,.container-md,.container-lg,.container-xl{margin-left:auto;margin-right:auto;max-width:1280px;width:calc(100% - 80px)}.container.spaced,.container-xs.spaced,.container-sm.spaced,.container-md.spaced,.container-lg.spaced,.container-xl.spaced{padding-bottom:20px;padding-top:20px}@media(max-width: 599px){.container,.container-xs,.container-sm,.container-md,.container-lg,.container-xl{width:calc(100% - 20px)}}.container-xs{max-width:599px !important}.container-sm{max-width:1023px !important}.container-md{max-width:1439px !important}.container-lg{max-width:1919px !important}body{font-family:Inter,system-ui,sans-serif}.qs-lh-xs{line-height:.85 !important}.qs-lh-sm{line-height:1 !important}.qs-lh-md{line-height:1.15 !important}.qs-lh-lg{line-height:1.3 !important}.qs-lh-xl{line-height:1.5 !important}.opacity-10{opacity:0.1 !important}.opacity-20{opacity:0.2 !important}.opacity-30{opacity:0.3 !important}.opacity-40{opacity:0.4 !important}.opacity-50{opacity:0.5 !important}.opacity-60{opacity:0.6 !important}.opacity-70{opacity:0.7 !important}.opacity-80{opacity:0.8 !important}.opacity-90{opacity:0.9 !important}.text-baseline{vertical-align:baseline !important}.text-break{word-break:break-all !important}.text-underline{text-decoration:underline !important}.text-no-decoration{text-decoration:none !important}.unset{all:unset}a.unset,button.unset{cursor:pointer}.qas-actions-menu__list{width:265px;z-index:1}.qas-alert{border-style:solid;border-width:0 10px}.qas-app-bar__toolbar{height:70px}.qas-app-bar__brand{height:24px;margin-right:8px;position:relative;top:4px}.qas-app-bar__user{background-color:var(--qas-background-color);transition:background-color .3s cubic-bezier(0.25, 0.8, 0.5, 1)}.qas-app-bar__user:focus,.qas-app-bar__user:hover{background-color:rgba(255,255,255,.2)}.qas-app-bar__user-data{max-width:180px}.qas-app-bar__user-menu{width:260px}@media(max-width: 599px){.qas-app-bar__user-data{display:none}}.q-expansion-item--expanded .q-item:not(.qas-app-menu--active.q-item){background-color:#fafafa}.qas-list-items .q-list>.q-item{padding:24px 16px}.qas-map__draw{height:300px;width:100%}.qas-nested-fields__actions{height:56px}.qas-signature-pad__canvas{border:1px solid rgba(0,0,0,.12)}.qas-table-generator .q-table th{font-weight:bold}.qas-table-generator--mobile{margin:0 -10px}.qas-table-generator--mobile .q-table{margin-left:10px}.qas-transfer__icon{transform:rotate(-90deg)}.qas-uploader__input{display:none}