@bildvitta/quasar-ui-asteroid 2.16.0 → 3.0.0-alpha.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 (280) hide show
  1. package/dist/api/QasActions.json +40 -0
  2. package/dist/api/QasActionsMenu.json +64 -0
  3. package/dist/api/QasAlert.json +40 -0
  4. package/dist/api/QasAppBar.json +52 -0
  5. package/dist/api/QasAppMenu.json +38 -0
  6. package/dist/api/QasAvatar.json +44 -0
  7. package/dist/api/QasBox.json +16 -0
  8. package/dist/api/QasBreakline.json +32 -0
  9. package/dist/api/QasBtn.json +16 -0
  10. package/dist/api/QasCard.json +52 -0
  11. package/dist/api/QasCheckboxGroup.json +38 -0
  12. package/dist/api/QasCopy.json +29 -0
  13. package/dist/api/QasDateTimeInput.json +60 -0
  14. package/dist/api/QasDebugger.json +13 -0
  15. package/dist/api/QasDelete.json +64 -0
  16. package/dist/api/QasDialog.json +109 -0
  17. package/dist/api/QasDialogRouter.json +31 -0
  18. package/dist/api/QasField.json +56 -0
  19. package/dist/api/QasFilters.json +111 -0
  20. package/dist/api/QasFormGenerator.json +92 -0
  21. package/dist/api/QasFormView.json +228 -0
  22. package/dist/api/QasGallery.json +54 -0
  23. package/dist/api/QasGridGenerator.json +108 -0
  24. package/dist/api/QasInput.json +40 -0
  25. package/dist/api/QasLabel.json +40 -0
  26. package/dist/api/QasLayout.json +47 -0
  27. package/dist/api/QasListItems.json +72 -0
  28. package/dist/api/QasListView.json +161 -0
  29. package/dist/api/QasMap.json +41 -0
  30. package/dist/api/QasNestedFields.json +223 -0
  31. package/dist/api/QasNumericInput.json +68 -0
  32. package/dist/api/QasPageHeader.json +36 -0
  33. package/dist/api/QasPasswordInput.json +121 -0
  34. package/dist/api/QasPasswordStrengthChecker.json +126 -0
  35. package/dist/api/QasProfile.json +74 -0
  36. package/dist/api/QasResizer.json +34 -0
  37. package/dist/api/QasSearchBox.json +91 -0
  38. package/dist/api/QasSelect.json +88 -0
  39. package/dist/api/QasSelectList.json +134 -0
  40. package/dist/api/QasSignaturePad.json +63 -0
  41. package/dist/api/QasSignatureUploader.json +41 -0
  42. package/dist/api/QasSingleView.json +147 -0
  43. package/dist/api/QasSortable.json +80 -0
  44. package/dist/api/QasTableGenerator.json +56 -0
  45. package/dist/api/QasTabsGenerator.json +90 -0
  46. package/dist/api/QasTextTruncate.json +38 -0
  47. package/dist/api/QasTransfer.json +70 -0
  48. package/dist/api/QasUploader.json +143 -0
  49. package/dist/asteroid.cjs.css +1 -0
  50. package/dist/asteroid.cjs.js +9307 -0
  51. package/dist/asteroid.cjs.min.js +6 -0
  52. package/dist/asteroid.esm.css +1 -0
  53. package/dist/asteroid.esm.js +9298 -0
  54. package/dist/asteroid.esm.min.js +6 -0
  55. package/dist/asteroid.umd.css +1 -0
  56. package/dist/asteroid.umd.js +9301 -0
  57. package/dist/asteroid.umd.min.js +6 -0
  58. package/dist/vetur/asteroid-attributes.json +1178 -0
  59. package/dist/vetur/asteroid-tags.json +535 -0
  60. package/package.json +41 -56
  61. package/src/assets/logo-modular.svg +1 -1
  62. package/src/asteroid.js +1 -0
  63. package/src/components/actions/QasActions.vue +45 -0
  64. package/src/components/actions/QasActions.yml +24 -0
  65. package/src/components/actions-menu/QasActionsMenu.vue +41 -14
  66. package/src/components/actions-menu/QasActionsMenu.yml +63 -0
  67. package/src/components/alert/QasAlert.vue +90 -0
  68. package/src/components/alert/QasAlert.yml +33 -0
  69. package/src/components/app-bar/QasAppBar.vue +16 -13
  70. package/src/components/app-bar/QasAppBar.yml +51 -0
  71. package/src/components/app-menu/QasAppMenu.vue +10 -12
  72. package/src/components/app-menu/QasAppMenu.yml +32 -0
  73. package/src/components/avatar/QasAvatar.vue +17 -9
  74. package/src/components/avatar/QasAvatar.yml +38 -0
  75. package/src/components/box/QasBox.vue +12 -4
  76. package/src/components/box/QasBox.yml +13 -0
  77. package/src/components/breakline/QasBreakline.vue +37 -0
  78. package/src/components/breakline/QasBreakline.yml +25 -0
  79. package/src/components/btn/QasBtn.vue +27 -24
  80. package/src/components/btn/QasBtn.yml +13 -0
  81. package/src/components/card/QasCard.vue +32 -33
  82. package/src/components/card/QasCard.yml +42 -0
  83. package/src/components/checkbox-group/QasCheckboxGroup.vue +50 -17
  84. package/src/components/checkbox-group/QasCheckboxGroup.yml +30 -0
  85. package/src/components/copy/QasCopy.vue +22 -11
  86. package/src/components/copy/QasCopy.yml +20 -0
  87. package/src/components/date-time-input/QasDateTimeInput.vue +18 -26
  88. package/src/components/date-time-input/QasDateTimeInput.yml +54 -0
  89. package/src/components/debugger/QasDebugger.vue +2 -0
  90. package/src/components/debugger/QasDebugger.yml +10 -0
  91. package/src/components/delete/QasDelete.vue +43 -16
  92. package/src/components/delete/QasDelete.yml +52 -0
  93. package/src/components/dialog/QasDialog.vue +63 -67
  94. package/src/components/dialog/QasDialog.yml +86 -0
  95. package/src/components/dialog-router/QasDialogRouter.vue +14 -4
  96. package/src/components/dialog-router/QasDialogRouter.yml +23 -0
  97. package/src/components/field/QasField.vue +21 -24
  98. package/src/components/field/QasField.yml +31 -0
  99. package/src/components/filters/QasFilters.vue +33 -26
  100. package/src/components/filters/QasFilters.yml +91 -0
  101. package/src/components/form-generator/QasFormGenerator.vue +13 -15
  102. package/src/components/form-generator/QasFormGenerator.yml +64 -0
  103. package/src/components/form-view/QasFormView.vue +129 -69
  104. package/src/components/form-view/QasFormView.yml +179 -0
  105. package/src/components/gallery/QasGallery.vue +47 -30
  106. package/src/components/gallery/QasGallery.yml +51 -0
  107. package/src/components/grid-generator/QasGridGenerator.vue +15 -7
  108. package/src/components/grid-generator/QasGridGenerator.yml +73 -0
  109. package/src/components/index.js +0 -0
  110. package/src/components/input/QasInput.vue +43 -36
  111. package/src/components/input/QasInput.yml +32 -0
  112. package/src/components/label/QasLabel.vue +14 -15
  113. package/src/components/label/QasLabel.yml +28 -0
  114. package/src/components/layout/QasLayout.vue +13 -21
  115. package/src/components/layout/QasLayout.yml +38 -0
  116. package/src/components/list-items/QasListItems.vue +15 -12
  117. package/src/components/list-items/QasListItems.yml +57 -0
  118. package/src/components/list-view/QasListView.vue +57 -31
  119. package/src/components/list-view/QasListView.yml +132 -0
  120. package/src/components/map/QasMap.vue +15 -31
  121. package/src/components/map/QasMap.yml +33 -0
  122. package/src/components/nested-fields/QasNestedFields.vue +57 -47
  123. package/src/components/nested-fields/QasNestedFields.yml +180 -0
  124. package/src/components/numeric-input/QasNumericInput.vue +31 -22
  125. package/src/components/numeric-input/QasNumericInput.yml +51 -0
  126. package/src/components/page-header/QasPageHeader.vue +20 -11
  127. package/src/components/page-header/QasPageHeader.yml +24 -0
  128. package/src/components/password-input/QasPasswordInput.vue +24 -21
  129. package/src/components/password-input/QasPasswordInput.yml +103 -0
  130. package/src/components/password-strength-checker/QasPasswordStrengthChecker.vue +51 -34
  131. package/src/components/password-strength-checker/QasPasswordStrengthChecker.yml +103 -0
  132. package/src/components/profile/QasProfile.vue +15 -13
  133. package/src/components/profile/QasProfile.yml +60 -0
  134. package/src/components/resizer/QasResizer.vue +3 -3
  135. package/src/components/resizer/QasResizer.yml +23 -0
  136. package/src/components/search-box/QasSearchBox.vue +50 -21
  137. package/src/components/search-box/QasSearchBox.yml +76 -0
  138. package/src/components/select/QasSelect.vue +51 -50
  139. package/src/components/select/QasSelect.yml +62 -0
  140. package/src/components/select-list/QasSelectList.vue +72 -53
  141. package/src/components/select-list/QasSelectList.yml +116 -0
  142. package/src/components/signature-pad/QasSignaturePad.vue +60 -40
  143. package/src/components/signature-pad/QasSignaturePad.yml +53 -0
  144. package/src/components/signature-uploader/QasSignatureUploader.vue +19 -17
  145. package/src/components/signature-uploader/QasSignatureUploader.yml +36 -0
  146. package/src/components/single-view/QasSingleView.vue +41 -22
  147. package/src/components/single-view/QasSingleView.yml +116 -0
  148. package/src/components/sortable/QasSortable.vue +51 -30
  149. package/src/components/sortable/QasSortable.yml +65 -0
  150. package/src/components/table-generator/QasTableGenerator.vue +112 -21
  151. package/src/components/table-generator/QasTableGenerator.yml +46 -0
  152. package/src/components/tabs-generator/QasTabsGenerator.vue +37 -25
  153. package/src/components/tabs-generator/QasTabsGenerator.yml +67 -0
  154. package/src/components/text-truncate/QasTextTruncate.vue +25 -17
  155. package/src/components/text-truncate/QasTextTruncate.yml +32 -0
  156. package/src/components/transfer/QasTransfer.vue +48 -49
  157. package/src/components/transfer/QasTransfer.yml +59 -0
  158. package/src/components/uploader/QasUploader.vue +169 -48
  159. package/src/components/uploader/QasUploader.yml +117 -0
  160. package/src/css/background.scss +1 -1
  161. package/src/css/border.scss +7 -6
  162. package/src/css/design-system.scss +0 -43
  163. package/src/css/fonts.scss +2 -28
  164. package/src/css/opacity.scss +0 -4
  165. package/src/css/set-brand.scss +15 -0
  166. package/src/css/transitions.scss +1 -1
  167. package/src/helpers/add-counter-suffix.js +3 -0
  168. package/src/helpers/{base64ToBlob.js → base-64-to-blob.js} +0 -0
  169. package/src/helpers/{constructObject.js → construct-object.js} +0 -0
  170. package/src/helpers/filter-object.js +8 -6
  171. package/src/helpers/filters.js +8 -4
  172. package/src/helpers/{greatestCommonDivisor.js → get-greatest-common-divisor.js} +0 -0
  173. package/src/helpers/get-slot-children-text.js +15 -0
  174. package/src/helpers/images.js +28 -0
  175. package/src/helpers/index.js +11 -59
  176. package/src/helpers/{isLocalDevelopment.js → is-local-development.js} +0 -0
  177. package/src/helpers/set-scroll-on-grab.js +61 -0
  178. package/src/index.cjs.js +1 -0
  179. package/src/index.esm.js +4 -0
  180. package/src/index.scss +19 -21
  181. package/src/index.umd.js +2 -0
  182. package/src/mixins/context.js +1 -1
  183. package/src/mixins/dialog-router.js +17 -0
  184. package/src/mixins/form.js +4 -12
  185. package/src/mixins/generator.js +14 -14
  186. package/src/mixins/index.js +2 -8
  187. package/src/mixins/password.js +73 -11
  188. package/src/mixins/screen.js +8 -6
  189. package/src/mixins/view.js +62 -22
  190. package/src/plugins/dialog/Dialog.js +14 -0
  191. package/src/plugins/dialog/Dialog.yml +10 -0
  192. package/src/plugins/index.js +4 -2
  193. package/src/plugins/{NotifyError.js → notify-error/NotifyError.js} +0 -0
  194. package/src/plugins/notify-error/NotifyError.yml +11 -0
  195. package/src/plugins/{NotifySuccess.js → notify-success/NotifySuccess.js} +3 -3
  196. package/src/plugins/notify-success/NotifySuccess.yml +11 -0
  197. package/src/store/history.js +43 -0
  198. package/src/store/index.js +1 -0
  199. package/src/vue-plugin.js +185 -0
  200. package/.babelrc +0 -12
  201. package/.storybook/main.js +0 -35
  202. package/.storybook/preview.js +0 -26
  203. package/debug.log +0 -1
  204. package/index.js +0 -4
  205. package/jest-setup.js +0 -1
  206. package/jest.config.json +0 -22
  207. package/postcss.config.js +0 -5
  208. package/src/components/Introduction.stories.mdx +0 -12
  209. package/src/components/actions-menu/QasActionsMenu.stories.js +0 -73
  210. package/src/components/app-bar/QasAppBar.stories.js +0 -84
  211. package/src/components/app-menu/QasAppMenu.stories.js +0 -66
  212. package/src/components/apps-menu/QasAppsMenu.spec.js +0 -58
  213. package/src/components/apps-menu/QasAppsMenu.stories.js +0 -54
  214. package/src/components/apps-menu/QasAppsMenu.vue +0 -48
  215. package/src/components/avatar/QasAvatar.spec.js +0 -14
  216. package/src/components/avatar/QasAvatar.stories.js +0 -52
  217. package/src/components/box/QasBox.spec.js +0 -18
  218. package/src/components/box/QasBox.stories.js +0 -35
  219. package/src/components/break-line/QasBreakLine.stories.js +0 -57
  220. package/src/components/break-line/QasBreakLine.vue +0 -52
  221. package/src/components/btn/QasBtn.stories.js +0 -45
  222. package/src/components/btn-actions/QasBtnActions.stories.js +0 -77
  223. package/src/components/btn-actions/QasBtnActions.vue +0 -54
  224. package/src/components/card/QasCard.stories.js +0 -126
  225. package/src/components/checkbox-group/QasCheckboxGroup.stories.js +0 -59
  226. package/src/components/copy/QasCopy.stories.js +0 -41
  227. package/src/components/date-time-input/QasDateTimeInput.stories.js +0 -67
  228. package/src/components/debugger/QasDebugger.stories.js +0 -33
  229. package/src/components/delete/QasDelete.stories.js +0 -80
  230. package/src/components/dialog/QasDialog.stories.js +0 -139
  231. package/src/components/dialog-router/QasDialogRouter.stories.js +0 -38
  232. package/src/components/field/QasField.stories.js +0 -181
  233. package/src/components/filters/QasFilters.stories.js +0 -121
  234. package/src/components/form-generator/QasFormGenerator.stories.js +0 -115
  235. package/src/components/form-view/QasFormView.stories.js +0 -236
  236. package/src/components/gallery/QasGallery.stories.js +0 -91
  237. package/src/components/grid-generator/QasGridGenerator.stories.js +0 -142
  238. package/src/components/input/QasInput.stories.js +0 -78
  239. package/src/components/label/QasLabel.stories.js +0 -60
  240. package/src/components/layout/QasLayout.stories.js +0 -104
  241. package/src/components/list-items/QasListItems.stories.js +0 -135
  242. package/src/components/list-view/QasListView.stories.js +0 -168
  243. package/src/components/map/QasMap.stories.js +0 -75
  244. package/src/components/nested-fields/QasNestedFields.stories.js +0 -255
  245. package/src/components/numeric-input/QasNumericInput.stories.js +0 -92
  246. package/src/components/page-header/QasPageHeader.stories.js +0 -61
  247. package/src/components/password-input/QasPasswordInput.stories.js +0 -76
  248. package/src/components/password-strength-checker/QasPasswordStrengthChecker.stories.js +0 -54
  249. package/src/components/profile/QasProfile.stories.js +0 -131
  250. package/src/components/resizer/QasResizer.stories.js +0 -43
  251. package/src/components/search-box/QasSearchBox.stories.js +0 -111
  252. package/src/components/select/QasSelect.stories.js +0 -113
  253. package/src/components/select-list/QasSelectList.stories.js +0 -153
  254. package/src/components/signature-pad/QasSignaturePad.stories.js +0 -51
  255. package/src/components/signature-uploader/QasSignatureUploader.stories.js +0 -69
  256. package/src/components/single-view/QasSingleView.stories.js +0 -130
  257. package/src/components/sortable/QasSortable.stories.js +0 -80
  258. package/src/components/table-generator/QasTableGenerator.stories.js +0 -120
  259. package/src/components/tabs-generator/QasTabsGenerator.stories.js +0 -145
  260. package/src/components/text-truncate/QasTextTruncate.stories.js +0 -55
  261. package/src/components/tip/QasTip.stories.js +0 -57
  262. package/src/components/tip/QasTip.vue +0 -68
  263. package/src/components/tooltip/QasTooltip.stories.js +0 -63
  264. package/src/components/tooltip/QasTooltip.vue +0 -81
  265. package/src/components/transfer/QasTransfer.stories.js +0 -118
  266. package/src/components/uploader/QasCustomUploader.vue +0 -120
  267. package/src/components/uploader/QasUploader.stories.js +0 -139
  268. package/src/directives/Test.js +0 -13
  269. package/src/helpers/historyHandler.js +0 -52
  270. package/src/helpers/label.js +0 -3
  271. package/src/index.js +0 -249
  272. package/src/mixins/map-markers.js +0 -26
  273. package/src/mixins/unsaved-changes.js +0 -24
  274. package/src/mixins/uploader.js +0 -30
  275. package/src/mocks/json/user.json +0 -27
  276. package/src/mocks/json/users-new.json +0 -23
  277. package/src/mocks/json/users.json +0 -97
  278. package/src/mocks/storeModule.js +0 -71
  279. package/src/pages/Forbidden.vue +0 -6
  280. package/src/pages/NotFound.vue +0 -6
