@afeefa/vue-app 0.0.64 → 0.0.67

Sign up to get free protection for your applications and to get access to all the features.
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
  }