This commit is contained in:
Thomas Peterson 2024-12-23 09:40:23 +01:00
parent 597fc9be4d
commit 64bf731a6c
50 changed files with 6617 additions and 1135 deletions

View File

@ -27,8 +27,8 @@
"flowbite-react": "npm:flowbite-react@^0.10.2",
"postcss": "npm:postcss@^8.4.49",
"prop-types": "npm:prop-types@^15.8.1",
"react": "npm:react@^18.3.1",
"react-dom": "npm:react-dom@^18.3.1",
"react": "https://esm.sh/react@18.2.0",
"react-dom": "https://esm.sh/react-dom@18.2.0",
"react-router-dom": "npm:react-router-dom@^7.0.2",
"react-select-async-paginate": "npm:react-select-async-paginate@^0.7.7",
"reflect-metadata": "npm:reflect-metadata@^0.2.2",

View File

@ -7,7 +7,7 @@
"jsr:@std/path@1": "1.0.8",
"jsr:@udibo/esbuild-plugin-postcss@~0.1.3": "0.1.3",
"npm:@deno/vite-plugin@1": "1.0.2_vite@6.0.5",
"npm:@ebay/nice-modal-react@^1.2.13": "1.2.13_react@18.3.1_react-dom@18.3.1__react@18.3.1",
"npm:@ebay/nice-modal-react@^1.2.13": "1.2.13_react@18.3.1_react-dom@19.0.0__react@19.0.0",
"npm:@rjsf/core@^5.23.2": "5.23.2_@rjsf+utils@5.23.2__react@18.3.1_react@18.3.1",
"npm:@rjsf/validator-ajv6@^5.23.2": "5.23.2_@rjsf+utils@5.23.2__react@18.3.1_react@18.3.1",
"npm:@types/react-dom@^18.3.1": "18.3.5_@types+react@18.3.18",
@ -15,20 +15,19 @@
"npm:@vitejs/plugin-react-swc@^3.7.1": "3.7.2_vite@6.0.5",
"npm:autoprefixer@^10.4.20": "10.4.20_postcss@8.4.49",
"npm:axios@^1.7.9": "1.7.9",
"npm:flowbite-react@~0.10.2": "0.10.2_react@18.3.1_react-dom@18.3.1__react@18.3.1_tailwindcss@3.4.17__postcss@8.4.49",
"npm:flowbite-react@~0.10.2": "0.10.2_react@18.3.1_react-dom@19.0.0__react@19.0.0_tailwindcss@3.4.17__postcss@8.4.49",
"npm:postcss-modules@6": "6.0.1_postcss@8.4.49",
"npm:postcss@8": "8.4.49",
"npm:postcss@^8.4.49": "8.4.49",
"npm:preact@10.22.1": "10.22.1",
"npm:preact@^10.22.1": "10.25.3",
"npm:prop-types@^15.8.1": "15.8.1",
"npm:react-dom@^18.3.1": "18.3.1_react@18.3.1",
"npm:react-router-dom@^7.0.2": "7.0.2_react@18.3.1_react-dom@18.3.1__react@18.3.1",
"npm:react-select-async-paginate@~0.7.7": "0.7.7_react@18.3.1_react-select@5.9.0__react@18.3.1__react-dom@18.3.1___react@18.3.1__@types+react@18.3.18_react-dom@18.3.1__react@18.3.1_@types+react@18.3.18",
"npm:react-router-dom@^7.0.2": "7.1.0_react@18.3.1_react-dom@19.0.0__react@19.0.0",
"npm:react-select-async-paginate@~0.7.7": "0.7.7_react@18.3.1_react-select@5.9.0__react@18.3.1__react-dom@19.0.0___react@19.0.0__@types+react@18.3.18_@types+react@18.3.18",
"npm:react@^18.3.1": "18.3.1",
"npm:reflect-metadata@~0.2.2": "0.2.2",
"npm:rxjs@^7.8.1": "7.8.1",
"npm:styled-components@^6.1.13": "6.1.13_react@18.3.1_react-dom@18.3.1__react@18.3.1",
"npm:styled-components@^6.1.13": "6.1.13_react@18.3.1_react-dom@19.0.0__react@19.0.0",
"npm:tailwindcss@^3.4.17": "3.4.17_postcss@8.4.49",
"npm:tsyringe-neo@^5.1.0": "5.1.0",
"npm:use-debounce@^10.0.4": "10.0.4_react@18.3.1",
@ -151,10 +150,10 @@
"vite"
]
},
"@ebay/nice-modal-react@1.2.13_react@18.3.1_react-dom@18.3.1__react@18.3.1": {
"@ebay/nice-modal-react@1.2.13_react@18.3.1_react-dom@19.0.0__react@19.0.0": {
"integrity": "sha512-jx8xIWe/Up4tpNuM02M+rbnLoxdngTGk3Y8LjJsLGXXcSoKd/+eZStZcAlIO/jwxyz/bhPZnpqPJZWAmhOofuA==",
"dependencies": [
"react",
"react@18.3.1",
"react-dom"
]
},
@ -210,7 +209,7 @@
"@emotion/utils",
"@emotion/weak-memoize",
"hoist-non-react-statics",
"react"
"react@18.3.1"
]
},
"@emotion/serialize@1.3.3": {
@ -235,7 +234,7 @@
"@emotion/use-insertion-effect-with-fallbacks@1.2.0_react@18.3.1": {
"integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==",
"dependencies": [
"react"
"react@18.3.1"
]
},
"@emotion/utils@1.4.2": {
@ -329,20 +328,20 @@
"@floating-ui/utils"
]
},
"@floating-ui/react-dom@2.1.2_react@18.3.1_react-dom@18.3.1__react@18.3.1": {
"@floating-ui/react-dom@2.1.2_react@18.3.1_react-dom@19.0.0__react@19.0.0": {
"integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==",
"dependencies": [
"@floating-ui/dom",
"react",
"react@18.3.1",
"react-dom"
]
},
"@floating-ui/react@0.26.21_react@18.3.1_react-dom@18.3.1__react@18.3.1": {
"@floating-ui/react@0.26.21_react@18.3.1_react-dom@19.0.0__react@19.0.0": {
"integrity": "sha512-7P5ncDIiYd6RrwpCDbKyFzvabM014QlzlumtDbK3Bck0UueC+Rp8BLS34qcGBcN1pZCTodl4QNnCVmKv4tSxfQ==",
"dependencies": [
"@floating-ui/react-dom",
"@floating-ui/utils",
"react",
"react@18.3.1",
"react-dom",
"tabbable"
]
@ -417,7 +416,7 @@
"markdown-to-jsx",
"nanoid",
"prop-types",
"react"
"react@18.3.1"
]
},
"@rjsf/utils@5.23.2_react@18.3.1": {
@ -427,7 +426,7 @@
"jsonpointer",
"lodash",
"lodash-es",
"react",
"react@18.3.1",
"react-is@18.3.1"
]
},
@ -621,7 +620,7 @@
"@vtaits/use-lazy-ref@0.1.3_react@18.3.1": {
"integrity": "sha512-ZTLuFBHSivPcgWrwkXe5ExVt6R3/ybD+N0yFPy4ClzCztk/9bUD/1udKQ/jd7eCal+lapSrRWXbffqI9jkpDlg==",
"dependencies": [
"react"
"react@18.3.1"
]
},
"ajv@6.12.6": {
@ -945,7 +944,7 @@
"flowbite"
]
},
"flowbite-react@0.10.2_react@18.3.1_react-dom@18.3.1__react@18.3.1_tailwindcss@3.4.17__postcss@8.4.49": {
"flowbite-react@0.10.2_react@18.3.1_react-dom@19.0.0__react@19.0.0_tailwindcss@3.4.17__postcss@8.4.49": {
"integrity": "sha512-qkayK6IFmfH7zuuDnHmS0hJxLtL0KpW4vo4i/VQfZ6ZfaNlUsNLQxCGcmXwbZZtUm2WVw8x71aaDOAxftG9tmg==",
"dependencies": [
"@floating-ui/core",
@ -953,7 +952,7 @@
"classnames",
"debounce",
"flowbite",
"react",
"react@18.3.1",
"react-dom",
"react-icons",
"tailwind-merge",
@ -1160,7 +1159,7 @@
"markdown-to-jsx@7.7.2_react@18.3.1": {
"integrity": "sha512-N3AKfYRvxNscvcIH6HDnDKILp4S8UWbebp+s92Y8SwIq0CuSbLW4Jgmrbjku3CWKjTQO0OyIMS6AhzqrwjEa3g==",
"dependencies": [
"react"
"react@18.3.1"
]
},
"memoize-one@6.0.0": {
@ -1405,18 +1404,17 @@
"queue-microtask@1.2.3": {
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
},
"react-dom@18.3.1_react@18.3.1": {
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
"react-dom@19.0.0_react@19.0.0": {
"integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==",
"dependencies": [
"loose-envify",
"react",
"react@19.0.0",
"scheduler"
]
},
"react-icons@5.2.1_react@18.3.1": {
"integrity": "sha512-zdbW5GstTzXaVKvGSyTaBalt7HSfuK5ovrzlpyiWHAFXndXTdd/1hdDHI4xBM1Mn7YriT6aqESucFl9kEXzrdw==",
"dependencies": [
"react"
"react@18.3.1"
]
},
"react-is@16.13.1": {
@ -1425,39 +1423,39 @@
"react-is@18.3.1": {
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
},
"react-router-dom@7.0.2_react@18.3.1_react-dom@18.3.1__react@18.3.1": {
"integrity": "sha512-VJOQ+CDWFDGaWdrG12Nl+d7yHtLaurNgAQZVgaIy7/Xd+DojgmYLosFfZdGz1wpxmjJIAkAMVTKWcvkx1oggAw==",
"react-router-dom@7.1.0_react@18.3.1_react-dom@19.0.0__react@19.0.0": {
"integrity": "sha512-F4/nYBC9e4s0/ZjxM8GkZ9a68DpX76LN1a9W9mfPl2GfbDJ9/vzJro6MThNR5qGBH6KkgcK1BziyEzXhHV46Xw==",
"dependencies": [
"react",
"react@18.3.1",
"react-dom",
"react-router"
]
},
"react-router@7.0.2_react@18.3.1_react-dom@18.3.1__react@18.3.1": {
"integrity": "sha512-m5AcPfTRUcjwmhBzOJGEl6Y7+Crqyju0+TgTQxoS4SO+BkWbhOrcfZNq6wSWdl2BBbJbsAoBUb8ZacOFT+/JlA==",
"react-router@7.1.0_react@18.3.1_react-dom@19.0.0__react@19.0.0": {
"integrity": "sha512-VcFhWqkNIcojDRYaUO8qV0Jib52s9ULpCp3nkBbmrvtoCVFRp6tmk3tJ2w9BZauVctA1YRnJlFYDn9iJRuCpGA==",
"dependencies": [
"@types/cookie",
"cookie",
"react",
"react@18.3.1",
"react-dom",
"set-cookie-parser",
"turbo-stream"
]
},
"react-select-async-paginate@0.7.7_react@18.3.1_react-select@5.9.0__react@18.3.1__react-dom@18.3.1___react@18.3.1__@types+react@18.3.18_react-dom@18.3.1__react@18.3.1_@types+react@18.3.18": {
"react-select-async-paginate@0.7.7_react@18.3.1_react-select@5.9.0__react@18.3.1__react-dom@19.0.0___react@19.0.0__@types+react@18.3.18_@types+react@18.3.18": {
"integrity": "sha512-4u8ULcwVOY9CFMuEMwb8LnTqcVaalZHWJEYuaTlhkORh20/jGMcMKwzAfOsBD/eViUYYCOYBARbFoZ1hwcVt/g==",
"dependencies": [
"@seznam/compose-react-refs",
"@vtaits/use-lazy-ref",
"krustykrab",
"react",
"react@18.3.1",
"react-select",
"sleep-promise",
"use-is-mounted-ref",
"use-latest"
]
},
"react-select@5.9.0_react@18.3.1_react-dom@18.3.1__react@18.3.1_@types+react@18.3.18": {
"react-select@5.9.0_react@18.3.1_react-dom@19.0.0__react@19.0.0_@types+react@18.3.18": {
"integrity": "sha512-nwRKGanVHGjdccsnzhFte/PULziueZxGD8LL2WojON78Mvnq7LdAMEtu2frrwld1fr3geixg3iiMBIc/LLAZpw==",
"dependencies": [
"@babel/runtime",
@ -1467,20 +1465,20 @@
"@types/react-transition-group",
"memoize-one",
"prop-types",
"react",
"react@18.3.1",
"react-dom",
"react-transition-group",
"use-isomorphic-layout-effect"
]
},
"react-transition-group@4.4.5_react@18.3.1_react-dom@18.3.1__react@18.3.1": {
"react-transition-group@4.4.5_react@18.3.1_react-dom@19.0.0__react@19.0.0": {
"integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
"dependencies": [
"@babel/runtime",
"dom-helpers",
"loose-envify",
"prop-types",
"react",
"react@18.3.1",
"react-dom"
]
},
@ -1490,6 +1488,9 @@
"loose-envify"
]
},
"react@19.0.0": {
"integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ=="
},
"read-cache@1.0.0": {
"integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
"dependencies": [
@ -1560,11 +1561,8 @@
"tslib@2.8.1"
]
},
"scheduler@0.23.2": {
"integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
"dependencies": [
"loose-envify"
]
"scheduler@0.25.0": {
"integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA=="
},
"set-cookie-parser@2.7.1": {
"integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ=="
@ -1624,7 +1622,7 @@
"ansi-regex@6.1.0"
]
},
"styled-components@6.1.13_react@18.3.1_react-dom@18.3.1__react@18.3.1": {
"styled-components@6.1.13_react@18.3.1_react-dom@19.0.0__react@19.0.0": {
"integrity": "sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==",
"dependencies": [
"@emotion/is-prop-valid",
@ -1633,7 +1631,7 @@
"css-to-react-native",
"csstype",
"postcss@8.4.38",
"react",
"react@18.3.1",
"react-dom",
"shallowequal",
"stylis@4.3.2",
@ -1747,25 +1745,25 @@
"use-debounce@10.0.4_react@18.3.1": {
"integrity": "sha512-6Cf7Yr7Wk7Kdv77nnJMf6de4HuDE4dTxKij+RqE9rufDsI6zsbjyAxcH5y2ueJCQAnfgKbzXbZHYlkFwmBlWkw==",
"dependencies": [
"react"
"react@18.3.1"
]
},
"use-is-mounted-ref@1.5.0_react@18.3.1": {
"integrity": "sha512-p5FksHf/ospZUr5KU9ese6u3jp9fzvZ3wuSb50i0y6fdONaHWgmOqQtxR/PUcwi6hnhQDbNxWSg3eTK3N6m+dg==",
"dependencies": [
"react"
"react@18.3.1"
]
},
"use-isomorphic-layout-effect@1.2.0_react@18.3.1": {
"integrity": "sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==",
"dependencies": [
"react"
"react@18.3.1"
]
},
"use-latest@1.3.0_react@18.3.1": {
"integrity": "sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==",
"dependencies": [
"react",
"react@18.3.1",
"use-isomorphic-layout-effect"
]
},
@ -1835,6 +1833,18 @@
"integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg=="
}
},
"redirects": {
"https://esm.sh/v128/@types/react@~18.2/index.d.ts": "https://esm.sh/v128/@types/react@18.2.38/index.d.ts",
"https://esm.sh/v135/@types/react-dom@~18.2/index.d.ts": "https://esm.sh/v135/@types/react-dom@18.2.25/index.d.ts"
},
"remote": {
"https://esm.sh/react-dom@18.2.0": "0f6e9183d72c65d9873a8eae2c6c872df9b85cde317dbc0ca3d7447bab8e4ec3",
"https://esm.sh/react@18.2.0": "04ad7dc6d11fa27b24c136686a334ecdd19e972fae627cd98cbdc13cdac238c2",
"https://esm.sh/stable/react@18.2.0/denonext/react.mjs": "3c4f23bcfc53b256fcfaf6f834fa9f584c3bb7be667b2682c6cb6ba8ef88f8e6",
"https://esm.sh/v135/react-dom@18.2.0/denonext/react-dom.mjs": "8191fc377ea7083cca5640699c4abd75de033089eb932799e29aa04bb136838f",
"https://esm.sh/v135/scheduler@0.23.0/denonext/scheduler.mjs": "cdbc6d2823e2c6fffcb14501146ff2602a38c48d3c9dd9268f308e833ede2b49",
"https://esm.sh/v135/scheduler@0.23.2/denonext/scheduler.mjs": "dc96e5be52b14a40ce36295d938d5211e520c4da3183fe2ad4283ed103747d82"
},
"workspace": {
"dependencies": [
"jsr:@preact-icons/bs@^1.0.12",
@ -1852,10 +1862,8 @@
"npm:flowbite-react@~0.10.2",
"npm:postcss@^8.4.49",
"npm:prop-types@^15.8.1",
"npm:react-dom@^18.3.1",
"npm:react-router-dom@^7.0.2",
"npm:react-select-async-paginate@~0.7.7",
"npm:react@^18.3.1",
"npm:reflect-metadata@~0.2.2",
"npm:rxjs@^7.8.1",
"npm:styled-components@^6.1.13",

View File

@ -1,6 +1,6 @@
import * as Eta from 'eta'
import { Token } from '../services/token'
import {container} from "tsyringe"
import Token from '../services/token'
import {container} from "tsyringe-neo"
import React from 'react'
import ReactDOM from 'react-dom/client'
import NiceModal from "@ebay/nice-modal-react"

View File

@ -0,0 +1,5 @@
@tailwind base;
@tailwind components;
@tailwind utilities;

View File

@ -1,9 +1,9 @@
import "./assets/index.css"
import "reflect-metadata";
import * as $ from "jquery";
import { App } from "./app/app";
declare var jwt_token: String;
let app = new App(jwt_token);
app.init();
app.run();

View File

@ -7,7 +7,7 @@ import {Payment} from "./payment"
import {Shipping} from "./shipping"
import {Shop} from "./shop"
export class Order {
class Order {
alias: String
uuid: String
@ -70,4 +70,6 @@ export class Order {
this.positions.push(pos)
})
}
}
}
export default Order

View File

@ -1,11 +1,11 @@
import { AsyncPaginate } from "react-select-async-paginate"
import { AccountService } from '../../services/account'
import { container } from 'tsyringe'
import { OrderState } from '../../state/order'
import AccountService from '../../services/account'
import { container } from 'tsyringe-neo'
import OrderState from '../../state/order'
import {useEffect, useState} from 'react'
import * as PropTypes from 'prop-types'
import { Shop } from '../../model/shop'
import {Order} from "../../model/order"
import Order from "../../model/order"
import { SelectLabel } from "../base/SelectLabel"
import React from 'react'
const AccountSelectComponent = ({shop, order}) => {

View File

@ -3,14 +3,14 @@ import ContactComponent from '../contact/ContactComponent'
import TopBarComponent from '../topbar/TopBarComponent'
import PositionsComponent from '../positions/PositionsComponent'
import {useEffect, useState} from 'react'
import {Order} from "../../model/order"
import Order from "../../model/order"
import PaymentComponent from "../payment/PaymentComponent"
import ShippingComponent from "../shipping/ShippingComponent"
import ButtonComponent from "../button/ButtonComponent"
import {useParams} from "react-router-dom"
import {container} from "tsyringe"
import {OrderState} from "../../state/order"
import {OrderService} from "../../services/order"
import {container} from "tsyringe-neo"
import OrderState from "../../state/order"
import OrderService from "../../services/order"
import InfoFieldComponent from "../info/InfoFieldComponent"
import React from 'react'
import OrderAliasComponent from '../order/OrderAliasComponent'

View File

@ -1,6 +1,3 @@
import { BsPlus } from "@react-icons/all-files/bs/BsPlus"
import { BsPencil } from "@react-icons/all-files/bs/BsPencil"
import { RiSaveFill } from "@react-icons/all-files/ri/RiSaveFill"
import { RiDeleteBin2Line, RiSaveFill } from "@preact-icons/ri"
import { BsXCircle, BsPlus, BsPencil } from "@preact-icons/bs"
import { Button as BaseButton } from "flowbite-react"

View File

@ -1,6 +1,6 @@
import { OrderState } from '../../state/order'
import {container} from "tsyringe"
import { OrderService } from '../../services/order'
import OrderState from '../../state/order'
import {container} from "tsyringe-neo"
import OrderService from '../../services/order'
import { Component } from 'react'
import {debounceTime} from "rxjs"
import {Order} from "../../model/order"
@ -54,10 +54,10 @@ class ButtonComponent extends Component<{loadOrder},{disabled: boolean}> {
return (
<div className="flex gap-3">
<Button size="xs" color="info" disabled={this.state.disabled} onClick={(e:any) => this.handleSave(e)}>
<RiSaveFill className="mr-2 h-5 w-5"/> Speichern
<div className="mr-2 h-5 w-5"/> Speichern
</Button>
<Button size="xs" color="success" disabled={!this.orderState.getCurrentOrder().value.saved} onClick={(e:any) => this.handlePrint(e)}>
<RiPrinterFill className="mr-2 h-5 w-5"/> Drucken
<div className="mr-2 h-5 w-5"/> Drucken
</Button>
</div>
)

View File

@ -1,10 +1,10 @@
import React from 'react'
import * as PropTypes from "prop-types"
import {Order} from "../../model/order"
import {container} from "tsyringe"
import {OrderState} from "../../state/order"
import Order from "../../model/order"
import {container} from "tsyringe-neo"
import OrderState from "../../state/order"
import { debounceTime } from 'rxjs'
import {OrderService} from "../../services/order"
import OrderService from "../../services/order"
import Currency from "../base/Currency"
type MyState = {

View File

@ -4,7 +4,7 @@ import Button from '../base/Button'
import {RJSFSchema} from "@rjsf/utils"
import validator from "@rjsf/validator-ajv6"
import Form from "@rjsf/core"
import { CountryService } from '../../services/country'
import CountryService from '../../services/country'
import { Modal } from "flowbite-react"
import React from 'react'

View File

@ -2,10 +2,10 @@ import * as PropTypes from 'prop-types'
import { AsyncPaginate } from "react-select-async-paginate"
import { Contact } from '../../model/contact'
import { Address } from '../../model/address'
import {container} from "tsyringe"
import {container} from "tsyringe-neo"
import {useEffect,useState} from 'react'
import {OrderState} from "../../state/order"
import {AddressService} from "../../services/address"
import OrderState from "../../state/order"
import AddressService from "../../services/address"
import AddressModalComponent from "./AddressModalComponent"
import { SelectLabel } from '../base/SelectLabel'
import AddressDetail from './AddressDetail'

View File

@ -5,10 +5,10 @@ import AddressSelect from './AddressSelect'
import {Contact} from '../../model/contact'
import {Address} from '../../model/address'
import {useEffect, useState} from 'react'
import { OrderState } from '../../state/order'
import {container} from "tsyringe"
import OrderState from '../../state/order'
import {container} from "tsyringe-neo"
import AccountSelectComponent from '../account/AccountSelectComponent'
import { Order } from '../../model/order'
import Order from '../../model/order'
import { Shop } from '../../model/shop'
import React from 'react'

View File

@ -5,7 +5,7 @@ import {RJSFSchema} from "@rjsf/utils";
import {Contact} from "../../model/contact";
import validator from "@rjsf/validator-ajv6";
import Form from "@rjsf/core";
import {CountryService} from "../../services/country";
import CountryService from "../../services/country";
import { Modal } from "flowbite-react";
import React from 'react'

View File

@ -5,9 +5,9 @@ import Button from "../base/Button"
import ContactModal from "./ContactModal"
import { useCallback } from 'react'
import { useModal } from '@ebay/nice-modal-react'
import { ContactService } from "../../services/contact"
import ContactService from "../../services/contact"
import { Address } from "../../model/address"
import { AddressService } from "../../services/address"
import AddressService from "../../services/address"
import React from 'react'
const ContactModalComponent = ({shop, handleAdd, handleEdit, contact}) => {

View File

@ -1,13 +1,13 @@
import * as PropTypes from 'prop-types'
import { AsyncPaginate } from "react-select-async-paginate"
import { Contact } from '../../model/contact'
import {ContactService} from '../../services/contact'
import ContactService from '../../services/contact'
import { Shop } from '../../model/shop'
import {useEffect, useState} from 'react'
import { container } from 'tsyringe'
import { OrderState } from '../../state/order'
import { container } from 'tsyringe-neo'
import OrderState from '../../state/order'
import ContactModalComponent from "./ContactModalComponent"
import { Order } from '../../model/order'
import Order from '../../model/order'
import { SelectLabel } from '../base/SelectLabel'
import React from 'react'

View File

@ -1,6 +1,6 @@
import {useEffect, useState} from 'react'
import { container } from 'tsyringe'
import { OrderState } from '../../state/order'
import { container } from 'tsyringe-neo'
import OrderState from'../../state/order'
import { SelectLabel } from '../base/SelectLabel'
import React from 'react'

View File

@ -1,10 +1,10 @@
import { AsyncPaginate } from "react-select-async-paginate"
import {ShippingService} from "../../services/shipping"
import ShippingService from "../../services/shipping"
import * as PropTypes from "prop-types"
import {Shop} from "../../model/shop"
import {container} from "tsyringe"
import {OrderState} from "../../state/order"
import {Order} from "../../model/order"
import {container} from "tsyringe-neo"
import OrderState from "../../state/order"
import Order from "../../model/order"
import {useEffect, useState} from "react"
import React from 'react'

View File

@ -1,6 +1,6 @@
import * as React from 'react';
import * as PropTypes from "prop-types";
import {Order} from "../../model/order";
import Order from "../../model/order";
const OrderAliasComponent = ({order}) => {
@ -15,4 +15,4 @@ OrderAliasComponent.propTypes = {
order: PropTypes.instanceOf(Order),
};
export default OrderAliasComponent;
export default OrderAliasComponent;

View File

@ -1,11 +1,11 @@
import * as React from 'react'
import { AsyncPaginate } from "react-select-async-paginate"
import { PaymentService } from "../../services/payment"
import PaymentService from "../../services/payment"
import * as PropTypes from "prop-types"
import { Shop } from "../../model/shop"
import { container } from "tsyringe"
import { OrderState } from "../../state/order"
import { Order } from "../../model/order"
import { container } from "tsyringe-neo"
import OrderState from "../../state/order"
import Order from "../../model/order"
import { useEffect, useState } from "react"
import Select from 'react-select'
import { SelectLabel } from '../base/SelectLabel'

View File

@ -7,7 +7,7 @@ import {ProductGroup} from "../../model/productGroup"
import ProductGroupSelect from "../product/ProductGroupSelect"
import ProductSelect from "../product/ProductSelect"
import ProductForm from "../product/ProductForm"
import {Order} from "../../model/order"
import Order from "../../model/order"
import { Pos } from '../../model/pos'
import Button from '../base/Button'
import { Modal } from "flowbite-react";

View File

@ -5,9 +5,8 @@ import * as PropTypes from "prop-types"
import { Shop } from '../../model/shop'
import {useEffect, useState} from "react"
import {Pos} from "../../model/pos"
import {Order} from "../../model/order"
import {container} from "tsyringe"
import {OrderState} from "../../state/order"
import Order from "../../model/order"
import OrderState from "../../state/order"
const PositionsComponent = ({order, shop, updateOrder}) => {

View File

@ -3,9 +3,9 @@ import { Shop } from '../../model/shop'
import {Product} from "../../model/product"
import validator from "@rjsf/validator-ajv6"
import { JSONSchema7 } from "json-schema"
import { container } from 'tsyringe'
import { container } from 'tsyringe-neo'
import Form from "@rjsf/core"
import {ProductService} from "../../services/product"
import ProductService from "../../services/product"
import {useEffect, useRef, useState} from "react"
import {Price} from "../../model/price"
import {Pos} from "../../model/pos"

View File

@ -1,9 +1,9 @@
import * as PropTypes from 'prop-types';
import { Shop } from '../../model/shop';
import { container } from 'tsyringe';
import { OrderState } from '../../state/order';
import { container } from 'tsyringe-neo';
import OrderState from '../../state/order';
import {ProductGroup} from "../../model/productGroup";
import {ProductGroupService} from "../../services/productgroup";
import ProductGroupService from "../../services/productgroup";
import AsyncSelect , { useAsync } from 'react-select/async';
import React from 'react'

View File

@ -1,11 +1,11 @@
import * as PropTypes from 'prop-types';
import { Shop } from '../../model/shop';
import { container } from 'tsyringe';
import { OrderState } from '../../state/order';
import { container } from 'tsyringe-neo';
import OrderState from '../../state/order';
import {Product} from "../../model/product";
import {ProductGroup} from "../../model/productGroup";
import AsyncSelect from "react-select/async";
import {ProductService} from "../../services/product";
import ProductService from "../../services/product";
import {useDebounce} from "use-debounce";
import React from 'react'

View File

@ -1,11 +1,11 @@
import * as React from 'react'
import { AsyncPaginate } from "react-select-async-paginate"
import {ShippingService} from "../../services/shipping"
import ShippingService from "../../services/shipping"
import * as PropTypes from "prop-types"
import {Shop} from "../../model/shop"
import {container} from "tsyringe"
import {OrderState} from "../../state/order"
import {Order} from "../../model/order"
import {container} from "tsyringe-neo"
import OrderState from "../../state/order"
import Order from "../../model/order"
import {useEffect, useState} from "react"
import { SelectLabel } from '../base/SelectLabel'
import React from 'react'

View File

@ -1,7 +1,7 @@
import { AsyncPaginate } from "react-select-async-paginate"
import { ShopService } from '../../services/shop'
import { container } from 'tsyringe'
import { OrderState } from '../../state/order'
import ShopService from '../../services/shop'
import { container } from 'tsyringe-neo'
import OrderState from '../../state/order'
import { SelectLabel } from '../base/SelectLabel'
import React from 'react'
@ -10,9 +10,11 @@ const ShopSelectComponent = (props) => {
const orderState = container.resolve(OrderState)
const shop_service = container.resolve(ShopService)
const token_service = container.resolve(Token)
const loadOptions = async (searchQuery, loadedOptions) => {
console.log(token_service)
const data = await shop_service.getShops()
return {

View File

@ -3,7 +3,7 @@ import ShopSelectComponent from '../shop/ShopSelectComponent'
import * as PropTypes from "prop-types"
import {Shop} from "../../model/shop"
import DraftComponent from "../draft/DraftComponent"
import {Order} from "../../model/order"
import Order from "../../model/order"
import CalcComponent from '../calc/CalcComponent'
import React from 'react'

View File

@ -1,7 +1,7 @@
import Select from 'react-select'
import {useEffect, useState} from 'react'
import { container } from 'tsyringe'
import { OrderState } from '../../state/order'
import { container } from 'tsyringe-neo'
import OrderState from '../../state/order'
import { SelectLabel } from '../base/SelectLabel'
import React from 'react'

View File

@ -1,4 +1,4 @@
import {autoInjectable, singleton} from "tsyringe";
import {autoInjectable, singleton} from "tsyringe-neo";
import { Token } from "./token";
import axios from 'axios';
import { Account } from "../model/account";
@ -6,7 +6,7 @@ import { Shop } from "../model/shop";
@singleton()
@autoInjectable()
export class AccountService {
class AccountService {
constructor(private token?: Token) {}
async getAccounts(shop: Shop): Promise<Account[]> {
@ -28,3 +28,5 @@ export class AccountService {
});
}
}
export default AccountService

View File

@ -1,11 +1,11 @@
import {autoInjectable, singleton} from "tsyringe"
import {autoInjectable, singleton} from "tsyringe-neo"
import { Token } from "./token"
import axios from 'axios'
import { Address } from "../model/address"
@singleton()
@autoInjectable()
export class AddressService {
class AddressService {
constructor(private token?: Token) {}
async create(address: Address): Promise<Address> {
@ -55,3 +55,5 @@ export class AddressService {
})
}
}
export default AddressService

View File

@ -1,4 +1,4 @@
import {autoInjectable, singleton} from "tsyringe";
import {autoInjectable, singleton} from "tsyringe-neo";
import { Token } from "./token";
import axios from 'axios';
import { Contact } from "../model/contact";
@ -7,7 +7,7 @@ import { Shop } from "../model/shop";
@singleton()
@autoInjectable()
export class ContactService {
class ContactService {
constructor(private token?: Token) {}
async createContact(contact: Contact): Promise<Contact> {
@ -49,3 +49,5 @@ export class ContactService {
}
}
export default ContactService

View File

@ -1,11 +1,11 @@
import {autoInjectable, singleton} from "tsyringe"
import {autoInjectable, singleton} from "tsyringe-neo"
import axios from 'axios'
import { Shop } from "../model/shop"
import { Country } from "../model/country"
@singleton()
@autoInjectable()
export class CountryService {
class CountryService {
async getCountry(shop: Shop): Promise<Country[]> {
@ -19,3 +19,5 @@ export class CountryService {
})
}
}
export default CountryService

View File

@ -1,11 +1,11 @@
import {autoInjectable, singleton} from "tsyringe";
import {autoInjectable, singleton} from "tsyringe-neo";
import { Token } from "./token";
import axios from 'axios';
import {Order} from "../model/order";
import Order from "../model/order";
@singleton()
@autoInjectable()
export class OrderService {
class OrderService {
constructor(private token?: Token) {}
@ -35,7 +35,7 @@ export class OrderService {
});
}
async calcOrder(order: Order): Promise<Order> {
public async calcOrder(order: Order): Promise<Order> {
return await axios.post('/apps/api/order/calc', order ,{
headers: {
@ -47,3 +47,5 @@ export class OrderService {
}
}
export default OrderService

View File

@ -1,4 +1,4 @@
import {autoInjectable, singleton} from "tsyringe"
import {autoInjectable, singleton} from "tsyringe-neo"
import { Token } from "./token"
import axios from 'axios'
import { Shop } from "../model/shop"
@ -6,7 +6,7 @@ import {Payment} from "../model/payment"
@singleton()
@autoInjectable()
export class PaymentService {
class PaymentService {
constructor(private token?: Token) {}
async getPayments(shop: Shop): Promise<Payment[]> {
@ -27,3 +27,5 @@ export class PaymentService {
})
}
}
export default PaymentService

View File

@ -1,4 +1,4 @@
import {autoInjectable, singleton} from "tsyringe";
import {autoInjectable, singleton} from "tsyringe-neo";
import { Token } from "./token";
import axios from 'axios';
import { Shop } from "../model/shop";
@ -8,7 +8,7 @@ import {JSONSchema7} from "json-schema";
@singleton()
@autoInjectable()
export class ProductService {
class ProductService {
constructor(private token?: Token) {}
async getProductsByTerm(term: string, shop: Shop): Promise<Product[]> {
@ -71,3 +71,5 @@ export class ProductService {
})
}
}
export default ProductService

View File

@ -1,4 +1,4 @@
import {autoInjectable, singleton} from "tsyringe";
import {autoInjectable, singleton} from "tsyringe-neo";
import { Token } from "./token";
import axios from 'axios';
import { Shop } from "../model/shop";
@ -6,7 +6,7 @@ import {ProductGroup} from "../model/productGroup";
@singleton()
@autoInjectable()
export class ProductGroupService {
class ProductGroupService {
constructor(private token?: Token) {}
async getProductGroups(searchQuery: String, shop: Shop): Promise<ProductGroup[]> {
@ -42,3 +42,5 @@ export class ProductGroupService {
})
}
}
export default ProductGroupService

View File

@ -1,4 +1,4 @@
import {autoInjectable, singleton} from "tsyringe"
import {autoInjectable, singleton} from "tsyringe-neo"
import { Token } from "./token"
import axios from 'axios'
import { Shop } from "../model/shop"
@ -6,7 +6,7 @@ import {Shipping} from "../model/shipping"
@singleton()
@autoInjectable()
export class ShippingService {
class ShippingService {
constructor(private token?: Token) {}
async getShipping(shop: Shop): Promise<Shipping[]> {
@ -27,3 +27,5 @@ export class ShippingService {
})
}
}
export default ShippingService

View File

@ -1,16 +1,17 @@
import {autoInjectable, singleton} from "tsyringe"
import {autoInjectable, singleton} from "tsyringe-neo"
import { Token } from "./token"
import axios from 'axios'
import { Shop } from "../model/shop"
@singleton()
@autoInjectable()
export class ShopService {
constructor(private token: Token) {}
class ShopService {
constructor(token?: Token) {
console.log(token)
}
async getShops(): Promise<Shop[]> {
console.log(this.token)
return await axios.get('/apps/api/shops', {
headers: {
'Authorization': 'Bearer ' + this.token.currentToken
@ -25,3 +26,5 @@ export class ShopService {
})
}
}
export default ShopService

View File

@ -1,8 +1,8 @@
import axios from "axios"
import {singleton} from "tsyringe"
import {singleton} from "tsyringe-neo"
@singleton()
export class Token {
class Token {
public currentToken:String
init() {
@ -20,3 +20,5 @@ export class Token {
})
}
}
export default Token

View File

@ -1,10 +1,10 @@
import {singleton} from "tsyringe"
import {Order} from "../model/order"
import {singleton} from "tsyringe-neo"
import Order from "../model/order"
import {observeObject} from "../lib/ob-ob"
import {BehaviorSubject, Observable, of, Subject} from "rxjs"
@singleton()
export class OrderState {
class OrderState {
orders: Array<Order>
private currentOrder: BehaviorSubject<Order>
@ -29,3 +29,5 @@ export class OrderState {
this.orders.push(order)
}
}
export default OrderState

View File

@ -1,4 +1,4 @@
const flowbite = require("flowbite-react/tailwind");
import flowbite from "flowbite-react/tailwind"
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [

View File

@ -0,0 +1,24 @@
{
"compilerOptions": {
"target": "ES2020",
"useDefineForClassFields": true,
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"module": "ESNext",
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"isolatedModules": true,
"moduleDetection": "force",
"noEmit": true,
"jsx": "react-jsx",
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true
},
"include": ["src"]
}

View File

@ -1,7 +1,7 @@
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"target": "ES6",
}
"files": [],
"references": [
{ "path": "./tsconfig.app.json" },
{ "path": "./tsconfig.node.json" }
]
}

View File

@ -0,0 +1,22 @@
{
"compilerOptions": {
"target": "ES2022",
"lib": ["ES2023"],
"module": "ESNext",
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"isolatedModules": true,
"moduleDetection": "force",
"noEmit": true,
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true
},
"include": ["vite.config.ts"]
}

File diff suppressed because one or more lines are too long

View File

@ -6,6 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + React + TS</title>
<script type="module" crossorigin src="/assets/index.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index.css">
</head>
<body>
<div id="root"></div>

View File

@ -7,7 +7,7 @@
<meta name="description" content="">
<meta name="author" content="">
<base href="/apps/backend/component/invoice/index/create/"/>
<link rel="stylesheet" href="/apps/bundles/pluginsystempscinvoice/invoicets/assets/index.js"/>
<link rel="stylesheet" href="/apps/bundles/pluginsystempscinvoice/invoicets/assets/index.css"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
{% block stylesheets %}
{% endblock %}