|
6 | 6 | </f7-nav-left>
|
7 | 7 | <f7-nav-title>{{ (page) ? page.config.label : '' }}</f7-nav-title>
|
8 | 8 | <f7-nav-right>
|
9 |
| - <f7-link v-if="isAdmin" icon-md="material:edit" :href="'/settings/pages/' + pageType + '/' + uid"> |
| 9 | + <f7-link v-if="isAdmin" icon-md="material:edit" @click="editPage" class="edit-page-button"> |
10 | 10 | {{ $theme.md ? '' : $t('page.navbar.edit') }}
|
11 | 11 | </f7-link>
|
12 | 12 | <f7-link v-if="fullscreenIcon" class="fullscreen-icon-navbar" :icon-f7="fullscreenIcon" @click="toggleFullscreen" />
|
@@ -95,22 +95,7 @@ export default {
|
95 | 95 | return this.$store.getters.page(this.uid)
|
96 | 96 | },
|
97 | 97 | pageType () {
|
98 |
| - if (!this.page) return null |
99 |
| - switch (this.page.component) { |
100 |
| - case 'oh-layout-page': |
101 |
| - return 'layout' |
102 |
| - case 'oh-map-page': |
103 |
| - return 'map' |
104 |
| - case 'oh-tabs-page': |
105 |
| - return 'tabs' |
106 |
| - case 'oh-plan-page': |
107 |
| - return 'plan' |
108 |
| - case 'oh-chart-page': |
109 |
| - return 'chart' |
110 |
| - default: |
111 |
| - console.warn('Unknown page type!') |
112 |
| - return 'unknown' |
113 |
| - } |
| 98 | + return this.getPageType(this.page) |
114 | 99 | },
|
115 | 100 | isAdmin () {
|
116 | 101 | return this.page && this.$store.getters.isAdmin
|
@@ -149,6 +134,24 @@ export default {
|
149 | 134 | onCommand (itemName, command) {
|
150 | 135 | this.$store.dispatch('sendCommand', { itemName, command })
|
151 | 136 | },
|
| 137 | + getPageType (page) { |
| 138 | + if (!page) return null |
| 139 | + switch (page.component) { |
| 140 | + case 'oh-layout-page': |
| 141 | + return 'layout' |
| 142 | + case 'oh-map-page': |
| 143 | + return 'map' |
| 144 | + case 'oh-tabs-page': |
| 145 | + return 'tabs' |
| 146 | + case 'oh-plan-page': |
| 147 | + return 'plan' |
| 148 | + case 'oh-chart-page': |
| 149 | + return 'chart' |
| 150 | + default: |
| 151 | + console.warn('Unknown page type!') |
| 152 | + return 'unknown' |
| 153 | + } |
| 154 | + }, |
152 | 155 | tabContext (tab) {
|
153 | 156 | const page = tab.config.page ? this.$store.getters.page(tab.config.page.replace('page:', '')) : tab.component
|
154 | 157 | const context = {
|
@@ -180,6 +183,33 @@ export default {
|
180 | 183 | const ctx = this.tabContext(tab)
|
181 | 184 | return this.evaluateExpression('tab-' + idx + '-' + key, tab.config[key], ctx, ctx.props)
|
182 | 185 | },
|
| 186 | + editPage () { |
| 187 | + if (this.pageType === 'tabs') { |
| 188 | + const action = this.$f7.actions.create({ |
| 189 | + buttons: [ |
| 190 | + { |
| 191 | + text: 'Edit Tabbed Page', |
| 192 | + onClick: () => { |
| 193 | + this.$f7router.navigate('/settings/pages/' + this.pageType + '/' + this.uid) |
| 194 | + } |
| 195 | + }, |
| 196 | + { |
| 197 | + text: 'Edit Current Tab', |
| 198 | + onClick: () => { |
| 199 | + const tabPageUid = this.page.slots.default[this.currentTab].config.page.replace('page:', '') |
| 200 | + const tabPage = this.$store.getters.page(tabPageUid) |
| 201 | + const tabPageType = this.getPageType(tabPage) |
| 202 | + this.$f7router.navigate('/settings/pages/' + tabPageType + '/' + tabPageUid) |
| 203 | + } |
| 204 | + } |
| 205 | + ], |
| 206 | + targetEl: this.$el.querySelector('.edit-page-button') |
| 207 | + }) |
| 208 | + action.open() |
| 209 | + } else { |
| 210 | + this.$f7router.navigate('/settings/pages/' + this.pageType + '/' + this.uid) |
| 211 | + } |
| 212 | + }, |
183 | 213 | toggleFullscreen () {
|
184 | 214 | this.$fullscreen.toggle(document.body, {
|
185 | 215 | wrap: false,
|
|
0 commit comments