@sysvale/show 0.3.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/@sysvale/show.esm.js +228 -30
- package/dist/@sysvale/show.min.js +1 -1
- package/dist/@sysvale/show.ssr.js +222 -31
- package/package.json +2 -1
package/README.md
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
import { h } from 'vue';
|
1
2
|
import swal from 'sweetalert2';
|
2
3
|
import get from 'lodash.get';
|
3
4
|
import camelCase from 'lodash.camelcase';
|
4
5
|
import isObject from 'lodash.isobject';
|
5
6
|
import snakeCase from 'lodash.snakecase';
|
7
|
+
import keyBy from 'lodash.keyby';
|
6
8
|
|
7
9
|
var isArray = function (arg) { return Array.isArray(arg); };
|
8
10
|
|
@@ -50,6 +52,18 @@ var convertKeysToSnakeCase = function (data) {
|
|
50
52
|
return newData;
|
51
53
|
};
|
52
54
|
|
55
|
+
function generateKey(length) {
|
56
|
+
if ( length === void 0 ) length = 8;
|
57
|
+
|
58
|
+
var result = '';
|
59
|
+
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
60
|
+
var charactersLength = characters.length;
|
61
|
+
for (var i = 0; i < length; i += 1) {
|
62
|
+
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
63
|
+
}
|
64
|
+
return result;
|
65
|
+
}
|
66
|
+
|
53
67
|
function getFirstErrorMessage(response, fallbackMsg) {
|
54
68
|
if ( fallbackMsg === void 0 ) fallbackMsg = 'Não conseguimos processar sua requisição. Tente novamente.';
|
55
69
|
|
@@ -78,7 +92,17 @@ var ERROR_SWAL_DEFAULT_CONFIG = {
|
|
78
92
|
};
|
79
93
|
|
80
94
|
var script = {
|
95
|
+
inject: ['$_requestObserver'],
|
96
|
+
emits: ['success', 'error', 'success-feedback-ok', 'error-feedback-ok', 'success-feedback-cancel', 'error-feedback-cancel'],
|
81
97
|
props: {
|
98
|
+
vid: {
|
99
|
+
type: String,
|
100
|
+
default: function () { return generateKey(); },
|
101
|
+
},
|
102
|
+
tag: {
|
103
|
+
type: String,
|
104
|
+
default: 'div',
|
105
|
+
},
|
82
106
|
service: {
|
83
107
|
type: Function,
|
84
108
|
required: true,
|
@@ -142,6 +166,18 @@ var script = {
|
|
142
166
|
};
|
143
167
|
},
|
144
168
|
|
169
|
+
computed: {
|
170
|
+
requestState: function requestState() {
|
171
|
+
return {
|
172
|
+
loading: this.loading,
|
173
|
+
failed: this.failed,
|
174
|
+
succeeded: this.succeeded,
|
175
|
+
error: this.error,
|
176
|
+
data: this.data,
|
177
|
+
};
|
178
|
+
}
|
179
|
+
},
|
180
|
+
|
145
181
|
watch: {
|
146
182
|
forceResetError: function forceResetError(newValue) {
|
147
183
|
if (newValue) {
|
@@ -156,6 +192,18 @@ var script = {
|
|
156
192
|
}
|
157
193
|
},
|
158
194
|
|
195
|
+
created: function created() {
|
196
|
+
if(this.$_requestObserver) {
|
197
|
+
this.$_requestObserver.subscribe(this);
|
198
|
+
}
|
199
|
+
},
|
200
|
+
|
201
|
+
beforeDestroy: function beforeDestroy() {
|
202
|
+
if(this.$_requestObserver) {
|
203
|
+
this.$_requestObserver.unsubscribe(this);
|
204
|
+
}
|
205
|
+
},
|
206
|
+
|
159
207
|
methods: {
|
160
208
|
action: function action(payloadFromArgs) {
|
161
209
|
var this$1 = this;
|
@@ -216,7 +264,7 @@ var script = {
|
|
216
264
|
});
|
217
265
|
},
|
218
266
|
|
219
|
-
|
267
|
+
loadingTextResolver: function loadingTextResolver(label, loadingLabel) {
|
220
268
|
if ( loadingLabel === void 0 ) loadingLabel = 'Carregando...';
|
221
269
|
|
222
270
|
if (this.loading) {
|
@@ -234,22 +282,16 @@ var script = {
|
|
234
282
|
},
|
235
283
|
|
236
284
|
render: function render() {
|
237
|
-
var slotProvider = this.$slots
|
238
|
-
var slot = slotProvider.default({
|
239
|
-
|
240
|
-
|
241
|
-
succeeded: this.succeeded,
|
242
|
-
error: this.error,
|
243
|
-
data: this.data,
|
244
|
-
action: this.action,
|
245
|
-
labelHelper: this.labelHelper,
|
285
|
+
var slotProvider = this.$slots;
|
286
|
+
var slot = slotProvider.default(Object.assign({}, this.requestState,
|
287
|
+
{action: this.action,
|
288
|
+
loadingTextResolver: this.loadingTextResolver,
|
246
289
|
errorMessage: getFirstErrorMessage(
|
247
290
|
get(this.error, 'response.data', null),
|
248
291
|
'Um erro aconteceu... por favor, tente novamente. Se o erro persistir, contate o suporte.'
|
249
|
-
)
|
250
|
-
});
|
292
|
+
)}));
|
251
293
|
|
252
|
-
return
|
294
|
+
return h(this.tag, slot);
|
253
295
|
},
|
254
296
|
};
|
255
297
|
|
@@ -362,11 +404,181 @@ var __vue_script__ = script;
|
|
362
404
|
undefined
|
363
405
|
);
|
364
406
|
|
407
|
+
var booleanReduceByProp = function (arr, prop, operator, defaultValue) {
|
408
|
+
if ( operator === void 0 ) operator = '||';
|
409
|
+
if ( defaultValue === void 0 ) defaultValue = false;
|
410
|
+
|
411
|
+
return arr.reduce(function (acc, item) {
|
412
|
+
if(operator === '||') {
|
413
|
+
return acc || item[prop];
|
414
|
+
} else if(operator === '&&') {
|
415
|
+
return acc && item[prop];
|
416
|
+
}
|
417
|
+
}, defaultValue);
|
418
|
+
};
|
419
|
+
|
420
|
+
var script$1 = {
|
421
|
+
emits: ['success', 'error'],
|
422
|
+
props: {
|
423
|
+
vid: {
|
424
|
+
type: String,
|
425
|
+
default: function () { return generateKey(); },
|
426
|
+
},
|
427
|
+
tag: {
|
428
|
+
type: String,
|
429
|
+
default: 'div',
|
430
|
+
},
|
431
|
+
},
|
432
|
+
data: function data() {
|
433
|
+
return {
|
434
|
+
providers: [],
|
435
|
+
providersVids: {},
|
436
|
+
};
|
437
|
+
},
|
438
|
+
provide: function provide() {
|
439
|
+
return {
|
440
|
+
$_requestObserver: this,
|
441
|
+
}
|
442
|
+
},
|
443
|
+
|
444
|
+
computed: {
|
445
|
+
context: function context() {
|
446
|
+
return {
|
447
|
+
vid: this.vid,
|
448
|
+
loading: booleanReduceByProp(this.providers, 'loading'),
|
449
|
+
failed: booleanReduceByProp(this.providers, 'failed'),
|
450
|
+
succeeded: booleanReduceByProp(this.providers, 'succeeded', '&&', true),
|
451
|
+
errors: keyBy(this.providers.filter(function (ref) {
|
452
|
+
var failed = ref.failed;
|
453
|
+
|
454
|
+
return failed;
|
455
|
+
}).map(function (ref) {
|
456
|
+
var error = ref.error;
|
457
|
+
var vid = ref.vid;
|
458
|
+
|
459
|
+
return ({ error: error, vid: vid });
|
460
|
+
}), 'vid'),
|
461
|
+
providerRequestState: this.providerRequestState,
|
462
|
+
loadingTextResolver: this.loadingTextResolver,
|
463
|
+
};
|
464
|
+
},
|
465
|
+
|
466
|
+
providerRequestState: function providerRequestState() {
|
467
|
+
var this$1 = this;
|
468
|
+
|
469
|
+
return function (vid) {
|
470
|
+
var element = this$1.providers.find(function (ref) {
|
471
|
+
var providerVid = ref.vid;
|
472
|
+
|
473
|
+
return providerVid === vid;
|
474
|
+
});
|
475
|
+
return element ? element.requestState : {
|
476
|
+
loading: false,
|
477
|
+
failed: false,
|
478
|
+
succeeded: false,
|
479
|
+
error: null,
|
480
|
+
data: null,
|
481
|
+
};
|
482
|
+
}
|
483
|
+
},
|
484
|
+
|
485
|
+
loadingTextResolver: function loadingTextResolver() {
|
486
|
+
var this$1 = this;
|
487
|
+
|
488
|
+
return function (label, loadingLabel) {
|
489
|
+
if ( loadingLabel === void 0 ) loadingLabel = 'Carregando...';
|
490
|
+
|
491
|
+
if (this$1.context.loading) {
|
492
|
+
return loadingLabel;
|
493
|
+
}
|
494
|
+
return label;
|
495
|
+
}
|
496
|
+
},
|
497
|
+
},
|
498
|
+
|
499
|
+
watch: {
|
500
|
+
'context.succeeded': {
|
501
|
+
handler: function handler(newValue) {
|
502
|
+
if (newValue) {
|
503
|
+
this.$emit('success', this.context);
|
504
|
+
}
|
505
|
+
},
|
506
|
+
},
|
507
|
+
'context.failed': {
|
508
|
+
handler: function handler(newValue) {
|
509
|
+
if (newValue) {
|
510
|
+
this.$emit('error', this.context);
|
511
|
+
}
|
512
|
+
},
|
513
|
+
},
|
514
|
+
},
|
515
|
+
|
516
|
+
render: function render() {
|
517
|
+
var slotProvider = this.$slots;
|
518
|
+
var slot = slotProvider.default(this.context);
|
519
|
+
return h(this.tag, slot);
|
520
|
+
},
|
521
|
+
|
522
|
+
methods: {
|
523
|
+
subscribe: function subscribe(provider) {
|
524
|
+
if(!this.providersVids[provider.vid]) {
|
525
|
+
this.providersVids[provider.vid] = true;
|
526
|
+
this.providers.push(provider);
|
527
|
+
} else {
|
528
|
+
throw new Error(("Provider não reigistrado no observer! Já existe um provider com o vid >> " + (provider.vid) + " <<"));
|
529
|
+
}
|
530
|
+
},
|
531
|
+
unsubscribe: function unsubscribe(provider) {
|
532
|
+
delete this.providersVids[provider.vid];
|
533
|
+
this.providers.filter(function (ref) {
|
534
|
+
var vid = ref.vid;
|
535
|
+
|
536
|
+
return vid !== provider.vid;
|
537
|
+
});
|
538
|
+
},
|
539
|
+
},
|
540
|
+
};
|
541
|
+
|
542
|
+
/* script */
|
543
|
+
var __vue_script__$1 = script$1;
|
544
|
+
|
545
|
+
/* template */
|
546
|
+
|
547
|
+
/* style */
|
548
|
+
var __vue_inject_styles__$1 = undefined;
|
549
|
+
/* scoped */
|
550
|
+
var __vue_scope_id__$1 = undefined;
|
551
|
+
/* module identifier */
|
552
|
+
var __vue_module_identifier__$1 = undefined;
|
553
|
+
/* functional template */
|
554
|
+
var __vue_is_functional_template__$1 = undefined;
|
555
|
+
/* style inject */
|
556
|
+
|
557
|
+
/* style inject SSR */
|
558
|
+
|
559
|
+
/* style inject shadow dom */
|
560
|
+
|
561
|
+
|
562
|
+
|
563
|
+
var __vue_component__$1 = /*#__PURE__*/normalizeComponent(
|
564
|
+
{},
|
565
|
+
__vue_inject_styles__$1,
|
566
|
+
__vue_script__$1,
|
567
|
+
__vue_scope_id__$1,
|
568
|
+
__vue_is_functional_template__$1,
|
569
|
+
__vue_module_identifier__$1,
|
570
|
+
false,
|
571
|
+
undefined,
|
572
|
+
undefined,
|
573
|
+
undefined
|
574
|
+
);
|
575
|
+
|
365
576
|
|
366
577
|
|
367
578
|
var components = /*#__PURE__*/Object.freeze({
|
368
579
|
__proto__: null,
|
369
|
-
RequestProvider: __vue_component__
|
580
|
+
RequestProvider: __vue_component__,
|
581
|
+
RequestObserver: __vue_component__$1
|
370
582
|
});
|
371
583
|
|
372
584
|
function removeAccents(str) {
|
@@ -393,18 +605,6 @@ function removeAccents(str) {
|
|
393
605
|
return newStr;
|
394
606
|
}
|
395
607
|
|
396
|
-
function generateKey(length) {
|
397
|
-
if ( length === void 0 ) length = 8;
|
398
|
-
|
399
|
-
var result = '';
|
400
|
-
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
401
|
-
var charactersLength = characters.length;
|
402
|
-
for (var i = 0; i < length; i += 1) {
|
403
|
-
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
404
|
-
}
|
405
|
-
return result;
|
406
|
-
}
|
407
|
-
|
408
608
|
var utils = {
|
409
609
|
$showConvertKeysToCamelCase: convertKeysToCamelCase,
|
410
610
|
$showConvertKeysToSnakeCase: convertKeysToSnakeCase,
|
@@ -421,9 +621,7 @@ function install(app) {
|
|
421
621
|
var version = Number(app.version.split('.')[0]);
|
422
622
|
|
423
623
|
if (version <= 2) {
|
424
|
-
|
425
|
-
app.prototype[key] = utils[key];
|
426
|
-
});
|
624
|
+
throw new Error('Essa versão só é compatível com projetos que possuem o Vue 3. Para projetos com a Vue 2, utilize a versão 0.3.0 ou inferior');
|
427
625
|
}
|
428
626
|
|
429
627
|
if (version > 2) {
|
@@ -461,4 +659,4 @@ if (GlobalVue) {
|
|
461
659
|
}
|
462
660
|
|
463
661
|
export default plugin;
|
464
|
-
export { __vue_component__ as RequestProvider };
|
662
|
+
export { __vue_component__$1 as RequestObserver, __vue_component__ as RequestProvider };
|
@@ -1 +1 @@
|
|
1
|
-
var SHOW=function(e,t,r,o,n,a){"use strict";
|
1
|
+
var SHOW=function(e,t,r,o,n,i,s,a){"use strict";r=r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,o=o&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o,n=n&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n,i=i&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i,s=s&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s,a=a&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a;var u=function(e){return Array.isArray(e)},c=function(e){if(u(e))return e.map((function(e){return i(e)||u(e)?c(e):e}));var t={};return Object.keys(e).forEach((function(r){i(e[r])||u(e[r])?t[n(r)]=c(e[r]):t[n(r)]=e[r]})),t},d=function(e){return Array.isArray(e)},l=function(e){if(d(e))return e.map((function(e){return i(e)||d(e)?l(e):e}));var t={};return Object.keys(e).forEach((function(r){i(e[r])||d(e[r])?t[s(r)]=l(e[r]):t[s(r)]=e[r]})),t};function f(e){void 0===e&&(e=8);for(var t="",r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",o=r.length,n=0;n<e;n+=1)t+=r.charAt(Math.floor(Math.random()*o));return t}function v(e,t){void 0===t&&(t="Não conseguimos processar sua requisição. Tente novamente.");var r=o(e,"errors",!1);return r&&r[Object.keys(r)[0]][0]||t}var h={title:"Informações salvas com sucesso!",icon:"success",text:"",showCloseButton:!0,confirmButtonText:"Ok"},p={icon:"error",title:"Erro",text:"mensagem de error",showCancelButton:!0,showConfirmButton:!1,cancelButtonText:"Fechar"};function b(e,t,r,o,n,i,s,a,u,c){"boolean"!=typeof s&&(u=a,a=s,s=!1);var d,l="function"==typeof r?r.options:r;if(e&&e.render&&(l.render=e.render,l.staticRenderFns=e.staticRenderFns,l._compiled=!0,n&&(l.functional=!0)),o&&(l._scopeId=o),i?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,u(e)),e&&e._registeredComponents&&e._registeredComponents.add(i)},l._ssrRegister=d):t&&(d=s?function(e){t.call(this,c(e,this.$root.$options.shadowRoot))}:function(e){t.call(this,a(e))}),d)if(l.functional){var f=l.render;l.render=function(e,t){return d.call(t),f(e,t)}}else{var v=l.beforeCreate;l.beforeCreate=v?[].concat(v,d):[d]}return r}var y=b({},void 0,{inject:["$_requestObserver"],emits:["success","error","success-feedback-ok","error-feedback-ok","success-feedback-cancel","error-feedback-cancel"],props:{vid:{type:String,default:function(){return f()}},tag:{type:String,default:"div"},service:{type:Function,required:!0},payload:{type:Object,default:function(){return{}}},payloadResolver:{type:Function,default:function(e){return l(e)}},dataResolver:{type:Function,default:function(e){return c(e)}},successSwalConfig:{type:Object,default:function(){return h}},errorSwalConfig:{type:Object,default:function(){return p}},errorFeedbackResolver:{type:Function,default:null},successFeedbackResolver:{type:Function,default:null},showSuccessFeedback:{type:Boolean,default:!1},hideErrorFeedback:{type:Boolean,default:!1},immediate:{type:Boolean,default:!1},forceResetError:{type:Boolean,default:!1},initialData:{default:null}},data:function(){return{loading:!1,failed:!1,succeeded:!1,error:null,data:this.initialData}},computed:{requestState:function(){return{loading:this.loading,failed:this.failed,succeeded:this.succeeded,error:this.error,data:this.data}}},watch:{forceResetError:function(e){e&&(this.error=null)}},mounted:function(){this.immediate&&this.action()},created:function(){this.$_requestObserver&&this.$_requestObserver.subscribe(this)},beforeDestroy:function(){this.$_requestObserver&&this.$_requestObserver.unsubscribe(this)},methods:{action:function(e){var t=this;this.startRequest();var n=e||this.payload;this.service(this.payloadResolver(n)).then((function(e){var o=e.data;if(t.data=t.dataResolver(o),t.succeeded=!0,t.$emit("success",t.data),t.showSuccessFeedback){if(t.successFeedbackResolver)return void t.successFeedbackResolver({vm:t,data:t.data});r.fire(Object.assign({},h,t.successSwalConfig)).then((function(){t.$emit("success-feedback-ok",t.data)}))}})).catch((function(e){if(t.failed=!0,t.error=e,t.$emit("error",e),!t.hideErrorFeedback){var n=v(o(e,"response.data",null),"Um erro aconteceu... por favor, tente novamente. Se o erro persistir, contate o suporte.");if(t.errorFeedbackResolver)return void t.errorFeedbackResolver({vm:t,error:e,errorMessage:n});r.fire(Object.assign({},p,t.errorSwalConfig,{text:n})).then((function(r){r.isDismissed&&t.$emit("error-feedback-cancel",e),r.isConfirmed&&t.$emit("error-feedback-ok",e)}))}})).finally((function(){t.loading=!1}))},loadingTextResolver:function(e,t){return void 0===t&&(t="Carregando..."),this.loading?t:e},startRequest:function(){this.loading=!0,this.failed=!1,this.succeeded=!1,this.error=null}},render:function(){var e=this.$slots.default(Object.assign({},this.requestState,{action:this.action,loadingTextResolver:this.loadingTextResolver,errorMessage:v(o(this.error,"response.data",null),"Um erro aconteceu... por favor, tente novamente. Se o erro persistir, contate o suporte.")}));return t.h(this.tag,e)}},void 0,void 0,void 0,!1,void 0,void 0,void 0),m=function(e,t,r,o){return void 0===r&&(r="||"),void 0===o&&(o=!1),e.reduce((function(e,o){return"||"===r?e||o[t]:"&&"===r?e&&o[t]:void 0}),o)},g=b({},void 0,{emits:["success","error"],props:{vid:{type:String,default:function(){return f()}},tag:{type:String,default:"div"}},data:function(){return{providers:[],providersVids:{}}},provide:function(){return{$_requestObserver:this}},computed:{context:function(){return{vid:this.vid,loading:m(this.providers,"loading"),failed:m(this.providers,"failed"),succeeded:m(this.providers,"succeeded","&&",!0),errors:a(this.providers.filter((function(e){return e.failed})).map((function(e){return{error:e.error,vid:e.vid}})),"vid"),providerRequestState:this.providerRequestState,loadingTextResolver:this.loadingTextResolver}},providerRequestState:function(){var e=this;return function(t){var r=e.providers.find((function(e){return e.vid===t}));return r?r.requestState:{loading:!1,failed:!1,succeeded:!1,error:null,data:null}}},loadingTextResolver:function(){var e=this;return function(t,r){return void 0===r&&(r="Carregando..."),e.context.loading?r:t}}},watch:{"context.succeeded":{handler:function(e){e&&this.$emit("success",this.context)}},"context.failed":{handler:function(e){e&&this.$emit("error",this.context)}}},render:function(){var e=this.$slots.default(this.context);return t.h(this.tag,e)},methods:{subscribe:function(e){if(this.providersVids[e.vid])throw new Error("Provider não reigistrado no observer! Já existe um provider com o vid >> "+e.vid+" <<");this.providersVids[e.vid]=!0,this.providers.push(e)},unsubscribe:function(e){delete this.providersVids[e.vid],this.providers.filter((function(t){return t.vid!==e.vid}))}}},void 0,void 0,void 0,!1,void 0,void 0,void 0),O=Object.freeze({__proto__:null,RequestProvider:y,RequestObserver:g});var R={$showConvertKeysToCamelCase:c,$showConvertKeysToSnakeCase:l,$showRemoveAccents:function(e){void 0===e&&(e="");for(var t,r=e.length,o=e.split(""),n=0;n<r;n+=1)-1!==(t="ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž".indexOf(e[n]))&&(o[n]="AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz"[t]);return o=(o=(o=(o=o.join("")).split(".").join("")).split("-").join("")).split("/").join("")},$showGenerateKey:f};var w={install:function e(t){if(!e.installed){e.installed=!0;var r=Number(t.version.split(".")[0]);if(r<=2)throw new Error("Essa versão só é compatível com projetos que possuem o Vue 3. Para projetos com a Vue 2, utilize a versão 0.3.0 ou inferior");r>2&&Object.keys(R).forEach((function(e){t.config.globalProperties[e]=R[e]})),Object.keys(O).forEach((function(e){t.component("Show"+e,O[e])}))}}},k=null;return"undefined"!=typeof window?k=window.Vue:"undefined"!=typeof global&&(k=global.Vue),k&&k.use(w),e.RequestObserver=g,e.RequestProvider=y,e.default=w,e}({},vue,swal,get,camelCase,isObject,snakeCase,keyBy);
|
@@ -1,4 +1,4 @@
|
|
1
|
-
'use strict';Object.defineProperty(exports,'__esModule',{value:true});function _interopDefault(e){return(e&&(typeof e==='object')&&'default'in e)?e['default']:e}var swal=_interopDefault(require('sweetalert2')),get=_interopDefault(require('lodash.get')),camelCase=_interopDefault(require('lodash.camelcase')),isObject=_interopDefault(require('lodash.isobject')),snakeCase=_interopDefault(require('lodash.snakecase'));var isArray = function (arg) { return Array.isArray(arg); };
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});function _interopDefault(e){return(e&&(typeof e==='object')&&'default'in e)?e['default']:e}var vue=require('vue'),swal=_interopDefault(require('sweetalert2')),get=_interopDefault(require('lodash.get')),camelCase=_interopDefault(require('lodash.camelcase')),isObject=_interopDefault(require('lodash.isobject')),snakeCase=_interopDefault(require('lodash.snakecase')),keyBy=_interopDefault(require('lodash.keyby'));var isArray = function (arg) { return Array.isArray(arg); };
|
2
2
|
|
3
3
|
var convertKeysToCamelCase = function (data) {
|
4
4
|
if (isArray(data)) {
|
@@ -40,7 +40,17 @@ var convertKeysToSnakeCase = function (data) {
|
|
40
40
|
});
|
41
41
|
|
42
42
|
return newData;
|
43
|
-
};function
|
43
|
+
};function generateKey(length) {
|
44
|
+
if ( length === void 0 ) length = 8;
|
45
|
+
|
46
|
+
var result = '';
|
47
|
+
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
48
|
+
var charactersLength = characters.length;
|
49
|
+
for (var i = 0; i < length; i += 1) {
|
50
|
+
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
51
|
+
}
|
52
|
+
return result;
|
53
|
+
}function getFirstErrorMessage(response, fallbackMsg) {
|
44
54
|
if ( fallbackMsg === void 0 ) fallbackMsg = 'Não conseguimos processar sua requisição. Tente novamente.';
|
45
55
|
|
46
56
|
var errors = get(response, 'errors', false);
|
@@ -66,7 +76,17 @@ var ERROR_SWAL_DEFAULT_CONFIG = {
|
|
66
76
|
};
|
67
77
|
|
68
78
|
var script = {
|
79
|
+
inject: ['$_requestObserver'],
|
80
|
+
emits: ['success', 'error', 'success-feedback-ok', 'error-feedback-ok', 'success-feedback-cancel', 'error-feedback-cancel'],
|
69
81
|
props: {
|
82
|
+
vid: {
|
83
|
+
type: String,
|
84
|
+
default: function () { return generateKey(); },
|
85
|
+
},
|
86
|
+
tag: {
|
87
|
+
type: String,
|
88
|
+
default: 'div',
|
89
|
+
},
|
70
90
|
service: {
|
71
91
|
type: Function,
|
72
92
|
required: true,
|
@@ -130,6 +150,18 @@ var script = {
|
|
130
150
|
};
|
131
151
|
},
|
132
152
|
|
153
|
+
computed: {
|
154
|
+
requestState: function requestState() {
|
155
|
+
return {
|
156
|
+
loading: this.loading,
|
157
|
+
failed: this.failed,
|
158
|
+
succeeded: this.succeeded,
|
159
|
+
error: this.error,
|
160
|
+
data: this.data,
|
161
|
+
};
|
162
|
+
}
|
163
|
+
},
|
164
|
+
|
133
165
|
watch: {
|
134
166
|
forceResetError: function forceResetError(newValue) {
|
135
167
|
if (newValue) {
|
@@ -144,6 +176,18 @@ var script = {
|
|
144
176
|
}
|
145
177
|
},
|
146
178
|
|
179
|
+
created: function created() {
|
180
|
+
if(this.$_requestObserver) {
|
181
|
+
this.$_requestObserver.subscribe(this);
|
182
|
+
}
|
183
|
+
},
|
184
|
+
|
185
|
+
beforeDestroy: function beforeDestroy() {
|
186
|
+
if(this.$_requestObserver) {
|
187
|
+
this.$_requestObserver.unsubscribe(this);
|
188
|
+
}
|
189
|
+
},
|
190
|
+
|
147
191
|
methods: {
|
148
192
|
action: function action(payloadFromArgs) {
|
149
193
|
var this$1 = this;
|
@@ -204,7 +248,7 @@ var script = {
|
|
204
248
|
});
|
205
249
|
},
|
206
250
|
|
207
|
-
|
251
|
+
loadingTextResolver: function loadingTextResolver(label, loadingLabel) {
|
208
252
|
if ( loadingLabel === void 0 ) loadingLabel = 'Carregando...';
|
209
253
|
|
210
254
|
if (this.loading) {
|
@@ -222,22 +266,16 @@ var script = {
|
|
222
266
|
},
|
223
267
|
|
224
268
|
render: function render() {
|
225
|
-
var slotProvider = this.$slots
|
226
|
-
var slot = slotProvider.default({
|
227
|
-
|
228
|
-
|
229
|
-
succeeded: this.succeeded,
|
230
|
-
error: this.error,
|
231
|
-
data: this.data,
|
232
|
-
action: this.action,
|
233
|
-
labelHelper: this.labelHelper,
|
269
|
+
var slotProvider = this.$slots;
|
270
|
+
var slot = slotProvider.default(Object.assign({}, this.requestState,
|
271
|
+
{action: this.action,
|
272
|
+
loadingTextResolver: this.loadingTextResolver,
|
234
273
|
errorMessage: getFirstErrorMessage(
|
235
274
|
get(this.error, 'response.data', null),
|
236
275
|
'Um erro aconteceu... por favor, tente novamente. Se o erro persistir, contate o suporte.'
|
237
|
-
)
|
238
|
-
});
|
276
|
+
)}));
|
239
277
|
|
240
|
-
return
|
278
|
+
return vue.h(this.tag, slot);
|
241
279
|
},
|
242
280
|
};function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {
|
243
281
|
if (typeof shadowMode !== 'boolean') {
|
@@ -322,7 +360,7 @@ var __vue_script__ = script;
|
|
322
360
|
/* scoped */
|
323
361
|
var __vue_scope_id__ = undefined;
|
324
362
|
/* module identifier */
|
325
|
-
var __vue_module_identifier__ = "data-v-
|
363
|
+
var __vue_module_identifier__ = "data-v-77657dd0";
|
326
364
|
/* functional template */
|
327
365
|
var __vue_is_functional_template__ = undefined;
|
328
366
|
/* style inject */
|
@@ -344,7 +382,172 @@ var __vue_script__ = script;
|
|
344
382
|
undefined,
|
345
383
|
undefined,
|
346
384
|
undefined
|
347
|
-
);var
|
385
|
+
);var booleanReduceByProp = function (arr, prop, operator, defaultValue) {
|
386
|
+
if ( operator === void 0 ) operator = '||';
|
387
|
+
if ( defaultValue === void 0 ) defaultValue = false;
|
388
|
+
|
389
|
+
return arr.reduce(function (acc, item) {
|
390
|
+
if(operator === '||') {
|
391
|
+
return acc || item[prop];
|
392
|
+
} else if(operator === '&&') {
|
393
|
+
return acc && item[prop];
|
394
|
+
}
|
395
|
+
}, defaultValue);
|
396
|
+
};
|
397
|
+
|
398
|
+
var script$1 = {
|
399
|
+
emits: ['success', 'error'],
|
400
|
+
props: {
|
401
|
+
vid: {
|
402
|
+
type: String,
|
403
|
+
default: function () { return generateKey(); },
|
404
|
+
},
|
405
|
+
tag: {
|
406
|
+
type: String,
|
407
|
+
default: 'div',
|
408
|
+
},
|
409
|
+
},
|
410
|
+
data: function data() {
|
411
|
+
return {
|
412
|
+
providers: [],
|
413
|
+
providersVids: {},
|
414
|
+
};
|
415
|
+
},
|
416
|
+
provide: function provide() {
|
417
|
+
return {
|
418
|
+
$_requestObserver: this,
|
419
|
+
}
|
420
|
+
},
|
421
|
+
|
422
|
+
computed: {
|
423
|
+
context: function context() {
|
424
|
+
return {
|
425
|
+
vid: this.vid,
|
426
|
+
loading: booleanReduceByProp(this.providers, 'loading'),
|
427
|
+
failed: booleanReduceByProp(this.providers, 'failed'),
|
428
|
+
succeeded: booleanReduceByProp(this.providers, 'succeeded', '&&', true),
|
429
|
+
errors: keyBy(this.providers.filter(function (ref) {
|
430
|
+
var failed = ref.failed;
|
431
|
+
|
432
|
+
return failed;
|
433
|
+
}).map(function (ref) {
|
434
|
+
var error = ref.error;
|
435
|
+
var vid = ref.vid;
|
436
|
+
|
437
|
+
return ({ error: error, vid: vid });
|
438
|
+
}), 'vid'),
|
439
|
+
providerRequestState: this.providerRequestState,
|
440
|
+
loadingTextResolver: this.loadingTextResolver,
|
441
|
+
};
|
442
|
+
},
|
443
|
+
|
444
|
+
providerRequestState: function providerRequestState() {
|
445
|
+
var this$1 = this;
|
446
|
+
|
447
|
+
return function (vid) {
|
448
|
+
var element = this$1.providers.find(function (ref) {
|
449
|
+
var providerVid = ref.vid;
|
450
|
+
|
451
|
+
return providerVid === vid;
|
452
|
+
});
|
453
|
+
return element ? element.requestState : {
|
454
|
+
loading: false,
|
455
|
+
failed: false,
|
456
|
+
succeeded: false,
|
457
|
+
error: null,
|
458
|
+
data: null,
|
459
|
+
};
|
460
|
+
}
|
461
|
+
},
|
462
|
+
|
463
|
+
loadingTextResolver: function loadingTextResolver() {
|
464
|
+
var this$1 = this;
|
465
|
+
|
466
|
+
return function (label, loadingLabel) {
|
467
|
+
if ( loadingLabel === void 0 ) loadingLabel = 'Carregando...';
|
468
|
+
|
469
|
+
if (this$1.context.loading) {
|
470
|
+
return loadingLabel;
|
471
|
+
}
|
472
|
+
return label;
|
473
|
+
}
|
474
|
+
},
|
475
|
+
},
|
476
|
+
|
477
|
+
watch: {
|
478
|
+
'context.succeeded': {
|
479
|
+
handler: function handler(newValue) {
|
480
|
+
if (newValue) {
|
481
|
+
this.$emit('success', this.context);
|
482
|
+
}
|
483
|
+
},
|
484
|
+
},
|
485
|
+
'context.failed': {
|
486
|
+
handler: function handler(newValue) {
|
487
|
+
if (newValue) {
|
488
|
+
this.$emit('error', this.context);
|
489
|
+
}
|
490
|
+
},
|
491
|
+
},
|
492
|
+
},
|
493
|
+
|
494
|
+
render: function render() {
|
495
|
+
var slotProvider = this.$slots;
|
496
|
+
var slot = slotProvider.default(this.context);
|
497
|
+
return vue.h(this.tag, slot);
|
498
|
+
},
|
499
|
+
|
500
|
+
methods: {
|
501
|
+
subscribe: function subscribe(provider) {
|
502
|
+
if(!this.providersVids[provider.vid]) {
|
503
|
+
this.providersVids[provider.vid] = true;
|
504
|
+
this.providers.push(provider);
|
505
|
+
} else {
|
506
|
+
throw new Error(("Provider não reigistrado no observer! Já existe um provider com o vid >> " + (provider.vid) + " <<"));
|
507
|
+
}
|
508
|
+
},
|
509
|
+
unsubscribe: function unsubscribe(provider) {
|
510
|
+
delete this.providersVids[provider.vid];
|
511
|
+
this.providers.filter(function (ref) {
|
512
|
+
var vid = ref.vid;
|
513
|
+
|
514
|
+
return vid !== provider.vid;
|
515
|
+
});
|
516
|
+
},
|
517
|
+
},
|
518
|
+
};/* script */
|
519
|
+
var __vue_script__$1 = script$1;
|
520
|
+
|
521
|
+
/* template */
|
522
|
+
|
523
|
+
/* style */
|
524
|
+
var __vue_inject_styles__$1 = undefined;
|
525
|
+
/* scoped */
|
526
|
+
var __vue_scope_id__$1 = undefined;
|
527
|
+
/* module identifier */
|
528
|
+
var __vue_module_identifier__$1 = "data-v-074e0922";
|
529
|
+
/* functional template */
|
530
|
+
var __vue_is_functional_template__$1 = undefined;
|
531
|
+
/* style inject */
|
532
|
+
|
533
|
+
/* style inject SSR */
|
534
|
+
|
535
|
+
/* style inject shadow dom */
|
536
|
+
|
537
|
+
|
538
|
+
|
539
|
+
var __vue_component__$1 = /*#__PURE__*/normalizeComponent(
|
540
|
+
{},
|
541
|
+
__vue_inject_styles__$1,
|
542
|
+
__vue_script__$1,
|
543
|
+
__vue_scope_id__$1,
|
544
|
+
__vue_is_functional_template__$1,
|
545
|
+
__vue_module_identifier__$1,
|
546
|
+
false,
|
547
|
+
undefined,
|
548
|
+
undefined,
|
549
|
+
undefined
|
550
|
+
);var components=/*#__PURE__*/Object.freeze({__proto__:null,RequestProvider: __vue_component__,RequestObserver: __vue_component__$1});function removeAccents(str) {
|
348
551
|
if ( str === void 0 ) str = '';
|
349
552
|
|
350
553
|
var accents = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
|
@@ -366,16 +569,6 @@ var __vue_script__ = script;
|
|
366
569
|
newStr = newStr.split('/').join('');
|
367
570
|
|
368
571
|
return newStr;
|
369
|
-
}function generateKey(length) {
|
370
|
-
if ( length === void 0 ) length = 8;
|
371
|
-
|
372
|
-
var result = '';
|
373
|
-
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
374
|
-
var charactersLength = characters.length;
|
375
|
-
for (var i = 0; i < length; i += 1) {
|
376
|
-
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
377
|
-
}
|
378
|
-
return result;
|
379
572
|
}var utils = {
|
380
573
|
$showConvertKeysToCamelCase: convertKeysToCamelCase,
|
381
574
|
$showConvertKeysToSnakeCase: convertKeysToSnakeCase,
|
@@ -392,9 +585,7 @@ function install(app) {
|
|
392
585
|
var version = Number(app.version.split('.')[0]);
|
393
586
|
|
394
587
|
if (version <= 2) {
|
395
|
-
|
396
|
-
app.prototype[key] = utils[key];
|
397
|
-
});
|
588
|
+
throw new Error('Essa versão só é compatível com projetos que possuem o Vue 3. Para projetos com a Vue 2, utilize a versão 0.3.0 ou inferior');
|
398
589
|
}
|
399
590
|
|
400
591
|
if (version > 2) {
|
@@ -429,4 +620,4 @@ if (typeof window !== 'undefined') {
|
|
429
620
|
|
430
621
|
if (GlobalVue) {
|
431
622
|
GlobalVue.use(plugin);
|
432
|
-
}exports.RequestProvider=__vue_component__;exports.default=plugin;
|
623
|
+
}exports.RequestObserver=__vue_component__$1;exports.RequestProvider=__vue_component__;exports.default=plugin;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sysvale/show",
|
3
|
-
"version": "0.
|
3
|
+
"version": "1.0.0",
|
4
4
|
"description": "A set of components used at Sysvale",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
@@ -29,6 +29,7 @@
|
|
29
29
|
"lodash.camelcase": "^4.3.0",
|
30
30
|
"lodash.get": "^4.4.2",
|
31
31
|
"lodash.isobject": "^3.0.2",
|
32
|
+
"lodash.keyby": "^4.6.0",
|
32
33
|
"lodash.snakecase": "^4.1.1",
|
33
34
|
"sweetalert2": "^11.3.5",
|
34
35
|
"vue": "^2.6.12"
|