vue-zo
Version:
A Vuejs/Nuxt plugin that allows you to use roles and permissions in your components (setup macro & option API), also compatible as middleware, methods, composition-api and Pinia
48 lines • 3.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isConditionPassed = exports.parseCondition = void 0;
const strings_1 = require("./strings");
exports.parseCondition = (binding) => {
let suffix = binding.name === 'can' ? 'permission' : binding.name;
let arg = 'has';
if (binding.arg) {
if (binding.arg === 'unless') {
arg = 'unless';
}
else if (binding.arg !== 'has') {
arg += strings_1.startCase(binding.arg);
}
}
// Convert to plural if is needed
if (arg === 'hasAll') {
suffix += 's';
}
return `${arg}${strings_1.startCase(suffix)}`;
};
exports.isConditionPassed = (app, condition) => (el, binding) => {
var _a;
if (!binding.value) {
return;
}
// Get condition to validate
let isValid = false;
if (typeof condition === 'function') {
isValid = condition(binding);
}
else {
binding.name = condition;
// Fix missing name property
isValid = app.$zo[exports.parseCondition(binding)](binding.value);
}
if (!isValid) {
if (strings_1.isEmpty(binding.modifiers)) {
// Remove DOM Element
(_a = el.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(el);
}
else {
// Set attributes to DOM element
Object.assign(el, binding.modifiers);
}
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHVDQUErQztBQUVsQyxRQUFBLGNBQWMsR0FBRyxDQUFDLE9BQWdCLEVBQVUsRUFBRTtJQUN6RCxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQ2xFLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQztJQUVoQixJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDZixJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQzVCLEdBQUcsR0FBRyxRQUFRLENBQUM7U0FDaEI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFO1lBQ2hDLEdBQUcsSUFBSSxtQkFBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMvQjtLQUNGO0lBRUQsaUNBQWlDO0lBQ2pDLElBQUksR0FBRyxLQUFLLFFBQVEsRUFBRTtRQUNwQixNQUFNLElBQUksR0FBRyxDQUFDO0tBQ2Y7SUFFRCxPQUFPLEdBQUcsR0FBRyxHQUFHLG1CQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFVyxRQUFBLGlCQUFpQixHQUM1QixDQUFDLEdBQWlCLEVBQUUsU0FBNEIsRUFBRSxFQUFFLENBQ3BELENBQUMsRUFBZSxFQUFFLE9BQWdCLEVBQUUsRUFBRTs7SUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDbEIsT0FBTztLQUNSO0lBRUQsNEJBQTRCO0lBQzVCLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNwQixJQUFJLE9BQU8sU0FBUyxLQUFLLFVBQVUsRUFBRTtRQUNuQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzlCO1NBQU07UUFDTCxPQUFPLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztRQUN6Qiw0QkFBNEI7UUFDNUIsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsc0JBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMzRDtJQUVELElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDWixJQUFJLGlCQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzlCLHFCQUFxQjtZQUNyQixNQUFBLEVBQUUsQ0FBQyxVQUFVLDBDQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUU7U0FDaEM7YUFBTTtZQUNMLGdDQUFnQztZQUNoQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDdEM7S0FDRjtBQUNILENBQUMsQ0FBQyJ9