From 188d4e394b7d4b2e534b94483e57a9784225968d Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 13 Dec 2024 10:09:13 +0100 Subject: [PATCH] Set a default for the group --- .gitignore | 1 + package.json | 15 +++++++++++++++ postcss.config.js | 5 +++++ .../blueprints/vendor/runway/language_line.yaml | 17 ++++++++--------- .../assets/translation-manager-62298d23.js | 1 + resources/dist/build/manifest.json | 7 +++++++ .../fieldtypes/LocaleSelectArrayFieldtype.vue | 2 +- src/ServiceProvider.php | 8 ++++++++ tailwind.config.js | 5 +++++ vite.config.js | 15 +++++++++++++++ 10 files changed, 66 insertions(+), 10 deletions(-) create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 resources/dist/build/assets/translation-manager-62298d23.js create mode 100644 resources/dist/build/manifest.json create mode 100644 tailwind.config.js create mode 100644 vite.config.js diff --git a/.gitignore b/.gitignore index 208639f..41c5a38 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ composer.lock node_modules /vendor mix-manifest.json +yarn.lock \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..bc4c9d3 --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "private": true, + "scripts": { + "dev": "vite", + "build": "vite build" + }, + "devDependencies": { + "@vitejs/plugin-vue2": "^2.2.0", + "laravel-vite-plugin": "^0.7.2", + "postcss": "^8.4.41", + "tailwindcss": "^3.4.10", + "vite": "^4.0.0", + "vue": "^2.6.11" + } +} \ No newline at end of file diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..a7e5f1e --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: { + tailwindcss: {} + }, +}; diff --git a/resources/blueprints/vendor/runway/language_line.yaml b/resources/blueprints/vendor/runway/language_line.yaml index 8ece603..9f53b31 100644 --- a/resources/blueprints/vendor/runway/language_line.yaml +++ b/resources/blueprints/vendor/runway/language_line.yaml @@ -12,18 +12,17 @@ tabs: validate: required localizable: false - - handle: group + handle: text field: - type: text - display: Group - validate: required + type: locale_select_array + display: Translations localizable: false - placeholder: 'In general this will be "*"' - default: '*' - - handle: text + handle: group field: - type: locale_select_array - display: Text + default: '*' + type: hidden + display: Group localizable: false + visibility: hidden title: 'Language line' diff --git a/resources/dist/build/assets/translation-manager-62298d23.js b/resources/dist/build/assets/translation-manager-62298d23.js new file mode 100644 index 0000000..9945250 --- /dev/null +++ b/resources/dist/build/assets/translation-manager-62298d23.js @@ -0,0 +1 @@ +function v(t,e,a,i,n,o,u,d){var r=typeof t=="function"?t.options:t;e&&(r.render=e,r.staticRenderFns=a,r._compiled=!0),i&&(r.functional=!0),o&&(r._scopeId="data-v-"+o);var l;if(u?(l=function(s){s=s||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,!s&&typeof __VUE_SSR_CONTEXT__<"u"&&(s=__VUE_SSR_CONTEXT__),n&&n.call(this,s),s&&s._registeredComponents&&s._registeredComponents.add(u)},r._ssrRegister=l):n&&(l=d?function(){n.call(this,(r.functional?this.parent:this).$root.$options.shadowRoot)}:n),l)if(r.functional){r._injectStyles=l;var f=r.render;r.render=function(p,_){return l.call(_),f(p,_)}}else{var c=r.beforeCreate;r.beforeCreate=c?[].concat(c,l):[l]}return{exports:t,options:r}}const h={props:{value:{type:Object,default:()=>({})},config:{type:Object,default:()=>({})}},data(){return{rows:this.parseInitialValue(this.value)}},computed:{configOptions(){return Object.values(this.$attrs.meta.options).map(t=>({label:t,value:t}))}},watch:{rows:{handler(){this.$emit("input",this.transformToDatabaseFormat())},deep:!0}},methods:{parseInitialValue(t){return Object.entries(t).map(([e,a])=>({key:{label:e,value:e},value:a}))},transformToDatabaseFormat(){return this.rows.reduce((t,e)=>(e.key&&e.key.value&&(t[e.key.value]=e.value),t),{})},addRow(){this.rows.push({key:{label:"",value:""},value:""})},removeRow(t){this.rows.splice(t,1)}}};var m=function(){var e=this,a=e._self._c;return a("div",[a("table",{staticClass:"data-table"},[e._m(0),a("tbody",e._l(e.rows,function(i,n){return a("tr",{key:n},[a("td",[a("v-select",{attrs:{options:e.configOptions,label:"label","value-field":"value",placeholder:"Select a key"},model:{value:i.key,callback:function(o){e.$set(i,"key",o)},expression:"row.key"}})],1),a("td",[a("text-input",{attrs:{placeholder:"Enter value",name:"value-"+n},model:{value:i.value,callback:function(o){e.$set(i,"value",o)},expression:"row.value"}})],1),a("td",[a("button",{attrs:{type:"button"},on:{click:function(o){return e.removeRow(n)}}},[e._v("Remove")])])])}),0)]),a("button",{staticClass:"btn-primary",attrs:{type:"button"},on:{click:e.addRow}},[e._v("Add Row")])])},y=[function(){var t=this,e=t._self._c;return e("thead",[e("tr",[e("th",[t._v("Locale")]),e("th",[t._v("Value")]),e("th",[t._v("Actions")])])])}],b=v(h,m,y,!1,null,null,null,null);const k=b.exports,$={props:{value:{type:[Object,Array],default:()=>({})}},computed:{parsedKeys(){return Array.isArray(this.value)?this.value.map(t=>{var e;return((e=t.key)==null?void 0:e.value)||t.key}):typeof this.value=="object"?Object.keys(this.value):[]}}};var R=function(){var e=this,a=e._self._c;return e.parsedKeys.length?a("span",[e._v(" "+e._s(e.parsedKeys.join(", "))+" ")]):a("span",[a("em",[e._v("No keys")])])},C=[],O=v($,R,C,!1,null,null,null,null);const g=O.exports;Statamic.booting(()=>{Statamic.$components.register("locale_select_array-fieldtype",k),Statamic.$components.register("locale_select_array-fieldtype-index",g)}); diff --git a/resources/dist/build/manifest.json b/resources/dist/build/manifest.json new file mode 100644 index 0000000..6230bbf --- /dev/null +++ b/resources/dist/build/manifest.json @@ -0,0 +1,7 @@ +{ + "resources/js/translation-manager.js": { + "file": "assets/translation-manager-62298d23.js", + "isEntry": true, + "src": "resources/js/translation-manager.js" + } +} \ No newline at end of file diff --git a/resources/js/components/fieldtypes/LocaleSelectArrayFieldtype.vue b/resources/js/components/fieldtypes/LocaleSelectArrayFieldtype.vue index b8183dc..b66a2b1 100644 --- a/resources/js/components/fieldtypes/LocaleSelectArrayFieldtype.vue +++ b/resources/js/components/fieldtypes/LocaleSelectArrayFieldtype.vue @@ -3,7 +3,7 @@ - + diff --git a/src/ServiceProvider.php b/src/ServiceProvider.php index e38ada7..1928083 100644 --- a/src/ServiceProvider.php +++ b/src/ServiceProvider.php @@ -10,6 +10,13 @@ class ServiceProvider extends AddonServiceProvider { + protected $vite = [ + 'input' => [ + 'resources/js/translation-manager.js', + ], + 'publicDirectory' => 'resources/dist', + ]; + public function register() { $this->app->register(TranslationServiceProvider::class, true); @@ -27,6 +34,7 @@ protected function bootRunway(): self config(['runway.resources' => array_merge( [LanguageLine::class => [ 'name' => 'Translations', + 'primary_column' => 'key' ]], config('runway.resources') ?? [] )]); diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..e614ceb --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,5 @@ +module.exports = { + content: [ + './resources/js/components/**/*.vue', + ] +} diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..22fca01 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,15 @@ +import { defineConfig } from 'vite'; +import laravel from 'laravel-vite-plugin'; +import vue from '@vitejs/plugin-vue2'; + +export default defineConfig({ + plugins: [ + laravel({ + input: [ + 'resources/js/translation-manager.js', + ], + publicDirectory: 'resources/dist', + }), + vue(), + ], +});
KeyLocale Value Actions