feat(ui): new events
This commit is contained in:
parent
1457bab4b1
commit
a3dcc07599
9 changed files with 101 additions and 34 deletions
|
@ -1,9 +1,29 @@
|
|||
<?php
|
||||
$fileLimit = $this->getParam('fileLimit', 0);
|
||||
$fileLimitHuman = $this->getParam('fileLimitHuman', 0);
|
||||
$events = array_keys($this->getParam('events', []));
|
||||
$events = $this->getParam('events', []);
|
||||
$timeout = $this->getParam('timeout', 900);
|
||||
$usageStatsEnabled = $this->getParam('usageStatsEnabled', true);
|
||||
$patterns = [];
|
||||
|
||||
foreach ($events as $name => $event) {
|
||||
foreach ($event as $key => $value) {
|
||||
if (!\str_starts_with($key, '$')) {
|
||||
if (!($value['$resource'] ?? false)) {
|
||||
$patterns[] = "{$name}.{$key}";
|
||||
} else {
|
||||
foreach ($value as $key2 => $value2) {
|
||||
if (!\str_starts_with($key2, '$')) {
|
||||
if (!($value2['$resource'] ?? false)) {
|
||||
$patterns[] = "{$key}.{$key2}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
<div
|
||||
data-service="functions.get"
|
||||
|
@ -507,22 +527,45 @@ $usageStatsEnabled = $this->getParam('usageStatsEnabled', true);
|
|||
<div class="text-size-small text-fade margin-bottom margin-top-negative-small">Max value is <?php echo $this->escape(number_format($timeout)); ?> seconds (<?php echo $this->escape((int) ($timeout / 60)); ?> minutes)</div>
|
||||
</section>
|
||||
|
||||
<section class="margin-bottom" data-forms-select-all>
|
||||
<label for="events" class="margin-bottom">Events <span class="tooltip small" data-tooltip="Choose which events should trigger this function."><i class="icon-info-circled"></i></span></label>
|
||||
<div class="row responsive thin margin-top-small">
|
||||
<?php foreach ($events as $i => $event): ?>
|
||||
<div class="col span-6 text-one-liner margin-bottom text-height-large text-size-small" title="<?php echo $event; ?>">
|
||||
<input type="checkbox" name="events" data-ls-bind="{{project-function.events}}" id="<?php echo $event; ?>" value="<?php echo $event; ?>" data-by-key="true" />
|
||||
|
||||
<label class="inline" for="<?php echo $event; ?>"><?php echo $event; ?></label>
|
||||
<section x-data="events" class="margin-bottom-small" data-ls-attrs="x-init=events={{project-function.events}}">
|
||||
<label>Events</label>
|
||||
<template x-for="(event, index) in events">
|
||||
<div class="row events responsive thin margin-bottom-small">
|
||||
<div class="col span-12 margin-bottom-small">
|
||||
<span class="text" x-text="event"></span>
|
||||
<span class="action" @click="removeEvent(index)">
|
||||
<i class="icon-trash"></i>
|
||||
</span>
|
||||
</div>
|
||||
<?php if (($i + 1) % 2 === 0): ?>
|
||||
</div>
|
||||
<div class="row responsive thin">
|
||||
<?php endif;?>
|
||||
|
||||
<?php endforeach;?>
|
||||
<input name="events" data-cast-to="array" type="hidden" :value="event"></input>
|
||||
</div>
|
||||
</template>
|
||||
<select x-model="selected" @change="setEvent()">
|
||||
<option value="" selected>Add event</option>
|
||||
<?php foreach ($patterns as $event): ?>
|
||||
<option value="<?php echo $event; ?>"><?php echo $event; ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<div x-show="hasResource">
|
||||
<label x-text="'Select ' + resourceName + ' (optional)'"></label>
|
||||
<input type="text" :placeholder="resourceName" x-model="resource">
|
||||
<div class="text-fade text-size-xs margin-top-negative-small margin-bottom">Leave empty for wildcard access</div>
|
||||
</div>
|
||||
<div x-show="hasSubResource">
|
||||
<label x-text="'Select ' + subResourceName + ' (optional)'"></label>
|
||||
<input type="text" :placeholder="subResourceName" x-model="subResource">
|
||||
<div class="text-fade text-size-xs margin-top-negative-small margin-bottom">Leave empty for wildcard access</div>
|
||||
</div>
|
||||
<div x-show="hasAttribute">
|
||||
<label for="subResource">Add Attribute (optional)</label>
|
||||
<select x-model="attribute">
|
||||
<option value="*">Select attribute</option>
|
||||
<template x-for="attr in attributes">
|
||||
<option :value="attr" x-text="attr"></option>
|
||||
</template>
|
||||
</select>
|
||||
</div>
|
||||
<button x-show="selected" type="button" @click="addEvent()">Add Event</button>
|
||||
</section>
|
||||
|
||||
<label for="schedule">Schedule (CRON Syntax) <span class="tooltip small" data-tooltip="Set a CRON schedule to trigger this function."><i class="icon-info-circled"></i></span></label>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
|
||||
$events = $this->getParam('events', []);
|
||||
$patterns = [];
|
||||
|
||||
foreach ($events as $name => $event) {
|
||||
foreach ($event as $key => $value) {
|
||||
|
@ -83,22 +84,21 @@ foreach ($events as $name => $event) {
|
|||
<section x-data="events" class="margin-bottom-small" data-ls-attrs="x-init=events={{webhook.events}}">
|
||||
<label>Events</label>
|
||||
<template x-for="(event, index) in events">
|
||||
<div class="row responsive thin margin-bottom-tiny">
|
||||
<div class="row events responsive thin margin-bottom-small">
|
||||
<div class="col span-12 margin-bottom-small">
|
||||
<span x-text="event"></span>
|
||||
<span class="pull-end" style="cursor: pointer;" @click="removeEvent(index)">
|
||||
<span class="text" x-text="event"></span>
|
||||
<span class="action" @click="removeEvent(index)">
|
||||
<i class="icon-trash"></i>
|
||||
</span>
|
||||
</div>
|
||||
<input name="events" data-cast-to="array" type="hidden" :value="event"></input>
|
||||
</div>
|
||||
</template>
|
||||
<label>Add event</label>
|
||||
<select x-model="selected" @change="setEvent()">
|
||||
<option value="" selected>---</option>
|
||||
<option value="" selected>Add event</option>
|
||||
<?php foreach ($patterns as $event): ?>
|
||||
<option value="<?php echo $event; ?>"><?php echo $event; ?></option>
|
||||
<?php endforeach;?>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<div x-show="hasResource">
|
||||
<label x-text="'Select ' + resourceName + ' (optional)'"></label>
|
||||
|
@ -229,10 +229,10 @@ foreach ($events as $name => $event) {
|
|||
<section x-data="events" class="margin-bottom-small">
|
||||
<label>Events</label>
|
||||
<template x-for="(event, index) in events">
|
||||
<div class="row responsive thin margin-bottom-tiny">
|
||||
<div class="row events responsive thin margin-bottom-tiny">
|
||||
<div class="col span-12 margin-bottom-small">
|
||||
<span x-text="event"></span>
|
||||
<span class="pull-end" style="cursor: pointer;" @click="removeEvent(index)">
|
||||
<span class="text" x-text="event"></span>
|
||||
<span class="action" @click="removeEvent(index)">
|
||||
<i class="icon-trash"></i>
|
||||
</span>
|
||||
</div>
|
||||
|
|
5
public/dist/scripts/app-all.js
vendored
5
public/dist/scripts/app-all.js
vendored
|
@ -3748,13 +3748,14 @@ let write=formData.get('write');if(write){write=JSON.parse(write);}
|
|||
if(this.getFile(id)){this.updateFile(id,{name:file.name,completed:false,failed:false,cancelled:false,error:"",});}else{this.addFile({id:id,name:file.name,progress:0,completed:false,failed:false,cancelled:false,error:"",});}
|
||||
target.reset();try{const response=await sdk.storage.createFile(bucketId,fileId,file,read,write,(progress)=>{this.updateFile(id,{id:progress.$id,progress:Math.round(progress.progress),error:"",});id=progress.$id;const file=this.getFile(id)??{};if(file.cancelled===true){throw'USER_CANCELLED';}});const existingFile=this.getFile(id)??{};if(existingFile.cancelled){this.updateFile(id,{id:response.$id,name:response.name,failed:false,});id=response.$id;throw'USER_CANCELLED'}else{this.updateFile(id,{id:response.$id,name:response.name,progress:100,completed:true,failed:false,});id=response.$id;}
|
||||
document.dispatchEvent(new CustomEvent('storage.createFile'));}catch(error){if(error==='USER_CANCELLED'){await sdk.storage.deleteFile(bucketId,id);this.updateFile(id,{cancelled:false,failed:true,});this.removeFile(id);}else{this.updateFile(id,{id:id,failed:true,error:error.message??error});}
|
||||
document.dispatchEvent(new CustomEvent('storage.createFile'));}}});});})(window);(function(window){document.addEventListener('alpine:init',()=>{Alpine.data('events',()=>({events:[],selected:null,action:null,type:null,subType:null,resource:null,resourceName:'',subResource:null,subResourceName:'',hasResource:false,hasSubResource:false,attribute:null,hasAttribute:false,attributes:[],setEvent(){this.hasResource=this.hasSubResource=this.hasAttribute=this.action=false;if(!event)return;let[type,action]=this.selected.split('.');switch(type){case'users':if(action==='update'){this.hasAttribute=true;this.attributes=['email','name','password','status','prefs']}
|
||||
document.dispatchEvent(new CustomEvent('storage.createFile'));}}});});})(window);(function(window){document.addEventListener('alpine:init',()=>{Alpine.data('events',()=>({events:[],selected:null,action:null,type:null,subType:null,resource:null,resourceName:'',subResource:null,subResourceName:'',hasResource:false,hasSubResource:false,attribute:null,hasAttribute:false,attributes:[],reset(){this.hasResource=this.hasSubResource=this.hasAttribute=false;this.type=this.subType=this.subResource=this.resource=this.attribute=this.selected=this.action=null;},setEvent(){this.hasResource=this.hasSubResource=this.hasAttribute=this.action=false;if(!this.selected){this.reset();return;}
|
||||
let[type,action]=this.selected.split('.');switch(type){case'users':if(action==='update'){this.hasAttribute=true;this.attributes=['email','name','password','status','prefs']}
|
||||
this.hasResource=true;this.type=type;this.resourceName='User ID';break;case'collections':this.hasResource=true;this.type=type;this.resourceName='Collection ID';break;case'teams':this.hasResource=true;this.type=type;this.resourceName='Team ID';break;case'buckets':this.hasResource=true;this.type=type;this.resourceName='Bucket ID';break;case'functions':this.hasResource=true;this.type=type;this.resourceName='Function ID';break;case'sessions':this.hasResource=this.hasSubResource=true;this.type='users';this.subType=type;this.resourceName='User ID';this.subResourceName='Session ID';break;case'verification':this.hasResource=this.hasSubResource=true;this.type='users';this.subType=type;this.resourceName='User ID';this.subResourceName='Verification ID';break;case'recovery':this.hasResource=this.hasSubResource=true;this.type='users';this.subType=type;this.resourceName='User ID';this.subResourceName='Recovery ID';break;case'documents':this.hasResource=this.hasSubResource=true;this.type='collections';this.subType=type;this.resourceName='Collection ID';this.subResourceName='Document ID';break;case'attributes':this.hasResource=this.hasSubResource=true;this.type='collections';this.subType=type;this.resourceName='Collection ID';this.subResourceName='Attribute ID';break;case'indexes':this.hasResource=this.hasSubResource=true;this.type='collections';this.subType=type;this.resourceName='Collection ID';this.subResourceName='Index ID';break;case'files':this.hasResource=this.hasSubResource=true;this.type='buckets';this.subType=type;this.resourceName='Bucket ID';this.subResourceName='File ID';break;case'memberships':if(action==='update'){this.hasAttribute=true;this.attributes=['status']}
|
||||
this.hasResource=this.hasSubResource=true;this.type='teams';this.subType=type;this.resourceName='Team ID';this.subResourceName='Membership ID';break;case'executions':this.hasResource=this.hasSubResource=true;this.type='functions';this.subType=type;this.resourceName='Function ID';this.subResourceName='Execution ID';break;case'deployments':this.hasResource=this.hasSubResource=true;this.type='functions';this.subType=type;this.resourceName='Function ID';this.subResourceName='Deployment ID';break;default:this.hasResource=true;this.hasSubResource=true;break;}
|
||||
this.action=action;},addEvent(){let event=`${this.type}.${this.resource ? this.resource : '*'}`;if(this.hasSubResource){event+=`.${this.subType}.${this.subResource ? this.subResource : '*'}`;}
|
||||
if(this.action){event+=`.${this.action}`;}
|
||||
if(this.attribute){event+=`.${this.attribute}`;}
|
||||
this.events.push(event);this.status=[];this.hasResource=this.hasSubResource=this.hasAttribute=false;this.type=this.subType=this.subResource=this.resource=this.attribute=this.selected=this.action=null;},removeEvent(index){this.events.splice(index,1);}}));});})(window);(function(window){"use strict";window.ls.view.add({selector:"data-service",controller:function(element,view,container,form,alerts,expression,window){let action=element.dataset["service"];let service=element.dataset["name"]||null;let event=expression.parse(element.dataset["event"]);let confirm=element.dataset["confirm"]||"";let loading=element.dataset["loading"]||"";let loaderId=null;let scope=element.dataset["scope"]||"sdk";let success=element.dataset["success"]||"";let failure=element.dataset["failure"]||"";let running=false;let callbacks={hide:function(){return function(){return element.style.opacity='0';};},reset:function(){return function(){if("FORM"===element.tagName){return element.reset();}
|
||||
this.events.push(event);this.reset();},removeEvent(index){this.events.splice(index,1);}}));});})(window);(function(window){"use strict";window.ls.view.add({selector:"data-service",controller:function(element,view,container,form,alerts,expression,window){let action=element.dataset["service"];let service=element.dataset["name"]||null;let event=expression.parse(element.dataset["event"]);let confirm=element.dataset["confirm"]||"";let loading=element.dataset["loading"]||"";let loaderId=null;let scope=element.dataset["scope"]||"sdk";let success=element.dataset["success"]||"";let failure=element.dataset["failure"]||"";let running=false;let callbacks={hide:function(){return function(){return element.style.opacity='0';};},reset:function(){return function(){if("FORM"===element.tagName){return element.reset();}
|
||||
throw new Error("This callback is only valid for forms");};},alert:function(text,classname){return function(alerts){alerts.add({text:text,class:classname||"success"},6000);};},redirect:function(url){return function(router){if(url==="/console"){window.location=url;return;}
|
||||
router.change(url||"/");};},reload:function(){return function(router){router.reload();};},state:function(keys){let updateQueryString=function(key,value,url){var re=new RegExp("([?&])"+key+"=.*?(&|#|$)(.*)","gi"),hash;if(re.test(url)){if(typeof value!=="undefined"&&value!==null){return url.replace(re,"$1"+key+"="+value+"$2$3");}else{hash=url.split("#");url=hash[0].replace(re,"$1$3").replace(/(&|\?)$/,"");if(typeof hash[1]!=="undefined"&&hash[1]!==null){url+="#"+hash[1];}
|
||||
return url;}}else{if(typeof value!=="undefined"&&value!==null){var separator=url.indexOf("?")!==-1?"&":"?";hash=url.split("#");url=hash[0]+separator+key+"="+value;if(typeof hash[1]!=="undefined"&&hash[1]!==null){url+="#"+hash[1];}
|
||||
|
|
5
public/dist/scripts/app.js
vendored
5
public/dist/scripts/app.js
vendored
|
@ -695,13 +695,14 @@ let write=formData.get('write');if(write){write=JSON.parse(write);}
|
|||
if(this.getFile(id)){this.updateFile(id,{name:file.name,completed:false,failed:false,cancelled:false,error:"",});}else{this.addFile({id:id,name:file.name,progress:0,completed:false,failed:false,cancelled:false,error:"",});}
|
||||
target.reset();try{const response=await sdk.storage.createFile(bucketId,fileId,file,read,write,(progress)=>{this.updateFile(id,{id:progress.$id,progress:Math.round(progress.progress),error:"",});id=progress.$id;const file=this.getFile(id)??{};if(file.cancelled===true){throw'USER_CANCELLED';}});const existingFile=this.getFile(id)??{};if(existingFile.cancelled){this.updateFile(id,{id:response.$id,name:response.name,failed:false,});id=response.$id;throw'USER_CANCELLED'}else{this.updateFile(id,{id:response.$id,name:response.name,progress:100,completed:true,failed:false,});id=response.$id;}
|
||||
document.dispatchEvent(new CustomEvent('storage.createFile'));}catch(error){if(error==='USER_CANCELLED'){await sdk.storage.deleteFile(bucketId,id);this.updateFile(id,{cancelled:false,failed:true,});this.removeFile(id);}else{this.updateFile(id,{id:id,failed:true,error:error.message??error});}
|
||||
document.dispatchEvent(new CustomEvent('storage.createFile'));}}});});})(window);(function(window){document.addEventListener('alpine:init',()=>{Alpine.data('events',()=>({events:[],selected:null,action:null,type:null,subType:null,resource:null,resourceName:'',subResource:null,subResourceName:'',hasResource:false,hasSubResource:false,attribute:null,hasAttribute:false,attributes:[],setEvent(){this.hasResource=this.hasSubResource=this.hasAttribute=this.action=false;if(!event)return;let[type,action]=this.selected.split('.');switch(type){case'users':if(action==='update'){this.hasAttribute=true;this.attributes=['email','name','password','status','prefs']}
|
||||
document.dispatchEvent(new CustomEvent('storage.createFile'));}}});});})(window);(function(window){document.addEventListener('alpine:init',()=>{Alpine.data('events',()=>({events:[],selected:null,action:null,type:null,subType:null,resource:null,resourceName:'',subResource:null,subResourceName:'',hasResource:false,hasSubResource:false,attribute:null,hasAttribute:false,attributes:[],reset(){this.hasResource=this.hasSubResource=this.hasAttribute=false;this.type=this.subType=this.subResource=this.resource=this.attribute=this.selected=this.action=null;},setEvent(){this.hasResource=this.hasSubResource=this.hasAttribute=this.action=false;if(!this.selected){this.reset();return;}
|
||||
let[type,action]=this.selected.split('.');switch(type){case'users':if(action==='update'){this.hasAttribute=true;this.attributes=['email','name','password','status','prefs']}
|
||||
this.hasResource=true;this.type=type;this.resourceName='User ID';break;case'collections':this.hasResource=true;this.type=type;this.resourceName='Collection ID';break;case'teams':this.hasResource=true;this.type=type;this.resourceName='Team ID';break;case'buckets':this.hasResource=true;this.type=type;this.resourceName='Bucket ID';break;case'functions':this.hasResource=true;this.type=type;this.resourceName='Function ID';break;case'sessions':this.hasResource=this.hasSubResource=true;this.type='users';this.subType=type;this.resourceName='User ID';this.subResourceName='Session ID';break;case'verification':this.hasResource=this.hasSubResource=true;this.type='users';this.subType=type;this.resourceName='User ID';this.subResourceName='Verification ID';break;case'recovery':this.hasResource=this.hasSubResource=true;this.type='users';this.subType=type;this.resourceName='User ID';this.subResourceName='Recovery ID';break;case'documents':this.hasResource=this.hasSubResource=true;this.type='collections';this.subType=type;this.resourceName='Collection ID';this.subResourceName='Document ID';break;case'attributes':this.hasResource=this.hasSubResource=true;this.type='collections';this.subType=type;this.resourceName='Collection ID';this.subResourceName='Attribute ID';break;case'indexes':this.hasResource=this.hasSubResource=true;this.type='collections';this.subType=type;this.resourceName='Collection ID';this.subResourceName='Index ID';break;case'files':this.hasResource=this.hasSubResource=true;this.type='buckets';this.subType=type;this.resourceName='Bucket ID';this.subResourceName='File ID';break;case'memberships':if(action==='update'){this.hasAttribute=true;this.attributes=['status']}
|
||||
this.hasResource=this.hasSubResource=true;this.type='teams';this.subType=type;this.resourceName='Team ID';this.subResourceName='Membership ID';break;case'executions':this.hasResource=this.hasSubResource=true;this.type='functions';this.subType=type;this.resourceName='Function ID';this.subResourceName='Execution ID';break;case'deployments':this.hasResource=this.hasSubResource=true;this.type='functions';this.subType=type;this.resourceName='Function ID';this.subResourceName='Deployment ID';break;default:this.hasResource=true;this.hasSubResource=true;break;}
|
||||
this.action=action;},addEvent(){let event=`${this.type}.${this.resource ? this.resource : '*'}`;if(this.hasSubResource){event+=`.${this.subType}.${this.subResource ? this.subResource : '*'}`;}
|
||||
if(this.action){event+=`.${this.action}`;}
|
||||
if(this.attribute){event+=`.${this.attribute}`;}
|
||||
this.events.push(event);this.status=[];this.hasResource=this.hasSubResource=this.hasAttribute=false;this.type=this.subType=this.subResource=this.resource=this.attribute=this.selected=this.action=null;},removeEvent(index){this.events.splice(index,1);}}));});})(window);(function(window){"use strict";window.ls.view.add({selector:"data-service",controller:function(element,view,container,form,alerts,expression,window){let action=element.dataset["service"];let service=element.dataset["name"]||null;let event=expression.parse(element.dataset["event"]);let confirm=element.dataset["confirm"]||"";let loading=element.dataset["loading"]||"";let loaderId=null;let scope=element.dataset["scope"]||"sdk";let success=element.dataset["success"]||"";let failure=element.dataset["failure"]||"";let running=false;let callbacks={hide:function(){return function(){return element.style.opacity='0';};},reset:function(){return function(){if("FORM"===element.tagName){return element.reset();}
|
||||
this.events.push(event);this.reset();},removeEvent(index){this.events.splice(index,1);}}));});})(window);(function(window){"use strict";window.ls.view.add({selector:"data-service",controller:function(element,view,container,form,alerts,expression,window){let action=element.dataset["service"];let service=element.dataset["name"]||null;let event=expression.parse(element.dataset["event"]);let confirm=element.dataset["confirm"]||"";let loading=element.dataset["loading"]||"";let loaderId=null;let scope=element.dataset["scope"]||"sdk";let success=element.dataset["success"]||"";let failure=element.dataset["failure"]||"";let running=false;let callbacks={hide:function(){return function(){return element.style.opacity='0';};},reset:function(){return function(){if("FORM"===element.tagName){return element.reset();}
|
||||
throw new Error("This callback is only valid for forms");};},alert:function(text,classname){return function(alerts){alerts.add({text:text,class:classname||"success"},6000);};},redirect:function(url){return function(router){if(url==="/console"){window.location=url;return;}
|
||||
router.change(url||"/");};},reload:function(){return function(router){router.reload();};},state:function(keys){let updateQueryString=function(key,value,url){var re=new RegExp("([?&])"+key+"=.*?(&|#|$)(.*)","gi"),hash;if(re.test(url)){if(typeof value!=="undefined"&&value!==null){return url.replace(re,"$1"+key+"="+value+"$2$3");}else{hash=url.split("#");url=hash[0].replace(re,"$1$3").replace(/(&|\?)$/,"");if(typeof hash[1]!=="undefined"&&hash[1]!==null){url+="#"+hash[1];}
|
||||
return url;}}else{if(typeof value!=="undefined"&&value!==null){var separator=url.indexOf("?")!==-1?"&":"?";hash=url.split("#");url=hash[0]+separator+key+"="+value;if(typeof hash[1]!=="undefined"&&hash[1]!==null){url+="#"+hash[1];}
|
||||
|
|
2
public/dist/styles/default-ltr.css
vendored
2
public/dist/styles/default-ltr.css
vendored
File diff suppressed because one or more lines are too long
2
public/dist/styles/default-rtl.css
vendored
2
public/dist/styles/default-rtl.css
vendored
File diff suppressed because one or more lines are too long
|
@ -15,10 +15,17 @@
|
|||
attribute: null,
|
||||
hasAttribute: false,
|
||||
attributes: [],
|
||||
reset() {
|
||||
this.hasResource = this.hasSubResource = this.hasAttribute = false;
|
||||
this.type = this.subType = this.subResource = this.resource = this.attribute = this.selected = this.action = null;
|
||||
},
|
||||
setEvent() {
|
||||
this.hasResource = this.hasSubResource = this.hasAttribute = this.action = false;
|
||||
|
||||
if (!event) return;
|
||||
if (!this.selected) {
|
||||
this.reset();
|
||||
return;
|
||||
}
|
||||
|
||||
let [type, action] = this.selected.split('.');
|
||||
|
||||
|
@ -166,9 +173,7 @@
|
|||
|
||||
this.events.push(event);
|
||||
|
||||
this.status = [];
|
||||
this.hasResource = this.hasSubResource = this.hasAttribute = false;
|
||||
this.type = this.subType = this.subResource = this.resource = this.attribute = this.selected = this.action = null;
|
||||
this.reset();
|
||||
},
|
||||
removeEvent(index) {
|
||||
this.events.splice(index, 1);
|
||||
|
|
16
public/styles/comps/events.less
Normal file
16
public/styles/comps/events.less
Normal file
|
@ -0,0 +1,16 @@
|
|||
.events.row {
|
||||
border-bottom: solid 1px var(--config-color-fade-super);
|
||||
|
||||
.col {
|
||||
span.text {
|
||||
display: inline-block;
|
||||
width: calc(100% - 28px);
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
span.action {
|
||||
.pull-end;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -29,6 +29,7 @@ img[src=""] {
|
|||
@import "comps/box";
|
||||
@import "comps/cover";
|
||||
@import "comps/database";
|
||||
@import "comps/events";
|
||||
@import "comps/footer";
|
||||
@import "comps/loader";
|
||||
@import "comps/modal";
|
||||
|
|
Loading…
Reference in a new issue