@@ -0,0 +1,45 @@
1
+ <template>
2
+ <div :class="classes">
3
+ <div class="col-12 col-sm-auto">
4
+ <slot name="secondary" />
5
+ </div>
6
+
7
+ <div class="col-12 col-sm-auto">
8
+ <slot name="primary" />
9
+ </div>
10
+ </div>
11
+ </template>
12
+
13
+ <script>
14
+ import { screenMixin } from '../../mixins'
15
+
16
+ export default {
17
+ name: 'QasActions',
18
+
19
+ mixins: [screenMixin],
20
+
21
+ props: {
22
+ align: {
23
+ default: 'end',
24
+ type: String,
25
+ validator: value => ['start', 'around', 'between', 'center', 'end'].includes(value)
26
+ },
27
+
28
+ gutter: {
29
+ default: 'md',
30
+ type: String,
31
+ validator: value => ['xs', 'sm', 'md', 'lg', 'xl'].includes(value)
32
+ }
33
+ },
34
+
35
+ computed: {
36
+ classes () {
37
+ return [
38
+ `justify-${this.align}`,
39
+ `q-col-gutter-${this.gutter}`,
40
+ this.mx_isSmall ? 'column reverse' : 'row'
41
+ ]
42
+ }
43
+ }
44
+ }
45
+ </script>
@@ -0,0 +1,24 @@
1
+ type: component
2
+
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: [start, end, between, around, center]
12
+
13
+ gutter:
14
+ desc: Espaçamento entre os elementos.
15
+ default: md
16
+ type: String
17
+ examples: ['xs', 'sm', 'md', 'lg', 'xl']
18
+
19
+ slots:
20
+ primary:
21
+ desc: 'Slot para ação primaria (ex: botão de salvar), em telas menores que sm, se torna o primeiro elemento.'
22
+
23
+ secondary:
24
+ desc: 'Slot para ação secundaria (ex: botão de cancelar), em telas menores que sm, se torna o segundo elemento.'
@@ -1,5 +1,7 @@
1
1
  <template>
