@afeefa/vue-app 0.0.64 → 0.0.67

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 (36) hide show
  1. package/.afeefa/package/release/version.txt +1 -1
  2. package/package.json +1 -1
  3. package/src/components/ABreadcrumbs.vue +75 -18
  4. package/src/components/ADatePicker.vue +1 -1
  5. package/src/components/AIcon.vue +3 -6
  6. package/src/components/AIconButton.vue +1 -2
  7. package/src/components/ARichTextArea.vue +95 -85
  8. package/src/components/ARow.vue +0 -7
  9. package/src/components/form/EditForm.vue +9 -0
  10. package/src/components/form/EditModal.vue +2 -0
  11. package/src/components/form/FormFieldMixin.js +13 -4
  12. package/src/components/form/fields/FormFieldRichTextArea.vue +5 -3
  13. package/src/components/list/ListViewMixin.js +25 -2
  14. package/src/components/mixins/ClickOutsideMixin.js +5 -1
  15. package/src/components/search-select/SearchSelectList.vue +0 -1
  16. package/src/components/vue/Component.js +9 -2
  17. package/src/events.js +1 -0
  18. package/src-admin/components/App.vue +56 -61
  19. package/src-admin/components/Sidebar.vue +66 -0
  20. package/src-admin/components/SidebarItem.vue +59 -0
  21. package/src-admin/components/StickyFooter.vue +42 -0
  22. package/src-admin/components/StickyFooterContainer.vue +66 -0
  23. package/src-admin/components/StickyHeader.vue +73 -0
  24. package/src-admin/components/app/AppBarButtons.vue +0 -7
  25. package/src-admin/components/app/AppBarTitle.vue +55 -11
  26. package/src-admin/components/app/AppBarTitleContainer.vue +2 -3
  27. package/src-admin/components/controls/SearchSelectFormField.vue +1 -0
  28. package/src-admin/components/detail/DetailProperty.vue +20 -16
  29. package/src-admin/components/form/EditFormButtons.vue +21 -4
  30. package/src-admin/components/form/RemoveButton.vue +17 -8
  31. package/src-admin/components/index.js +4 -0
  32. package/src-admin/components/list/ListView.vue +5 -6
  33. package/src-admin/components/pages/EditPage.vue +11 -7
  34. package/src-admin/components/routes/DataRouteMixin.js +1 -1
  35. package/src-admin/config/vuetify.js +22 -2
  36. package/src-admin/styles.scss +21 -4
@@ -1,17 +1,27 @@
1
1
  <template>
2
- <a-row gap="2">
2
+ <a-row
3
+ gap="1"
4
+ v-bind="$attrs"
5
+ >
3
6
  <v-btn
4
- :small="small"
7
+ fab
8
+ small
5
9
  :disabled="($has.reset && !changed) || !valid"
6
10
  color="green white--text"
11
+ title="Speichern"
7
12
  @click="$emit('save')"
8
13
  >
9
- Speichern
14
+ <v-icon>
15
+ $checkIcon
16
+ </v-icon>
10
17
  </v-btn>
11
18
 
12
19
  <v-icon
13
20
  v-if="$has.reset && changed"
14
21
  :small="small"
22
+ :class="{disabled: !changed}"
23
+ :disabled="!changed"
24
+ color="#999999"
15
25
  text
16
26
  title="Formular zurücksetzen"
17
27
  @click="$emit('reset')"
@@ -29,7 +39,7 @@ import { mdiRotateLeft} from '@mdi/js'
29
39
  props: [
30
40
  'changed',
31
41
  'valid',
32
- 'small'
42
+ {small: false}
33
43
  ]
34
44
  })
