@bildvitta/quasar-ui-asteroid 3.2.0-beta.0 → 3.2.0-beta.2

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 (71) hide show
  1. package/package.json +2 -2
  2. package/src/components/app-bar/QasAppBar.vue +30 -21
  3. package/src/components/app-menu/QasAppMenu.vue +68 -59
  4. package/src/components/app-menu/QasAppMenu.yml +0 -4
  5. package/src/components/avatar/QasAvatar.vue +9 -1
  6. package/src/components/layout/QasLayout.vue +3 -1
  7. package/src/css/components/index.scss +1 -0
  8. package/src/css/components/item.scss +35 -0
  9. package/src/css/utils/fonts.scss +2 -2
  10. package/src/css/variables/index.scss +1 -0
  11. package/src/css/variables/spacing.scss +54 -0
  12. package/dist/api/QasActions.json +0 -40
  13. package/dist/api/QasActionsMenu.json +0 -64
  14. package/dist/api/QasAlert.json +0 -40
  15. package/dist/api/QasAppBar.json +0 -48
  16. package/dist/api/QasAppMenu.json +0 -42
  17. package/dist/api/QasAvatar.json +0 -44
  18. package/dist/api/QasBox.json +0 -16
  19. package/dist/api/QasBreakline.json +0 -32
  20. package/dist/api/QasBtn.json +0 -20
  21. package/dist/api/QasCard.json +0 -56
  22. package/dist/api/QasCheckboxGroup.json +0 -38
  23. package/dist/api/QasCopy.json +0 -29
  24. package/dist/api/QasDateTimeInput.json +0 -60
  25. package/dist/api/QasDebugger.json +0 -13
  26. package/dist/api/QasDelete.json +0 -69
  27. package/dist/api/QasDialog.json +0 -113
  28. package/dist/api/QasDialogRouter.json +0 -31
  29. package/dist/api/QasField.json +0 -56
  30. package/dist/api/QasFilters.json +0 -115
  31. package/dist/api/QasFormGenerator.json +0 -128
  32. package/dist/api/QasFormView.json +0 -258
  33. package/dist/api/QasGallery.json +0 -54
  34. package/dist/api/QasGridGenerator.json +0 -109
  35. package/dist/api/QasInput.json +0 -55
  36. package/dist/api/QasLabel.json +0 -40
  37. package/dist/api/QasLayout.json +0 -47
  38. package/dist/api/QasListItems.json +0 -73
  39. package/dist/api/QasListView.json +0 -175
  40. package/dist/api/QasMap.json +0 -41
  41. package/dist/api/QasNestedFields.json +0 -254
  42. package/dist/api/QasNumericInput.json +0 -87
  43. package/dist/api/QasPageHeader.json +0 -36
  44. package/dist/api/QasPasswordInput.json +0 -122
  45. package/dist/api/QasPasswordStrengthChecker.json +0 -126
  46. package/dist/api/QasProfile.json +0 -74
  47. package/dist/api/QasResizer.json +0 -34
  48. package/dist/api/QasSearchBox.json +0 -173
  49. package/dist/api/QasSelect.json +0 -155
  50. package/dist/api/QasSelectList.json +0 -136
  51. package/dist/api/QasSignaturePad.json +0 -63
  52. package/dist/api/QasSignatureUploader.json +0 -48
  53. package/dist/api/QasSingleView.json +0 -156
  54. package/dist/api/QasSortable.json +0 -80
  55. package/dist/api/QasTableGenerator.json +0 -56
  56. package/dist/api/QasTabsGenerator.json +0 -97
  57. package/dist/api/QasTextTruncate.json +0 -38
  58. package/dist/api/QasTransfer.json +0 -71
  59. package/dist/api/QasTreeGenerator.json +0 -89
  60. package/dist/api/QasUploader.json +0 -148
  61. package/dist/asteroid.cjs.css +0 -1
  62. package/dist/asteroid.cjs.js +0 -11153
  63. package/dist/asteroid.cjs.min.js +0 -6
  64. package/dist/asteroid.esm.css +0 -1
  65. package/dist/asteroid.esm.js +0 -11144
  66. package/dist/asteroid.esm.min.js +0 -6
  67. package/dist/asteroid.umd.css +0 -1
  68. package/dist/asteroid.umd.js +0 -11145
  69. package/dist/asteroid.umd.min.js +0 -6
  70. package/dist/vetur/asteroid-attributes.json +0 -1354
  71. package/dist/vetur/asteroid-tags.json +0 -584
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bildvitta/quasar-ui-asteroid",
3
3
  "description": "Asteroid",