2
- <qas-btn class="qas-actions-menu" color="primary" v-bind="$attrs" hide-mobile-label :icon="icon" :label="labelValue" outline v-on="$listeners">
2
+ <qas-btn class="qas-actions-menu" color="primary" hide-label-on-small-screen :icon="icon" :label="label" outline>
3
+ <span>{{ label }}</span>
4
+
3
5
  <q-menu class="qas-actions-menu__menu">
4
6
  <q-list class="qas-actions-menu__list" separator>
5
7
  <slot v-for="(item, key) in list" :item="item" :name="key">
@@ -12,13 +14,22 @@
12
14
  </q-item-section>
13
15
  </q-item>
14
16
  </slot>
17
+
18
+ <qas-delete v-if="hasDelete" v-bind="deleteProps" class="text-negative" clickable tag="q-item" @success="onDeleteSuccess">
19
+ <q-item-section>
20
+ <div class="flex items-center justify-center q-gutter-x-sm text-bold">
21
+ <q-icon :name="deleteIcon" />
22
+ <div>{{ deleteLabel }}</div>
23
+ </div>
24
+ </q-item-section>
25
+ </qas-delete>
15
26
  </q-list>
16
27
  </q-menu>
17
28
  </qas-btn>
18
29
  </template>
19
30
 
