From 37695943efbe32c2a2749a4ca9d8673f26dc4c35 Mon Sep 17 00:00:00 2001 From: Benjamin Takats Date: Thu, 1 Dec 2022 12:02:10 +0100 Subject: [PATCH] Nova getting started added --- app/Nova/Category.php | 7 + app/Nova/City.php | 22 +- app/Nova/Country.php | 7 + app/Nova/Course.php | 7 + app/Nova/Dashboards/Main.php | 10 +- app/Nova/Event.php | 7 + app/Nova/Lecturer.php | 7 + app/Nova/Participant.php | 7 + app/Nova/Registration.php | 7 + app/Nova/Team.php | 2 + app/Nova/User.php | 7 + app/Nova/Venue.php | 7 + app/Providers/NovaServiceProvider.php | 43 ++ composer.json | 9 +- composer.lock | 38 +- lang/de.json | 10 + nova-components/Start/.gitignore | 10 + nova-components/Start/.npmrc | 1 + nova-components/Start/composer.json | 29 + nova-components/Start/dist/css/card.css | 2 + nova-components/Start/dist/js/card.js | 522 ++++++++++++++++++ nova-components/Start/dist/mix-manifest.json | 4 + nova-components/Start/nova.mix.js | 33 ++ nova-components/Start/package.json | 20 + nova-components/Start/postcss.config.js | 1 + nova-components/Start/resources/css/card.css | 1 + nova-components/Start/resources/js/card.js | 5 + .../Start/resources/js/components/Card.vue | 167 ++++++ nova-components/Start/routes/api.php | 19 + .../Start/src/CardServiceProvider.php | 54 ++ nova-components/Start/src/Start.php | 25 + nova-components/Start/webpack.mix.js | 10 + package.json | 6 +- 33 files changed, 1090 insertions(+), 16 deletions(-) create mode 100644 nova-components/Start/.gitignore create mode 100644 nova-components/Start/.npmrc create mode 100644 nova-components/Start/composer.json create mode 100644 nova-components/Start/dist/css/card.css create mode 100644 nova-components/Start/dist/js/card.js create mode 100644 nova-components/Start/dist/mix-manifest.json create mode 100644 nova-components/Start/nova.mix.js create mode 100644 nova-components/Start/package.json create mode 100644 nova-components/Start/postcss.config.js create mode 100644 nova-components/Start/resources/css/card.css create mode 100644 nova-components/Start/resources/js/card.js create mode 100644 nova-components/Start/resources/js/components/Card.vue create mode 100644 nova-components/Start/routes/api.php create mode 100644 nova-components/Start/src/CardServiceProvider.php create mode 100644 nova-components/Start/src/Start.php create mode 100644 nova-components/Start/webpack.mix.js diff --git a/app/Nova/Category.php b/app/Nova/Category.php index f72a67c4..aa8dce19 100644 --- a/app/Nova/Category.php +++ b/app/Nova/Category.php @@ -9,6 +9,8 @@ use Laravel\Nova\Fields\BelongsToMany; class Category extends Resource { + + /** * The model the resource corresponds to. * @@ -32,6 +34,11 @@ class Category extends Resource 'id', ]; + public static function label() + { + return __('Categories'); + } + /** * Get the fields displayed by the resource. * diff --git a/app/Nova/City.php b/app/Nova/City.php index b0112a95..09e4a49b 100644 --- a/app/Nova/City.php +++ b/app/Nova/City.php @@ -2,46 +2,48 @@ namespace App\Nova; -use Laravel\Nova\Fields\ID; use Illuminate\Http\Request; -use Laravel\Nova\Fields\Text; use Laravel\Nova\Fields\BelongsTo; +use Laravel\Nova\Fields\ID; +use Laravel\Nova\Fields\Text; class City extends Resource { /** * The model the resource corresponds to. - * * @var string */ public static $model = \App\Models\City::class; - /** * The single value that should be used to represent the resource when being displayed. - * * @var string */ public static $title = 'id'; - /** * The columns that should be searched. - * * @var array */ public static $search = [ 'id', ]; + public static function label() + { + return __('Cities'); + } + /** * Get the fields displayed by the resource. * * @param \Illuminate\Http\Request $request + * * @return array */ public function fields(Request $request) { return [ - ID::make()->sortable(), + ID::make() + ->sortable(), Text::make('Name') ->rules('required', 'string'), @@ -56,6 +58,7 @@ class City extends Resource * Get the cards available for the request. * * @param \Illuminate\Http\Request $request + * * @return array */ public function cards(Request $request) @@ -67,6 +70,7 @@ class City extends Resource * Get the filters available for the resource. * * @param \Illuminate\Http\Request $request + * * @return array */ public function filters(Request $request) @@ -78,6 +82,7 @@ class City extends Resource * Get the lenses available for the resource. * * @param \Illuminate\Http\Request $request + * * @return array */ public function lenses(Request $request) @@ -89,6 +94,7 @@ class City extends Resource * Get the actions available for the resource. * * @param \Illuminate\Http\Request $request + * * @return array */ public function actions(Request $request) diff --git a/app/Nova/Country.php b/app/Nova/Country.php index fd9457fd..95c6d78c 100644 --- a/app/Nova/Country.php +++ b/app/Nova/Country.php @@ -9,6 +9,8 @@ use Laravel\Nova\Fields\HasMany; class Country extends Resource { + + /** * The model the resource corresponds to. * @@ -32,6 +34,11 @@ class Country extends Resource 'id', ]; + public static function label() + { + return __('Countries'); + } + /** * Get the fields displayed by the resource. * diff --git a/app/Nova/Course.php b/app/Nova/Course.php index c98a6ebd..7ad267e9 100644 --- a/app/Nova/Course.php +++ b/app/Nova/Course.php @@ -10,6 +10,8 @@ use Laravel\Nova\Fields\BelongsToMany; class Course extends Resource { + + /** * The model the resource corresponds to. * @@ -33,6 +35,11 @@ class Course extends Resource 'id', ]; + public static function label() + { + return __('Courses'); + } + /** * Get the fields displayed by the resource. * diff --git a/app/Nova/Dashboards/Main.php b/app/Nova/Dashboards/Main.php index 58c4a488..61f41ca3 100644 --- a/app/Nova/Dashboards/Main.php +++ b/app/Nova/Dashboards/Main.php @@ -2,20 +2,24 @@ namespace App\Nova\Dashboards; -use Laravel\Nova\Cards\Help; use Laravel\Nova\Dashboards\Main as Dashboard; +use Nova\Start\Start; class Main extends Dashboard { + public function name() + { + return 'Getting Started'; + } + /** * Get the cards for the dashboard. - * * @return array */ public function cards() { return [ - new Help, + new Start, ]; } } diff --git a/app/Nova/Event.php b/app/Nova/Event.php index 46cef740..449f65e8 100644 --- a/app/Nova/Event.php +++ b/app/Nova/Event.php @@ -9,6 +9,8 @@ use Laravel\Nova\Fields\BelongsTo; class Event extends Resource { + + /** * The model the resource corresponds to. * @@ -32,6 +34,11 @@ class Event extends Resource 'id', ]; + public static function label() + { + return __('Events'); + } + /** * Get the fields displayed by the resource. * diff --git a/app/Nova/Lecturer.php b/app/Nova/Lecturer.php index dc6bbc9a..5f361604 100644 --- a/app/Nova/Lecturer.php +++ b/app/Nova/Lecturer.php @@ -10,6 +10,8 @@ use Laravel\Nova\Fields\BelongsTo; class Lecturer extends Resource { + + /** * The model the resource corresponds to. * @@ -33,6 +35,11 @@ class Lecturer extends Resource 'id', ]; + public static function label() + { + return __('Lecturers'); + } + /** * Get the fields displayed by the resource. * diff --git a/app/Nova/Participant.php b/app/Nova/Participant.php index 1d588412..f9d99acd 100644 --- a/app/Nova/Participant.php +++ b/app/Nova/Participant.php @@ -8,6 +8,8 @@ use Laravel\Nova\Fields\Text; class Participant extends Resource { + + /** * The model the resource corresponds to. * @@ -31,6 +33,11 @@ class Participant extends Resource 'id', ]; + public static function label() + { + return __('Participants'); + } + /** * Get the fields displayed by the resource. * diff --git a/app/Nova/Registration.php b/app/Nova/Registration.php index 5c5d8b93..cdc87142 100644 --- a/app/Nova/Registration.php +++ b/app/Nova/Registration.php @@ -9,6 +9,8 @@ use Laravel\Nova\Fields\BelongsTo; class Registration extends Resource { + + /** * The model the resource corresponds to. * @@ -32,6 +34,11 @@ class Registration extends Resource 'id', ]; + public static function label() + { + return __('Registrations'); + } + /** * Get the fields displayed by the resource. * diff --git a/app/Nova/Team.php b/app/Nova/Team.php index 2219d18b..c1016aeb 100644 --- a/app/Nova/Team.php +++ b/app/Nova/Team.php @@ -8,6 +8,8 @@ use Laravel\Nova\Http\Requests\NovaRequest; class Team extends Resource { + + /** * The model the resource corresponds to. * @var class-string<\App\Models\Team> diff --git a/app/Nova/User.php b/app/Nova/User.php index 1494823e..3a86b61a 100644 --- a/app/Nova/User.php +++ b/app/Nova/User.php @@ -12,6 +12,8 @@ use Laravel\Nova\Http\Requests\NovaRequest; class User extends Resource { + + /** * The model the resource corresponds to. * @var class-string<\App\Models\User> @@ -32,6 +34,11 @@ class User extends Resource 'id', 'name', 'email', ]; + public static function label() + { + return __('Users'); + } + /** * Get the fields displayed by the resource. * diff --git a/app/Nova/Venue.php b/app/Nova/Venue.php index 07f88ac7..130eca23 100644 --- a/app/Nova/Venue.php +++ b/app/Nova/Venue.php @@ -9,6 +9,8 @@ use Laravel\Nova\Fields\BelongsTo; class Venue extends Resource { + + /** * The model the resource corresponds to. * @@ -32,6 +34,11 @@ class Venue extends Resource 'id', ]; + public static function label() + { + return __('Venues'); + } + /** * Get the fields displayed by the resource. * diff --git a/app/Providers/NovaServiceProvider.php b/app/Providers/NovaServiceProvider.php index f297bcd0..4f9baf95 100644 --- a/app/Providers/NovaServiceProvider.php +++ b/app/Providers/NovaServiceProvider.php @@ -2,8 +2,23 @@ namespace App\Providers; +use App\Nova\Category; +use App\Nova\City; +use App\Nova\Country; +use App\Nova\Course; +use App\Nova\Dashboards\Main; +use App\Nova\Event; +use App\Nova\Lecturer; +use App\Nova\Participant; +use App\Nova\Registration; +use App\Nova\Team; +use App\Nova\User; +use App\Nova\Venue; +use Illuminate\Http\Request; use Illuminate\Support\Facades\Gate; use Itsmejoshua\Novaspatiepermissions\Novaspatiepermissions; +use Laravel\Nova\Menu\MenuItem; +use Laravel\Nova\Menu\MenuSection; use Laravel\Nova\Nova; use Laravel\Nova\NovaApplicationServiceProvider; @@ -17,6 +32,34 @@ class NovaServiceProvider extends NovaApplicationServiceProvider { parent::boot(); + Nova::mainMenu(function (Request $request) { + return [ + MenuSection::dashboard(Main::class) + ->icon('lightning-bolt'), + + MenuSection::make('Schule', [ + MenuItem::resource(City::class), + MenuItem::resource(Lecturer::class), + MenuItem::resource(Venue::class), + MenuItem::resource(Course::class), + MenuItem::resource(Event::class), + MenuItem::resource(Participant::class), + MenuItem::resource(Registration::class), + ]) + ->icon('academic-cap') + ->collapsable(), + + MenuSection::make('Admin', [ + MenuItem::resource(Category::class), + MenuItem::resource(Country::class), + MenuItem::resource(Team::class), + MenuItem::resource(User::class), + ]) + ->icon('key') + ->collapsable(), + ]; + }); + Nova::withBreadcrumbs(); // disable theme switcher diff --git a/composer.json b/composer.json index e51d53ba..837124b2 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,8 @@ "spatie/laravel-google-fonts": "^1.2", "spatie/laravel-sluggable": "^3.4", "stijnvanouplines/blade-country-flags": "^1.0", - "wireui/wireui": "^1.17" + "wireui/wireui": "^1.17", + "nova/start": "*" }, "require-dev": { "fakerphp/faker": "^1.9.1", @@ -92,6 +93,10 @@ { "type": "composer", "url": "https://nova.laravel.com" + }, + { + "type": "path", + "url": "./nova-components/Start" } ] -} +} \ No newline at end of file diff --git a/composer.lock b/composer.lock index 750a26f9..53582072 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "dafb57f82691675a5d03595d824baa57", + "content-hash": "fe688c8ea9a0c69b1cff7d3876e83e4f", "packages": [ { "name": "bacon/bacon-qr-code", @@ -3284,6 +3284,42 @@ }, "time": "2022-11-12T15:38:23+00:00" }, + { + "name": "nova/start", + "version": "dev-blueprint", + "dist": { + "type": "path", + "url": "./nova-components/Start", + "reference": "fbea082cebeff60ba53b11985fbb6ed65ab46008" + }, + "require": { + "php": "^7.3|^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Nova\\Start\\CardServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Nova\\Start\\": "src/" + } + }, + "license": [ + "MIT" + ], + "description": "A Laravel Nova card.", + "keywords": [ + "laravel", + "nova" + ], + "transport-options": { + "relative": true + } + }, { "name": "nunomaduro/termwind", "version": "v1.14.2", diff --git a/lang/de.json b/lang/de.json index fe4e0f9b..0a3d11ca 100644 --- a/lang/de.json +++ b/lang/de.json @@ -1,4 +1,14 @@ { + "Lecturers": "Dozenten", + "Cities": "Städte", + "Venues": "Veranstaltungs-Orte", + "Courses": "Kurse", + "Events": "Termine", + "Participants": "Teilnehmer", + "Registrations": "Registrierungen", + "Categories": "Kategorien", + "Countries": "Länder", + "Users": "Benutzer", "I want to submit new courses on this platform": "Ich bin Dozent und möchte neue Kurse auf dieser Plattform einstellen", "(and :count more error)": "(und :count weiterer Fehler)", "(and :count more errors)": "(und :count weitere Fehler)", diff --git a/nova-components/Start/.gitignore b/nova-components/Start/.gitignore new file mode 100644 index 00000000..b8175772 --- /dev/null +++ b/nova-components/Start/.gitignore @@ -0,0 +1,10 @@ +/.idea +/vendor +/node_modules +package-lock.json +composer.phar +composer.lock +phpunit.xml +.phpunit.result.cache +.DS_Store +Thumbs.db diff --git a/nova-components/Start/.npmrc b/nova-components/Start/.npmrc new file mode 100644 index 00000000..d883e4fa --- /dev/null +++ b/nova-components/Start/.npmrc @@ -0,0 +1 @@ +progress=false diff --git a/nova-components/Start/composer.json b/nova-components/Start/composer.json new file mode 100644 index 00000000..75726513 --- /dev/null +++ b/nova-components/Start/composer.json @@ -0,0 +1,29 @@ +{ + "name": "nova/start", + "description": "A Laravel Nova card.", + "keywords": [ + "laravel", + "nova" + ], + "license": "MIT", + "require": { + "php": "^7.3|^8.0" + }, + "autoload": { + "psr-4": { + "Nova\\Start\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Nova\\Start\\CardServiceProvider" + ] + } + }, + "config": { + "sort-packages": true + }, + "minimum-stability": "dev", + "prefer-stable": true +} diff --git a/nova-components/Start/dist/css/card.css b/nova-components/Start/dist/css/card.css new file mode 100644 index 00000000..6fe0225c --- /dev/null +++ b/nova-components/Start/dist/css/card.css @@ -0,0 +1,2 @@ +/* Nova Card CSS */ + diff --git a/nova-components/Start/dist/js/card.js b/nova-components/Start/dist/js/card.js new file mode 100644 index 00000000..612a536a --- /dev/null +++ b/nova-components/Start/dist/js/card.js @@ -0,0 +1,522 @@ +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./resources/js/components/Card.vue?vue&type=script&lang=js": +/*!**********************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./resources/js/components/Card.vue?vue&type=script&lang=js ***! + \**********************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'Help', + props: { + card: Object + }, + methods: { + link: function link(path) { + return "https://nova.laravel.com/docs/".concat(this.version, "/").concat(path); + } + }, + computed: { + resources: function resources() { + return this.link('resources'); + }, + actions: function actions() { + return this.link('actions/defining-actions.html'); + }, + filters: function filters() { + return this.link('filters/defining-filters.html'); + }, + lenses: function lenses() { + return this.link('lenses/defining-lenses.html'); + }, + metrics: function metrics() { + return this.link('metrics/defining-metrics.html'); + }, + cards: function cards() { + return this.link('customization/cards.html'); + }, + version: function version() { + var parts = Nova.config('version').split('.'); + parts.splice(-2); + return "".concat(parts, ".0"); + } + } +}); + +/***/ }), + +/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./resources/js/components/Card.vue?vue&type=template&id=b9bc2c0a": +/*!**************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./resources/js/components/Card.vue?vue&type=template&id=b9bc2c0a ***! + \**************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "render": () => (/* binding */ render) +/* harmony export */ }); +/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "vue"); +/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__); + +var _hoisted_1 = { + "class": "flex justify-center items-center" +}; +var _hoisted_2 = { + "class": "w-full" +}; +var _hoisted_3 = { + "class": "leading-tight mt-3" +}; +var _hoisted_4 = { + "class": "leading-tight mt-3" +}; +var _hoisted_5 = { + "class": "md:grid md:grid-cols-2" +}; +var _hoisted_6 = { + "class": "border-r border-b border-gray-200 dark:border-gray-700" +}; +var _hoisted_7 = ["href"]; +var _hoisted_8 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { + "class": "flex justify-center w-11 flex-shrink-0 mr-6" +}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { + "class": "text-4xl text-primary-500 dark:text-primary-600" +}, "1.")], -1 /* HOISTED */); +var _hoisted_9 = { + "class": "leading-normal mt-3" +}; +var _hoisted_10 = { + "class": "border-b border-gray-200 dark:border-gray-700" +}; +var _hoisted_11 = ["href"]; +var _hoisted_12 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { + "class": "flex justify-center w-11 flex-shrink-0 mr-6" +}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { + "class": "text-4xl text-primary-500 dark:text-primary-600" +}, "2.")], -1 /* HOISTED */); +var _hoisted_13 = { + "class": "leading-normal mt-3" +}; +var _hoisted_14 = { + "class": "border-r border-b border-gray-200 dark:border-gray-700" +}; +var _hoisted_15 = ["href"]; +var _hoisted_16 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { + "class": "flex justify-center w-11 flex-shrink-0 mr-6" +}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { + "class": "text-4xl text-primary-500 dark:text-primary-600" +}, "3.")], -1 /* HOISTED */); +var _hoisted_17 = { + "class": "leading-normal mt-3" +}; +var _hoisted_18 = { + "class": "border-b border-gray-200 dark:border-gray-700" +}; +var _hoisted_19 = ["href"]; +var _hoisted_20 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { + "class": "flex justify-center w-11 flex-shrink-0 mr-6" +}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { + "class": "text-4xl text-primary-500 dark:text-primary-600" +}, "4.")], -1 /* HOISTED */); +var _hoisted_21 = { + "class": "leading-normal mt-3" +}; +var _hoisted_22 = { + "class": "border-r md:border-b-0 border-b border-gray-200 dark:border-gray-700" +}; +var _hoisted_23 = ["href"]; +var _hoisted_24 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { + "class": "flex justify-center w-11 flex-shrink-0 mr-6" +}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { + "class": "text-4xl text-primary-500 dark:text-primary-600" +}, "5.")], -1 /* HOISTED */); +var _hoisted_25 = { + "class": "leading-normal mt-3" +}; +var _hoisted_26 = { + "class": "md:border-b-0 border-b border-gray-200 dark:border-gray-700" +}; +var _hoisted_27 = ["href"]; +var _hoisted_28 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { + "class": "flex justify-center w-11 flex-shrink-0 mr-6" +}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { + "class": "text-4xl text-primary-500 dark:text-primary-600" +}, "6.")], -1 /* HOISTED */); +var _hoisted_29 = { + "class": "leading-normal mt-3" +}; +function render(_ctx, _cache, $props, $setup, $data, $options) { + var _component_Heading = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)("Heading"); + var _component_Card = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)("Card", true); + return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("div", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Heading, null, { + "default": (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () { + return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.__('Getting Started')), 1 /* TEXT */)]; + }), + + _: 1 /* STABLE */ + }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("p", _hoisted_3, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.__('Als Dozent hast du Zugriff auf das Daten-Backend und kannst neue Items anlegen.')), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("p", _hoisted_4, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.__('Hier ein paar Tipps, wie du am besten startest:')), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Card, { + "class": "mt-8" + }, { + "default": (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () { + return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_5, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_6, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("a", { + href: $options.resources, + "class": "no-underline flex p-6" + }, [_hoisted_8, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Heading, { + level: 3 + }, { + "default": (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () { + return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.__('Stadt suchen und anlegen')), 1 /* TEXT */)]; + }), + + _: 1 /* STABLE */ + }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("p", _hoisted_9, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.__('Gehe auf die Seite "Städte" und suche nach der Stadt, in der du die Items anlegen möchtest. Wenn du die Stadt nicht findest, kannst du sie anlegen.')), 1 /* TEXT */)])], 8 /* PROPS */, _hoisted_7)]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_10, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("a", { + href: $options.actions, + "class": "no-underline flex p-6" + }, [_hoisted_12, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Heading, { + level: 3 + }, { + "default": (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () { + return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.__('Veranstaltungs-Ort suchen und anlegen')), 1 /* TEXT */)]; + }), + + _: 1 /* STABLE */ + }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("p", _hoisted_13, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.__('Gehe auf die Seite "Veranstaltungs-Orte" und suche nach dem Ort, an dem du die Items anlegen möchtest. Wenn du den Ort nicht findest, kannst du ihn anlegen.')), 1 /* TEXT */)])], 8 /* PROPS */, _hoisted_11)]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_14, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("a", { + href: $options.filters, + "class": "no-underline flex p-6" + }, [_hoisted_16, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Heading, { + level: 3 + }, { + "default": (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () { + return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.__('Dozenten-Profil bearbeiten')), 1 /* TEXT */)]; + }), + + _: 1 /* STABLE */ + }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("p", _hoisted_17, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.__('Gehe auf die Seite "Dozenten" und suche nach deinem Dozenten-Profil. Wenn du es nicht findest, kannst du es anlegen.')), 1 /* TEXT */)])], 8 /* PROPS */, _hoisted_15)]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_18, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("a", { + href: $options.lenses, + "class": "no-underline flex p-6" + }, [_hoisted_20, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Heading, { + level: 3 + }, { + "default": (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () { + return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.__('Kurse anlegen und verwalten')), 1 /* TEXT */)]; + }), + + _: 1 /* STABLE */ + }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("p", _hoisted_21, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.__('Gehe auf die Seite "Kurse" und suche nach dem Kurs, den du editieren möchtest. Wenn du den Kurs nicht findest, kannst du ihn anlegen.')), 1 /* TEXT */)])], 8 /* PROPS */, _hoisted_19)]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_22, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("a", { + href: $options.metrics, + "class": "no-underline flex p-6" + }, [_hoisted_24, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Heading, { + level: 3 + }, { + "default": (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () { + return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.__('Termine anlegen und verwalten')), 1 /* TEXT */)]; + }), + + _: 1 /* STABLE */ + }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("p", _hoisted_25, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.__('Gehe auf die Seite "Termine" und suche nach dem Termin, den du editieren möchtest. Wenn du den Termin nicht findest, kannst du ihn anlegen.')), 1 /* TEXT */)])], 8 /* PROPS */, _hoisted_23)]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_26, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("a", { + href: $options.cards, + "class": "no-underline flex p-6" + }, [_hoisted_28, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Heading, { + level: 3 + }, { + "default": (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () { + return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.__('Berechtigungen')), 1 /* TEXT */)]; + }), + + _: 1 /* STABLE */ + }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("p", _hoisted_29, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.__('Wenn Buttons zur Bearbeitung fehlen, dann hast du nicht die nötigen Berechtigungen. Melde dich bei einem der Admins.')), 1 /* TEXT */)])], 8 /* PROPS */, _hoisted_27)])])]; + }), + _: 1 /* STABLE */ + })])]); +} + +/***/ }), + +/***/ "./resources/js/card.js": +/*!******************************!*\ + !*** ./resources/js/card.js ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _components_Card__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/Card */ "./resources/js/components/Card.vue"); + +Nova.booting(function (app, store) { + app.component('start', _components_Card__WEBPACK_IMPORTED_MODULE_0__["default"]); +}); + +/***/ }), + +/***/ "./resources/css/card.css": +/*!********************************!*\ + !*** ./resources/css/card.css ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }), + +/***/ "./node_modules/vue-loader/dist/exportHelper.js": +/*!******************************************************!*\ + !*** ./node_modules/vue-loader/dist/exportHelper.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports) => { + + +Object.defineProperty(exports, "__esModule", ({ value: true })); +// runtime helper for setting properties on components +// in a tree-shakable way +exports["default"] = (sfc, props) => { + const target = sfc.__vccOpts || sfc; + for (const [key, val] of props) { + target[key] = val; + } + return target; +}; + + +/***/ }), + +/***/ "./resources/js/components/Card.vue": +/*!******************************************!*\ + !*** ./resources/js/components/Card.vue ***! + \******************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _Card_vue_vue_type_template_id_b9bc2c0a__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Card.vue?vue&type=template&id=b9bc2c0a */ "./resources/js/components/Card.vue?vue&type=template&id=b9bc2c0a"); +/* harmony import */ var _Card_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Card.vue?vue&type=script&lang=js */ "./resources/js/components/Card.vue?vue&type=script&lang=js"); +/* harmony import */ var _home_fsociety_Code_side_einundzwanzig_bitcoin_school_nova_components_Start_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/vue-loader/dist/exportHelper.js */ "./node_modules/vue-loader/dist/exportHelper.js"); + + + + +; +const __exports__ = /*#__PURE__*/(0,_home_fsociety_Code_side_einundzwanzig_bitcoin_school_nova_components_Start_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_Card_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_Card_vue_vue_type_template_id_b9bc2c0a__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/js/components/Card.vue"]]) +/* hot reload */ +if (false) {} + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__exports__); + +/***/ }), + +/***/ "./resources/js/components/Card.vue?vue&type=script&lang=js": +/*!******************************************************************!*\ + !*** ./resources/js/components/Card.vue?vue&type=script&lang=js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_dist_index_js_ruleSet_0_use_0_Card_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]) +/* harmony export */ }); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_dist_index_js_ruleSet_0_use_0_Card_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./Card.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./resources/js/components/Card.vue?vue&type=script&lang=js"); + + +/***/ }), + +/***/ "./resources/js/components/Card.vue?vue&type=template&id=b9bc2c0a": +/*!************************************************************************!*\ + !*** ./resources/js/components/Card.vue?vue&type=template&id=b9bc2c0a ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "render": () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_dist_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_dist_index_js_ruleSet_0_use_0_Card_vue_vue_type_template_id_b9bc2c0a__WEBPACK_IMPORTED_MODULE_0__.render) +/* harmony export */ }); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_dist_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_dist_index_js_ruleSet_0_use_0_Card_vue_vue_type_template_id_b9bc2c0a__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./Card.vue?vue&type=template&id=b9bc2c0a */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./resources/js/components/Card.vue?vue&type=template&id=b9bc2c0a"); + + +/***/ }), + +/***/ "vue": +/*!**********************!*\ + !*** external "Vue" ***! + \**********************/ +/***/ ((module) => { + +module.exports = Vue; + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = __webpack_modules__; +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/chunk loaded */ +/******/ (() => { +/******/ var deferred = []; +/******/ __webpack_require__.O = (result, chunkIds, fn, priority) => { +/******/ if(chunkIds) { +/******/ priority = priority || 0; +/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1]; +/******/ deferred[i] = [chunkIds, fn, priority]; +/******/ return; +/******/ } +/******/ var notFulfilled = Infinity; +/******/ for (var i = 0; i < deferred.length; i++) { +/******/ var [chunkIds, fn, priority] = deferred[i]; +/******/ var fulfilled = true; +/******/ for (var j = 0; j < chunkIds.length; j++) { +/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) { +/******/ chunkIds.splice(j--, 1); +/******/ } else { +/******/ fulfilled = false; +/******/ if(priority < notFulfilled) notFulfilled = priority; +/******/ } +/******/ } +/******/ if(fulfilled) { +/******/ deferred.splice(i--, 1) +/******/ var r = fn(); +/******/ if (r !== undefined) result = r; +/******/ } +/******/ } +/******/ return result; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => (module['default']) : +/******/ () => (module); +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/jsonp chunk loading */ +/******/ (() => { +/******/ // no baseURI +/******/ +/******/ // object to store loaded and loading chunks +/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched +/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded +/******/ var installedChunks = { +/******/ "/js/card": 0, +/******/ "css/card": 0 +/******/ }; +/******/ +/******/ // no chunk on demand loading +/******/ +/******/ // no prefetching +/******/ +/******/ // no preloaded +/******/ +/******/ // no HMR +/******/ +/******/ // no HMR manifest +/******/ +/******/ __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0); +/******/ +/******/ // install a JSONP callback for chunk loading +/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => { +/******/ var [chunkIds, moreModules, runtime] = data; +/******/ // add "moreModules" to the modules object, +/******/ // then flag all "chunkIds" as loaded and fire callback +/******/ var moduleId, chunkId, i = 0; +/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) { +/******/ for(moduleId in moreModules) { +/******/ if(__webpack_require__.o(moreModules, moduleId)) { +/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; +/******/ } +/******/ } +/******/ if(runtime) var result = runtime(__webpack_require__); +/******/ } +/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); +/******/ for(;i < chunkIds.length; i++) { +/******/ chunkId = chunkIds[i]; +/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { +/******/ installedChunks[chunkId][0](); +/******/ } +/******/ installedChunks[chunkId] = 0; +/******/ } +/******/ return __webpack_require__.O(result); +/******/ } +/******/ +/******/ var chunkLoadingGlobal = self["webpackChunknova_start"] = self["webpackChunknova_start"] || []; +/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); +/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); +/******/ })(); +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module depends on other loaded chunks and execution need to be delayed +/******/ __webpack_require__.O(undefined, ["css/card"], () => (__webpack_require__("./resources/js/card.js"))) +/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["css/card"], () => (__webpack_require__("./resources/css/card.css"))) +/******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__); +/******/ +/******/ })() +; \ No newline at end of file diff --git a/nova-components/Start/dist/mix-manifest.json b/nova-components/Start/dist/mix-manifest.json new file mode 100644 index 00000000..5f018bb4 --- /dev/null +++ b/nova-components/Start/dist/mix-manifest.json @@ -0,0 +1,4 @@ +{ + "/js/card.js": "/js/card.js", + "/css/card.css": "/css/card.css" +} diff --git a/nova-components/Start/nova.mix.js b/nova-components/Start/nova.mix.js new file mode 100644 index 00000000..e72cec23 --- /dev/null +++ b/nova-components/Start/nova.mix.js @@ -0,0 +1,33 @@ +const mix = require('laravel-mix') +const webpack = require('webpack') +const path = require('path') + +class NovaExtension { + name() { + return 'nova-extension' + } + + register(name) { + this.name = name + } + + webpackConfig(webpackConfig) { + webpackConfig.externals = { + vue: 'Vue', + } + + webpackConfig.resolve.alias = { + ...(webpackConfig.resolve.alias || {}), + 'laravel-nova': path.join( + __dirname, + '../../vendor/laravel/nova/resources/js/mixins/packages.js' + ), + } + + webpackConfig.output = { + uniqueName: this.name, + } + } +} + +mix.extend('nova', new NovaExtension()) diff --git a/nova-components/Start/package.json b/nova-components/Start/package.json new file mode 100644 index 00000000..9552f314 --- /dev/null +++ b/nova-components/Start/package.json @@ -0,0 +1,20 @@ +{ + "private": true, + "scripts": { + "dev": "npm run development", + "development": "mix", + "watch": "mix watch", + "watch-poll": "mix watch -- --watch-options-poll=1000", + "hot": "mix watch --hot", + "prod": "npm run production", + "production": "mix --production", + "nova:install": "npm --prefix='../../vendor/laravel/nova' ci" + }, + "devDependencies": { + "@vue/compiler-sfc": "^3.2.22", + "laravel-mix": "^6.0.41", + "postcss": "^8.3.11", + "vue-loader": "^16.8.3" + }, + "dependencies": {} +} diff --git a/nova-components/Start/postcss.config.js b/nova-components/Start/postcss.config.js new file mode 100644 index 00000000..4ba52ba2 --- /dev/null +++ b/nova-components/Start/postcss.config.js @@ -0,0 +1 @@ +module.exports = {} diff --git a/nova-components/Start/resources/css/card.css b/nova-components/Start/resources/css/card.css new file mode 100644 index 00000000..71701537 --- /dev/null +++ b/nova-components/Start/resources/css/card.css @@ -0,0 +1 @@ +/* Nova Card CSS */ diff --git a/nova-components/Start/resources/js/card.js b/nova-components/Start/resources/js/card.js new file mode 100644 index 00000000..6794de40 --- /dev/null +++ b/nova-components/Start/resources/js/card.js @@ -0,0 +1,5 @@ +import Card from './components/Card' + +Nova.booting((app, store) => { + app.component('start', Card) +}) diff --git a/nova-components/Start/resources/js/components/Card.vue b/nova-components/Start/resources/js/components/Card.vue new file mode 100644 index 00000000..3feb32b5 --- /dev/null +++ b/nova-components/Start/resources/js/components/Card.vue @@ -0,0 +1,167 @@ + + + diff --git a/nova-components/Start/routes/api.php b/nova-components/Start/routes/api.php new file mode 100644 index 00000000..642927c8 --- /dev/null +++ b/nova-components/Start/routes/api.php @@ -0,0 +1,19 @@ +app->booted(function () { + $this->routes(); + }); + + Nova::serving(function (ServingNova $event) { + Nova::script('start', __DIR__.'/../dist/js/card.js'); + Nova::style('start', __DIR__.'/../dist/css/card.css'); + }); + } + + /** + * Register the card's routes. + * + * @return void + */ + protected function routes() + { + if ($this->app->routesAreCached()) { + return; + } + + Route::middleware(['nova']) + ->prefix('nova-vendor/start') + ->group(__DIR__.'/../routes/api.php'); + } + + /** + * Register any application services. + * + * @return void + */ + public function register() + { + // + } +} diff --git a/nova-components/Start/src/Start.php b/nova-components/Start/src/Start.php new file mode 100644 index 00000000..9b0c7125 --- /dev/null +++ b/nova-components/Start/src/Start.php @@ -0,0 +1,25 @@ +