4
- "version": "3.2.0-beta.0",
4
+ "version": "3.2.0-beta.2",
5
5
  "author": "Bild & Vitta <systemteam@bild.com.br>",
6
6
  "license": "MIT",
7
7
  "main": "dist/asteroid.cjs.min.js",
@@ -35,7 +35,7 @@
35
35
  "autoprefixer": "^10.4.2",
36
36
  "core-js": "^3.20.2",
37
37
  "postcss": "^8.4.5",
38
- "quasar": "^2.0.0",
38
+ "quasar": "^2.10.0",
39
39
  "rimraf": "^3.0.2",
40
40
  "rollup": "^2.66.0",
41
41
  "rollup-plugin-local-resolve": "^1.0.7",
@@ -1,11 +1,11 @@
1
1
  <template>
2
2
  <q-header class="bg-white qas-app-bar shadow-2" height-hint="70">
3
- <q-toolbar class="qas-app-bar__toolbar" color="bg-white">
3
+ <q-toolbar class="q-px-md qas-app-bar__toolbar" color="bg-white">
4
4
  <q-ajax-bar color="white" position="top" size="2px" />
5
5
 
6
- <qas-btn color="grey-7" dense flat icon="o_menu" round @click="toggleMenuDrawer" />
6
+ <qas-btn v-if="$qas.screen.untilLarge" color="grey-7" dense flat icon="o_menu" round @click="toggleMenuDrawer" />
7
7
 
8
- <q-toolbar-title class="flex">
8
+ <q-toolbar-title class="flex" :class="toolbarTitleClass">
9
9
  <div class="cursor-pointer" @click="goToRoot">
10
10
  <img v-if="brand" :alt="title" class="q-mr-sm qas-app-bar__brand" :src="brand">
11
11
  <span v-if="showTitle" class="text-bold text-grey-9 text-subtitle1 text-uppercase">{{ title }}</span>
@@ -22,23 +22,23 @@
22
22
  <div class="items-center no-wrap q-gutter-md row">
23
23
  <slot name="tools" />
24
24
 
25
- <div v-if="hasUser" class="cursor-pointer items-center q-mr-sm qas-app-bar__user rounded-borders row text-grey-9" :title="userName">
26
- <qas-avatar class="rounded-borders-left" color="white" dark :image="user.photo" rounded size="42px" text-color="primary" :title="userName" />
25
+ <div v-if="hasUser" class="cursor-pointer items-center qas-app-bar__user-content rounded-borders row text-grey-9" :title="userName">
26
+ <qas-avatar color="white" dark :image="user.photo" rounded size="42px" text-color="primary" :title="userName" />
27
27
 
28
- <div class="q-px-sm qas-app-bar__user-data qs-lh-lg text-caption">
29
- <div class="ellipsis">{{ userName }}</div>
30
- <div class="ellipsis text-bold">{{ user.email }}</div>
28
+ <div class="q-ml-md qas-app-bar__user-data qs-lh-lg">
29
+ <div class="ellipsis q-mb-xs qas-app-bar__user-name">{{ userName }}</div>
30
+ <div class="ellipsis qas-app-bar__user-email">{{ user.email }}</div>
31
31
  </div>
32
32
 
33
- <q-menu anchor="bottom end" class="shadow-2" max-height="400px" :offset="[0, 5]" self="top end">
33
+ <q-menu anchor="bottom end" class="shadow-2 text-grey-9" max-height="400px" :offset="[0, 5]" self="top end">
34
34
  <div class="qas-app-bar__user-menu">
35
35
  <div class="q-pa-lg text-center">
36
36
  <button class="unset" @click="goToProfile">