20
31
  <script>
21
- import QasBtn from '../btn/QasBtn'
32
+ import QasBtn from '../btn/QasBtn.vue'
22
33
 
23
34
  export default {
24
35
  name: 'QasActionsMenu',
@@ -28,8 +39,13 @@ export default {
28
39
  },
29
40
 
30
41
  props: {
42
+ icon: {
43
+ default: 'o_settings',
44
+ type: String
45
+ },
46
+
31
47
  label: {
32
- default: 'Settings',
48
+ default: 'Configurações',
33
49
  type: String
34
50
  },
35
51
 
@@ -38,13 +54,27 @@ export default {
38
54
  type: Object
39
55
  },
40
56
 
41
- hideLabel: {
42
- type: Boolean
57
+ deleteLabel: {
58
+ type: String,
59
+ default: 'Excluir'
43
60
  },
44
61
 
45
- icon: {
46
- default: 'o_settings',
47
- type: String
62
+ deleteIcon: {
63
+ type: String,
64
+ default: 'o_delete'
65
+ },
66
+
67
+ deleteProps: {
68
+ default: () => ({}),
69
+ type: Object
70
+ }
71
+ },
72
+
73
+ emits: ['delete-success'],
74
+
75
+ computed: {
76
+ hasDelete () {
77
+ return !!Object.keys(this.deleteProps).length
48
78
  }
49
79
  },
50
80
 
@@ -54,12 +84,10 @@ export default {
54
84
  const { handler, ...filtered } = item
55
85
  item.handler(filtered)
56
86
  }
57
- }
58
- },
87
+ },
59
88
 
