mirror of
https://github.com/frappe/books.git
synced 2025-02-08 23:18:31 +00:00
getRootLabel for AccountTree
This commit is contained in:
parent
64c1b4d4ba
commit
f310fd671e
@ -88,6 +88,10 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
treeSettings: {
|
treeSettings: {
|
||||||
parentField: 'parentAccount'
|
parentField: 'parentAccount',
|
||||||
|
async getRootLabel() {
|
||||||
|
let accountingSettings = await frappe.getSingle('AccountingSettings');
|
||||||
|
return accountingSettings.companyName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
626
www/dist/js/bundle.js
vendored
626
www/dist/js/bundle.js
vendored
@ -4575,7 +4575,7 @@ if (typeof undefined === 'function' && undefined.amd) {
|
|||||||
}
|
}
|
||||||
}).call(commonjsGlobal);
|
}).call(commonjsGlobal);
|
||||||
|
|
||||||
|
//# sourceMappingURL=showdown.js.map
|
||||||
});
|
});
|
||||||
|
|
||||||
var moment = createCommonjsModule(function (module, exports) {
|
var moment = createCommonjsModule(function (module, exports) {
|
||||||
@ -9321,7 +9321,14 @@ var format = {
|
|||||||
value = markdown.makeHtml(value || '');
|
value = markdown.makeHtml(value || '');
|
||||||
|
|
||||||
} else if (field.fieldtype === 'Date') {
|
} else if (field.fieldtype === 'Date') {
|
||||||
value = moment(value).format(frappejs.SystemSettings.dateFormat.toUpperCase());
|
let dateFormat;
|
||||||
|
if (!frappejs.SystemSettings) {
|
||||||
|
dateFormat = 'yyyy-mm-dd';
|
||||||
|
} else {
|
||||||
|
dateFormat = frappejs.SystemSettings.dateFormat;
|
||||||
|
}
|
||||||
|
|
||||||
|
value = moment(value).format(dateFormat.toUpperCase());
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (value===null || value===undefined) {
|
if (value===null || value===undefined) {
|
||||||
@ -23068,7 +23075,7 @@ Popper.placements = placements;
|
|||||||
Popper.Defaults = Defaults;
|
Popper.Defaults = Defaults;
|
||||||
|
|
||||||
|
|
||||||
|
//# sourceMappingURL=popper.js.map
|
||||||
|
|
||||||
|
|
||||||
var popper = Object.freeze({
|
var popper = Object.freeze({
|
||||||
@ -26967,7 +26974,7 @@ exports.Tooltip = Tooltip;
|
|||||||
Object.defineProperty(exports, '__esModule', { value: true });
|
Object.defineProperty(exports, '__esModule', { value: true });
|
||||||
|
|
||||||
})));
|
})));
|
||||||
|
//# sourceMappingURL=bootstrap.js.map
|
||||||
});
|
});
|
||||||
|
|
||||||
unwrapExports(bootstrap);
|
unwrapExports(bootstrap);
|
||||||
@ -27025,12 +27032,13 @@ var dropdown = Dropdown;
|
|||||||
|
|
||||||
var ui = {
|
var ui = {
|
||||||
create(tag, obj) {
|
create(tag, obj) {
|
||||||
if(!obj) {
|
if(tag.includes('<')) {
|
||||||
let div = document.createElement('div');
|
let div = document.createElement('div');
|
||||||
div.innerHTML = tag.trim();
|
div.innerHTML = tag.trim();
|
||||||
return div.firstChild;
|
return div.firstChild;
|
||||||
}
|
}
|
||||||
let element = document.createElement(tag);
|
let element = document.createElement(tag);
|
||||||
|
obj = obj || {};
|
||||||
|
|
||||||
let $ = (expr, con) => {
|
let $ = (expr, con) => {
|
||||||
return typeof expr === "string"
|
return typeof expr === "string"
|
||||||
@ -27757,6 +27765,50 @@ var list = class BaseList extends observable {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let templates = {};
|
||||||
|
|
||||||
|
class BaseComponent extends HTMLElement {
|
||||||
|
constructor(name) {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this._name = name;
|
||||||
|
this._shadowRoot = this.attachShadow({ mode: 'open' });
|
||||||
|
|
||||||
|
if (!templates[name]) {
|
||||||
|
makeTemplate(name, this.templateHTML);
|
||||||
|
}
|
||||||
|
|
||||||
|
let template = getTemplate(name);
|
||||||
|
this._shadowRoot.appendChild(template);
|
||||||
|
}
|
||||||
|
|
||||||
|
triggerEvent(eventName, detail = {}) {
|
||||||
|
const event = new CustomEvent(eventName, {
|
||||||
|
bubbles: true,
|
||||||
|
composed: true,
|
||||||
|
detail
|
||||||
|
});
|
||||||
|
this.dispatchEvent(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function makeTemplate(name, html) {
|
||||||
|
if (!templates[name]) {
|
||||||
|
let template = document.createElement('template');
|
||||||
|
template.id = name;
|
||||||
|
template.innerHTML = html;
|
||||||
|
|
||||||
|
templates[name] = template;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getTemplate(name) {
|
||||||
|
return templates[name].content.cloneNode(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
var baseComponent = BaseComponent;
|
||||||
|
|
||||||
var alert$1 = {"name":"alert","figma":{"id":"0:5","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["warning","triangle","exclamation","point"],"width":16,"height":16,"path":"<path fill-rule=\"evenodd\" d=\"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z\"/>"};
|
var alert$1 = {"name":"alert","figma":{"id":"0:5","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["warning","triangle","exclamation","point"],"width":16,"height":16,"path":"<path fill-rule=\"evenodd\" d=\"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z\"/>"};
|
||||||
var beaker = {"name":"beaker","figma":{"id":"0:26","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["experiment","labs","experimental","feature","test","science","education","study","development","testing"],"width":16,"height":16,"path":"<path fill-rule=\"evenodd\" d=\"M14.84 14.59L11.46 7V3h1V2h-9v1h1v4l-3.37 7.59A1 1 0 0 0 2 16h11.94c.72 0 1.2-.75.91-1.41h-.01zM4.21 10l1.25-3V3h5v4l1.25 3h-7.5zm4.25-2h1v1h-1V8zm-1-1h-1V6h1v1zm0-3h1v1h-1V4zm0-3h-1V0h1v1z\"/>"};
|
var beaker = {"name":"beaker","figma":{"id":"0:26","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["experiment","labs","experimental","feature","test","science","education","study","development","testing"],"width":16,"height":16,"path":"<path fill-rule=\"evenodd\" d=\"M14.84 14.59L11.46 7V3h1V2h-9v1h1v4l-3.37 7.59A1 1 0 0 0 2 16h11.94c.72 0 1.2-.75.91-1.41h-.01zM4.21 10l1.25-3V3h5v4l1.25 3h-7.5zm4.25-2h1v1h-1V8zm-1-1h-1V6h1v1zm0-3h1v1h-1V4zm0-3h-1V0h1v1z\"/>"};
|
||||||
var bell = {"name":"bell","figma":{"id":"0:34","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["notification"],"width":14,"height":16,"path":"<path fill-rule=\"evenodd\" d=\"M14 12v1H0v-1l.73-.58c.77-.77.81-2.55 1.19-4.42C2.69 3.23 6 2 6 2c0-.55.45-1 1-1s1 .45 1 1c0 0 3.39 1.23 4.16 5 .38 1.88.42 3.66 1.19 4.42l.66.58H14zm-7 4c1.11 0 2-.89 2-2H5c0 1.11.89 2 2 2z\"/>"};
|
var bell = {"name":"bell","figma":{"id":"0:34","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["notification"],"width":14,"height":16,"path":"<path fill-rule=\"evenodd\" d=\"M14 12v1H0v-1l.73-.58c.77-.77.81-2.55 1.19-4.42C2.69 3.23 6 2 6 2c0-.55.45-1 1-1s1 .45 1 1c0 0 3.39 1.23 4.16 5 .38 1.88.42 3.66 1.19 4.42l.66.58H14zm-7 4c1.11 0 2-.89 2-2H5c0 1.11.89 2 2 2z\"/>"};
|
||||||
@ -28140,7 +28192,6 @@ object-assign
|
|||||||
@license MIT
|
@license MIT
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* eslint-disable no-unused-vars */
|
|
||||||
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
|
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
|
||||||
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
||||||
var propIsEnumerable = Object.prototype.propertyIsEnumerable;
|
var propIsEnumerable = Object.prototype.propertyIsEnumerable;
|
||||||
@ -28287,152 +28338,57 @@ Object.keys(data$2).forEach(function(key) {
|
|||||||
// Import data into exports
|
// Import data into exports
|
||||||
var octicons = data$2;
|
var octicons = data$2;
|
||||||
|
|
||||||
var utils$3 = {
|
var treeNode = "<!-- styles -->\n<style>\n :host {\n display: block;\n }\n\n .tree-node {\n display: flex;\n align-items: center;\n }\n\n .tree-node:hover {\n background-color: gray;\n background-color: var(--tree-node-hover);\n cursor: pointer;\n }\n\n .tree-node:hover .tree-node-actions {\n display: block;\n }\n\n .tree-node-content {\n display: flex;\n align-items: center;\n }\n\n .tree-node-actions {\n display: none;\n margin-left: 2rem;\n }\n\n .tree-node-icon {\n width: 2rem;\n height: 2rem;\n }\n\n .tree-node-icon svg {\n padding: 0.5rem;\n }\n\n .tree-node-children {\n padding-left: 2rem;\n }\n</style>\n\n<!-- template -->\n<div class=\"tree-node\">\n <div class=\"tree-node-content\">\n <div class=\"tree-node-icon\"></div>\n <div class=\"tree-node-label\"></div>\n </div>\n <div class=\"tree-node-actions\">\n <slot name=\"actions\"></slot>\n </div>\n</div>\n<div class=\"tree-node-children\">\n <slot></slot>\n</div>";
|
||||||
convertFieldsToDatatableColumns(fields, layout = 'fixed') {
|
|
||||||
return fields.map(field => {
|
var treeNode$1 = Object.freeze({
|
||||||
if (!field.width) {
|
default: treeNode
|
||||||
if (layout==='ratio') {
|
|
||||||
field.width = 1;
|
|
||||||
} else if (layout==='fixed') {
|
|
||||||
field.width = 120;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
id: field.fieldname || frappejs.slug(field.label),
|
|
||||||
field: field,
|
|
||||||
content: field.label,
|
|
||||||
editable: true,
|
|
||||||
sortable: false,
|
|
||||||
resizable: true,
|
|
||||||
dropdown: false,
|
|
||||||
width: field.width,
|
|
||||||
align: ['Int', 'Float', 'Currency'].includes(field.fieldtype) ? 'right' : 'left',
|
|
||||||
format: (value) => frappejs.format(value, field)
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
},
|
var require$$0$1 = ( treeNode$1 && treeNode ) || treeNode$1;
|
||||||
|
|
||||||
addButton(label, parent, action, unhide = true) {
|
|
||||||
const link = frappejs.ui.add('button', 'btn btn-sm btn-outline-secondary', parent, label);
|
|
||||||
link.type = 'button';
|
|
||||||
link.addEventListener('click', action);
|
|
||||||
if (unhide) {
|
|
||||||
parent.classList.remove('hide');
|
|
||||||
}
|
|
||||||
return link;
|
|
||||||
},
|
|
||||||
|
|
||||||
// https://css-tricks.com/snippets/javascript/loop-queryselectorall-matches/
|
|
||||||
forEachNode(nodeList, callback, scope) {
|
|
||||||
if(!nodeList) return;
|
|
||||||
for (var i = 0; i < nodeList.length; i++) {
|
|
||||||
callback.call(scope, nodeList[i], i);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
activate($parent, $child, commonSelector, activeClass='active', index = -1) {
|
|
||||||
let $children = $parent.querySelectorAll(`${commonSelector}.${activeClass}`);
|
|
||||||
|
|
||||||
if (typeof $child === 'string') {
|
|
||||||
$child = $parent.querySelector($child);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.forEachNode($children, (node, i) => {
|
|
||||||
if(index >= 0 && i <= index) return;
|
|
||||||
node.classList.remove(activeClass);
|
|
||||||
});
|
|
||||||
|
|
||||||
$child.classList.add(activeClass);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const iconSet = {
|
const iconSet = {
|
||||||
open: octicons["triangle-down"].toSVG({ width: "12", height: "12", "class": "tree-icon-open" }),
|
open: octicons["triangle-down"].toSVG({ width: "12", height: "12", "class": "tree-icon-open" }),
|
||||||
close: octicons["triangle-right"].toSVG({ width: "12", height: "12", "class": "tree-icon-closed" })
|
close: octicons["triangle-right"].toSVG({ width: "12", height: "12", "class": "tree-icon-closed" })
|
||||||
};
|
};
|
||||||
|
|
||||||
let TreeTemplate = document.createElement('template');
|
class TreeNode extends baseComponent {
|
||||||
TreeTemplate.innerHTML = `
|
|
||||||
<style>
|
|
||||||
:host {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<div class="tree">
|
|
||||||
<slot></slot>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
class Tree extends HTMLElement {
|
|
||||||
constructor() {
|
|
||||||
super();
|
|
||||||
|
|
||||||
this.attachShadow({ mode: 'open' })
|
|
||||||
.appendChild(TreeTemplate.content.cloneNode(true));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
window.customElements.define('f-tree', Tree);
|
|
||||||
|
|
||||||
let TreeNodeTemplate = document.createElement('template');
|
|
||||||
TreeNodeTemplate.innerHTML = `
|
|
||||||
<style>
|
|
||||||
:host {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
:host:hover {
|
|
||||||
background-color: gray;
|
|
||||||
background-color: var(--tree-node-hover);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tree-node-content {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tree-node-icon {
|
|
||||||
width: 2rem;
|
|
||||||
height: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tree-node-icon svg {
|
|
||||||
padding: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tree-node-children {
|
|
||||||
padding-left: 2rem;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<div class="tree-node-content">
|
|
||||||
<div class="tree-node-icon"></div>
|
|
||||||
<div class="tree-node-label"></div>
|
|
||||||
<div class="tree-node-actions"></div>
|
|
||||||
</div>
|
|
||||||
<slot class="tree-node-children"></slot>
|
|
||||||
`;
|
|
||||||
|
|
||||||
|
|
||||||
class TreeNode extends HTMLElement {
|
|
||||||
static get observedAttributes() {
|
static get observedAttributes() {
|
||||||
return ['label', 'expanded']
|
return ['label', 'expanded'];
|
||||||
|
}
|
||||||
|
|
||||||
|
get templateHTML() {
|
||||||
|
return require$$0$1;
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super('TreeNode');
|
||||||
|
|
||||||
let shadowRoot = this.attachShadow({ mode: 'open' });
|
let shadowRoot = this._shadowRoot;
|
||||||
shadowRoot.appendChild(TreeNodeTemplate.content.cloneNode(true));
|
|
||||||
this.iconEl = shadowRoot.querySelector('.tree-node-icon');
|
this.iconEl = shadowRoot.querySelector('.tree-node-icon');
|
||||||
this.labelEl = shadowRoot.querySelector('.tree-node-label');
|
this.labelEl = shadowRoot.querySelector('.tree-node-label');
|
||||||
this.actionsEl = shadowRoot.querySelector('.tree-node-actions');
|
this.actionsEl = shadowRoot.querySelector('.tree-node-actions');
|
||||||
|
this.childrenEl = shadowRoot.querySelector('.tree-node-children');
|
||||||
|
|
||||||
|
this.addEventListener('click', e => {
|
||||||
|
e.stopImmediatePropagation();
|
||||||
|
|
||||||
|
if (e.target.matches('[slot="actions"]')) {
|
||||||
|
this.triggerEvent('tree-node-action', {
|
||||||
|
actionEl: e.target
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.expanded) {
|
||||||
|
this.removeAttribute('expanded');
|
||||||
|
} else {
|
||||||
|
this.setAttribute('expanded', '');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.onExpand();
|
||||||
}
|
}
|
||||||
|
|
||||||
attributeChangedCallback(name, oldValue, newValue) {
|
attributeChangedCallback(name, oldValue, newValue) {
|
||||||
console.log(name, oldValue, newValue);
|
|
||||||
|
|
||||||
switch(name) {
|
switch(name) {
|
||||||
case 'label': {
|
case 'label': {
|
||||||
this.labelEl.innerHTML = newValue || '';
|
this.labelEl.innerHTML = newValue || '';
|
||||||
@ -28440,26 +28396,67 @@ class TreeNode extends HTMLElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 'expanded': {
|
case 'expanded': {
|
||||||
this.expanded = this.hasAttribute('expanded');
|
const isExpanded = this.hasAttribute('expanded');
|
||||||
|
this.onExpand(isExpanded);
|
||||||
if (this.expanded) {
|
|
||||||
this.iconEl.innerHTML = iconSet.open;
|
|
||||||
} else {
|
|
||||||
this.iconEl.innerHTML = iconSet.close;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onExpand(isExpanded = false) {
|
||||||
|
if (this.isLeaf) return;
|
||||||
|
|
||||||
|
if (isExpanded) {
|
||||||
|
this.iconEl.innerHTML = iconSet.open;
|
||||||
|
this.childrenEl.style.display = '';
|
||||||
|
} else {
|
||||||
|
this.iconEl.innerHTML = iconSet.close;
|
||||||
|
this.childrenEl.style.display = 'none';
|
||||||
|
}
|
||||||
|
|
||||||
|
this.triggerEvent('tree-node-expand', {
|
||||||
|
expanded: isExpanded
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
get isRoot() {
|
||||||
|
return this.hasAttribute('is-root');
|
||||||
|
}
|
||||||
|
|
||||||
|
get expanded() {
|
||||||
|
return this.hasAttribute('expanded');
|
||||||
|
}
|
||||||
|
|
||||||
|
get isLeaf() {
|
||||||
|
return this.hasAttribute('is-leaf');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
window.customElements.define('f-tree-node', TreeNode);
|
window.customElements.define('f-tree-node', TreeNode);
|
||||||
|
|
||||||
// const keyboard = require('frappejs/client/ui/keyboard');
|
var index = "<!-- styles -->\n<style>\n :host {\n display: block;\n }\n</style>\n\n<!-- template -->\n<div class=\"tree\">\n <slot></slot>\n</div>\n";
|
||||||
|
|
||||||
var tree$2 = class BaseTree extends list {
|
var tree = Object.freeze({
|
||||||
|
default: index
|
||||||
|
});
|
||||||
|
|
||||||
|
var require$$0$2 = ( tree && index ) || tree;
|
||||||
|
|
||||||
|
class Tree extends baseComponent {
|
||||||
|
get templateHTML() {
|
||||||
|
return require$$0$2;
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super('Tree');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.customElements.define('f-tree', Tree);
|
||||||
|
|
||||||
|
var tree$3 = class BaseTree extends list {
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
this.meta = frappejs.getMeta(this.doctype);
|
this.meta = frappejs.getMeta(this.doctype);
|
||||||
@ -28494,8 +28491,9 @@ var tree$2 = class BaseTree extends list {
|
|||||||
this.body.innerHTML = '';
|
this.body.innerHTML = '';
|
||||||
this.dirty = false;
|
this.dirty = false;
|
||||||
|
|
||||||
let accountingSettings = await frappejs.db.getSingle('AccountingSettings');
|
const rootLabel = this.treeSettings.getRootLabel ?
|
||||||
let rootLabel = accountingSettings.companyName;
|
await this.treeSettings.getRootLabel() :
|
||||||
|
this.doctype;
|
||||||
|
|
||||||
this.renderTree(rootLabel);
|
this.renderTree(rootLabel);
|
||||||
this.trigger('state-change');
|
this.trigger('state-change');
|
||||||
@ -28512,74 +28510,62 @@ var tree$2 = class BaseTree extends list {
|
|||||||
}
|
}
|
||||||
|
|
||||||
renderTree(rootLabel) {
|
renderTree(rootLabel) {
|
||||||
// const tree = new Tree();
|
|
||||||
// tree.getChildNodes = async node => {
|
|
||||||
// const children = await this.getData(node) || [];
|
|
||||||
// return children.map(d => ({
|
|
||||||
// label: d.name,
|
|
||||||
// value: d.name,
|
|
||||||
// expandable: d.isGroup
|
|
||||||
// }));
|
|
||||||
// }
|
|
||||||
// tree.rootNode = {
|
|
||||||
// label: rootLabel,
|
|
||||||
// value: rootLabel,
|
|
||||||
// isRoot: 1,
|
|
||||||
// expandable: 1
|
|
||||||
// }
|
|
||||||
// this.body.appendChild(tree);
|
|
||||||
|
|
||||||
this.rootNode = {
|
this.rootNode = {
|
||||||
label: rootLabel,
|
label: rootLabel,
|
||||||
value: rootLabel,
|
value: rootLabel,
|
||||||
isRoot: true,
|
isRoot: true,
|
||||||
expanded: true,
|
isGroup: true,
|
||||||
children: []
|
children: null
|
||||||
};
|
};
|
||||||
|
|
||||||
this.treeWrapper = frappejs.ui.create(`
|
this.treeWrapper = frappejs.ui.create(`
|
||||||
<f-tree>
|
<f-tree>
|
||||||
<f-tree-node label="TennisMart" expanded>
|
${this.getTreeNodeHTML(this.rootNode)}
|
||||||
<f-tree-node label="Expense" expanded>
|
|
||||||
<f-tree-node label="Direct Expense" expanded>
|
|
||||||
</f-tree-node>
|
|
||||||
</f-tree-node>
|
|
||||||
</f-tree-node>
|
|
||||||
</f-tree>
|
</f-tree>
|
||||||
`);
|
`);
|
||||||
|
|
||||||
|
const rootNode = this.treeWrapper.querySelector('f-tree-node[is-root]');
|
||||||
|
rootNode.props = this.rootNode;
|
||||||
|
|
||||||
this.body.appendChild(this.treeWrapper);
|
this.body.appendChild(this.treeWrapper);
|
||||||
|
|
||||||
frappejs.ui.on(this.treeWrapper, 'click', 'f-tree-node', async (e, treeNode) => {
|
frappejs.ui.on(this.treeWrapper, 'tree-node-expand', 'f-tree-node', async (e, treeNode) => {
|
||||||
if (treeNode.expanded) {
|
if (!treeNode.expanded) return;
|
||||||
treeNode.removeAttribute('expanded');
|
|
||||||
} else {
|
if (!treeNode.props.children) {
|
||||||
treeNode.setAttribute('expanded', '');
|
const data = await this.getData(treeNode.props);
|
||||||
|
const children = data.map(d => ({
|
||||||
|
label: d.name,
|
||||||
|
value: d.name,
|
||||||
|
isGroup: d.isGroup,
|
||||||
|
doc: d
|
||||||
|
}));
|
||||||
|
treeNode.props.children = children;
|
||||||
|
|
||||||
|
for (let child of children) {
|
||||||
|
const childNode = frappejs.ui.create(this.getTreeNodeHTML(child));
|
||||||
|
childNode.props = child;
|
||||||
|
treeNode.appendChild(childNode);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// if (treeNode.hasAttribute('is-root')) {
|
|
||||||
// node = this.rootNode;
|
|
||||||
// } else {
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
frappejs.ui.on(this.treeWrapper, 'tree-node-action', 'f-tree-node', (e, treeNode) => {
|
||||||
|
if (treeNode.isRoot) return;
|
||||||
|
|
||||||
// this.tree = new Tree({
|
const button = e.detail.actionEl;
|
||||||
// label: rootLabel,
|
const action = button.getAttribute('data-action');
|
||||||
// parent: this.body,
|
|
||||||
// method: async node => {
|
if (action === 'edit') {
|
||||||
// const children = await this.getData(node) || [];
|
this.edit(treeNode.props.doc.name);
|
||||||
// return children.map(d => ({
|
}
|
||||||
// label: d.name,
|
});
|
||||||
// value: d.name,
|
|
||||||
// expandable: d.isGroup
|
rootNode.click(); // open the root node
|
||||||
// }));
|
}
|
||||||
// }
|
|
||||||
// });
|
edit(name) {
|
||||||
|
frappejs.desk.showFormModal(this.doctype, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
async getData(node) {
|
async getData(node) {
|
||||||
@ -28601,65 +28587,38 @@ var tree$2 = class BaseTree extends list {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getTreeNodeHTML(node) {
|
||||||
|
return (
|
||||||
|
`<f-tree-node
|
||||||
|
label="${node.label}"
|
||||||
|
value="${node.value}"
|
||||||
|
${node.expanded ? 'expanded' : ''}
|
||||||
|
${node.isRoot ? 'is-root' : ''}
|
||||||
|
${node.isGroup ? '' : 'is-leaf'}
|
||||||
|
>
|
||||||
|
${this.getActionButtonsHTML()}
|
||||||
|
</f-tree-node>`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
getActionButtonsHTML() {
|
||||||
|
return [
|
||||||
|
{ id: 'edit', label: frappejs._('Edit') }
|
||||||
|
// { id: 'addChild', label: frappe._('Add Child') },
|
||||||
|
// { id: 'delete', label: frappe._('Delete') },
|
||||||
|
].map(button => {
|
||||||
|
return `<button class="btn btn-link btn-sm m-0" slot="actions" data-action="${button.id}">
|
||||||
|
${button.label}
|
||||||
|
</button>`;
|
||||||
|
})
|
||||||
|
.join('');
|
||||||
|
}
|
||||||
|
|
||||||
getFields() {
|
getFields() {
|
||||||
let fields = [this.treeSettings.parentField, 'isGroup'];
|
let fields = [this.treeSettings.parentField, 'isGroup'];
|
||||||
this.updateStandardFields(fields);
|
this.updateStandardFields(fields);
|
||||||
return fields;
|
return fields;
|
||||||
}
|
}
|
||||||
|
|
||||||
makeToolbar() {
|
|
||||||
this.makeSearch();
|
|
||||||
|
|
||||||
this.btnNew = this.page.addButton(frappejs._('New'), 'btn-primary', async () => {
|
|
||||||
await frappejs.router.setRoute('new', this.doctype);
|
|
||||||
});
|
|
||||||
|
|
||||||
this.btnDelete = this.page.addButton(frappejs._('Delete'), 'btn-secondary hide', async () => {
|
|
||||||
await frappejs.db.deleteMany(this.doctype, this.getCheckedRowNames());
|
|
||||||
await this.refresh();
|
|
||||||
});
|
|
||||||
|
|
||||||
this.btnReport = this.page.addButton(frappejs._('Report'), 'btn-outline-secondary hide', async () => {
|
|
||||||
await frappejs.router.setRoute('table', this.doctype);
|
|
||||||
});
|
|
||||||
|
|
||||||
this.on('state-change', () => {
|
|
||||||
const checkedCount = this.getCheckedRowNames().length;
|
|
||||||
this.btnDelete.classList.toggle('hide', checkedCount ? false : true);
|
|
||||||
this.btnNew.classList.toggle('hide', checkedCount ? true : false);
|
|
||||||
this.btnReport.classList.toggle('hide', checkedCount ? true : false);
|
|
||||||
});
|
|
||||||
|
|
||||||
this.page.body.addEventListener('click', (event) => {
|
|
||||||
if (event.target.classList.contains('checkbox')) {
|
|
||||||
this.trigger('state-change');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
makeSearch() {
|
|
||||||
this.toolbar = frappejs.ui.add('div', 'list-toolbar', this.parent);
|
|
||||||
this.toolbar.innerHTML = `
|
|
||||||
<div class="input-group list-search">
|
|
||||||
<input class="form-control" type="text" placeholder="Search...">
|
|
||||||
<div class="input-group-append">
|
|
||||||
<button class="btn btn-outline-secondary btn-search">Search</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
this.searchInput = this.toolbar.querySelector('input');
|
|
||||||
this.searchInput.addEventListener('keypress', (event) => {
|
|
||||||
if (event.keyCode === 13) {
|
|
||||||
this.refresh();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this.btnSearch = this.toolbar.querySelector('.btn-search');
|
|
||||||
this.btnSearch.addEventListener('click', (event) => {
|
|
||||||
this.refresh();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class BaseControl {
|
class BaseControl {
|
||||||
@ -41341,11 +41300,6 @@ var htmlmixed = createCommonjsModule(function (module, exports) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// const frappe = require('frappejs');
|
|
||||||
|
|
||||||
// eslint-disable-line
|
|
||||||
// eslint-disable-line
|
|
||||||
|
|
||||||
class CodeControl extends base {
|
class CodeControl extends base {
|
||||||
makeInput() {
|
makeInput() {
|
||||||
if (!this.options) {
|
if (!this.options) {
|
||||||
@ -49241,9 +49195,6 @@ DataTable.__version__ = packageJson.version;
|
|||||||
module.exports = DataTable;
|
module.exports = DataTable;
|
||||||
});
|
});
|
||||||
|
|
||||||
// eslint-disable-line
|
|
||||||
|
|
||||||
|
|
||||||
var modal = class Modal extends observable {
|
var modal = class Modal extends observable {
|
||||||
constructor({ title, body, primary, secondary }) {
|
constructor({ title, body, primary, secondary }) {
|
||||||
super();
|
super();
|
||||||
@ -49320,6 +49271,66 @@ var modal = class Modal extends observable {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var utils$3 = {
|
||||||
|
convertFieldsToDatatableColumns(fields, layout = 'fixed') {
|
||||||
|
return fields.map(field => {
|
||||||
|
if (!field.width) {
|
||||||
|
if (layout==='ratio') {
|
||||||
|
field.width = 1;
|
||||||
|
} else if (layout==='fixed') {
|
||||||
|
field.width = 120;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
id: field.fieldname || frappejs.slug(field.label),
|
||||||
|
field: field,
|
||||||
|
content: field.label,
|
||||||
|
editable: true,
|
||||||
|
sortable: false,
|
||||||
|
resizable: true,
|
||||||
|
dropdown: false,
|
||||||
|
width: field.width,
|
||||||
|
align: ['Int', 'Float', 'Currency'].includes(field.fieldtype) ? 'right' : 'left',
|
||||||
|
format: (value) => frappejs.format(value, field)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
addButton(label, parent, action, unhide = true) {
|
||||||
|
const link = frappejs.ui.add('button', 'btn btn-sm btn-outline-secondary', parent, label);
|
||||||
|
link.type = 'button';
|
||||||
|
link.addEventListener('click', action);
|
||||||
|
if (unhide) {
|
||||||
|
parent.classList.remove('hide');
|
||||||
|
}
|
||||||
|
return link;
|
||||||
|
},
|
||||||
|
|
||||||
|
// https://css-tricks.com/snippets/javascript/loop-queryselectorall-matches/
|
||||||
|
forEachNode(nodeList, callback, scope) {
|
||||||
|
if(!nodeList) return;
|
||||||
|
for (var i = 0; i < nodeList.length; i++) {
|
||||||
|
callback.call(scope, nodeList[i], i);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
activate($parent, $child, commonSelector, activeClass='active', index = -1) {
|
||||||
|
let $children = $parent.querySelectorAll(`${commonSelector}.${activeClass}`);
|
||||||
|
|
||||||
|
if (typeof $child === 'string') {
|
||||||
|
$child = $parent.querySelector($child);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.forEachNode($children, (node, i) => {
|
||||||
|
if(index >= 0 && i <= index) return;
|
||||||
|
node.classList.remove(activeClass);
|
||||||
|
});
|
||||||
|
|
||||||
|
$child.classList.add(activeClass);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
var modelTable = class ModelTable {
|
var modelTable = class ModelTable {
|
||||||
constructor({doctype, parent, layout, parentControl, getRowData,
|
constructor({doctype, parent, layout, parentControl, getRowData,
|
||||||
isDisabled, getTableData}) {
|
isDisabled, getTableData}) {
|
||||||
@ -50010,7 +50021,7 @@ var view = {
|
|||||||
return (frappejs.views['List'] && frappejs.views['List'][doctype]) || list;
|
return (frappejs.views['List'] && frappejs.views['List'][doctype]) || list;
|
||||||
},
|
},
|
||||||
getTreeClass(doctype) {
|
getTreeClass(doctype) {
|
||||||
return (frappejs.views['Tree'] && frappejs.views['Tree'][doctype] || tree$2);
|
return (frappejs.views['Tree'] && frappejs.views['Tree'][doctype] || tree$3);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -57850,11 +57861,41 @@ module.exports = installCompat;
|
|||||||
/***/ })
|
/***/ })
|
||||||
/******/ ]);
|
/******/ ]);
|
||||||
});
|
});
|
||||||
|
//# sourceMappingURL=nunjucks.js.map
|
||||||
});
|
});
|
||||||
|
|
||||||
unwrapExports(nunjucks);
|
unwrapExports(nunjucks);
|
||||||
|
|
||||||
|
async function getHTML(doctype, name) {
|
||||||
|
const meta = frappejs.getMeta(doctype);
|
||||||
|
const printFormat = await frappejs.getDoc('PrintFormat', meta.print.printFormat);
|
||||||
|
let doc = await frappejs.getDoc(doctype, name);
|
||||||
|
let context = {doc: doc, frappe: frappejs};
|
||||||
|
|
||||||
|
console.log(context);
|
||||||
|
|
||||||
|
let html;
|
||||||
|
try {
|
||||||
|
html = nunjucks.renderString(printFormat.template, context);
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
html = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return `
|
||||||
|
<div class="print-page">
|
||||||
|
${html}
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
var print = {
|
||||||
|
getHTML
|
||||||
|
};
|
||||||
|
|
||||||
|
const { getHTML: getHTML$1 } = print;
|
||||||
|
|
||||||
|
|
||||||
nunjucks.configure({ autoescape: false });
|
nunjucks.configure({ autoescape: false });
|
||||||
|
|
||||||
var printpage = class PrintPage extends page {
|
var printpage = class PrintPage extends page {
|
||||||
@ -57868,6 +57909,10 @@ var printpage = class PrintPage extends page {
|
|||||||
this.addButton(frappejs._('Edit'), 'primary', () => {
|
this.addButton(frappejs._('Edit'), 'primary', () => {
|
||||||
frappejs.router.setRoute('edit', this.doctype, this.name);
|
frappejs.router.setRoute('edit', this.doctype, this.name);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.addButton(frappejs._('PDF'), 'secondary', async () => {
|
||||||
|
frappejs.getPDF(this.doctype, this.name);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async show(params) {
|
async show(params) {
|
||||||
@ -57882,14 +57927,11 @@ var printpage = class PrintPage extends page {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async renderTemplate() {
|
async renderTemplate() {
|
||||||
this.printFormat = await frappejs.getDoc('PrintFormat', this.meta.print.printFormat);
|
|
||||||
let doc = await frappejs.getDoc(this.doctype, this.name);
|
let doc = await frappejs.getDoc(this.doctype, this.name);
|
||||||
let context = {doc: doc, frappe: frappejs};
|
|
||||||
|
|
||||||
frappejs.desk.setActiveDoc(doc);
|
frappejs.desk.setActiveDoc(doc);
|
||||||
|
const html = await getHTML$1(this.doctype, this.name);
|
||||||
try {
|
try {
|
||||||
this.body.innerHTML = `<div class="print-page">${nunjucks.renderString(this.printFormat.template, context)}</div>`;
|
this.body.innerHTML = html;
|
||||||
// this.setTitle(doc.name);
|
// this.setTitle(doc.name);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.renderError('Template Error', e);
|
this.renderError('Template Error', e);
|
||||||
@ -58051,10 +58093,6 @@ var menu = class DeskMenu {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// const Search = require('./search');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const views = {};
|
const views = {};
|
||||||
views.Form = formpage;
|
views.Form = formpage;
|
||||||
views.List = listpage;
|
views.List = listpage;
|
||||||
@ -58232,6 +58270,37 @@ var desk = class Desk {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
async function getPDF(doctype, name) {
|
||||||
|
const headers = {
|
||||||
|
'Accept': 'application/pdf',
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
};
|
||||||
|
|
||||||
|
const res = await fetch('/api/method/pdf', {
|
||||||
|
method: 'POST',
|
||||||
|
headers,
|
||||||
|
body: JSON.stringify({ doctype, name })
|
||||||
|
});
|
||||||
|
|
||||||
|
const blob = await res.blob();
|
||||||
|
showFile(blob);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function showFile(blob, filename='file.pdf') {
|
||||||
|
const newBlob = new Blob([blob], { type: "application/pdf" });
|
||||||
|
const data = window.URL.createObjectURL(newBlob);
|
||||||
|
const link = document.createElement('a');
|
||||||
|
link.href = data;
|
||||||
|
link.download = filename;
|
||||||
|
link.click();
|
||||||
|
setTimeout(() => window.URL.revokeObjectURL(data), 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
var pdf = {
|
||||||
|
getPDF
|
||||||
|
};
|
||||||
|
|
||||||
var FilterItem = {
|
var FilterItem = {
|
||||||
name: "FilterItem",
|
name: "FilterItem",
|
||||||
doctype: "DocType",
|
doctype: "DocType",
|
||||||
@ -58755,6 +58824,7 @@ var models = {
|
|||||||
frappejs.ui = ui;
|
frappejs.ui = ui;
|
||||||
|
|
||||||
|
|
||||||
|
const { getPDF: getPDF$1 } = pdf;
|
||||||
|
|
||||||
var client = {
|
var client = {
|
||||||
async start({server, columns = 2, makeDesk = 1}) {
|
async start({server, columns = 2, makeDesk = 1}) {
|
||||||
@ -58798,13 +58868,11 @@ var client = {
|
|||||||
|
|
||||||
return await response.json();
|
return await response.json();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
frappejs.getPDF = getPDF$1;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// baseclass for report
|
|
||||||
// `url` url for report
|
|
||||||
// `getColumns` return columns
|
|
||||||
|
|
||||||
var reportpage = class ReportPage extends page {
|
var reportpage = class ReportPage extends page {
|
||||||
constructor({title, filterFields}) {
|
constructor({title, filterFields}) {
|
||||||
super({title: title, hasRoute: true});
|
super({title: title, hasRoute: true});
|
||||||
@ -59019,7 +59087,11 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
treeSettings: {
|
treeSettings: {
|
||||||
parentField: 'parentAccount'
|
parentField: 'parentAccount',
|
||||||
|
async getRootLabel() {
|
||||||
|
let accountingSettings = await frappe.getSingle('AccountingSettings');
|
||||||
|
return accountingSettings.companyName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
@ -59624,9 +59696,9 @@ var countryInfo$1 = Object.freeze({
|
|||||||
default: countryInfo
|
default: countryInfo
|
||||||
});
|
});
|
||||||
|
|
||||||
var require$$0$10 = ( countryInfo$1 && countryInfo ) || countryInfo$1;
|
var require$$0$13 = ( countryInfo$1 && countryInfo ) || countryInfo$1;
|
||||||
|
|
||||||
const countryList = Object.keys(require$$0$10).sort();
|
const countryList = Object.keys(require$$0$13).sort();
|
||||||
|
|
||||||
var AccountingSettings = {
|
var AccountingSettings = {
|
||||||
name: "AccountingSettings",
|
name: "AccountingSettings",
|
||||||
@ -60691,9 +60763,8 @@ var client$2 = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const countryList$1 = Object.keys(require$$0$10).sort();
|
const countryList$1 = Object.keys(require$$0$13).sort();
|
||||||
|
|
||||||
// start server
|
|
||||||
client.start({
|
client.start({
|
||||||
server: 'localhost:8000',
|
server: 'localhost:8000',
|
||||||
makeDesk: 0
|
makeDesk: 0
|
||||||
@ -60715,3 +60786,4 @@ var www = false;
|
|||||||
return www;
|
return www;
|
||||||
|
|
||||||
}());
|
}());
|
||||||
|
//# sourceMappingURL=bundle.js.map
|
||||||
|
92
yarn.lock
92
yarn.lock
@ -713,6 +713,13 @@ callsites@^0.2.0:
|
|||||||
version "0.2.0"
|
version "0.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
|
resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
|
||||||
|
|
||||||
|
camel-case@3.0.x:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
|
||||||
|
dependencies:
|
||||||
|
no-case "^2.2.0"
|
||||||
|
upper-case "^1.1.1"
|
||||||
|
|
||||||
camelcase-css@^1.0.1:
|
camelcase-css@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-1.0.1.tgz#157c4238265f5cf94a1dffde86446552cbf3f705"
|
resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-1.0.1.tgz#157c4238265f5cf94a1dffde86446552cbf3f705"
|
||||||
@ -860,6 +867,12 @@ class-utils@^0.3.5:
|
|||||||
isobject "^3.0.0"
|
isobject "^3.0.0"
|
||||||
static-extend "^0.1.1"
|
static-extend "^0.1.1"
|
||||||
|
|
||||||
|
clean-css@4.1.x:
|
||||||
|
version "4.1.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.11.tgz#2ecdf145aba38f54740f26cefd0ff3e03e125d6a"
|
||||||
|
dependencies:
|
||||||
|
source-map "0.5.x"
|
||||||
|
|
||||||
cli-boxes@^1.0.0:
|
cli-boxes@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
|
resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
|
||||||
@ -973,6 +986,10 @@ commander@2.11.0:
|
|||||||
version "2.11.0"
|
version "2.11.0"
|
||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
|
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
|
||||||
|
|
||||||
|
commander@2.15.x, commander@~2.15.0:
|
||||||
|
version "2.15.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
|
||||||
|
|
||||||
commander@^2.13.0:
|
commander@^2.13.0:
|
||||||
version "2.14.1"
|
version "2.14.1"
|
||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa"
|
resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa"
|
||||||
@ -1710,6 +1727,10 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
|
|||||||
version "4.2.0"
|
version "4.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
|
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
|
||||||
|
|
||||||
|
estree-walker@^0.2.1:
|
||||||
|
version "0.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e"
|
||||||
|
|
||||||
estree-walker@^0.3.0:
|
estree-walker@^0.3.0:
|
||||||
version "0.3.1"
|
version "0.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.1.tgz#e6b1a51cf7292524e7237c312e5fe6660c1ce1aa"
|
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.1.tgz#e6b1a51cf7292524e7237c312e5fe6660c1ce1aa"
|
||||||
@ -2038,6 +2059,7 @@ frappejs@../frappejs:
|
|||||||
frappe-datatable frappe/datatable
|
frappe-datatable frappe/datatable
|
||||||
frappejs "../frappejs"
|
frappejs "../frappejs"
|
||||||
jquery "^3.3.1"
|
jquery "^3.3.1"
|
||||||
|
mkdirp "^0.5.1"
|
||||||
mocha "^4.1.0"
|
mocha "^4.1.0"
|
||||||
moment "^2.20.1"
|
moment "^2.20.1"
|
||||||
mysql "^2.15.0"
|
mysql "^2.15.0"
|
||||||
@ -2051,6 +2073,7 @@ frappejs@../frappejs:
|
|||||||
puppeteer "^1.2.0"
|
puppeteer "^1.2.0"
|
||||||
rollup "^0.55.1"
|
rollup "^0.55.1"
|
||||||
rollup-plugin-commonjs "^8.3.0"
|
rollup-plugin-commonjs "^8.3.0"
|
||||||
|
rollup-plugin-html "^0.2.1"
|
||||||
rollup-plugin-json "^2.3.0"
|
rollup-plugin-json "^2.3.0"
|
||||||
rollup-plugin-node-resolve "^3.0.2"
|
rollup-plugin-node-resolve "^3.0.2"
|
||||||
rollup-plugin-postcss "^1.2.7"
|
rollup-plugin-postcss "^1.2.7"
|
||||||
@ -2440,7 +2463,7 @@ hawk@~6.0.2:
|
|||||||
hoek "4.x.x"
|
hoek "4.x.x"
|
||||||
sntp "2.x.x"
|
sntp "2.x.x"
|
||||||
|
|
||||||
he@1.1.1:
|
he@1.1.1, he@1.1.x:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
|
resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
|
||||||
|
|
||||||
@ -2468,6 +2491,18 @@ html-comment-regex@^1.1.0:
|
|||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e"
|
resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e"
|
||||||
|
|
||||||
|
html-minifier@^3.0.2:
|
||||||
|
version "3.5.14"
|
||||||
|
resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.14.tgz#88653b24b344274e3e3d7052f1541ebea054ac60"
|
||||||
|
dependencies:
|
||||||
|
camel-case "3.0.x"
|
||||||
|
clean-css "4.1.x"
|
||||||
|
commander "2.15.x"
|
||||||
|
he "1.1.x"
|
||||||
|
param-case "2.1.x"
|
||||||
|
relateurl "0.2.x"
|
||||||
|
uglify-js "3.3.x"
|
||||||
|
|
||||||
http-errors@1.6.2, http-errors@~1.6.2:
|
http-errors@1.6.2, http-errors@~1.6.2:
|
||||||
version "1.6.2"
|
version "1.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
|
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
|
||||||
@ -3101,6 +3136,10 @@ loud-rejection@^1.0.0:
|
|||||||
currently-unhandled "^0.4.1"
|
currently-unhandled "^0.4.1"
|
||||||
signal-exit "^3.0.0"
|
signal-exit "^3.0.0"
|
||||||
|
|
||||||
|
lower-case@^1.1.1:
|
||||||
|
version "1.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
|
||||||
|
|
||||||
lowercase-keys@^1.0.0:
|
lowercase-keys@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306"
|
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306"
|
||||||
@ -3366,6 +3405,12 @@ negotiator@0.6.1:
|
|||||||
version "0.6.1"
|
version "0.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
|
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
|
||||||
|
|
||||||
|
no-case@^2.2.0:
|
||||||
|
version "2.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
|
||||||
|
dependencies:
|
||||||
|
lower-case "^1.1.1"
|
||||||
|
|
||||||
node-fetch@^1.7.3:
|
node-fetch@^1.7.3:
|
||||||
version "1.7.3"
|
version "1.7.3"
|
||||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
|
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
|
||||||
@ -3681,6 +3726,12 @@ package-json@^4.0.0:
|
|||||||
registry-url "^3.0.3"
|
registry-url "^3.0.3"
|
||||||
semver "^5.1.0"
|
semver "^5.1.0"
|
||||||
|
|
||||||
|
param-case@2.1.x:
|
||||||
|
version "2.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
|
||||||
|
dependencies:
|
||||||
|
no-case "^2.2.0"
|
||||||
|
|
||||||
parse-author@^2.0.0:
|
parse-author@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/parse-author/-/parse-author-2.0.0.tgz#d3460bf1ddd0dfaeed42da754242e65fb684a81f"
|
resolved "https://registry.yarnpkg.com/parse-author/-/parse-author-2.0.0.tgz#d3460bf1ddd0dfaeed42da754242e65fb684a81f"
|
||||||
@ -4607,6 +4658,10 @@ regjsparser@^0.1.4:
|
|||||||
dependencies:
|
dependencies:
|
||||||
jsesc "~0.5.0"
|
jsesc "~0.5.0"
|
||||||
|
|
||||||
|
relateurl@0.2.x:
|
||||||
|
version "0.2.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
|
||||||
|
|
||||||
remove-trailing-separator@^1.0.1:
|
remove-trailing-separator@^1.0.1:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
|
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
|
||||||
@ -4795,6 +4850,13 @@ rollup-plugin-commonjs@^8.3.0:
|
|||||||
resolve "^1.4.0"
|
resolve "^1.4.0"
|
||||||
rollup-pluginutils "^2.0.1"
|
rollup-pluginutils "^2.0.1"
|
||||||
|
|
||||||
|
rollup-plugin-html@^0.2.1:
|
||||||
|
version "0.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/rollup-plugin-html/-/rollup-plugin-html-0.2.1.tgz#a1862eca87ae54b677689d0d4133911e8226463d"
|
||||||
|
dependencies:
|
||||||
|
html-minifier "^3.0.2"
|
||||||
|
rollup-pluginutils "^1.5.0"
|
||||||
|
|
||||||
rollup-plugin-json@^2.3.0:
|
rollup-plugin-json@^2.3.0:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-2.3.0.tgz#3c07a452c1b5391be28006fbfff3644056ce0add"
|
resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-2.3.0.tgz#3c07a452c1b5391be28006fbfff3644056ce0add"
|
||||||
@ -4850,6 +4912,13 @@ rollup-plugin-sass@^0.5.3:
|
|||||||
estree-walker "^0.3.0"
|
estree-walker "^0.3.0"
|
||||||
micromatch "^2.3.11"
|
micromatch "^2.3.11"
|
||||||
|
|
||||||
|
rollup-pluginutils@^1.5.0:
|
||||||
|
version "1.5.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408"
|
||||||
|
dependencies:
|
||||||
|
estree-walker "^0.2.1"
|
||||||
|
minimatch "^3.0.2"
|
||||||
|
|
||||||
rollup@^0.55.1:
|
rollup@^0.55.1:
|
||||||
version "0.55.1"
|
version "0.55.1"
|
||||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.55.1.tgz#baf4f23abe3014b29e56dea7d72d9946e56ac7dd"
|
resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.55.1.tgz#baf4f23abe3014b29e56dea7d72d9946e56ac7dd"
|
||||||
@ -5127,17 +5196,17 @@ source-map-url@^0.4.0:
|
|||||||
version "0.4.0"
|
version "0.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
|
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
|
||||||
|
|
||||||
|
source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6:
|
||||||
|
version "0.5.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
|
||||||
|
|
||||||
source-map@^0.4.2:
|
source-map@^0.4.2:
|
||||||
version "0.4.4"
|
version "0.4.4"
|
||||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
|
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
|
||||||
dependencies:
|
dependencies:
|
||||||
amdefine ">=0.0.4"
|
amdefine ">=0.0.4"
|
||||||
|
|
||||||
source-map@^0.5.3, source-map@^0.5.6:
|
source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
|
||||||
version "0.5.7"
|
|
||||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
|
|
||||||
|
|
||||||
source-map@^0.6.0, source-map@^0.6.1:
|
|
||||||
version "0.6.1"
|
version "0.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||||
|
|
||||||
@ -5565,6 +5634,13 @@ typedarray@^0.0.6:
|
|||||||
version "0.0.6"
|
version "0.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
||||||
|
|
||||||
|
uglify-js@3.3.x:
|
||||||
|
version "3.3.21"
|
||||||
|
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.21.tgz#851a34cbb31840ecb881968ed07dd3a61e7264a0"
|
||||||
|
dependencies:
|
||||||
|
commander "~2.15.0"
|
||||||
|
source-map "~0.6.1"
|
||||||
|
|
||||||
uid-number@^0.0.6:
|
uid-number@^0.0.6:
|
||||||
version "0.0.6"
|
version "0.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
|
resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
|
||||||
@ -5656,6 +5732,10 @@ update-notifier@^2.4.0:
|
|||||||
semver-diff "^2.0.0"
|
semver-diff "^2.0.0"
|
||||||
xdg-basedir "^3.0.0"
|
xdg-basedir "^3.0.0"
|
||||||
|
|
||||||
|
upper-case@^1.1.1:
|
||||||
|
version "1.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
|
||||||
|
|
||||||
uri-js@^3.0.2:
|
uri-js@^3.0.2:
|
||||||
version "3.0.2"
|
version "3.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-3.0.2.tgz#f90b858507f81dea4dcfbb3c4c3dbfa2b557faaa"
|
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-3.0.2.tgz#f90b858507f81dea4dcfbb3c4c3dbfa2b557faaa"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user