@@ -75,15 +75,16 @@ const intl = Intl.NumberFormat('de-DE', {
currency: 'EUR',
})
-const { lengthX, isSwiping } = useSwipe(top, {
- passive: false,
+const { lengthX, direction, isSwiping } = useSwipe(top, {
+ passive: true,
threshold: 30,
onSwipe() {
- if (lengthX.value > 50 || lengthX.value < -50) {
- left.value = `${-clamp(lengthX.value, -100, 100)}px`
- }
+ console.log(direction.value)
+ if (['down', 'up'].includes(direction.value)) return
+ left.value = `${-clamp(lengthX.value, -100, 100)}px`
},
onSwipeEnd() {
+ if (['down', 'up'].includes(direction.value)) return
if (lengthX.value < -50) update()
if (lengthX.value > 50) deleteCard()
left.value = '0'
diff --git a/app/components/Pp/PriceCardDialog.vue b/app/components/Pp/PriceCardDialog.vue
index 00dd42f..fe77a61 100644
--- a/app/components/Pp/PriceCardDialog.vue
+++ b/app/components/Pp/PriceCardDialog.vue
@@ -25,6 +25,7 @@
v-model="currentCard.price"
id="card_price"
label="Preis"
+ type="number"
:class="{'error': !validFields.price }"
:message="!validFields.price ? 'Muss eine Zahl sein.' : ''"
/>
@@ -34,6 +35,8 @@
v-model="currentCard.roles"
id="card_roles"
label="Rollen"
+ type="number"
+ :step="1"
:class="{'error': !validFields.roles }"
:message="!validFields.roles ? 'Muss eine Ganzzahl sein.' : ''"
/>
@@ -41,6 +44,8 @@
v-model="currentCard.sheets"
id="card_sheets"
label="Blätter"
+ type="number"
+ :step="1"
:class="{'error': !validFields.sheets }"
:message="!validFields.sheets ? 'Muss eine Ganzzahl sein.' : ''"
/>
@@ -48,6 +53,8 @@
v-model="currentCard.layers"
id="card_layers"
label="Lagen"
+ type="number"
+ :step="1"
:class="{'error': !validFields.layers }"
:message="!validFields.layers ? 'Muss eine Ganzzahl sein.' : ''"
/>
diff --git a/app/pages/index.vue b/app/pages/index.vue
index 5e39a87..7572b4d 100755
--- a/app/pages/index.vue
+++ b/app/pages/index.vue
@@ -17,7 +17,7 @@
@click="sort"
/>
-
+
({
})
const cards = useState('cards', () => [
- createCard(crypto.randomUUID()),
+ createCard(randomUUID()),
])
const addCard = (card : Card) => {
@@ -102,8 +102,7 @@ const updateCard = () => {
const openModal = (createNew : boolean, index : number) => {
if (createNew) {
currentCardIndex.value = -1
- currentCard.value = createCard(crypto.randomUUID())
-
+ currentCard.value = createCard(randomUUID())
modal.value?.$el.showModal()
return
}
diff --git a/app/utils/number.ts b/app/utils/number.ts
index fb31fe2..07fba9c 100644
--- a/app/utils/number.ts
+++ b/app/utils/number.ts
@@ -1,3 +1,5 @@
export const replaceComma = (value: string | number) => `${value}`.replace(',', '.')
-export const clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max)
\ No newline at end of file
+export const clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max)
+
+export const between = (value: number, min: number, max: number) => value >= min && value <= max
\ No newline at end of file
diff --git a/app/utils/uuid.ts b/app/utils/uuid.ts
new file mode 100644
index 0000000..7d0849d
--- /dev/null
+++ b/app/utils/uuid.ts
@@ -0,0 +1,7 @@
+export const randomUUID = (): string => {
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
+ const r = Math.random() * 16 | 0;
+ const v = c === 'x' ? r : (r & 0x3 | 0x8);
+ return v.toString(16);
+ })
+}