60
- computed: {
61
- labelValue () {
62
- return this.hideLabel ? '' : this.label
89
+ onDeleteSuccess () {
90
+ this.$emit('delete-success')
63
91
  }
64
92
  }
65
93
  }
@@ -70,7 +98,6 @@ export default {
70
98
  &__list {
71
99
  width: 265px;
72
100
  z-index: 1;
73
-
74
101
  }
75
102
  }
76
103
  </style>
@@ -0,0 +1,63 @@
1
+ type: component
2
+
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
+ icon:
8
+ desc: Ícone do botão.
9
+ default: o_settings
10
+ type: String
11
+ examples: [start, end, between, around, center]
12
+
13
+ label:
14
+ desc: Rotulo do botão.
15
+ default: Configurações
16
+ type: String
17
+
18
+ list:
19
+ desc: Lista de items que vão ser criados dentro do menu de ações.
20
+ default: '{}'
21
+ type: Object
22
+ examples: [
23
+ "{
24
+ delete: {
25
+ icon: 'o_visibility',
26
+ label: 'Visualizar',
27
+ handler: () => alert('handler ativado')
28
+ }
29
+ }"
30
+ ]
31
+
32
+ delete-label:
33
+ desc: Rótulo do botão de deletar.
34
+ default: Excluir
35
+ type: String
36
+
37
+ delete-icon:
38
+ desc: Ícone do botão de deletar.
39
+ default: o_delete
40
+ type: String
41
+
42
+ delete-props:
43
+ 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.
44
+ default: {}
45
+ type: Object
46
+
47
+ slots:
48
+ '[nome-da-chave]':
49
+ desc: 'Slot dinâmico gerado a partir das chaves dentro do objeto da prop "list"'
50
+ tag: Escopo
51
+ scope:
52
+ item:
53
+ desc: Escopo que retorna o item atual, valor depende do que foi passado na prop list.
54
+ default: '{}'
55
+ type: Object
56
+ examples: [
57
+ "
58
+ {
59
+ icon: 'o_delete',
60
+ label: 'Delete',
61
+ }
62
+ "
63
+ ]
@@ -0,0 +1,90 @@
1
+ <template>
2
+ <div v-if="model" class="q-pa-lg qas-alert relative-position rounded-borders" :class="classes">
3
+ <qas-btn class="absolute-top-right q-mr-md q-mt-sm" :color="color" dense flat icon="o_close" rounded @click="close" />
4
+
5
+ <div class="q-gutter-md q-mr-lg">
6
+ <slot name="header">
7
+ <h5 v-if="title" class="text-bold text-h5">{{ title }}</h5>
8
+ </slot>
9
+
10
+ <slot>
11
+ <qas-breakline tag="p" :text="text" />
12
+ </slot>
13
+ </div>
14
+ </div>
15
+ </template>
16
+
17
+ <script>
18
+ import QasBreakline from '../breakline/QasBreakline.vue'
19
+ import QasBtn from '../btn/QasBtn.vue'
20
+
21
+ export default {
22
+ name: 'QasAlert',
23
+
24
+ components: {
25
+ QasBreakline,
26
+ QasBtn
27
+ },
28
+
29
+ props: {
30
+ modelValue: {
31
+ default: true,
32
+ type: Boolean
33
+ },
34
+
35
+ text: {
36
+ default: '',
37
+ type: String
38
+ },
39
+
40
+ color: {
41
+ type: String,
42
+ default: 'primary'
43
+ },
44
+
45
+ title: {
46
+ default: '',
47
+ type: String
48
+ }
49
+ },
50
+
51
+ emits: ['update:modelValue'],
52
+
53
+ data () {
54
+ return {
55
+ model: true
56
+ }
57
+ },
58
+
59
+ computed: {
60
+ classes () {
61
+ return {
62
+ [`text-${this.color}`]: true,
63
+ [`bg-${this.color}-contrast`]: ['primary', 'secondary'].includes(this.color)
64
+ }
65
+ }
66
+ },
67
+
68
+ watch: {
69
+ modelValue: {
70
+ handler (value) {
71
+ this.model = value
72
+ },
73
+ immediate: true
74
+ }
75
+ },
76
+
77
+ methods: {
78
+ close () {
79
+ this.$emit('update:modelValue', false)
80
+ }
81
+ }
82
+ }
83
+ </script>
84
+
85
+ <style lang="scss">
86
+ .qas-alert {
87
+ border-style: solid;
88
+ border-width: 0 10px;
89
+ }
90
+ </style>
@@ -0,0 +1,33 @@
1
+ type: component
2
+
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
+ slots:
21
+ default:
22
+ desc: 'Slot para acessar o conteúdo gerado pela prop "text"'
23
+
24
+ header:
25
+ desc: 'Slot para acessar o conteúdo gerado pela prop "title"'
26
+
27
+ events:
28
+ '@update:model-value -> function(value)':
29
+ desc: Dispara quando o model-value altera, também usado para v-model.
30
+ params:
31
+ value:
32
+ desc: Novo valor do model.
33
+ type: Boolean
@@ -1,19 +1,18 @@
1
1
  <template>
