@things-factory/accounting 10.1.26 → 10.1.27

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.
@@ -1,5 +1,4 @@
1
1
  import '@operato/data-tree';
2
- import '@operato/context/ox-context-page-toolbar.js';
3
2
  import { PropertyValues } from 'lit';
4
3
  import { PageView } from '@operato/shell';
5
4
  import { AccountingCategory } from '../../types/accounting-category';
@@ -24,7 +23,6 @@ export declare class AccountingCategoryTreePage extends AccountingCategoryTreePa
24
23
  danger: boolean;
25
24
  };
26
25
  }[];
27
- toolbar: boolean;
28
26
  };
29
27
  render(): import("lit-html").TemplateResult<1>;
30
28
  updated(changes: PropertyValues<this>): void;
@@ -1,6 +1,5 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import '@operato/data-tree';
3
- import '@operato/context/ox-context-page-toolbar.js';
4
3
  import { css, html } from 'lit';
5
4
  import { customElement, query, state } from 'lit/decorators.js';
6
5
  import { ScopedElementsMixin } from '@open-wc/scoped-elements';
@@ -75,14 +74,12 @@ let AccountingCategoryTreePage = class AccountingCategoryTreePage extends locali
75
74
  emphasis: { danger: true
76
75
  }
77
76
  }
78
- ].filter(Boolean),
79
- toolbar: false
77
+ ].filter(Boolean)
80
78
  };
81
79
  }