37
37
  <qas-avatar :image="user.photo" size="145px" :title="userName" />
38
38
  </button>
39
39
 
40
- <div class="ellipsis q-mt-lg qs-lh-sm text-bold text-subtitle1">{{ userName }}</div>
41
- <div class="ellipsis q-mt-xs text-caption">{{ user.email }}</div>
40
+ <div class="ellipsis q-mt-lg qas-app-bar__user-name qs-lh-sm">{{ userName }}</div>
41
+ <div class="ellipsis q-mt-xs">{{ user.email }}</div>
42
42
 
43
43
  <div class="q-mt-sm">
44
44
  <qas-btn flat icon="o_edit" label="Editar" :to="user.to" />
@@ -138,6 +138,10 @@ export default {
138
138
 
139
139
  userName () {
140
140
  return this.user.name || this.user.givenName
141
+ },
142
+
143
+ toolbarTitleClass () {
144
+ return !this.$qas.screen.untilLarge && 'q-pl-none'
141
145
  }
142
146
  },
143
147
 
@@ -147,7 +151,11 @@ export default {
147
151
  },
148
152
 
149
153
  goToRoot () {
150
- this.$router.push({ name: 'Root' })
154
+ const hasRoot = this.$router.hasRoute('Root')
155
+
156
+ this.$router.push({
157
+ ...(hasRoot ? { name: 'Root' } : { path: '/' })
158
+ })
151
159
  },
152
160
 