2
- <q-header v-bind="$attrs" class="bg-white shadow-primary" height-hint="70" v-on="$listeners">
3
- <q-toolbar class="qas-toolbar" color="bg-white">
2
+ <q-header class="bg-white qas-app-bar shadow-primary" height-hint="70">
3
+ <q-toolbar class="qas-app-bar__toolbar" color="bg-white">
4
4
  <q-ajax-bar color="white" position="top" size="2px" />
5
5
 
6
6
  <q-btn color="grey-7" dense flat icon="o_menu" round @click="toggleMenuDrawer" />
7
7
 
8
8
  <q-toolbar-title class="flex">
9
9
  <div class="cursor-pointer" @click="goToRoot">
10
- <img v-if="brand" :alt="title" class="q-mr-sm qas-toolbar__brand" :src="brand">
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>
12
12
  <q-badge v-if="hasDevelopmentBadge" align="middle" class="q-ml-sm" color="negative" :label="developmentBadgeLabel" />
13
13
  </div>
14
14
  </q-toolbar-title>
15
15
 
16
- <!-- TODO: Notificações. -->
17
16
  <div v-if="hasNotifications" class="q-mr-md">
18
17
  <q-btn class="q-mr-md" dense icon="o_notifications" round unelevated>
19
18
  <q-badge v-if="notifications" color="red" floating>{{ notifications.count }}</q-badge>
@@ -23,16 +22,16 @@
23
22
  <div class="items-center no-wrap q-gutter-md row">
24
23
  <slot name="tools" />