82
80
  render() {
83
81
  return html `
84
82
  <div class="header">
85
- <ox-context-page-toolbar class="actions" .context=${this.context}></ox-context-page-toolbar>
86
83
  </div>
87
84
 
88
85
  <content>
@@ -1 +1 @@
1
- {"version":3,"file":"accounting-category-tree-page.js","sourceRoot":"","sources":["../../../client/pages/accounting-category/accounting-category-tree-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/data-tree'\nimport '@operato/context/ox-context-page-toolbar.js'\n\nimport { css, html, PropertyValues } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'\nimport { CustomAlert, PageView } from '@operato/shell'\n\nimport gql from 'graphql-tag'\n\nimport { AccountingCategory } from '../../types/accounting-category'\n\nimport { AccountingCategoryView } from '../../components/accounting-category-view'\n\nconst SubAccountingCategoryFragment = gql`\n fragment SubAccountingCategoryFragment on AccountingCategory { id\n code\n name\n description\n active\n updater { id\n name\n }\n updatedAt\n }\n`\n\n@customElement('accounting-category-tree-page')\nexport class AccountingCategoryTreePage extends localize(i18next)(ScopedElementsMixin(PageView)) { static styles = [\n CommonHeaderStyles,\n ScrollbarStyles,\n css`\n :host { display: flex;\n flex-direction: column;\n\n width: 100%;\n overflow: auto;\n }\n\n content { flex: 1;\n display: flex;\n flex-direction: row;\n }\n\n div[editor] { width: 300px;\n display: flex;\n flex-direction: column;\n }\n\n ox-tree-vertical { flex: 1;\n overflow: auto;\n }\n\n accounting-category-view { flex: 1;\n padding: var(--spacing-medium);\n background-color: var(--md-sys-color-surface-variant);\n overflow: auto;\n }\n\n .footer button[disabled] { color: var(--md-sys-color-surface-dim);\n background-color: transparent;\n }\n `\n ]\n\n @state() root?: AccountingCategory\n @state() selected?: AccountingCategory\n @state() accountingCategory?: AccountingCategory\n @state() modified: boolean = false\n @state() appendable: boolean = false\n\n @query('accounting-category-view') accountingCategoryView!: AccountingCategoryView\n\n get context() { return { title: i18next.t('title.accounting-category list'),\n help: 'accounting/accounting-category',\n actions: [\n { icon: 'delete',\n title: i18next.t('button.delete'),\n action: this.delete.bind(this),\n emphasis: { danger: true\n }\n }\n ].filter(Boolean),\n toolbar: false\n }\n }\n\n render() { return html`\n <div class=\"header\">\n <ox-context-page-toolbar class=\"actions\" .context=${this.context}></ox-context-page-toolbar>\n </div>\n\n <content>\n <ox-tree-vertical\n .data=${this.root}\n .selected=${this.selected}\n @select=${this.onSelect.bind(this)}\n id-property=\"code\"\n label-property=\"name\"\n description-property=\"description\"\n ></ox-tree-vertical>\n\n <div editor>\n <accounting-category-view\n .accountingCategory=${this.accountingCategory}\n @property-change=${(e: CustomEvent) => { const { code, name } = e.detail || {}\n\n this.modified = true\n this.appendable = code && code !== this.selected?.code && name !== this.selected?.name\n }}\n ></accounting-category-view>\n <div class=\"footer\">\n <button @click=${this.reset.bind(this)}><md-icon>restart_alt</md-icon>${i18next.t('button.reset')}</button>\n <div filler></div>\n <button @click=${this.create.bind(this)} ?disabled=${!this.appendable}>\n <md-icon>clear</md-icon>${i18next.t('button.add')}\n </button>\n <button @click=${this.save.bind(this)} ?disabled=${!this.modified} done>\n <md-icon>save</md-icon>${i18next.t('button.save')}\n </button>\n </div>\n </div>\n </content>\n `\n }\n\n updated(changes: PropertyValues<this>) { if (changes.has('selected')) { this.modified = false\n this.accountingCategory = { ...this.selected }\n }\n }\n\n onSelect(e: CustomEvent) { this.selected = e.detail as AccountingCategory\n this.updateContext()\n }\n\n reset() { this.accountingCategoryView.accountingCategory = {}\n }\n\n async create() { const { id: parentId } = this.accountingCategory || {}\n const { code, name, description, active } = this.accountingCategory || {}\n\n var accountingCategory = { code,\n name,\n description,\n active\n } as any\n\n if (parentId) { accountingCategory.parent = { id: parentId }\n }\n\n const response = await client.mutate({ mutation: gql`\n mutation ($accountingCategory: NewAccountingCategory!) { createAccountingCategory(accountingCategory: $accountingCategory) { ...SubAccountingCategoryFragment\n }\n }\n\n ${SubAccountingCategoryFragment}\n `,\n variables: { accountingCategory\n }\n })\n\n this.selected = response.data.createAccountingCategory\n this.updateContext()\n\n await this.fetch()\n }\n\n async save() { const { id, code, name, description, active } = this.accountingCategory || {}\n\n if (!id) { await CustomAlert({ type: 'warning',\n title: 'accounting-category not selected',\n text: 'Please select accounting-category first.',\n confirmButton: { text: i18next.t('button.confirm') }\n })\n\n return\n }\n\n var patch = { code,\n name,\n description,\n active\n } as any\n\n const response = await client.mutate({ mutation: gql`\n mutation ($id: String!, $patch: AccountingCategoryPatch!) { updateAccountingCategory(id: $id, patch: $patch) { ...SubAccountingCategoryFragment\n }\n }\n\n ${SubAccountingCategoryFragment}\n `,\n variables: { id,\n patch\n },\n context: { hasUpload: true\n }\n })\n\n this.selected = response.data.updateAccountingCategory\n\n this.fetch()\n }\n\n async delete() { if (!this.selected) { await CustomAlert({ type: 'warning',\n title: 'accounting category not selected',\n text: 'Please select accounting category first.',\n confirmButton: { text: i18next.t('button.confirm') }\n })\n\n return\n }\n\n const children = this.selected?.children\n if (children && children.length > 0) { await CustomAlert({ type: 'warning',\n title: 'AccountingCategorys with subordinates cannot be deleted.',\n text: 'AccountingCategory having children cannot be deleted.',\n confirmButton: { text: i18next.t('button.confirm') }\n })\n\n return\n }\n\n if (confirm(i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }))) { const { id } = this.selected || {}\n\n const response = await client.mutate({ mutation: gql`\n mutation ($id: String!) { deleteAccountingCategory(id: $id)\n }\n `,\n variables: { id\n }\n })\n\n this.selected = {}\n this.updateContext()\n\n await this.fetch()\n }\n }\n\n async pageInitialized(lifecycle: any) { this.fetch()\n }\n\n async pageUpdated(changes: any, lifecycle: any) { if (this.active) { // do something here when this page just became as active\n }\n }\n\n async fetch() { const response = await client.query({ query: gql`\n query { responses: accountingCategoryRoots { total\n items { ...SubAccountingCategoryFragment\n children { ...SubAccountingCategoryFragment\n children { ...SubAccountingCategoryFragment\n children { ...SubAccountingCategoryFragment\n children { ...SubAccountingCategoryFragment\n children { ...SubAccountingCategoryFragment\n children { ...SubAccountingCategoryFragment\n children { ...SubAccountingCategoryFragment\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n ${SubAccountingCategoryFragment}\n `\n })\n const { items: records, total } = response.data.responses\n\n this.root = records[0]\n }\n}\n"]}
1
+ {"version":3,"file":"accounting-category-tree-page.js","sourceRoot":"","sources":["../../../client/pages/accounting-category/accounting-category-tree-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/data-tree'\n\nimport { css, html, PropertyValues } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'\nimport { CustomAlert, PageView } from '@operato/shell'\n\nimport gql from 'graphql-tag'\n\nimport { AccountingCategory } from '../../types/accounting-category'\n\nimport { AccountingCategoryView } from '../../components/accounting-category-view'\n\nconst SubAccountingCategoryFragment = gql`\n fragment SubAccountingCategoryFragment on AccountingCategory { id\n code\n name\n description\n active\n updater { id\n name\n }\n updatedAt\n }\n`\n\n@customElement('accounting-category-tree-page')\nexport class AccountingCategoryTreePage extends localize(i18next)(ScopedElementsMixin(PageView)) { static styles = [\n CommonHeaderStyles,\n ScrollbarStyles,\n css`\n :host { display: flex;\n flex-direction: column;\n\n width: 100%;\n overflow: auto;\n }\n\n content { flex: 1;\n display: flex;\n flex-direction: row;\n }\n\n div[editor] { width: 300px;\n display: flex;\n flex-direction: column;\n }\n\n ox-tree-vertical { flex: 1;\n overflow: auto;\n }\n\n accounting-category-view { flex: 1;\n padding: var(--spacing-medium);\n background-color: var(--md-sys-color-surface-variant);\n overflow: auto;\n }\n\n .footer button[disabled] { color: var(--md-sys-color-surface-dim);\n background-color: transparent;\n }\n `\n ]\n\n @state() root?: AccountingCategory\n @state() selected?: AccountingCategory\n @state() accountingCategory?: AccountingCategory\n @state() modified: boolean = false\n @state() appendable: boolean = false\n\n @query('accounting-category-view') accountingCategoryView!: AccountingCategoryView\n\n get context() { return { title: i18next.t('title.accounting-category list'),\n help: 'accounting/accounting-category',\n actions: [\n { icon: 'delete',\n title: i18next.t('button.delete'),\n action: this.delete.bind(this),\n emphasis: { danger: true\n }\n }\n ].filter(Boolean)\n }\n }\n\n render() { return html`\n <div class=\"header\">\n </div>\n\n <content>\n <ox-tree-vertical\n .data=${this.root}\n .selected=${this.selected}\n @select=${this.onSelect.bind(this)}\n id-property=\"code\"\n label-property=\"name\"\n description-property=\"description\"\n ></ox-tree-vertical>\n\n <div editor>\n <accounting-category-view\n .accountingCategory=${this.accountingCategory}\n @property-change=${(e: CustomEvent) => { const { code, name } = e.detail || {}\n\n this.modified = true\n this.appendable = code && code !== this.selected?.code && name !== this.selected?.name\n }}\n ></accounting-category-view>\n <div class=\"footer\">\n <button @click=${this.reset.bind(this)}><md-icon>restart_alt</md-icon>${i18next.t('button.reset')}</button>\n <div filler></div>\n <button @click=${this.create.bind(this)} ?disabled=${!this.appendable}>\n <md-icon>clear</md-icon>${i18next.t('button.add')}\n </button>\n <button @click=${this.save.bind(this)} ?disabled=${!this.modified} done>\n <md-icon>save</md-icon>${i18next.t('button.save')}\n </button>\n </div>\n </div>\n </content>\n `\n }\n\n updated(changes: PropertyValues<this>) { if (changes.has('selected')) { this.modified = false\n this.accountingCategory = { ...this.selected }\n }\n }\n\n onSelect(e: CustomEvent) { this.selected = e.detail as AccountingCategory\n this.updateContext()\n }\n\n reset() { this.accountingCategoryView.accountingCategory = {}\n }\n\n async create() { const { id: parentId } = this.accountingCategory || {}\n const { code, name, description, active } = this.accountingCategory || {}\n\n var accountingCategory = { code,\n name,\n description,\n active\n } as any\n\n if (parentId) { accountingCategory.parent = { id: parentId }\n }\n\n const response = await client.mutate({ mutation: gql`\n mutation ($accountingCategory: NewAccountingCategory!) { createAccountingCategory(accountingCategory: $accountingCategory) { ...SubAccountingCategoryFragment\n }\n }\n\n ${SubAccountingCategoryFragment}\n `,\n variables: { accountingCategory\n }\n })\n\n this.selected = response.data.createAccountingCategory\n this.updateContext()\n\n await this.fetch()\n }\n\n async save() { const { id, code, name, description, active } = this.accountingCategory || {}\n\n if (!id) { await CustomAlert({ type: 'warning',\n title: 'accounting-category not selected',\n text: 'Please select accounting-category first.',\n confirmButton: { text: i18next.t('button.confirm') }\n })\n\n return\n }\n\n var patch = { code,\n name,\n description,\n active\n } as any\n\n const response = await client.mutate({ mutation: gql`\n mutation ($id: String!, $patch: AccountingCategoryPatch!) { updateAccountingCategory(id: $id, patch: $patch) { ...SubAccountingCategoryFragment\n }\n }\n\n ${SubAccountingCategoryFragment}\n `,\n variables: { id,\n patch\n },\n context: { hasUpload: true\n }\n })\n\n this.selected = response.data.updateAccountingCategory\n\n this.fetch()\n }\n\n async delete() { if (!this.selected) { await CustomAlert({ type: 'warning',\n title: 'accounting category not selected',\n text: 'Please select accounting category first.',\n confirmButton: { text: i18next.t('button.confirm') }\n })\n\n return\n }\n\n const children = this.selected?.children\n if (children && children.length > 0) { await CustomAlert({ type: 'warning',\n title: 'AccountingCategorys with subordinates cannot be deleted.',\n text: 'AccountingCategory having children cannot be deleted.',\n confirmButton: { text: i18next.t('button.confirm') }\n })\n\n return\n }\n\n if (confirm(i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }))) { const { id } = this.selected || {}\n\n const response = await client.mutate({ mutation: gql`\n mutation ($id: String!) { deleteAccountingCategory(id: $id)\n }\n `,\n variables: { id\n }\n })\n\n this.selected = {}\n this.updateContext()\n\n await this.fetch()\n }\n }\n\n async pageInitialized(lifecycle: any) { this.fetch()\n }\n\n async pageUpdated(changes: any, lifecycle: any) { if (this.active) { // do something here when this page just became as active\n }\n }\n\n async fetch() { const response = await client.query({ query: gql`\n query { responses: accountingCategoryRoots { total\n items { ...SubAccountingCategoryFragment\n children { ...SubAccountingCategoryFragment\n children { ...SubAccountingCategoryFragment\n children { ...SubAccountingCategoryFragment\n children { ...SubAccountingCategoryFragment\n children { ...SubAccountingCategoryFragment\n children { ...SubAccountingCategoryFragment\n children { ...SubAccountingCategoryFragment\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n ${SubAccountingCategoryFragment}\n `\n })\n const { items: records, total } = response.data.responses\n\n this.root = records[0]\n }\n}\n"]}