35
45
  export default class EditFormButtons extends Vue {
@@ -38,3 +48,10 @@ export default class EditFormButtons extends Vue {
38
48
  undoIcon = mdiRotateLeft
39
49
  }
40
50
  </script>
51
+
52
+
53
+ <style lang="scss" scoped>
54
+ .v-icon--disabled {
55
+ opacity: .3;
56
+ }
57
+ </style>
@@ -1,13 +1,22 @@
1
1
  <template>
2
2
  <div>
3
- <a-icon-button
4
- small
5
- color="red white--text"
6
- :class="'removeButton-' + dialogId"
7
- icon="$trashCanIcon"
8
- text="Löschen"
9
- @click="remove"
10
- />
3
+ <v-hover v-slot="{ hover }">
4
+ <v-btn
5
+ :class="'removeButton-' + dialogId"
6
+ fab
7
+ small
8
+ :color="(hover ? 'red' : 'grey lighten-3')"
9
+ title="Löschen"
10
+ @click="remove"
11
+ >
12
+ <v-icon
13
+ :color="hover ? 'white' : '#999999'"
14
+ size="1.4rem"
15
+ >
16
+ $trashCanIcon
17
+ </v-icon>
18
+ </v-btn>
19
+ </v-hover>
11
20
 
12
21
  <a-dialog
13
22
  :id="dialogId"
@@ -19,7 +19,9 @@ import ListView from './list/ListView'
19
19
  import ModelCount from './model/ModelCount'
20
20
  import ModelIcon from './model/ModelIcon'
21
21
  import EditPage from './pages/EditPage'
22
+ import SidebarItem from './SidebarItem.vue'
22
23
  import Start from './Start.vue'
24
+ import StickyFooter from './StickyFooter.vue'
23
25
 
24
26
  Vue.component('ListCard', ListCard)
25
27
  Vue.component('ListColumnHeader', ListColumnHeader)
@@ -46,3 +48,5 @@ Vue.component('AppBarTitle', AppBarTitle)
46
48
 
47
49
  Vue.component('Start', Start)
48
50
  Vue.component('FlyingContext', FlyingContext)
51
+ Vue.component('StickyFooter', StickyFooter)
52
+ Vue.component('SidebarItem', SidebarItem)
@@ -8,12 +8,16 @@
8
8
  />
9
9
  </div>
10
10
 
11
+ <slot
12
+ v-if="$scopedSlots.models"
13
+ name="before-models"
14
+ />
15
+
11
16
  <template v-if="models_.length">
12
17
  <template v-if="$scopedSlots.models">
13
18
  <slot
14
19
  name="models"
15
20
  :models="models_"
16
- :setFilter="setFilter"
17
21
  />
18
22
  </template>
19
23
 
@@ -44,7 +48,6 @@
44
48
  <slot
45
49
  name="model-table"
46
50
  :model="model"
47
- :setFilter="setFilter"
48
51
  />
49
52
  </a-table-row>
50
53
  </a-table>
@@ -110,10 +113,6 @@ export default class ListView extends Mixins(ListViewMixin) {
110
113
  get hasFlyingContext () {
111
114
  return !!this.$listeners.flyingContext
112
115
  }
113
-
114
- setFilter (name, value) {
115
- this.filters[name].value = value
116
- }
117
116
  }
118
117
  </script>
119
118
 
@@ -12,13 +12,15 @@
12
12
  :valid="valid"
13
13
  />
14
14
 
15
- <edit-form-buttons
16
- :changed="changed"
17
- :valid="valid"
18
- :has="{reset: !!modelToEdit.id}"
19
- @save="$emit('save', modelToEdit, ignoreChangesOnRouteChange)"
20
- @reset="$refs.form.reset()"
21
- />
15
+ <app-bar-button>
16
+ <edit-form-buttons
17
+ :changed="changed"
18
+ :valid="valid"
19
+ :has="{reset: !!modelToEdit.id}"
20
+ @save="$emit('save', modelToEdit, ignoreChangesOnRouteChange)"
21
+ @reset="$refs.form.reset()"
22
+ />
23
+ </app-bar-button>
22
24
  </template>
23
25
  </edit-form>
24
26
  </template>
@@ -59,6 +61,8 @@ export default class EditPage extends Vue {
59
61
  * hook to allow to leave a just created (saved) model
60
62
  */
61
63
  ignoreChangesOnRouteChange () {
64
+ // this.$refs.form.forceUnchanged()
65
+ console.info('TODO switch form to forceUnchanged')
62
66
  this.ignoreChangesOnRouteChange_ = true
63
67
  }
64
68
  }
@@ -1,4 +1,4 @@
1
- import { Component, Vue, Watch } from '@a-vue'
1
+ import { Component, Vue } from '@a-vue'
2
2
 
3
3
  Component.registerHooks([
4
4
  'beforeRouteEnter',
@@ -1,17 +1,27 @@
1
1
  import {
2
2
  mdiAlarmLightOutline,
3
+ mdiArrowLeft,
3
4
  mdiCalendar,
5
+ mdiCheck,
6
+ mdiCheckBold,
4
7
  mdiChevronRight,
5
8
  mdiClose,
9
+ mdiCloseThick,
6
10
  mdiDelete,
7
11
  mdiDotsHorizontal,
8
12
  mdiDotsVertical,
9
13
  mdiLock,
10
14
  mdiLogoutVariant,
11
15
  mdiMagnify,
16
+ mdiMenuDown,
17
+ mdiMenuUp,
12
18
  mdiPencil,
13
19
  mdiPlus,
14
- mdiThumbUpOutline
20
+ mdiThumbUpOutline,
21
+ mdiAccountGroup,
22
+ mdiShopping,
23
+ mdiMessage,
24
+ mdiPencilBoxMultiple
15
25
  } from '@mdi/js'
16
26
  import Vue from 'vue'
17
27
  import Vuetify from 'vuetify/lib'
@@ -26,6 +36,7 @@ export default new Vuetify({
26
36
  thumbsUpIcon: mdiThumbUpOutline,
27
37
  alarmIcon: mdiAlarmLightOutline,
28
38
  closeIcon: mdiClose,
39
+ closeBoldIcon: mdiCloseThick,
29
40
  dotsVerticalIcon: mdiDotsVertical,
30
41
  dotsHorizontalIcon: mdiDotsHorizontal,
31
42
  logoutIcon: mdiLogoutVariant,
@@ -34,7 +45,16 @@ export default new Vuetify({
34
45
  trashCanIcon: mdiDelete,
35
46
  calendarIcon: mdiCalendar,
36
47
  searchIcon: mdiMagnify,
37
- lockIcon: mdiLock
48
+ lockIcon: mdiLock,
49
+ checkIcon: mdiCheck,
50
+ checkBoldIcon: mdiCheckBold,
51
+ arrowLeftIcon: mdiArrowLeft,
52
+ caretDownIcon: mdiMenuDown,
53
+ caretUpIcon: mdiMenuUp,
54
+ householdMembers: mdiAccountGroup,
55
+ shop: mdiShopping,
56
+ annotation: mdiMessage,
57
+ duplicates: mdiPencilBoxMultiple
38
58
  }
39
59
  },
40
60
  breakpoint: {
@@ -15,6 +15,7 @@
15
15
  .contextButton {
16
16
  color: #AAAAAA !important;
17
17
  cursor: pointer;
18
+
18
19
  &:hover {
19
20
  color: #333333 !important;
20
21
  }
@@ -27,14 +28,30 @@
27
28
  }
28
29
  }
29
30
 
30
- .v-main {
31
- margin-bottom: 2rem;
32
- }
33
-
34
31
  .theme--light.v-btn.v-btn--has-bg {
35
32
  background-color: #E9E9E9;
36
33
  }
37
34
 
35
+ .theme--light.v-btn.v-btn--disabled,
36
+ .theme--light.v-btn.v-btn--disabled .v-icon,
37
+ .theme--light.v-btn.v-btn--disabled .v-btn__loading {
38
+ color: white !important;
39
+ }
40
+
41
+ .theme--light.v-btn.v-btn--disabled.v-btn--has-bg {
42
+ background-color: #EEEEEE !important;
43
+ }
44
+
45
+ .v-btn {
46
+ box-shadow: none !important;
47
+ }
48
+
49
+ // @for $i from 1 through 10 {
50
+ // .gap-{$i} {
51
+ // gap: 0.25rem * $i;
52
+ // }
53
+ // }
54
+
38
55
  .gap-0 {
39
56
  gap: 0;
40
57
  }