25
24
 
26
- <div v-if="isAuth" class="cursor-pointer items-center q-mr-sm qas-toolbar__user rounded-borders row text-grey-9" :title="user.name || user.givenName">
25
+ <div v-if="isAuth" class="cursor-pointer items-center q-mr-sm qas-app-bar__user rounded-borders row text-grey-9" :title="user.name || user.givenName">
27
26
  <qas-avatar class="rounded-borders-left" color="white" dark :image="user.photo" rounded size="42px" text-color="primary" :title="user.name || user.givenName" />
28
27
 
29
- <div class="q-px-sm qas-toolbar__user-data qs-lh-lg text-caption">
28
+ <div class="q-px-sm qas-app-bar__user-data qs-lh-lg text-caption">
30
29
  <div class="ellipsis">{{ user.name || user.givenName }}</div>
31
30
  <div class="ellipsis text-bold">{{ user.email }}</div>
32
31
  </div>
33
32
 
34
- <q-menu anchor="bottom end" content-class="shadow-primary" max-height="400px" :offset="[0, 5]" self="top end">
35
- <div class="qas-toolbar__user-menu">
33
+ <q-menu anchor="bottom end" class="shadow-primary" max-height="400px" :offset="[0, 5]" self="top end">
34
+ <div class="qas-app-bar__user-menu">
36
35
  <div class="q-pa-lg text-center">
37
36
  <button class="unset" @click="goToProfile">
38
37
  <qas-avatar :image="user.photo" size="145px" :title="user.name || user.givenName" />
@@ -60,8 +59,8 @@
60
59
  </template>
61
60
 
62
61
  <script>
63
- import QasAvatar from '../avatar/QasAvatar'
64
- import QasBtn from '../btn/QasBtn'
62
+ import QasAvatar from '../avatar/QasAvatar.vue'
63
+ import QasBtn from '../btn/QasBtn.vue'
65
64
 
66
65
  export default {
67
66
  name: 'QasAppBar',
@@ -98,6 +97,8 @@ export default {
98
97
  }
99
98
  },
100
99
 
