diff --git a/config/nova-sortable.php b/config/nova-sortable.php new file mode 100644 index 0000000..0d8956f --- /dev/null +++ b/config/nova-sortable.php @@ -0,0 +1,5 @@ + true + ]; diff --git a/dist/css/tool.css b/dist/css/tool.css index 036fe34..d2eff68 100644 --- a/dist/css/tool.css +++ b/dist/css/tool.css @@ -1 +1,107 @@ -.o1-sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.o1-ml-4{margin-left:1rem}.o1-flex{display:flex}.o1-cursor-default{cursor:default}.o1-cursor-move{cursor:move}.o1-cursor-pointer{cursor:pointer}.o1-flex-col{flex-direction:column}.o1-items-center{align-items:center}.o1-justify-end{justify-content:flex-end}.o1-space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(0px*(1 - var(--tw-space-x-reverse)));margin-right:calc(0px*var(--tw-space-x-reverse))}.o1-divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(1px*var(--tw-divide-x-reverse))}.o1-divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.o1-divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(243 244 246/var(--tw-divide-opacity))}.o1-whitespace-nowrap{white-space:nowrap}.o1-border-r{border-right-width:1px}.o1-border-t{border-top-width:1px}.o1-px-2{padding-left:.5rem;padding-right:.5rem}.o1-px-6{padding-left:1.5rem;padding-right:1.5rem}.o1-py-2{padding-bottom:.5rem;padding-top:.5rem}.o1-pl-5{padding-left:1.25rem}.o1-pr-2{padding-right:.5rem}.o1-pr-5{padding-right:1.25rem}.o1-text-right{text-align:right}.o1-align-middle{vertical-align:middle}.o1-uppercase{text-transform:uppercase}.o1-leading-normal{line-height:1.5}.o1-tracking-wide{letter-spacing:.025em}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.disabled\:o1-pointer-events-none:disabled{pointer-events:none}.disabled\:o1-opacity-50:disabled{opacity:.5}.o1-dark .dark\:o1-divide-gray-700>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(55 65 81/var(--tw-divide-opacity))} +.o1-flex { + display: flex +} +.o1-cursor-default { + cursor: default +} +.o1-cursor-move { + cursor: move +} +.o1-cursor-pointer { + cursor: pointer +} +.o1-flex-col { + flex-direction: column +} +*, ::before, ::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: +} +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: +} diff --git a/dist/js/entry.js b/dist/js/entry.js index 57eff44..257c524 100644 --- a/dist/js/entry.js +++ b/dist/js/entry.js @@ -1,2 +1,23056 @@ -/*! For license information please see entry.js.LICENSE.txt */ -(()=>{var e,t={9680:(e,t,r)=>{function n(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var o=n(r(9669)),i=r(129),a=n(r(9996));function s(){return(s=Object.assign?Object.assign.bind():function(e){for(var t=1;t0&&"back_forward"===window.performance.getEntriesByType("navigation")[0].type},r.handleBackForwardVisit=function(e){var t=this;window.history.state.version=e.version,this.setPage(window.history.state,{preserveScroll:!0,preserveState:!0}).then((function(){t.restoreScrollPositions(),b(e)}))},r.locationVisit=function(e,t){try{window.sessionStorage.setItem("inertiaLocationVisit",JSON.stringify({preserveScroll:t})),window.location.href=e.href,y(window.location).href===y(e).href&&window.location.reload()}catch(e){return!1}},r.isLocationVisit=function(){try{return null!==window.sessionStorage.getItem("inertiaLocationVisit")}catch(e){return!1}},r.handleLocationVisit=function(e){var t,r,n,o,i=this,a=JSON.parse(window.sessionStorage.getItem("inertiaLocationVisit")||"");window.sessionStorage.removeItem("inertiaLocationVisit"),e.url+=window.location.hash,e.rememberedState=null!=(t=null==(r=window.history.state)?void 0:r.rememberedState)?t:{},e.scrollRegions=null!=(n=null==(o=window.history.state)?void 0:o.scrollRegions)?n:[],this.setPage(e,{preserveScroll:a.preserveScroll,preserveState:!0}).then((function(){a.preserveScroll&&i.restoreScrollPositions(),b(e)}))},r.isLocationVisitResponse=function(e){return e&&409===e.status&&e.headers["x-inertia-location"]},r.isInertiaResponse=function(e){return null==e?void 0:e.headers["x-inertia"]},r.createVisitId=function(){return this.visitId={},this.visitId},r.cancelVisit=function(e,t){var r=t.cancelled,n=void 0!==r&&r,o=t.interrupted,i=void 0!==o&&o;!e||e.completed||e.cancelled||e.interrupted||(e.cancelToken.cancel(),e.onCancel(),e.completed=!1,e.cancelled=n,e.interrupted=i,g(e),e.onFinish(e))},r.finishVisit=function(e){e.cancelled||e.interrupted||(e.completed=!0,e.cancelled=!1,e.interrupted=!1,g(e),e.onFinish(e))},r.resolvePreserveOption=function(e,t){return"function"==typeof e?e(t):"errors"===e?Object.keys(t.props.errors||{}).length>0:e},r.visit=function(e,r){var n=this,i=void 0===r?{}:r,a=i.method,c=void 0===a?t.n$.GET:a,l=i.data,p=void 0===l?{}:l,d=i.replace,g=void 0!==d&&d,b=i.preserveScroll,w=void 0!==b&&b,x=i.preserveState,S=void 0!==x&&x,O=i.only,E=void 0===O?[]:O,_=i.headers,j=void 0===_?{}:_,k=i.errorBag,P=void 0===k?"":k,T=i.forceFormData,R=void 0!==T&&T,A=i.onCancelToken,C=void 0===A?function(){}:A,D=i.onBefore,N=void 0===D?function(){}:D,M=i.onStart,I=void 0===M?function(){}:M,L=i.onProgress,B=void 0===L?function(){}:L,F=i.onFinish,$=void 0===F?function(){}:F,V=i.onCancel,U=void 0===V?function(){}:V,z=i.onSuccess,q=void 0===z?function(){}:z,W=i.onError,H=void 0===W?function(){}:W,G=i.queryStringArrayFormat,X=void 0===G?"brackets":G,Y="string"==typeof e?h(e):e;if(!function e(t){return t instanceof File||t instanceof Blob||t instanceof FileList&&t.length>0||t instanceof FormData&&Array.from(t.values()).some((function(t){return e(t)}))||"object"==typeof t&&null!==t&&Object.values(t).some((function(t){return e(t)}))}(p)&&!R||p instanceof FormData||(p=f(p)),!(p instanceof FormData)){var J=v(c,Y,p,X),K=J[1];Y=h(J[0]),p=K}var Q={url:Y,method:c,data:p,replace:g,preserveScroll:w,preserveState:S,only:E,headers:j,errorBag:P,forceFormData:R,queryStringArrayFormat:X,cancelled:!1,completed:!1,interrupted:!1};if(!1!==N(Q)&&function(e){return m("before",{cancelable:!0,detail:{visit:e}})}(Q)){this.activeVisit&&this.cancelVisit(this.activeVisit,{interrupted:!0}),this.saveScrollPositions();var Z=this.createVisitId();this.activeVisit=s({},Q,{onCancelToken:C,onBefore:N,onStart:I,onProgress:B,onFinish:$,onCancel:U,onSuccess:q,onError:H,queryStringArrayFormat:X,cancelToken:o.CancelToken.source()}),C({cancel:function(){n.activeVisit&&n.cancelVisit(n.activeVisit,{cancelled:!0})}}),function(e){m("start",{detail:{visit:e}})}(Q),I(Q),o({method:c,url:y(Y).href,data:c===t.n$.GET?{}:p,params:c===t.n$.GET?p:{},cancelToken:this.activeVisit.cancelToken.token,headers:s({},j,{Accept:"text/html, application/xhtml+xml","X-Requested-With":"XMLHttpRequest","X-Inertia":!0},E.length?{"X-Inertia-Partial-Component":this.page.component,"X-Inertia-Partial-Data":E.join(",")}:{},P&&P.length?{"X-Inertia-Error-Bag":P}:{},this.page.version?{"X-Inertia-Version":this.page.version}:{}),onUploadProgress:function(e){p instanceof FormData&&(e.percentage=Math.round(e.loaded/e.total*100),function(e){m("progress",{detail:{progress:e}})}(e),B(e))}}).then((function(e){var t;if(!n.isInertiaResponse(e))return Promise.reject({response:e});var r=e.data;E.length&&r.component===n.page.component&&(r.props=s({},n.page.props,r.props)),w=n.resolvePreserveOption(w,r),(S=n.resolvePreserveOption(S,r))&&null!=(t=window.history.state)&&t.rememberedState&&r.component===n.page.component&&(r.rememberedState=window.history.state.rememberedState);var o=Y,i=h(r.url);return o.hash&&!i.hash&&y(o).href===i.href&&(i.hash=o.hash,r.url=i.href),n.setPage(r,{visitId:Z,replace:g,preserveScroll:w,preserveState:S})})).then((function(){var e=n.page.props.errors||{};if(Object.keys(e).length>0){var t=P?e[P]?e[P]:{}:e;return function(e){m("error",{detail:{errors:e}})}(t),H(t)}return m("success",{detail:{page:n.page}}),q(n.page)})).catch((function(e){if(n.isInertiaResponse(e.response))return n.setPage(e.response.data,{visitId:Z});if(n.isLocationVisitResponse(e.response)){var t=h(e.response.headers["x-inertia-location"]),r=Y;r.hash&&!t.hash&&y(r).href===t.href&&(t.hash=r.hash),n.locationVisit(t,!0===w)}else{if(!e.response)return Promise.reject(e);m("invalid",{cancelable:!0,detail:{response:e.response}})&&u.show(e.response.data)}})).then((function(){n.activeVisit&&n.finishVisit(n.activeVisit)})).catch((function(e){if(!o.isCancel(e)){var t=m("exception",{cancelable:!0,detail:{exception:e}});if(n.activeVisit&&n.finishVisit(n.activeVisit),t)return Promise.reject(e)}}))}},r.setPage=function(e,t){var r=this,n=void 0===t?{}:t,o=n.visitId,i=void 0===o?this.createVisitId():o,a=n.replace,s=void 0!==a&&a,c=n.preserveScroll,u=void 0!==c&&c,l=n.preserveState,f=void 0!==l&&l;return Promise.resolve(this.resolveComponent(e.component)).then((function(t){i===r.visitId&&(e.scrollRegions=e.scrollRegions||[],e.rememberedState=e.rememberedState||{},(s=s||h(e.url).href===window.location.href)?r.replaceState(e):r.pushState(e),r.swapComponent({component:t,page:e,preserveState:f}).then((function(){u||r.resetScrollPositions(),s||b(e)})))}))},r.pushState=function(e){this.page=e,window.history.pushState(e,"",e.url)},r.replaceState=function(e){this.page=e,window.history.replaceState(e,"",e.url)},r.handlePopstateEvent=function(e){var t=this;if(null!==e.state){var r=e.state,n=this.createVisitId();Promise.resolve(this.resolveComponent(r.component)).then((function(e){n===t.visitId&&(t.page=r,t.swapComponent({component:e,page:r,preserveState:!1}).then((function(){t.restoreScrollPositions(),b(r)})))}))}else{var o=h(this.page.url);o.hash=window.location.hash,this.replaceState(s({},this.page,{url:o.href})),this.resetScrollPositions()}},r.get=function(e,r,n){return void 0===r&&(r={}),void 0===n&&(n={}),this.visit(e,s({},n,{method:t.n$.GET,data:r}))},r.reload=function(e){return void 0===e&&(e={}),this.visit(window.location.href,s({},e,{preserveScroll:!0,preserveState:!0}))},r.replace=function(e,t){var r;return void 0===t&&(t={}),console.warn("Inertia.replace() has been deprecated and will be removed in a future release. Please use Inertia."+(null!=(r=t.method)?r:"get")+"() instead."),this.visit(e,s({preserveState:!0},t,{replace:!0}))},r.post=function(e,r,n){return void 0===r&&(r={}),void 0===n&&(n={}),this.visit(e,s({preserveState:!0},n,{method:t.n$.POST,data:r}))},r.put=function(e,r,n){return void 0===r&&(r={}),void 0===n&&(n={}),this.visit(e,s({preserveState:!0},n,{method:t.n$.PUT,data:r}))},r.patch=function(e,r,n){return void 0===r&&(r={}),void 0===n&&(n={}),this.visit(e,s({preserveState:!0},n,{method:t.n$.PATCH,data:r}))},r.delete=function(e,r){return void 0===r&&(r={}),this.visit(e,s({preserveState:!0},r,{method:t.n$.DELETE}))},r.remember=function(e,t){var r,n;void 0===t&&(t="default"),w||this.replaceState(s({},this.page,{rememberedState:s({},null==(r=this.page)?void 0:r.rememberedState,(n={},n[t]=e,n))}))},r.restore=function(e){var t,r;if(void 0===e&&(e="default"),!w)return null==(t=window.history.state)||null==(r=t.rememberedState)?void 0:r[e]},r.on=function(e,t){var r=function(e){var r=t(e);e.cancelable&&!e.defaultPrevented&&!1===r&&e.preventDefault()};return document.addEventListener("inertia:"+e,r),function(){return document.removeEventListener("inertia:"+e,r)}},e}(),S={buildDOMElement:function(e){var t=document.createElement("template");t.innerHTML=e;var r=t.content.firstChild;if(!e.startsWith(" diff --git a/resources/js/components/ResourceTableRow.vue b/resources/js/components/ResourceTableRow.vue deleted file mode 100644 index a3b5dca..0000000 --- a/resources/js/components/ResourceTableRow.vue +++ /dev/null @@ -1,437 +0,0 @@ - - - diff --git a/resources/js/entry.js b/resources/js/entry.js index 1369517..f8a157b 100644 --- a/resources/js/entry.js +++ b/resources/js/entry.js @@ -1,8 +1,9 @@ import ResourceTable from './components/ResourceTable'; -import ResourceTableHeader from './components/ResourceTableHeader'; -import ResourceTableRow from './components/ResourceTableRow'; import ReorderButtons from './components/ReorderButtons'; +import { createVNode, render } from 'vue' +import { VueDraggableNext } from 'vue-draggable-next' + const handleDarkMode = () => { const cls = document.documentElement.classList; const isDarkMode = cls.contains('dark'); @@ -14,6 +15,8 @@ const handleDarkMode = () => { } }; +const config = Nova.config('nova-sortable') + Nova.booting((app, router, store) => { handleDarkMode(); new MutationObserver(handleDarkMode).observe(document.documentElement, { @@ -22,8 +25,61 @@ Nova.booting((app, router, store) => { attributeFilter: ['class'], }); + app.mixin({ + data() { + return { + container: null, + toDestroy: [], + } + }, + unmounted() { + + for (const element of this.toDestroy) { + render(null, element) + } + + }, + + mounted() { + if (this._.type?.__file?.endsWith('ResourceTableRow.vue')) { + const rowId = this.resource.id.value + + const handleContainer = document.createElement('div'); + handleContainer.classList.add('inline-flex','align-middle'); + + const tbody = document.querySelector(`table[data-testid="resource-table"] > tbody`); + + const element = document.querySelector(`table[data-testid="resource-table"] tr[dusk="${ rowId }-row"]`); + const checkbox = document.querySelector(`table[data-testid="resource-table"] tr[dusk="${ rowId }-row"] > td`); + + if (element) { + checkbox.appendChild(handleContainer); + + /* + const tbody = document.createElement('tbody') + element.parentNode.insertBefore(tbody, element); + tbody.appendChild(element); + tbody.insertAdjacentElement('afterend',dropTbody); + */ + + const ReorderButtonsVNode = createVNode(ReorderButtons, { + resource: this.resource, + viaResourceId: this.viaResourceId, + relationshipType: this.relationshipType, + viaRelationship: this.viaRelationship, + resourceName: this.resourceName, + displayMoveToButtons: config.displayMoveToButtons + }); + + ReorderButtonsVNode.appContext = app._context + render(ReorderButtonsVNode, handleContainer) + + this.toDestroy.push(handleContainer) + } + } + }, + }); + app.component('ResourceTable', ResourceTable); - app.component('ResourceTableHeader', ResourceTableHeader); - app.component('ResourceTableRow', ResourceTableRow); - app.component('ReorderButtons', ReorderButtons); + }); diff --git a/resources/js/mixins/ReordersResources.js b/resources/js/mixins/ReordersResources.js index 6782df3..4985aeb 100644 --- a/resources/js/mixins/ReordersResources.js +++ b/resources/js/mixins/ReordersResources.js @@ -2,6 +2,8 @@ import { canSortResource } from './canSortResource'; export default { data: () => ({ + futureIndex: null, + movingIndex: null, reorderLoading: false, fakeResources: [], }), @@ -21,7 +23,13 @@ export default { }, }, methods: { + handleMove(e) { + this.futureIndex = e.related.getAttribute('index'); + this.movingIndex = e.dragged.getAttribute('index'); + return false; + }, async updateOrder(event) { + this.fakeResources[this.movingIndex] = this.fakeResources.splice(this.futureIndex, 1, this.fakeResources[this.movingIndex])[0]; this.reorderLoading = true; try { @@ -44,13 +52,13 @@ export default { } Nova.error(this.__('novaSortable.reorderError')); } - this.reorderLoading = false; }, async moveToStart(resource) { this.reorderLoading = true; try { + console.log('nova-sortable:','move-to-start'); await Nova.request().post(`/nova-vendor/nova-sortable/sort/${this.resourceName}/move-to-start`, { resourceId: resource.id.value, viaResource: this.viaResource, @@ -70,6 +78,7 @@ export default { async moveToEnd(resource) { this.reorderLoading = true; try { + console.log('nova-sortable:','move-to-end'); await Nova.request().post(`/nova-vendor/nova-sortable/sort/${this.resourceName}/move-to-end`, { resourceId: resource.id.value, viaResource: this.viaResource, diff --git a/src/ToolServiceProvider.php b/src/ToolServiceProvider.php index 01be165..7a75cc6 100644 --- a/src/ToolServiceProvider.php +++ b/src/ToolServiceProvider.php @@ -20,9 +20,21 @@ public function boot() Nova::serving(function (ServingNova $event) { Nova::script('nova-sortable', __DIR__ . '/../dist/js/entry.js'); - Nova::style('nova-sortable', __DIR__ . '/../dist/css/tool.css'); + Nova::style('nova-sortable', __DIR__ . '/../dist/css/tool.css'); + + Nova::provideToScript([ + 'nova-sortable' => config('nova-sortable'), + ]); + }); + if ($this->app->runningInConsole()) { + // Publish config + $this->publishes([ + __DIR__ . '/../config/' => config_path(), + ], 'config'); + } + $this->loadTranslations(__DIR__ . '/../resources/lang', 'nova-sortable', true); } @@ -41,4 +53,11 @@ protected function routes() ->namespace('\Outl1ne\NovaSortable\Http\Controllers') ->group(__DIR__ . '/../routes/api.php'); } + + public function register(): void + { + $this->mergeConfigFrom( + __DIR__ . '/../config/nova-sortable.php', 'nova-sortable', + ); + } }