adminforth 3.6.4-next.7 → 3.6.4-next.9

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,16 +1,16 @@
1
1
  <template>
2
2
  <div class="relative w-full bg-lightProgressBarUnfilledColor rounded-full h-2.5 dark:bg-darkProgressBarUnfilledColor" :class="props.height ? `h-${props.height}` : ''">
3
- <span v-if="leftLabel" class="absolute -top-6 left-0 text-sm text-lightProgressBarText dark:text-darkProgressBarText">{{ leftLabel }}</span>
4
- <span v-if="rightLabel" class="absolute -top-6 right-0 text-sm text-lightProgressBarText dark:text-darkProgressBarText">{{ rightLabel }}</span>
5
- <div
3
+ <span v-if="leftLabel" class="absolute -top-6 left-0 text-sm" :class="textClass">{{ leftLabel }}</span>
4
+ <span v-if="rightLabel" class="absolute -top-6 right-0 text-sm" :class="textClass">{{ rightLabel }}</span>
5
+ <div
6
6
  class="bg-lightPrimary dark:bg-darkPrimary h-2.5 rounded-full transition-all duration-300 ease-in-out"
7
- :class="{ 'progress-bar': showAnimation, [`h-${props.height}`]: props.height }"
7
+ :class="{ 'progress-bar': showAnimation, [`h-${props.height}`]: props.height }"
8
8
  :style="{ width: `${percentage}%` }"
9
9
  ></div>
10
10
  <div v-if="showValues || showProgress" class="flex justify-between mt-2">
11
- <span v-if="showValues" class="text-sm text-lightProgressBarText dark:text-darkProgressBarText">{{ formatValue(minValue) }}</span>
12
- <span v-if="showProgress" class="text-sm text-lightProgressBarText dark:text-darkProgressBarText">{{ progressText }}</span>
13
- <span v-if="showValues" class="text-sm text-lightProgressBarText dark:text-darkProgressBarText">{{ formatValue(maxValue) }}</span>
11
+ <span v-if="showValues" class="text-sm" :class="textClass">{{ formatValue(minValue) }}</span>
12
+ <span v-if="showProgress" class="text-sm" :class="textClass">{{ progressText }}</span>
13
+ <span v-if="showValues" class="text-sm" :class="textClass">{{ formatValue(maxValue) }}</span>
14
14
  </div>
15
15
  </div>
16
16
  </template>
@@ -31,6 +31,7 @@ interface Props {
31
31
  showProgress?: boolean
32
32
  showAnimation?: boolean
33
33
  height?: number
34
+ textClass?: string
34
35
  }
35
36
 
36
37
  const props = withDefaults(defineProps<Props>(), {
@@ -39,7 +40,8 @@ const props = withDefaults(defineProps<Props>(), {
39
40
  formatter: (value: number) => `${value}`,
40
41
  progressFormatter: (value: number, percentage: number) => `${value}`,
41
42
  showValues: true,
42
- showProgress: true
43
+ showProgress: true,
44
+ textClass: 'text-lightProgressBarText dark:text-darkProgressBarText',
43
45
  })
44
46
 
45
47
  const percentage = computed((): number => {
@@ -1,6 +1,7 @@
1
1
  import { ref, watch, type Ref } from 'vue'
2
2
  import { defineStore } from 'pinia'
3
3
  import { useRoute } from 'vue-router';
4
+ import { randomBrowserUUID } from '@/utils/browserUuid';
4
5
 
5
6
 
6
7
 
@@ -22,7 +23,7 @@ export const useToastStore = defineStore('toast', () => {
22
23
  buttons?: { value: any; label: string }[];
23
24
  onResolve?: (value?: any) => void;
24
25
  }): string => {
25
- const toastId = crypto.randomUUID();
26
+ const toastId = randomBrowserUUID();
26
27
  toasts.value.push({
27
28
  ...toast,
28
29
  id: toastId,
@@ -45,4 +46,4 @@ export const useToastStore = defineStore('toast', () => {
45
46
  };
46
47
 
47
48
  return { toasts, addToast, removeToast, resolveToast };
48
- });
49
+ });
@@ -0,0 +1,42 @@
1
+ const UUID_BYTE_LENGTH = 16;
2
+
3
+ const UUID_HEX = Array.from(
4
+ { length: 256 },
5
+ (_, index) => index.toString(16).padStart(2, '0'),
6
+ );
7
+
8
+ export function randomBrowserUUID(): string {
9
+ if (typeof crypto.randomUUID === 'function') {
10
+ return crypto.randomUUID();
11
+ }
12
+
13
+ const bytes = crypto.getRandomValues(
14
+ new Uint8Array(UUID_BYTE_LENGTH),
15
+ );
16
+
17
+ bytes[6] = (bytes[6] & 0x0f) | 0x40;
18
+ bytes[8] = (bytes[8] & 0x3f) | 0x80;
19
+
20
+ return [
21
+ UUID_HEX[bytes[0]],
22
+ UUID_HEX[bytes[1]],
23
+ UUID_HEX[bytes[2]],
24
+ UUID_HEX[bytes[3]],
25
+ '-',
26
+ UUID_HEX[bytes[4]],
27
+ UUID_HEX[bytes[5]],
28
+ '-',
29
+ UUID_HEX[bytes[6]],
30
+ UUID_HEX[bytes[7]],
31
+ '-',
32
+ UUID_HEX[bytes[8]],
33
+ UUID_HEX[bytes[9]],
34
+ '-',
35
+ UUID_HEX[bytes[10]],
36
+ UUID_HEX[bytes[11]],
37
+ UUID_HEX[bytes[12]],
38
+ UUID_HEX[bytes[13]],
39
+ UUID_HEX[bytes[14]],
40
+ UUID_HEX[bytes[15]],
41
+ ].join('');
42
+ }
@@ -1,3 +1,5 @@
1
+ import { randomBrowserUUID } from './browserUuid';
2
+
1
3
  const ADMINFORTH_CLIENT_ID_STORAGE_KEY = 'adminforthClientId';
2
4
 
3
5
  export const ADMINFORTH_CLIENT_ID_HEADER = 'x-adminforth-client-id';
@@ -8,7 +10,7 @@ export function getAdminForthClientId(): string {
8
10
  return existingClientId;
9
11
  }
10
12
 
11
- const clientId = crypto.randomUUID();
13
+ const clientId = randomBrowserUUID();
12
14
  sessionStorage.setItem(ADMINFORTH_CLIENT_ID_STORAGE_KEY, clientId);
13
15
  return clientId;
14
16
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adminforth",
3
- "version": "3.6.4-next.7",
3
+ "version": "3.6.4-next.9",
4
4
  "description": "OpenSource Agent-Native forth-generation admin panel",
5
5
  "keywords": [
6
6
  "adminforth",