153
161
  signOut () {
@@ -169,30 +177,31 @@ export default {
169
177
 
170
178
  &__brand {
171
179
  height: 24px;
172
- margin-right: 8px;
173
180
  position: relative;
174
181
  top: 4px;
175
182
  }
176
183
 
177
- &__user {
178
- background-color: var(--qas-background-color);
179
- transition: background-color $generic-hover-transition;
180
-
181
- &:focus,
182
- &:hover {
183
- background-color: rgba(white, 0.2);
184
- }
184
+ &__user-content {
185
+ width: 230px;
185
186
  }
186
187
 
187
188
  &__user-data {
188
189
  max-width: 180px;
189
190
  }
190
191
 
192
+ &__user-name {
193
+ font-weight: 600;
194
+ }
195
+
191
196
  &__user-menu {
192
197
  width: 260px;
193
198
  }
194
199
 
195
200
  @media (max-width: $breakpoint-xs) {
201
+ &__user-content {
202
+ width: auto;
203
+ }
204
+
196
205
  &__user-data {
197
206
  display: none;
198
207
  }
@@ -1,43 +1,45 @@
1
1
  <template>
2
- <q-drawer v-model="model" class="qas-app-menu" :mini="miniMode" :width="230" @before-hide="beforeHide" @mini-state="setMiniState">
2
+ <q-drawer v-model="model" :behavior="behavior" bordered class="qas-app-menu" :width="288">
3
3
  <div class="column flex full-height justify-between no-wrap overflow-x-hidden">
4
- <div>
5
- <div v-if="displayModuleSection" class="q-ma-md">
4
+ <div class="q-mt-lg">
5
+ <div v-if="displayModuleSection" class="q-mb-lg q-mx-md">
6
6
  <div class="q-mb-sm text-caption text-grey-7 text-weight-medium">
7
- Você está no modulo:
7
+ Você está em:
8
8
  </div>
9
9
 
10
10
  <qas-select v-model="module" :options="defaultModules" @update:model-value="redirectHandler(currentModelOption)" />
11
11
  </div>
12
12
 
13
- <q-list class="text-grey-9 text-weight-medium">
14
- <template v-for="(header, index) in items">
15
- <q-expansion-item v-if="hasChildren(header)" :key="header.label" :ref="`item-${index}`" :active-class="activeItemClassesSecondary" :default-opened="shouldExpand(header)" expand-icon="o_keyboard_arrow_down" expand-separator group="item" :icon="header.icon" :label="header.label" :to="header.to" @click="toggleItem(index)">
16
- <q-item v-for="(item, itemIndex) in header.children" :key="itemIndex" v-ripple :active-class="activeItemClasses" clickable :to="item.to">
17
- <q-item-section v-if="item.icon" avatar>
18
- <q-icon :name="item.icon" />
13
+ <q-list v-if="items.length" class="q-mb-lg text-grey-9">
14
+ <template v-for="(menuItem, index) in items">
15
+ <div v-if="hasChildren(menuItem)" :key="`children-${index}`" class="qas-app-menu__content">
16
+ <q-item class="items-center">
17
+ {{ menuItem.label }}
18
+ </q-item>
19
+
20
+ <q-item v-for="(menuChildItem, childIndex) in menuItem.children" :key="childIndex" :active="isActive(menuChildItem)" class="qas-app-menu__children qas-app-menu__item-children" :to="getRouterRedirect(menuChildItem)">
21
+ <q-item-section v-if="menuChildItem.icon" avatar>
22
+ <q-icon :name="menuChildItem.icon" />
19
23
  </q-item-section>
24
+
20
25
  <q-item-section>
21
- <q-item-label>{{ item.label }}</q-item-label>
26
+ <q-item-label>{{ menuChildItem.label }}</q-item-label>
22
27
  </q-item-section>
23
28
  </q-item>
24
- </q-expansion-item>
29
+ </div>
25
30
 
26
- <q-item v-else :key="index" v-ripple :active-class="activeItemClasses" clickable :to="header.to">
27
- <q-item-section v-if="header.icon" avatar>
28
- <q-icon :name="header.icon" />
31
+ <q-item v-else :key="index" :active="isActive(menuItem)" active-class="q-router-link--active" class="qas-app-menu__item" :to="getRouterRedirect(menuItem)">
32
+ <q-item-section v-if="menuItem.icon" avatar>
33
+ <q-icon :name="menuItem.icon" />
29
34
  </q-item-section>
35
+
30
36
  <q-item-section>
31
- <q-item-label>{{ header.label }}</q-item-label>
37
+ <q-item-label>{{ menuItem.label }}</q-item-label>
32
38
  </q-item-section>
33
39
  </q-item>
34
40
  </template>
35
41
  </q-list>
36
42
  </div>
37
-
38
- <div v-if="brandMenu" class="q-mx-md">
39
- <img v-if="!isMini" :alt="title" class="block q-mb-md q-mx-auto" :src="brandMenu">
40
- </div>
41
43
  </div>
42
44
  </q-drawer>
43
45
  </template>
@@ -64,11 +66,6 @@ export default {
64
66
  type: String
65
67
  },
66
68
 
67
- brandMenu: {
68
- default: '',
69
- type: String
70
- },
71
-
72
69
  modules: {
73
70
  default: () => [],
74
71
  type: Array
@@ -79,21 +76,11 @@ export default {
79
76
 
80
77
  data () {
81
78
  return {
82
- miniMode: false,
83
- module: '',
84
- isMini: false
79
+ module: ''
85
80
  }
86
81
  },
87
82
 
88
83
  computed: {
89
- activeItemClasses () {
90
- return 'bg-primary-contrast text-primary text-weight-bold'
91
- },
92
-
93
- activeItemClassesSecondary () {
94
- return 'text-primary bg-secondary-contrast'
95
- },
96
-
97
84
  defaultModules () {
98
85
  if (!isLocalDevelopment()) return this.modules
99
86
 
@@ -125,13 +112,17 @@ export default {
125
112
  },
126
113
 
127
114
  displayModuleSection () {
128
- return !this.isMini && this.defaultModules.length
115
+ return this.defaultModules.length
129
116
  },
130
117
 
131
118
  currentModule () {
132
119
  const hostname = window.location.hostname
133
120
 
134
121
  return this.defaultModules.find(module => module?.value.includes(hostname))?.value
122
+ },
123
+
124
+ behavior () {
125
+ return this.$qas.screen.untilLarge ? 'mobile' : 'desktop'
135
126
  }
136
127
  },
137
128
 
@@ -149,35 +140,33 @@ export default {
149
140
  return !!(children || []).length
150
141
  },
151
142
 
152
- shouldExpand ({ children, to }) {
153
- return children?.length && this.$route.matched.some(item => item?.path === to?.path)
154
- },
155
-
156
- beforeHide () {
157
- if (this.$qas.screen.isLarge) {
158
- this.model = true
159
- this.miniMode = !this.miniMode
160
- }
161
- },
162
-
163
- setMiniState (value) {
164
- this.isMini = value
165
- },
166
-
167
143
  redirectHandler ({ value }) {
168
144
  if (!value.includes(window.location.host)) {
169
145
  window.location.href = value
170
146
  }
171
147
  },
172
148
 
173
- toggleItem (index) {
174
- const component = this.getComponent(index)
149
+ getPathFromObject ({ path, name }) {
150
+ if (path) return this.getNormalizedPath(path)
151
+
152
+ const resolvedRoute = this.$router.resolve({ name })
153
+
154
+ return this.getNormalizedPath(resolvedRoute.path)
155
+ },
156
+
157
+ getNormalizedPath (path) {
158
+ return path.split('/').filter(Boolean)?.[0]
159
+ },
175
160
 
176
- component?.to && this.isMini && component.toggle()
161
+ getRouterRedirect ({ to }) {
162
+ return to || ''
177
163
  },
178
164
 
179
- getComponent (index) {
180
- return this.$refs[`item-${index}`]?.[0]
165
+ isActive ({ to }) {
166
+ const currentPath = this.getNormalizedPath(this.$route.path)
167
+ const itemPath = typeof to === 'string' ? this.getNormalizedPath(to) : this.getPathFromObject(to)
168
+
169
+ return currentPath === itemPath
181
170
  }
182
171
  }
183
172
  }
@@ -185,8 +174,28 @@ export default {
185
174
 
186
175
  <style lang="scss">
187
176
  .qas-app-menu {
188
- .q-expansion-item--expanded .q-item:not(&--active.q-item) {
189
- background-color: $grey-1;
177
+ .q-item + .q-item {
178
+ margin-top: var(--qas-spacing-xs);
179
+ }
180
+
181
+ &__children.q-item {
182
+ padding-left: var(--qas-spacing-lg);
183
+ }
184
+
185
+ &__item-children.q-item + &__item-children.q-item {
186
+ margin-top: var(--qas-spacing-sm);
187
+ }
188
+
189
+ &__content + &__content {
190
+ margin-top: var(--qas-spacing-md);
191
+ }
192
+
193
+ &__content + &__item {
194
+ margin-top: var(--qas-spacing-md);
195
+ }
196
+
197
+ &__item + &__content {
198
+ margin-top: var(--qas-spacing-md);
190
199
  }
191
200
  }
192
201
  </style>
@@ -4,10 +4,6 @@ meta:
4
4
  desc: Menu lateral.
5
5
 
6
6
  props:
7
- brand-menu:
8
- desc: Imagem para ser usada como logo no menu.
9
- type: String
10
-
11
7
  items:
12
8
  desc: Itens do menu.
13
9
  type: Array
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <q-avatar class="text-bold" :class="avatarClass" rounded>
2
+ <q-avatar class="text-bold" :class="avatarClass" v-bind="attributes">
3
3
  <q-img v-if="hasImage" :alt="title" :ratio="1" spinner-color="primary" spinner-size="16px" :src="image" @error="onImageLoadedError" />
4
4
  <template v-else-if="hasTitle">{{ firstLetter }}</template>
5
5
  <q-icon v-else :name="icon" />
@@ -10,6 +10,8 @@
10
10
  export default {
11
11
  name: 'QasAvatar',
12
12
 
13
+ inheritAttrs: false,
14
+
13
15
  props: {
14
16
  color: {
15
17
  default: '',
@@ -76,6 +78,12 @@ export default {
76
78
 
77
79
  hasTitle () {
78
80
  return !!this.title
81
+ },
82
+
83
+ attributes () {
84
+ const { square, rounded, ...attributes } = this.$attrs
85
+
86
+ return attributes
79
87
  }
80
88
  },
81
89
 
@@ -65,6 +65,8 @@ export default {
65
65
  watch: {
66
66
  modelValue: {
67
67
  handler (value) {
68
+ if (!this.$qas.screen.untilLarge) return
69
+
68
70
  this.menuDrawer = value
69
71
  },
70
72
  immediate: true
@@ -72,7 +74,7 @@ export default {
72
74
  },
73
75
 
74
76
  mounted () {
75
- this.menuDrawer = !this.$qas.screen.untilMedium
77
+ this.menuDrawer = !this.$qas.screen.untilLarge
76
78
  },
77
79
 
78
80
  methods: {
@@ -1,4 +1,5 @@
1
1
  @import './base';
2
2
  @import './field';
3
+ @import './item';
3
4
  @import './radio';
4
5
  @import './tabs';
@@ -0,0 +1,35 @@
1
+ .q-item {
2
+ font-size: 16px;
3
+
4
+ &.q-router-link--active {
5
+ background-color: transparent !important;
6
+ font-weight: 600;
7
+
8
+ &::before {
9
+ background-color: var(--q-primary);
10
+ bottom: 0;
11
+ color: var(--q-primary);
12
+ content: '';
13
+ left: 0;
14
+ position: absolute;
15
+ top: 0;
16
+ width: 4px;
17
+ }
18
+ }
19
+
20
+ &--clickable {
21
+ transition: color 300ms;
22
+
23
+ &:hover {
24
+ color: var(--q-primary);
25
+ }
26
+ }
27
+
28
+ &__section--avatar {
29
+ min-width: 0;
30
+ }
31
+
32
+ & .q-focus-helper {
33
+ display: none;
34
+ }
35
+ }
@@ -1,5 +1,5 @@
1
- @import url('https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,400;0,700;1,400;1,700&display=swap');
1
+ @import url('https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700;800;900&display=swap');
2
2
 
3
3
  body {
4
- font-family: Inter, system-ui, sans-serif;
4
+ font-family: Nunito, sans-serif;
5
5
  }
@@ -1,2 +1,3 @@
1
1
  @import './button';
2
+ @import './spacing';
2
3
  @import './typography';
@@ -0,0 +1,54 @@
1
+ @use 'sass:map';
2
+
3
+ /*
4
+ * O único valor que de fato é alterado diferente do padrão do Quasar é o tamanho "lg"
5
+ */
6
+ $space-base : 16px;
7
+ $space-x-base : $space-base;
8
+ $space-y-base : $space-base;
9
+
10
+ $space-none : (
11
+ x: 0,
12
+ y: 0
13
+ );
14
+
15
+ $space-xs: (
16
+ x: ($space-x-base * 0.25),
17
+ y: ($space-y-base * 0.25)
18
+ );
19
+
20
+ $space-sm: (
21
+ x: ($space-x-base * 0.5),
22
+ y: ($space-y-base * 0.5)
23
+ );
24
+
25
+ $space-md: (
26
+ x: $space-x-base,
27
+ y: $space-y-base
28
+ );
29
+
30
+ // O tamanho original seria "16px * 1.5" ou "24px", alterado para ter "32px"
31
+ $space-lg: (
32
+ x: ($space-x-base * 2),
33
+ y: ($space-y-base * 2)
34
+ );
35
+
36
+ $space-xl: (
37
+ x: ($space-x-base * 3),
38
+ y: ($space-y-base * 3)
39
+ );
40
+
41
+ $spaces: (
42
+ none: $space-none,
43
+ xs: $space-xs,
44
+ sm: $space-sm,
45
+ md: $space-md,
46
+ lg: $space-lg,
47
+ xl: $space-xl
48
+ );
49
+
50
+ :root {
51
+ @each $key, $space in $spaces {
52
+ --qas-spacing-#{$key}: #{map.get($space, 'x')};
53
+ }
54
+ }
@@ -1,40 +0,0 @@
1
- {
2
- "type": "component",
3
- "meta": {
4
- "desc": "Área de ações para páginas que lidam com botões primários e secundários, como um formulário ou caixa de diálogo."
5
- },
6
- "props": {
7
- "align": {
8
- "desc": "Alinhamento dos elementos.",
9
- "default": "end",
10
- "type": "String",
11
- "examples": [
12
- "start",
13
- "end",
14
- "between",
15
- "around",
16
- "center"
17
- ]
18
- },
19
- "gutter": {
20
- "desc": "Espaçamento entre os elementos.",
21
- "default": "md",
22
- "type": "String",
23
- "examples": [
24
- "xs",
25
- "sm",
26
- "md",
27
- "lg",
28
- "xl"
29
- ]
30
- }
31
- },
32
- "slots": {
33
- "primary": {
34
- "desc": "Slot para ação primaria (ex: botão de salvar), em telas menores que sm, se torna o primeiro elemento."
35
- },
36
- "secondary": {
37
- "desc": "Slot para ação secundaria (ex: botão de cancelar), em telas menores que sm, se torna o segundo elemento."
38
- }
39
- }
40
- }
@@ -1,64 +0,0 @@
1
- {
2
- "type": "component",
3
- "meta": {
4
- "desc": "Componente para abrir um menu de ação a partir de um botão, muito utilizado em tela de edição."
5
- },
6
- "props": {
7
- "delete-icon": {
8
- "desc": "Ícone do botão de deletar.",
9
- "default": "o_delete",
10
- "type": "String"
11
- },
12
- "delete-label": {
13
- "desc": "Rótulo do botão de deletar.",
14
- "default": "Excluir",
15
- "type": "String"
16
- },
17
- "delete-props": {
18
- "desc": "Props para repassar para o componente \"QasDelete\", caso seja um objeto vazio, o componente não vai adicionar a opção de deletar por padrão.",
19
- "default": {},
20
- "type": "Object"
21
- },
22
- "icon": {
23
- "desc": "Ícone do botão.",
24
- "default": "o_settings",
25
- "type": "String",
26
- "examples": [
27
- "start",
28
- "end",
29
- "between",
30
- "around",
31
- "center"
32
- ]
33
- },
34
- "label": {
35
- "desc": "Rotulo do botão.",
36
- "default": "Configurações",
37
- "type": "String"
38
- },
39
- "list": {
40
- "desc": "Lista de items que vão ser criados dentro do menu de ações.",
41
- "default": "{}",
42
- "type": "Object",
43
- "examples": [
44
- "{ delete: { icon: 'o_visibility', label: 'Visualizar', handler: () => alert('handler ativado') } }"
45
- ]
46
- }
47
- },
48
- "slots": {
49
- "[nome-da-chave]": {
50
- "desc": "Slot dinâmico gerado a partir das chaves dentro do objeto da prop \"list\"",
51
- "tag": "Escopo",
52
- "scope": {
53
- "item": {
54
- "desc": "Escopo que retorna o item atual, valor depende do que foi passado na prop list.",
55
- "default": "{}",
56
- "type": "Object",
57
- "examples": [
58
- " { icon: 'o_delete', label: 'Delete', } "
59
- ]
60
- }
61
- }
62
- }
63
- }
64
- }
@@ -1,40 +0,0 @@
1
- {
2
- "type": "component",
3
- "meta": {
4
- "desc": "Cria um seção para alertar sobre um conteúdo."
5
- },
6
- "props": {
7
- "model-value": {
8
- "desc": "Model do componente, controla se o componente aparece ou não.",
9
- "default": true,
10
- "type": "Boolean"
11
- },
12
- "title": {
13
- "desc": "Título do componente.",
14
- "type": "String"
15
- },
16
- "text": {
17
- "desc": "Texto do componente.",
18
- "type": "String"
19
- }
20
- },
21
- "slots": {
22
- "default": {
23
- "desc": "Slot para acessar o conteúdo gerado pela prop \"text\""
24
- },
25
- "header": {
26
- "desc": "Slot para acessar o conteúdo gerado pela prop \"title\""
27
- }
28
- },
29
- "events": {
30
- "@update:model-value -> function(value)": {
31
- "desc": "Dispara quando o model-value altera, também usado para v-model.",
32
- "params": {
33
- "value": {
34
- "desc": "Novo valor do model.",
35
- "type": "Boolean"
36
- }
37
- }
38
- }
39
- }
40
- }