@bildvitta/quasar-ui-asteroid 2.12.4 → 3.0.0-alpha.1

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 (188) hide show
  1. package/dist/api/QasBox.json +16 -0
  2. package/dist/api/QasBreakline.json +32 -0
  3. package/dist/api/QasBtn.json +15 -0
  4. package/dist/api/QasDebugger.json +13 -0
  5. package/dist/asteroid.cjs.css +1 -0
  6. package/dist/asteroid.cjs.js +9154 -0
  7. package/dist/asteroid.cjs.min.js +6 -0
  8. package/dist/asteroid.esm.css +1 -0
  9. package/dist/asteroid.esm.js +9145 -0
  10. package/dist/asteroid.esm.min.js +6 -0
  11. package/dist/asteroid.umd.css +1 -0
  12. package/dist/asteroid.umd.js +9148 -0
  13. package/dist/asteroid.umd.min.js +6 -0
  14. package/dist/vetur/asteroid-attributes.json +30 -0
  15. package/dist/vetur/asteroid-tags.json +29 -0
  16. package/package.json +42 -56
  17. package/src/assets/logo-modular.svg +1 -0
  18. package/src/asteroid.js +1 -0
  19. package/src/components/actions/QasActions.vue +45 -0
  20. package/src/components/actions-menu/QasActionsMenu.vue +8 -19
  21. package/src/components/alert/QasAlert.vue +90 -0
  22. package/src/components/app-bar/QasAppBar.vue +59 -61
  23. package/src/components/app-menu/QasAppMenu.vue +128 -41
  24. package/src/components/avatar/QasAvatar.vue +7 -3
  25. package/src/components/box/QasBox.vue +12 -4
  26. package/src/components/box/QasBox.yml +13 -0
  27. package/src/components/breakline/QasBreakline.vue +37 -0
  28. package/src/components/breakline/QasBreakline.yml +25 -0
  29. package/src/components/btn/QasBtn.vue +27 -24
  30. package/src/components/btn/QasBtn.yml +12 -0
  31. package/src/components/card/QasCard.vue +29 -21
  32. package/src/components/checkbox-group/QasCheckboxGroup.vue +31 -17
  33. package/src/components/copy/QasCopy.vue +22 -11
  34. package/src/components/date-time-input/QasDateTimeInput.vue +16 -26
  35. package/src/components/debugger/QasDebugger.vue +2 -0
  36. package/src/components/debugger/QasDebugger.yml +10 -0
  37. package/src/components/delete/QasDelete.vue +28 -15
  38. package/src/components/dialog/QasDialog.vue +71 -67
  39. package/src/components/dialog-router/QasDialogRouter.vue +12 -4
  40. package/src/components/field/QasField.vue +22 -25
  41. package/src/components/filters/QasFilters.vue +31 -24
  42. package/src/components/form-generator/QasFormGenerator.vue +13 -15
  43. package/src/components/form-view/QasFormView.vue +117 -66
  44. package/src/components/gallery/QasGallery.vue +39 -26
  45. package/src/components/grid-generator/QasGridGenerator.vue +12 -6
  46. package/src/components/index.js +0 -0
  47. package/src/components/input/QasInput.vue +38 -36
  48. package/src/components/label/QasLabel.vue +14 -15
  49. package/src/components/layout/QasLayout.vue +81 -0
  50. package/src/components/list-items/QasListItems.vue +16 -8
  51. package/src/components/list-view/QasListView.vue +31 -28
  52. package/src/components/map/QasMap.vue +15 -25
  53. package/src/components/nested-fields/QasNestedFields.vue +39 -36
  54. package/src/components/numeric-input/QasNumericInput.vue +125 -0
  55. package/src/components/page-header/QasPageHeader.vue +19 -10
  56. package/src/components/password-input/QasPasswordInput.vue +20 -18
  57. package/src/components/password-strength-checker/QasPasswordStrengthChecker.vue +52 -31
  58. package/src/components/profile/QasProfile.vue +14 -12
  59. package/src/components/resizer/QasResizer.vue +1 -1
  60. package/src/components/search-box/QasSearchBox.vue +36 -20
  61. package/src/components/select/QasSelect.vue +43 -44
  62. package/src/components/select-list/QasSelectList.vue +64 -51
  63. package/src/components/signature-pad/QasSignaturePad.vue +57 -41
  64. package/src/components/signature-uploader/QasSignatureUploader.vue +15 -13
  65. package/src/components/single-view/QasSingleView.vue +31 -17
  66. package/src/components/sortable/QasSortable.vue +45 -27
  67. package/src/components/table-generator/QasTableGenerator.vue +95 -22
  68. package/src/components/tabs-generator/QasTabsGenerator.vue +36 -24
  69. package/src/components/text-truncate/QasTextTruncate.vue +25 -17
  70. package/src/components/transfer/QasTransfer.vue +57 -53
  71. package/src/components/uploader/QasUploader.vue +169 -48
  72. package/src/css/background.scss +1 -1
  73. package/src/css/border.scss +7 -6
  74. package/src/css/design-system.scss +0 -43
  75. package/src/css/fonts.scss +2 -28
  76. package/src/css/opacity.scss +0 -4
  77. package/src/css/set-brand.scss +15 -0
  78. package/src/css/transitions.scss +1 -1
  79. package/src/helpers/add-counter-suffix.js +3 -0
  80. package/src/helpers/{base64ToBlob.js → base-64-to-blob.js} +0 -0
  81. package/src/helpers/{constructObject.js → construct-object.js} +0 -0
  82. package/src/helpers/filter-object.js +8 -6
  83. package/src/helpers/filters.js +3 -4
  84. package/src/helpers/get-slot-children-text.js +15 -0
  85. package/src/helpers/{greatestCommonDivisor.js → greatest-common-divisor.js} +0 -0
  86. package/src/helpers/images.js +28 -0
  87. package/src/helpers/index.js +11 -57
  88. package/src/helpers/is-local-development.js +3 -0
  89. package/src/helpers/scroll-on-grap.js +61 -0
  90. package/src/index.cjs.js +1 -0
  91. package/src/index.esm.js +4 -0
  92. package/src/index.scss +18 -20
  93. package/src/index.umd.js +2 -0
  94. package/src/mixins/context.js +1 -1
  95. package/src/mixins/dialog-router.js +17 -0
  96. package/src/mixins/form.js +4 -12
  97. package/src/mixins/generator.js +14 -14
  98. package/src/mixins/index.js +2 -8
  99. package/src/mixins/password.js +73 -11
  100. package/src/mixins/screen.js +8 -6
  101. package/src/mixins/view.js +57 -20
  102. package/src/plugins/Dialog.js +14 -0
  103. package/src/plugins/NotifySuccess.js +3 -3
  104. package/src/plugins/index.js +4 -2
  105. package/src/store/history.js +43 -0
  106. package/src/store/index.js +1 -0
  107. package/src/vue-plugin.js +185 -0
  108. package/.babelrc +0 -12
  109. package/.storybook/main.js +0 -35
  110. package/.storybook/preview.js +0 -26
  111. package/debug.log +0 -1
  112. package/index.js +0 -4
  113. package/jest-setup.js +0 -1
  114. package/jest.config.json +0 -22
  115. package/postcss.config.js +0 -5
  116. package/src/components/Introduction.stories.mdx +0 -12
  117. package/src/components/actions-menu/QasActionsMenu.stories.js +0 -73
  118. package/src/components/app-bar/QasAppBar.stories.js +0 -88
  119. package/src/components/app-menu/QasAppMenu.stories.js +0 -62
  120. package/src/components/apps-menu/QasAppsMenu.spec.js +0 -58
  121. package/src/components/apps-menu/QasAppsMenu.stories.js +0 -54
  122. package/src/components/apps-menu/QasAppsMenu.vue +0 -48
  123. package/src/components/avatar/QasAvatar.spec.js +0 -14
  124. package/src/components/avatar/QasAvatar.stories.js +0 -52
  125. package/src/components/box/QasBox.spec.js +0 -18
  126. package/src/components/box/QasBox.stories.js +0 -35
  127. package/src/components/break-line/QasBreakLine.stories.js +0 -57
  128. package/src/components/break-line/QasBreakLine.vue +0 -52
  129. package/src/components/btn/QasBtn.stories.js +0 -45
  130. package/src/components/btn-actions/QasBtnActions.stories.js +0 -77
  131. package/src/components/btn-actions/QasBtnActions.vue +0 -54
  132. package/src/components/card/QasCard.stories.js +0 -126
  133. package/src/components/checkbox-group/QasCheckboxGroup.stories.js +0 -59
  134. package/src/components/copy/QasCopy.stories.js +0 -41
  135. package/src/components/date-time-input/QasDateTimeInput.stories.js +0 -67
  136. package/src/components/debugger/QasDebugger.stories.js +0 -33
  137. package/src/components/decimal-input/QasDecimalInput.stories.js +0 -82
  138. package/src/components/decimal-input/QasDecimalInput.vue +0 -92
  139. package/src/components/delete/QasDelete.stories.js +0 -80
  140. package/src/components/dialog/QasDialog.stories.js +0 -139
  141. package/src/components/dialog-router/QasDialogRouter.stories.js +0 -38
  142. package/src/components/field/QasField.stories.js +0 -181
  143. package/src/components/filters/QasFilters.stories.js +0 -121
  144. package/src/components/form-generator/QasFormGenerator.stories.js +0 -115
  145. package/src/components/form-view/QasFormView.stories.js +0 -236
  146. package/src/components/gallery/QasGallery.stories.js +0 -91
  147. package/src/components/grid-generator/QasGridGenerator.stories.js +0 -138
  148. package/src/components/input/QasInput.stories.js +0 -78
  149. package/src/components/label/QasLabel.stories.js +0 -60
  150. package/src/components/list-items/QasListItems.stories.js +0 -130
  151. package/src/components/list-view/QasListView.stories.js +0 -168
  152. package/src/components/map/QasMap.stories.js +0 -75
  153. package/src/components/nested-fields/QasNestedFields.stories.js +0 -255
  154. package/src/components/page-header/QasPageHeader.stories.js +0 -61
  155. package/src/components/password-input/QasPasswordInput.stories.js +0 -76
  156. package/src/components/password-strength-checker/QasPasswordStrengthChecker.stories.js +0 -54
  157. package/src/components/profile/QasProfile.stories.js +0 -131
  158. package/src/components/resizer/QasResizer.stories.js +0 -43
  159. package/src/components/search-box/QasSearchBox.stories.js +0 -111
  160. package/src/components/select/QasSelect.stories.js +0 -113
  161. package/src/components/select-list/QasSelectList.stories.js +0 -153
  162. package/src/components/signature-pad/QasSignaturePad.stories.js +0 -51
  163. package/src/components/signature-uploader/QasSignatureUploader.stories.js +0 -69
  164. package/src/components/single-view/QasSingleView.stories.js +0 -130
  165. package/src/components/sortable/QasSortable.stories.js +0 -80
  166. package/src/components/table-generator/QasTableGenerator.stories.js +0 -116
  167. package/src/components/tabs-generator/QasTabsGenerator.stories.js +0 -145
  168. package/src/components/text-truncate/QasTextTruncate.stories.js +0 -55
  169. package/src/components/tip/QasTip.stories.js +0 -57
  170. package/src/components/tip/QasTip.vue +0 -68
  171. package/src/components/tooltip/QasTooltip.stories.js +0 -63
  172. package/src/components/tooltip/QasTooltip.vue +0 -81
  173. package/src/components/transfer/QasTransfer.stories.js +0 -118
  174. package/src/components/uploader/QasCustomUploader.vue +0 -121
  175. package/src/components/uploader/QasUploader.stories.js +0 -139
  176. package/src/directives/Test.js +0 -13
  177. package/src/helpers/historyHandler.js +0 -52
  178. package/src/helpers/label.js +0 -3
  179. package/src/index.js +0 -245
  180. package/src/mixins/map-markers.js +0 -26
  181. package/src/mixins/unsaved-changes.js +0 -24
  182. package/src/mixins/uploader.js +0 -30
  183. package/src/mocks/json/user.json +0 -27
  184. package/src/mocks/json/users-new.json +0 -23
  185. package/src/mocks/json/users.json +0 -97
  186. package/src/mocks/storeModule.js +0 -71
  187. package/src/pages/Forbidden.vue +0 -6
  188. package/src/pages/NotFound.vue +0 -6
