diff --git a/composer.json b/composer.json index 3ec024a61b1..295e84e6428 100644 --- a/composer.json +++ b/composer.json @@ -20,7 +20,7 @@ "pixelfear/composer-dist-plugin": "^0.1.0", "scrumpy/html-to-prosemirror": "^0.6.0", "scrumpy/prosemirror-to-html": "^0.8.0", - "spatie/blink": "^1.1", + "spatie/blink": "^1.1.2", "statamic/stringy": "^3.1", "symfony/var-exporter": "^4.3", "symfony/yaml": "^4.1@dev", diff --git a/config/stache.php b/config/stache.php index 338fa56ee60..e8f11cc4f9c 100644 --- a/config/stache.php +++ b/config/stache.php @@ -48,9 +48,9 @@ 'directory' => base_path('content/collections'), ], - 'structures' => [ - 'class' => Stores\StructuresStore::class, - 'directory' => base_path('content/structures'), + 'navigation' => [ + 'class' => Stores\NavigationStore::class, + 'directory' => base_path('content/navigation'), ], 'globals' => [ diff --git a/resources/blueprints/entry_link.yaml b/resources/blueprints/entry_link.yaml new file mode 100644 index 00000000000..1ead5fbff40 --- /dev/null +++ b/resources/blueprints/entry_link.yaml @@ -0,0 +1,11 @@ +title: Link +fields: + - + handle: title + field: + type: text + - + handle: redirect + field: + type: redirect + required: true diff --git a/resources/js/app.js b/resources/js/app.js index 0eef2d9d570..2a665fe2758 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -103,7 +103,6 @@ Statamic.app({ components: { GlobalSearch: require('./components/GlobalSearch.vue').default, SiteSelector: require('./components/SiteSelector.vue').default, - PageTree: require('./components/structures/PageTree.vue').default, Login: require('./components/login/login'), LoginModal: require('./components/login/LoginModal.vue').default, BaseEntryCreateForm: require('./components/entries/BaseCreateForm.vue').default, @@ -128,10 +127,12 @@ Statamic.app({ CollectionCreateForm: require('./components/collections/CreateForm.vue').default, CollectionScaffolder: require('./components/collections/Scaffolder.vue').default, CollectionEditForm: require('./components/collections/EditForm.vue').default, + CollectionView: require('./components/collections/View.vue').default, SessionExpiry: require('./components/SessionExpiry.vue').default, - StructureWizard: require('./components/structures/Wizard.vue').default, - StructureListing: require('./components/structures/Listing.vue').default, - StructureEditForm: require('./components/structures/EditForm.vue').default, + NavigationListing: require('./components/navigation/Listing.vue').default, + NavigationCreateForm: require('./components/navigation/CreateForm.vue').default, + NavigationEditForm: require('./components/navigation/EditForm.vue').default, + NavigationView: require('./components/navigation/View.vue').default, Stacks: require('./components/stacks/Stacks.vue').default, TaxonomyWizard: require('./components/taxonomies/Wizard.vue').default, TaxonomyEditForm: require('./components/taxonomies/EditForm.vue').default, @@ -163,6 +164,10 @@ Statamic.app({ stackCount() { return this.$stacks.count(); + }, + + wrapperClass() { + return this.$config.get('wrapperClass', 'max-w-xl'); } }, diff --git a/resources/js/bootstrap/fieldtypes.js b/resources/js/bootstrap/fieldtypes.js index 6c93d18903a..4e6b20121ad 100644 --- a/resources/js/bootstrap/fieldtypes.js +++ b/resources/js/bootstrap/fieldtypes.js @@ -13,7 +13,6 @@ Vue.component('slug-fieldtype', require('../components/fieldtypes/SlugFieldtype. // Fieldtypes import FieldsetFieldtype from '../components/fieldtypes/FieldsetFieldtype.vue' import RevealerFieldtype from '../components/fieldtypes/RevealerFieldtype.vue' -import RoutesFieldtype from '../components/fieldtypes/RoutesFieldtype.vue' import StatusFieldtype from '../components/fieldtypes/StatusFieldtype.vue' import TemplateFieldtype from '../components/fieldtypes/TemplateFieldtype.vue' @@ -25,6 +24,7 @@ Vue.component('bard-fieldtype', require('../components/fieldtypes/bard/BardField Vue.component('bard_buttons_setting-fieldtype', require('../components/fieldtypes/bard/BardButtonsSettingFieldtype.vue').default); Vue.component('checkboxes-fieldtype', require('../components/fieldtypes/CheckboxesFieldtype.vue').default); Vue.component('code-fieldtype', require('../components/fieldtypes/CodeFieldtype.vue').default); +Vue.component('collection_routes-fieldtype', require('../components/collections/Routes.vue').default); Vue.component('color-fieldtype', require('../components/fieldtypes/ColorFieldtype.vue').default); Vue.component('date-fieldtype', require('../components/fieldtypes/DateFieldtype.vue').default); Vue.component('fieldset-fieldtype', FieldsetFieldtype); @@ -37,17 +37,16 @@ Vue.component('list-fieldtype', require('../components/fieldtypes/ListFieldtype. Vue.component('markdown-fieldtype', require('../components/fieldtypes/MarkdownFieldtype.vue').default); Vue.component('radio-fieldtype', require('../components/fieldtypes/RadioFieldtype.vue').default); Vue.component('range-fieldtype', require('../components/fieldtypes/RangeFieldtype.vue').default); +Vue.component('redirect-fieldtype', require('../components/fieldtypes/RedirectFieldtype.vue').default); Vue.component('relationship-fieldtype', require('../components/fieldtypes/relationship/RelationshipFieldtype.vue').default); Vue.component('relationship-fieldtype-index', require('../components/fieldtypes/relationship/RelationshipIndexFieldtype.vue').default); Vue.component('replicator-fieldtype', require('../components/fieldtypes/replicator/Replicator.vue').default); Vue.component('replicator-fieldtype-index', require('../components/fieldtypes/replicator/ReplicatorIndex.vue').default); Vue.component('revealer-fieldtype', RevealerFieldtype); -Vue.component('routes-fieldtype', RoutesFieldtype); Vue.component('section-fieldtype', require('../components/fieldtypes/SectionFieldtype.vue').default); Vue.component('select-fieldtype', require('../components/fieldtypes/SelectFieldtype.vue').default); Vue.component('sets-fieldtype', require('../components/fieldtypes/replicator/SetsFieldtype.vue').default); Vue.component('status-fieldtype', StatusFieldtype); -Vue.component('structure_sites-fieldtype', require('../components/structures/Sites.vue').default); Vue.component('table-fieldtype', require('../components/fieldtypes/TableFieldtype.vue').default); Vue.component('tags-fieldtype', require('../components/fieldtypes/TagsFieldtype.vue').default); Vue.component('tags-fieldtype-index', require('../components/fieldtypes/TagsIndexFieldtype.vue').default); diff --git a/resources/js/components/DropdownItem.vue b/resources/js/components/DropdownItem.vue index fd04337e25a..bffa4c44773 100644 --- a/resources/js/components/DropdownItem.vue +++ b/resources/js/components/DropdownItem.vue @@ -12,7 +12,7 @@ export default { props: ['text', 'redirect', 'externalLink'], methods: { - selectAndClose() { + selectAndClose($event) { if (this.redirect) { location.href = this.redirect; return; @@ -23,7 +23,7 @@ export default { return; } - this.$emit('click'); + this.$emit('click', $event); this.$parent.close(); } diff --git a/resources/js/components/collections/DeleteEntryConfirmation.vue b/resources/js/components/collections/DeleteEntryConfirmation.vue new file mode 100644 index 00000000000..24efd215b6a --- /dev/null +++ b/resources/js/components/collections/DeleteEntryConfirmation.vue @@ -0,0 +1,42 @@ + + + diff --git a/resources/js/components/collections/EditForm.vue b/resources/js/components/collections/EditForm.vue index f809eb51229..31484b3b50e 100644 --- a/resources/js/components/collections/EditForm.vue +++ b/resources/js/components/collections/EditForm.vue @@ -33,14 +33,11 @@ export default { blueprint: Object, initialValues: Object, meta: Object, - initialTitle: String, - url: String, - listingUrl: String, + url: String }, data() { return { - title: this.initialTitle, values: this.initialValues, error: null, errors: {}, @@ -60,7 +57,6 @@ export default { this.$axios.patch(this.url, this.values).then(response => { this.saving = false; - this.title = response.data.title; this.$toast.success(__('Saved')); this.$refs.container.saved(); }).catch(e => this.handleAxiosError(e)); diff --git a/resources/js/components/collections/Routes.vue b/resources/js/components/collections/Routes.vue new file mode 100644 index 00000000000..61da2949222 --- /dev/null +++ b/resources/js/components/collections/Routes.vue @@ -0,0 +1,118 @@ + + + diff --git a/resources/js/components/collections/View.vue b/resources/js/components/collections/View.vue new file mode 100644 index 00000000000..0293f8e01f0 --- /dev/null +++ b/resources/js/components/collections/View.vue @@ -0,0 +1,277 @@ + + + diff --git a/resources/js/components/entries/CreateEntryButton.vue b/resources/js/components/entries/CreateEntryButton.vue index a98cb9fcbd3..227e3e91bde 100644 --- a/resources/js/components/entries/CreateEntryButton.vue +++ b/resources/js/components/entries/CreateEntryButton.vue @@ -1,15 +1,19 @@