feat: items-editor (#5)

* format readme

* update logo

* format html

* add logo to docs

* repository for document and document tokens

* add attachments type and repository

* autogenerate types via scripts

* use autogenerated types

* attachment type updates

* add insured and quantity fields for items

* implement HasID interface for entities

* implement label updates for items

* implement service update method

* WIP item update client side actions

* check err on attachment

* finish types for basic items editor

* remove unused var

* house keeping
This commit is contained in:
Hayden 2022-09-12 14:47:27 -08:00 committed by GitHub
parent fbc364dcd2
commit 95ab14b866
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
125 changed files with 15626 additions and 1791 deletions

View file

@ -1,6 +1,7 @@
import { UseConfirmDialogReturn } from "@vueuse/core";
import { Ref } from "vue";
// eslint-disable-next-line @typescript-eslint/no-explicit-any
type Store = UseConfirmDialogReturn<any, boolean, boolean> & {
text: Ref<string>;
setup: boolean;
@ -21,6 +22,7 @@ const store: Partial<Store> = {
export function useConfirm(): Store {
if (!store.setup) {
store.setup = true;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const { isRevealed, reveal, confirm, cancel } = useConfirmDialog<any, boolean, boolean>();
store.isRevealed = isRevealed;
store.reveal = reveal;

View file

@ -3,6 +3,7 @@ import { Ref } from "vue";
export type LocationViewPreferences = {
showDetails: boolean;
showEmpty: boolean;
editorSimpleView: boolean;
};
/**
@ -15,6 +16,7 @@ export function useViewPreferences(): Ref<LocationViewPreferences> {
{
showDetails: true,
showEmpty: true,
editorSimpleView: true,
},
{ mergeDefaults: true }
);

View file

@ -0,0 +1,35 @@
export function validDate(dt: Date | string | null | undefined): boolean {
if (!dt) {
return false;
}
// If it's a string, try to parse it
if (typeof dt === "string") {
const parsed = new Date(dt);
if (isNaN(parsed.getTime())) {
return false;
}
}
// If it's a date, check if it's valid
if (dt instanceof Date) {
if (dt.getFullYear() < 1000) {
return false;
}
}
return true;
}
export function fmtCurrency(value: number | string, currency = "USD", locale = "en-Us"): string {
if (typeof value === "string") {
value = parseFloat(value);
}
const formatter = new Intl.NumberFormat(locale, {
style: "currency",
currency,
minimumFractionDigits: 2,
});
return formatter.format(value);
}