@@ -1,130 +0,0 @@
1
- import QasListItems from './QasListItems.vue'
2
-
3
- const slotDefaults = {
4
- defaultValue: {
5
- detail: JSON.stringify({
6
- item: 'object',
7
- index: 'number'
8
- }),
9
- summary: '{}'
10
- },
11
-
12
- type: {
13
- summary: null
14
- }
15
- }
16
-
17
- export default {
18
- component: QasListItems,
19
- title: 'Components/ListItems',
20
-
21
- parameters: {
22
- docs: {
23
- description: {
24
- component: 'Extends [QList and QItem](https://v1.quasar.dev/vue-components/list-and-list-items#qlist-api) from quasar for creating a list of items.'
25
- }
26
- }
27
- },
28
-
29
- argTypes: {
30
- // Props
31
- iconProps: {
32
- description: 'Icon props.'
33
- },
34
-
35
- list: {
36
- description: 'Array of object.'
37
- },
38
-
39
- redirectKey: {
40
- control: null,
41
- description: 'Key to define the id redirect.'
42
- },
43
-
44
- useIconRedirect: {
45
- description: 'Only redirect when clicked on icon.'
46
- },
47
-
48
- to: {
49
- description: 'Router config like `name`.'
50
- },
51
-
52
- // Slots
53
-
54
- item: {
55
- description: 'Main item slot.',
56
- table: {
57
- ...slotDefaults
58
- }
59
- },
60
-
61
- 'item-section-left': {
62
- description: 'Left section slot.',
63
- table: {
64
- ...slotDefaults
65
- }
66
- },
67
-
68
- 'item-section-side': {
69
- description: 'Side section slot (used for actions).',
70
- table: {
71
- ...slotDefaults
72
- }
73
- }
74
- }
75
- }
76
-
77
- function Generate (template) {
78
- return (args, { argTypes }) => ({
79
- components: { QasListItems },
80
- props: Object.keys(argTypes),
81
- template
82
- })
83
- }
84
-
85
- const args = {
86
- list: [
87
- {
88
- name: 'item 1',
89
- email: 'email1@example.com',
90
- uuid: 'uuid1'
91
- },
92
- {
93
- name: 'item 2',
94
- email: 'email2@example.com',
95
- uuid: 'uuid2'
96
- },
97
- {
98
- name: 'item 3',
99
- email: 'email3@example.com',
100
- uuid: 'uuid3'
101
- }
102
- ],
103
-
104
- useIconRedirect: true
105
- }
106
-
107
- const itemTemplate = (
108
- `
109
- <qas-list-items v-bind="$props">
110
- <template #item-section-left="{ item, index }">
111
- <div>
112
- name: {{ item.name }}
113
- index: {{ index }}
114
- </div>
115
- </template>
116
- </qas-list-items>
117
- `
118
- )
119
-
120
- export const Item = Generate(itemTemplate).bind({})
121
-
122
- Item.args = args
123
-
124
- Item.parameters = {
125
- docs: {
126
- source: {
127
- code: itemTemplate
128
- }
129
- }
130
- }
@@ -1,168 +0,0 @@
1
- import Vuex from 'vuex'
2
- import VueRouter from 'vue-router'
3
-
4
- import users from '../../mocks/storeModule'
5
-
6
- import QasDebugger from '../debugger/QasDebugger'
7
- import QasListView from './QasListView.vue'
8
-
9
- const defaultFilterValues = JSON.stringify({
10
- entity: 'string',
11
- errors: 'object',
12
- fields: 'object',
13
- metadata: 'object'
14
- })
15
-
16
- const slotDefaults = {
17
- defaultValue: {
18
- detail: JSON.stringify({
19
- errors: 'object',
20
- fields: 'object',
21
- metadata: 'object'
22
- }),
23
-
24
- summary: '{}'
25
- },
26
-
27
- type: { summary: null }
28
- }
29
-
30
- export default {
31
- component: QasListView,
32
- title: 'Components/ListView',
33
-
34
- parameters: {
35
- docs: {
36
- description: {
37
- component: 'List of entity rows.'
38
- }
39
- }
40
- },
41
-
42
- argTypes: {
43
- // Props
44
- dialog: {
45
- description: 'Use when the component is inside a dialog.'
46
- },
47
-
48
- disableRefresh: {
49
- description: 'Disables [QPullToRefresh](https://quasar.dev/vue-components/pull-to-refresh). Usually used in conjunction with sortable.'
50
- },
51
-
52
- entity: {
53
- control: null,
54
- description: '[VuexStoreModule](https://github.com/bildvitta/vuex-store-module) entity.'
55
- },
56
-
57
- filtersProps: {
58
- description: 'Controls filters props from [QasFilters](https://asteroid.nave.dev/?path=/docs/components-filters--default)'
59
- },
60
-
61
- noFilter: {
62
- description: 'Hide filters.'
63
- },
64
-
65
- url: {
66
- control: null,
67
- description: 'Ignore entity and specify another endpoint.'
68
- },
69
-
70
- // Events
71
- 'fetch-error': {
72
- description: 'Fires when occur an error fetching value.',
73
- table: {
74
- defaultValue: {
75
- detail: JSON.stringify({ error: 'object' }),
76
- summary: '{}'
77
- }
78
- }
79
- },
80
-
81
- 'fetch-success': {
82
- description: 'Fires when successfully get the value.',
83
- table: {
84
- defaultValue: {
85
- detail: JSON.stringify({ response: 'object' }),
86
- summary: '{}'
87
- }
88
- }
89
- },
90
-
91
- // Slots
92
- default: {
93
- description: 'Main content.',
94
- table: slotDefaults
95
- },
96
-
97
- filter: {
98
- description: 'Replace `QasFilter` component.',
99
- table: {
100
- defaultValue: {
101
- detail: defaultFilterValues,
102
- summary: '{}'
103
- },
104
-
105
- type: { summary: null }
106
- }
107
- },
108
-
109
- footer: {
110
- description: 'Page\'s footer content.',
111
- table: {
112
- type: { summary: null }
113
- }
114
- },
115
-
116
- header: {
117
- description: 'Page\'s header content.',
118
- table: slotDefaults
119
- },
120
-
121
- 'empty-results': {
122
- description: 'Main content when has no results.',
123
- table: {
124
- defaultValue: {
125
- detail: JSON.stringify({
126
- fields: 'object',
127
- metadata: 'object'
128
- }),
129
-
130
- summary: '{}'
131
- },
132
-
133
- type: { summary: null }
134
- },
135
-
136
- type: { summary: null }
137
- }
138
- }
139
- }
140
-
141
- const Template = (args, { argTypes }) => ({
142
- components: { QasDebugger, QasListView },
143
- props: Object.keys(argTypes),
144
-
145
- router: new VueRouter(),
146
-
147
- store: new Vuex.Store({
148
- modules: { users }
149
- }),
150
-
151
- template:
152
- `<q-layout>
153
- <q-page-container>
154
- <qas-list-view v-bind="$props">
155
- <template v-slot="{ results, fields }">
156
- Results: <qas-debugger :inspect="[results]" />
157
- Fields: <qas-debugger :inspect="[fields]" />
158
- </template>
159
- </qas-list-view>
160
- </q-page-container>
161
- </q-layout>`
162
- })
163
-
164
- export const Default = Template.bind({})
165
-
166
- Default.args = {
167
- entity: 'users'
168
- }
@@ -1,75 +0,0 @@
1
- import QasMap from './QasMap.vue'
2
-
3
- export default {
4
- component: QasMap,
5
- title: 'Components/Map',
6
-
7
- parameters: {
8
- docs: {
9
- description: {
10
- component: `Map component. This component's library needs to be initialized at boot of your system like the example:
11
-
12
- import * as VueGoogleMaps from 'gmap-vue'
13
- export default function ({ Vue }) {
14
- Vue.use(VueGoogleMaps, {
15
- load: {
16
- key: 'AIzaSyDl00zRKG51WWBIJa8yVXqX7jFD5xyqe24',
17
- libraries: 'places'
18
- }
19
- })
20
- }`
21
- }
22
- }
23
- },
24
-
25
- argTypes: {
26
- // Props
27
- centerPosition: {
28
- description: 'Define the coordinate to centralize the position.'
29
- },
30
-
31
- hasSearch: {
32
- description: 'Show the search input.'
33
- },
34
-
35
- markers: {
36
- description: 'The list of objects that define and create the main markers in the map.'
37
- },
38
-
39
- showPopup: {
40
- description: 'Shows the popup message on top of the marker.'
41
- },
42
-
43
- zoom: {
44
- description: 'Define the initial zoom.'
45
- }
46
- }
47
- }
48
-
49
- const Template = (args, { argTypes }) => ({
50
- components: { QasMap },
51
- props: Object.keys(argTypes),
52
- template:
53
- '<qas-map :center-position="$_position()" has-search :markers="$_createMarkers(values)" show-popup />'
54
- })
55
-
56
- const marker = {
57
- position: { lat: -21.17663, lng: -47.820839 },
58
- title: 'Teste do componente QasMap',
59
- description: 'Ribeirão Preto',
60
- draggable: true
61
- }
62
-
63
- export const Default = Template.bind({})
64
- Default.args = {
65
- marker
66
- }
67
-
68
- Default.parameters = {
69
- docs: {
70
- source: {
71
- code:
72
- '<qas-map :center-position="{lat: -21.17663, lng: -47.820839 }" has-search :markers="$_createMarker(marker, true)" show-info-window />'
73
- }
74
- }
75
- }
@@ -1,255 +0,0 @@
1
- import QasNestedFields from './QasNestedFields.vue'
2
-
3
- export default {
4
- component: QasNestedFields,
5
- title: 'Components/NestedFields',
6
-
7
- parameters: {
8
- docs: {
9
- description: {
10
- component: 'Component for nested fields.'
11
- }
12
- }
13
- },
14
-
15
- argTypes: {
16
- // Props
17
- addInputLabel: {
18
- description: 'Label of add input.'
19
- },
20
-
21
- btnDestroyProps: {
22
- description: 'Props of destroy btn (not from inline actions).'
23
- },
24
-
25
- btnDuplicateProps: {
26
- description: 'Props of duplicate btn (not from inline actions).'
27
- },
28
-
29
- destroyKey: {
30
- description: 'Key identifier to destroy the field.'
31
- },
32
-
33
- errors: {
34
- description: 'Each field error.'
35
- },
36
-
37
- field: {
38
- description: 'Nested fields'
39
- },
40
-
41
- fieldsEvents: {
42
- description: 'Defines each field events.'
43
- },
44
-
45
- fieldsProps: {
46
- description: 'Defines each field prop.'
47
- },
48
-
49
- formColumns: {
50
- description: 'Grid col class of each field.'
51
- },
52
-
53
- formGutter: {
54
- description: 'Gutter of form fields.'
55
- },
56
-
57
- rowLabel: {
58
- description: 'Defines a text of row title.'
59
- },
60
-
61
- rowObject: {
62
- description: 'Defines the default value to each field.'
63
- },
64
-
65
- useAnimation: {
66
- description: 'Enable animation when add and destroy a field.'
67
- },
68
-
69
- useDestroyAlways: {
70
- description: 'Enable always destroy btn.'
71
- },
72
-
73
- useDuplicate: {
74
- description: 'Enable duplicate btn.'
75
- },
76
-
77
- useIndexLabel: {
78
- description: 'Enable rows enumeration.'
79
- },
80
-
81
- useInlineActions: {
82
- description: 'Enable inline actions.'
83
- },
84
-
85
- useSingleLabel: {
86
- description: 'Enable only one label on component.'
87
- },
88
-
89
- value: {
90
- description: 'Model value.',
91
- control: { type: Array }
92
- },
93
-
94
- // events
95
- input: {
96
- description: 'Fires when model changes. Is also used by `v-model`.',
97
- table: {
98
- defaultValue: { summary: JSON.stringify({ value: 'array' }) }
99
- }
100
- },
101
-
102
- // Slots
103
- 'add-input': {
104
- description: 'slot for change add input',
105
- table: {
106
- category: 'slots',
107
- defaultValue: {
108
- summary: JSON.stringify({
109
- add: 'function'
110
- })
111
- },
112
- type: { summary: null }
113
- }
114
- },
115
-
116
- 'custom-fields': {
117
- description: 'If need to use some custom component you can use this slot and update the model with updateValue function.',
118
- table: {
119
- category: 'slots',
120
- defaultValue: {
121
- summary: JSON.stringify({
122
- index: 'number',
123
- modelValue: 'object',
124
- updateValue: 'function'
125
- })
126
- },
127
- type: { summary: null }
128
- }
129
- },
130
-
131
- 'field-[field.name]': {
132
- description: 'Each field inside `fields` is a slot.',
133
- table: {
134
- category: 'slots',
135
- defaultValue: { summary: JSON.stringify({ field: 'object' }) },
136
- type: { summary: null }
137
- }
138
- }
139
- }
140
- }
141
-
142
- function templateGenerator (template) {
143
- return (args, { argTypes }) => ({
144
- components: { QasNestedFields },
145
- props: Object.keys(argTypes),
146
-
147
- data () {
148
- return {
149
- values: []
150
- }
151
- },
152
-
153
- template
154
- })
155
- }
156
-
157
- const Template = templateGenerator(
158
- `<div>
159
- <qas-nested-fields v-bind="$props" v-model="values" />
160
- <pre>{{ values }}</pre>
161
- </div>`
162
- )
163
-
164
- const defaults = {
165
- field: {
166
- name: 'nested',
167
- type: 'nested',
168
- label: 'Meu nested',
169
- children: {
170
- name: {
171
- name: 'name',
172
- type: 'text',
173
- label: 'Nome'
174
- },
175
- email: {
176
- name: 'email',
177
- type: 'email',
178
- label: 'E-mail'
179
- },
180
- cities: {
181
- name: 'cities',
182
- type: 'select',
183
- label: 'cities',
184
- multiple: true,
185
- options: [
186
- { label: 'City 1', value: 1 },
187
- { label: 'City 2', value: 2 },
188
- { label: 'City 3', value: 3 }
189
- ]
190
- }
191
- }
192
- },
193
-
194
- btnDestroyProps: {
195
- label: 'Remover',
196
- icon: 'o_cancel',
197
- flat: true,
198
- hideMobileLabel: true,
199
- dense: true
200
- },
201
-
202
- btnDuplicateProps: {
203
- label: 'Duplicar',
204
- icon: 'o_content_copy',
205
- flat: true,
206
- hideMobileLabel: true,
207
- dense: true
208
- }
209
- }
210
-
211
- export const Default = Template.bind({})
212
- Default.args = {
213
- ...defaults
214
- }
215
-
216
- export const Error = Template.bind({})
217
- Error.args = {
218
- ...defaults,
219
- errors: [
220
- {
221
- name: 'name is required',
222
- email: 'email is required',
223
- cities: 'cities is required'
224
- }
225
- ]
226
- }
227
-
228
- const customFieldsTemplate = (
229
- `<div>
230
- <qas-nested-fields v-bind="$props" v-model="values">
231
- <template v-slot:custom-fields="{ updateValue, index, modelValue }">
232
- <q-select v-model="modelValue.colors" :options="['blue', 'green', 'black', 'white']" @input="updateValue(modelValue, index)" />
233
- </template>
234
- </qas-nested-fields>
235
- <pre>{{ values }}</pre>
236
- </div>`
237
- )
238
-
239
- export const CustomFields = templateGenerator(customFieldsTemplate)
240
-
241
- CustomFields.args = {
242
- ...defaults,
243
- rowObject: {
244
- name: '',
245
- email: '',
246
- cities: [],
247
- colors: ''
248
- }
249
- }
250
-
251
- CustomFields.parameters = {
252
- docs: {
253
- source: { code: customFieldsTemplate }
254
- }
255
- }
@@ -1,61 +0,0 @@
1
- import QasPageHeader from './QasPageHeader.vue'
2
- import QasBtn from '../btn/QasBtn.vue'
3
-
4
- export default {
5
- component: QasPageHeader,
6
- title: 'Components/PageHeader',
7
-
8
- parameters: {
9
- docs: {
10
- description: {
11
- component: 'Page header structure with breadcrumbs, using [QToolbar](https://quasar.dev/vue-components/toolbar) and [QBreadcrumbs](https://quasar.dev/vue-components/breadcrumbs).'
12
- }
13
- }
14
- },
15
-
16
- argTypes: {
17
- // Props
18
- breadcrumbs: {
19
- description: 'Breadcrumbs structure.'
20
- },
21
-
22
- noBreadcrumbs: {
23
- description: 'Disable breadcrumbs.'
24
- },
25
-
26
- root: {
27
- description: 'Breadcrumbs root route.'
28
- },
29
-
30
- title: {
31
- description: 'Header title.'
32
- },
33
-
34
- // Slots
35
- default: {
36
- description: 'Main slot inside [QToolbar](https://quasar.dev/vue-components/toolbar).',
37
- table: {
38
- type: { summary: null }
39
- }
40
- }
41
- }
42
- }
43
-
44
- const Template = (args, { argTypes }) => ({
45
- components: { QasBtn, QasPageHeader },
46
- props: Object.keys(argTypes),
47
-
48
- template:
49
- `<div>
50
- <qas-page-header v-bind="$props">
51
- <qas-btn label="This is my default template!" />
52
- </qas-page-header>
53
- </div>`
54
- })
55
-
56
- export const Default = Template.bind({})
57
-
58
- Default.args = {
59
- root: { label: 'Home', route: '/' },
60
- title: 'Asteroid'
61
- }