100
+ emits: ['sign-out', 'toggle-menu'],
101
+
101
102
  data () {
102
103
  return {
103
104
  menuDrawer: true
@@ -157,12 +158,14 @@ export default {
157
158
  </script>
158
159
 
159
160
  <style lang="scss">
160
- .qas-toolbar {
161
- height: 70px;
161
+ .qas-app-bar {
162
+ &__toolbar {
163
+ height: 70px;
164
+ }
162
165
 
163
166
  &__brand {
164
167
  height: 24px;
165
- margin-right: map-get($space-sm, x);
168
+ margin-right: 8px;
166
169
  position: relative;
167
170
  top: 4px;
168
171
  }
@@ -0,0 +1,51 @@
1
+ type: component
2
+
3
+ meta:
4
+ desc: Cria um seção para alertar sobre um conteúdo.
5
+
6
+ props:
7
+ is-auth:
8
+ desc: Controla se mostra ou não o menu de usuário.
9
+ type: Boolean
10
+
11
+ title:
12
+ desc: Título do header, normalmente usado como título da aplicação.
13
+ type: String
14
+
15
+ notifications:
16
+ desc: Ícone de notificação que fica ao lado do menu de usuário.
17
+ type: Object
18
+ default: {}
19
+
20
+ user:
21
+ desc: Informações de usuário para ser usado no menu.
22
+ type: Object
23
+ default: {}
24
+ examples: [
25
+ "
26
+ {
27
+ photo: 'minha-img',
28
+ name: 'Eduardo Lima',
29
+ email: 'eduardolima@gmail.com'
30
+ }
31
+ "
32
+ ]
33
+
34
+ slots:
35
+ user:
36
+ desc: Slot para acessar o menu de usuário
37
+ scope:
38
+ user:
39
+ desc: Informações de usuário para ser usado no menu, valor vai depender da prop "user".
40
+ type: Object
41
+ default: {}
42
+
43
+ tools:
44
+ desc: Slot para acessar o header após o elemento de notificações.
45
+
46
+ events:
47
+ '@sign-out -> function()':
48
+ desc: Dispara quando o botão de "sair" é clicado.
49
+
50
+ '@toggle-menu -> function()':
51
+ desc: Dispara quando o botão de "hambúrguer" é clicado para abrir o menu lateral.
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <q-drawer v-model="model" class="qas-app-menu" :mini="miniMode" :width="230" v-on="$listeners" @before-hide="beforeHide" @mini-state="setMiniState">
2
+ <q-drawer v-model="model" class="qas-app-menu" :mini="miniMode" :width="230" @before-hide="beforeHide" @mini-state="setMiniState">
3
3
  <div class="column flex full-height justify-between no-wrap overflow-x-hidden">
4
4
  <div>
5
5
  <div v-if="displayModuleSection" class="q-ma-md">
@@ -7,7 +7,7 @@
7
7
  Você está no modulo:
8
8
  </div>
9
9
 
10
- <qas-select v-model="module" :options="defaultModules" @input="redirectHandler(currentModelOption)" />
10
+ <qas-select v-model="module" :options="defaultModules" @update:model-value="redirectHandler(currentModelOption)" />
11
11
  </div>
12
12
 
13
13
  <q-list class="text-grey-9 text-weight-medium">
@@ -36,7 +36,8 @@
36
36
  </div>
37
37
 
38
38
  <div class="q-mx-md">
39
- <img v-if="!isMini" alt="modular logo" class="block q-mb-md q-mx-auto" src="../../assets/logo-modular.svg">
39
+ <!-- TODO: O Modular não é o Asteroid, então não podemos manter esse logo aqui. -->
40
+ <img v-if="!isMini" alt="Modular" class="block q-mb-md q-mx-auto" src="../../assets/logo-modular.svg">
40
41
  </div>
41
42
  </div>
42
43
  </q-drawer>
@@ -52,17 +53,12 @@ export default {
52
53
  mixins: [screenMixin],
53
54
 
54
55
  props: {
55
- itemClass: {
56
- default: '',
57
- type: [Array, Object, String]
58
- },
59
-
60
56
  items: {
61
57
  default: () => [],
62
58
  type: Array
63
59
  },
64
60
 
65
- value: {
61
+ modelValue: {
66
62
  default: true,
67
63
  type: Boolean
68
64
  },
@@ -78,6 +74,8 @@ export default {
78
74
  }
79
75
  },
80
76
 
77
+ emits: ['update:modelValue'],
78
+
81
79
  data () {
82
80
  return {
83
81
  miniMode: false,
@@ -113,11 +111,11 @@ export default {
113
111
 
114
112
  model: {
115
113
  get () {
116
- return this.value
114
+ return this.modelValue
117
115
  },
118
116
 
119
117
  set (value) {
120
- return this.$emit('input', value)
118
+ return this.$emit('update:modelValue', value)
121
119
  }
122
120
  },
123
121
 
@@ -155,7 +153,7 @@ export default {
155
153
  },
156
154
 
157
155
  beforeHide () {
158
- if (this.$_isLarge) {
156
+ if (this.mx_isLarge) {
159
157
  this.model = true
160
158
  this.miniMode = !this.miniMode
161
159
  }
@@ -0,0 +1,32 @@
1
+ type: component
2
+
3
+ meta:
4
+ desc: Menu lateral.
5
+
6
+ props:
7
+ model-value:
8
+ desc: Model do componente, controla quando o menu lateral é aberto e fechado.
9
+ default: true
10
+ type: Boolean
11
+
12
+ items:
13
+ desc: Itens do menu.
14
+ type: Array
15
+ default: []
16
+
17
+ title:
18
+ desc: Título que vai ficar no label do select de módulos.
19
+ type: String
20
+
21
+ modules:
22
+ desc: Lista de módulos que o usuário tem acesso para navegar.
23
+ type: Array
24
+ default: []
25
+
26
+ events:
27
+ '@update:model-value -> function(value)':
28
+ desc: Dispara quando o model-value altera, também usado para v-model.
29
+ params:
30
+ value:
31
+ desc: Novo valor do model.
32
+ type: Boolean
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <q-avatar class="text-bold" :class="classes" rounded v-bind="$attrs" v-on="$listeners">
2
+ <q-avatar class="text-bold" :class="avatarClass" rounded>
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" />
@@ -8,9 +8,11 @@
8
8
 
9
9
  <script>
10
10
  export default {
11
+ name: 'QasAvatar',
12
+
11
13
  props: {
12
14
  color: {
13
- default: 'primary',
15
+ default: '',
14
16
  type: String
15
17
  },
16
18
 
@@ -29,7 +31,7 @@ export default {
29
31
  },
30
32
 
31
33
  textColor: {
32
- default: '',
34
+ default: 'primary',
33
35
  type: String
34
36
  },
35
37
 
@@ -46,20 +48,26 @@ export default {
46
48
  },
47
49
 
48
50
  computed: {
49
- classes () {
50
- if (this.hasImage) return
51
+ avatarClass () {
52
+ if (this.hasImage) {
53
+ return null
54
+ }
51
55
 
52
- const contrastColor = this.textColor ? this.textColor : this.contrastColor
56
+ const contrastColor = this.color ? this.color : this.contrastColor
57
+ // const contrastColor = this.textColor ? this.textColor : this.contrastColor
53
58
 
54
59
  return [
55
60
  this.dark
56
- ? `bg-${this.color} text-${contrastColor}`
57
- : `bg-${contrastColor} text-${this.color}`
61
+ ? `bg-${this.textColor} text-${contrastColor}`
62
+ : `bg-${contrastColor} text-${this.textColor}`
63
+ // ? `bg-${this.color} text-${contrastColor}`
64
+ // : `bg-${contrastColor} text-${this.color}`
58
65
  ]
59
66
  },
60
67
 
61
68
  contrastColor () {
62
- return `${this.color}-contrast`
69
+ return `${this.textColor}-contrast`
70
+ // return `${this.color}-contrast`
63
71
  },
64
72
 
65
73
  firstLetter () {