sprintify-ui 0.0.185 → 0.0.187

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.
@@ -9,7 +9,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
9
9
  maxSize?: number | undefined;
10
10
  accept?: string | undefined;
11
11
  acceptedExtensions?: string[] | undefined;
12
- cropper?: boolean | BaseCropperConfig | null | undefined;
12
+ cropper?: boolean | Record<string, any> | BaseCropperConfig | null | undefined;
13
13
  }>, {
14
14
  component: string;
15
15
  url: undefined;
@@ -31,7 +31,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
31
31
  maxSize?: number | undefined;
32
32
  accept?: string | undefined;
33
33
  acceptedExtensions?: string[] | undefined;
34
- cropper?: boolean | BaseCropperConfig | null | undefined;
34
+ cropper?: boolean | Record<string, any> | BaseCropperConfig | null | undefined;
35
35
  }>, {
36
36
  component: string;
37
37
  url: undefined;
@@ -50,7 +50,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
50
50
  "onUpload:end"?: ((...args: any[]) => any) | undefined;
51
51
  }, {
52
52
  disabled: boolean;
53
- cropper: BaseCropperConfig | boolean | null;
53
+ cropper: BaseCropperConfig | Record<string, any> | boolean | null;
54
54
  loading: boolean;
55
55
  accept: string;
56
56
  url: string;
@@ -1,12 +1,27 @@
1
- export declare function useBreakpoints(): {
2
- greater(k: "xs" | "sm" | "lg" | "xl" | "2xl" | "md"): import("vue").Ref<boolean>;
3
- greaterOrEqual: (k: "xs" | "sm" | "lg" | "xl" | "2xl" | "md") => import("vue").Ref<boolean>;
4
- smaller(k: "xs" | "sm" | "lg" | "xl" | "2xl" | "md"): import("vue").Ref<boolean>;
5
- smallerOrEqual(k: "xs" | "sm" | "lg" | "xl" | "2xl" | "md"): import("vue").Ref<boolean>;
6
- between(a: "xs" | "sm" | "lg" | "xl" | "2xl" | "md", b: "xs" | "sm" | "lg" | "xl" | "2xl" | "md"): import("vue").Ref<boolean>;
7
- isGreater(k: "xs" | "sm" | "lg" | "xl" | "2xl" | "md"): boolean;
8
- isGreaterOrEqual(k: "xs" | "sm" | "lg" | "xl" | "2xl" | "md"): boolean;
9
- isSmaller(k: "xs" | "sm" | "lg" | "xl" | "2xl" | "md"): boolean;
10
- isSmallerOrEqual(k: "xs" | "sm" | "lg" | "xl" | "2xl" | "md"): boolean;
11
- isInBetween(a: "xs" | "sm" | "lg" | "xl" | "2xl" | "md", b: "xs" | "sm" | "lg" | "xl" | "2xl" | "md"): boolean;
12
- } & Record<"xs" | "sm" | "lg" | "xl" | "2xl" | "md", import("vue").Ref<boolean>>;
1
+ import type { Ref } from 'vue';
2
+ export * from './breakpoints';
3
+ export type Breakpoints<K extends string = string> = Record<K, number | string>;
4
+ export declare function useBreakpoints<K extends string>(breakpoints?: Breakpoints<K>): {
5
+ greater(k: K): Ref<boolean>;
6
+ greaterOrEqual: (k: K) => Ref<boolean>;
7
+ smaller(k: K): Ref<boolean>;
8
+ smallerOrEqual(k: K): Ref<boolean>;
9
+ between(a: K, b: K): Ref<boolean>;
10
+ isGreater(k: K): boolean;
11
+ isGreaterOrEqual(k: K): boolean;
12
+ isSmaller(k: K): boolean;
13
+ isSmallerOrEqual(k: K): boolean;
14
+ isInBetween(a: K, b: K): boolean;
15
+ } & Record<K, Ref<boolean>>;
16
+ export type UseBreakpointsReturn<K extends string = string> = {
17
+ greater: (k: K) => Ref<boolean>;
18
+ greaterOrEqual: (k: K) => Ref<boolean>;
19
+ smaller(k: K): Ref<boolean>;
20
+ smallerOrEqual: (k: K) => Ref<boolean>;
21
+ between(a: K, b: K): Ref<boolean>;
22
+ isGreater(k: K): boolean;
23
+ isGreaterOrEqual(k: K): boolean;
24
+ isSmaller(k: K): boolean;
25
+ isSmallerOrEqual(k: K): boolean;
26
+ isInBetween(a: K, b: K): boolean;
27
+ } & Record<K, Ref<boolean>>;
@@ -0,0 +1,2 @@
1
+ import type { MaybeComputedRef } from '@vueuse/shared';
2
+ export declare function useMediaQuery(query: MaybeComputedRef<string>): import("vue").Ref<boolean>;
@@ -42,8 +42,8 @@ declare const messages: {
42
42
  file_must_be_of_type: string;
43
43
  filters: string;
44
44
  go_to_page: string;
45
- just_now: string;
46
45
  invalid_value: string;
46
+ just_now: string;
47
47
  maximum_x_decimal_places: string;
48
48
  min_x_characters: string;
49
49
  month: string;
@@ -55,7 +55,8 @@ declare const messages: {
55
55
  of: string;
56
56
  or: string;
57
57
  page: string;
58
- pagination_detail: string;
58
+ pagination_detail_1: string;
59
+ pagination_detail_2: string;
59
60
  postal_code_zip_code: string;
60
61
  previous: string;
61
62
  previous_month: string;
@@ -125,8 +126,8 @@ declare const messages: {
125
126
  file_must_be_of_type: string;
126
127
  filters: string;
127
128
  go_to_page: string;
128
- just_now: string;
129
129
  invalid_value: string;
130
+ just_now: string;
130
131
  maximum_x_decimal_places: string;
131
132
  min_x_characters: string;
132
133
  month: string;
@@ -138,7 +139,8 @@ declare const messages: {
138
139
  of: string;
139
140
  or: string;
140
141
  page: string;
141
- pagination_detail: string;
142
+ pagination_detail_1: string;
143
+ pagination_detail_2: string;
142
144
  postal_code_zip_code: string;
143
145
  previous: string;
144
146
  previous_month: string;
@@ -225,8 +227,8 @@ declare const config: {
225
227
  file_must_be_of_type: string;
226
228
  filters: string;
227
229
  go_to_page: string;
228
- just_now: string;
229
230
  invalid_value: string;
231
+ just_now: string;
230
232
  maximum_x_decimal_places: string;
231
233
  min_x_characters: string;
232
234
  month: string;
@@ -238,7 +240,8 @@ declare const config: {
238
240
  of: string;
239
241
  or: string;
240
242
  page: string;
241
- pagination_detail: string;
243
+ pagination_detail_1: string;
244
+ pagination_detail_2: string;
242
245
  postal_code_zip_code: string;
243
246
  previous: string;
244
247
  previous_month: string;
@@ -308,8 +311,8 @@ declare const config: {
308
311
  file_must_be_of_type: string;
309
312
  filters: string;
310
313
  go_to_page: string;
311
- just_now: string;
312
314
  invalid_value: string;
315
+ just_now: string;
313
316
  maximum_x_decimal_places: string;
314
317
  min_x_characters: string;
315
318
  month: string;
@@ -321,7 +324,8 @@ declare const config: {
321
324
  of: string;
322
325
  or: string;
323
326
  page: string;
324
- pagination_detail: string;
327
+ pagination_detail_1: string;
328
+ pagination_detail_2: string;
325
329
  postal_code_zip_code: string;
326
330
  previous: string;
327
331
  previous_month: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sprintify-ui",
3
- "version": "0.0.185",
3
+ "version": "0.0.187",
4
4
  "scripts": {
5
5
  "build": "rimraf dist && vue-tsc && vite build",
6
6
  "build-fast": "rimraf dist && vite build",
@@ -64,7 +64,7 @@
64
64
  "@vitejs/plugin-vue": "^4.0.0",
65
65
  "@vue/eslint-config-typescript": "^11.0.2",
66
66
  "@vueup/vue-quill": "^1.1.0",
67
- "@vueuse/core": "^9.12.0",
67
+ "@vueuse/core": "^9.13.0",
68
68
  "autoprefixer": "^10.4.13",
69
69
  "axios": "^0.26.1",
70
70
  "babel-loader": "^8.3.0",
@@ -99,22 +99,16 @@
99
99
  <!-- Pagination -->
100
100
 
101
101
  <div v-if="paginationMetadata" class="mt-4">
102
- <p class="text-center text-sm text-slate-400 sm:text-right">
103
- {{
104
- (paginationMetadata.current_page - 1) *
105
- paginationMetadata.per_page +
106
- 1
107
- }}
108
- -
109
- {{
110
- $t('sui.pagination_detail', {
111
- page: Math.min(
112
- paginationMetadata.current_page * paginationMetadata.per_page,
113
- paginationMetadata.total
114
- ),
115
- total: paginationMetadata.total,
116
- })
117
- }}
102
+ <p
103
+ class="text-center text-sm text-slate-500 sm:text-right [&>b]:font-medium [&>b]:text-slate-600"
104
+ >
105
+ {{ $t('sui.pagination_detail_1') }}
106
+
107
+ <b>{{ paginationStart }}</b> - <b>{{ paginationEnd }}</b>
108
+
109
+ {{ $t('sui.pagination_detail_2') }}
110
+
111
+ <b>{{ paginationMetadata.total }}</b>
118
112
  </p>
119
113
  </div>
120
114
 
@@ -674,6 +668,29 @@ function updateSearchInput() {
674
668
  searchQuery.value = searchKeywords.value;
675
669
  }
676
670
 
671
+ const paginationStart = computed(() => {
672
+ if (paginationMetadata.value == null) {
673
+ return '';
674
+ }
675
+
676
+ return (
677
+ paginationMetadata.value.per_page *
678
+ (paginationMetadata.value.current_page - 1) +
679
+ 1
680
+ );
681
+ });
682
+
683
+ const paginationEnd = computed(() => {
684
+ if (paginationMetadata.value == null) {
685
+ return '';
686
+ }
687
+
688
+ return Math.min(
689
+ paginationMetadata.value.current_page * paginationMetadata.value.per_page,
690
+ paginationMetadata.value.total
691
+ );
692
+ });
693
+
677
694
  /*
678
695
  |--------------------------------------------------------------------------
679
696
  | Created
@@ -53,7 +53,7 @@ const props = withDefaults(
53
53
  maxSize?: number;
54
54
  accept?: string;
55
55
  acceptedExtensions?: string[];
56
- cropper?: BaseCropperConfig | boolean | null;
56
+ cropper?: BaseCropperConfig | Record<string, any> | boolean | null;
57
57
  }>(),
58
58
  {
59
59
  component: 'BaseFilePicker',
@@ -86,15 +86,19 @@ const componentInternal = computed(() => {
86
86
  });
87
87
 
88
88
  const pickerProps = computed(() => {
89
- return {
89
+ const pickerProps = {
90
90
  disabled: props.disabled || props.loading || uploading.value,
91
91
  buttonClass: props.buttonClass,
92
92
  maxSize: props.maxSize,
93
93
  accept: props.component == 'BaseFilePickerCrop' ? undefined : props.accept,
94
94
  acceptedExtensions: props.acceptedExtensions,
95
- cropper:
96
- props.component == 'BaseFilePickerCrop' ? props.cropper : undefined,
97
- };
95
+ } as Record<string, any>;
96
+
97
+ if (props.component == 'BaseFilePickerCrop') {
98
+ pickerProps.cropper = props.cropper;
99
+ }
100
+
101
+ return pickerProps;
98
102
  });
99
103
 
100
104
  const uploading = ref(false);
@@ -1,6 +1,94 @@
1
- import { useBreakpoints as useBase } from '@vueuse/core';
2
- import breakpoints from '../../config/breakpoints.json';
1
+ import type { Ref } from 'vue';
2
+ import { increaseWithUnit } from '@vueuse/shared';
3
+ import { useMediaQuery } from './mediaQuery';
4
+ import defaultBreakpoints from '../../config/breakpoints.json';
5
+ export * from './breakpoints';
3
6
 
4
- export function useBreakpoints() {
5
- return useBase(breakpoints);
7
+ export type Breakpoints<K extends string = string> = Record<K, number | string>;
8
+
9
+ export function useBreakpoints<K extends string>(breakpoints?: Breakpoints<K>) {
10
+ const breakpointsInternal = computed(() => {
11
+ if (breakpoints) return breakpoints;
12
+ return defaultBreakpoints as Breakpoints<K>;
13
+ });
14
+
15
+ function getValue(k: K, delta?: number) {
16
+ let v = breakpointsInternal.value[k];
17
+
18
+ if (delta != null) v = increaseWithUnit(v, delta);
19
+
20
+ if (typeof v === 'number') v = `${v}px`;
21
+
22
+ return v;
23
+ }
24
+
25
+ function match(query: string): boolean {
26
+ if (!window) return false;
27
+ return window.matchMedia(query).matches;
28
+ }
29
+
30
+ const greaterOrEqual = (k: K) => {
31
+ return useMediaQuery(`(min-width: ${getValue(k)})`);
32
+ };
33
+
34
+ const shortcutMethods = Object.keys(breakpointsInternal.value).reduce(
35
+ (shortcuts, k) => {
36
+ Object.defineProperty(shortcuts, k, {
37
+ get: () => greaterOrEqual(k as K),
38
+ enumerable: true,
39
+ configurable: true,
40
+ });
41
+ return shortcuts;
42
+ },
43
+ {} as Record<K, Ref<boolean>>
44
+ );
45
+
46
+ return {
47
+ greater(k: K) {
48
+ return useMediaQuery(`(min-width: ${getValue(k, 0.1)})`);
49
+ },
50
+ greaterOrEqual,
51
+ smaller(k: K) {
52
+ return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`);
53
+ },
54
+ smallerOrEqual(k: K) {
55
+ return useMediaQuery(`(max-width: ${getValue(k)})`);
56
+ },
57
+ between(a: K, b: K) {
58
+ return useMediaQuery(
59
+ `(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`
60
+ );
61
+ },
62
+ isGreater(k: K) {
63
+ return match(`(min-width: ${getValue(k, 0.1)})`);
64
+ },
65
+ isGreaterOrEqual(k: K) {
66
+ return match(`(min-width: ${getValue(k)})`);
67
+ },
68
+ isSmaller(k: K) {
69
+ return match(`(max-width: ${getValue(k, -0.1)})`);
70
+ },
71
+ isSmallerOrEqual(k: K) {
72
+ return match(`(max-width: ${getValue(k)})`);
73
+ },
74
+ isInBetween(a: K, b: K) {
75
+ return match(
76
+ `(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`
77
+ );
78
+ },
79
+ ...shortcutMethods,
80
+ };
6
81
  }
82
+
83
+ export type UseBreakpointsReturn<K extends string = string> = {
84
+ greater: (k: K) => Ref<boolean>;
85
+ greaterOrEqual: (k: K) => Ref<boolean>;
86
+ smaller(k: K): Ref<boolean>;
87
+ smallerOrEqual: (k: K) => Ref<boolean>;
88
+ between(a: K, b: K): Ref<boolean>;
89
+ isGreater(k: K): boolean;
90
+ isGreaterOrEqual(k: K): boolean;
91
+ isSmaller(k: K): boolean;
92
+ isSmallerOrEqual(k: K): boolean;
93
+ isInBetween(a: K, b: K): boolean;
94
+ } & Record<K, Ref<boolean>>;
@@ -0,0 +1,42 @@
1
+ import { ref, watchEffect } from 'vue';
2
+ import type { MaybeComputedRef } from '@vueuse/shared';
3
+ import { resolveRef, tryOnScopeDispose } from '@vueuse/shared';
4
+
5
+ export function useMediaQuery(query: MaybeComputedRef<string>) {
6
+ const isSupported = () =>
7
+ window && 'matchMedia' in window && typeof window.matchMedia === 'function';
8
+
9
+ let mediaQuery: MediaQueryList | undefined;
10
+ const matches = ref(false);
11
+
12
+ const cleanup = () => {
13
+ if (!mediaQuery) return;
14
+ if ('removeEventListener' in mediaQuery)
15
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
16
+ mediaQuery.removeEventListener('change', update);
17
+ // @ts-expect-error deprecated API
18
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
19
+ else mediaQuery.removeListener(update);
20
+ };
21
+
22
+ const update = () => {
23
+ if (!isSupported()) return;
24
+
25
+ cleanup();
26
+
27
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
28
+ mediaQuery = window.matchMedia(resolveRef(query).value) as MediaQueryList;
29
+ matches.value = mediaQuery.matches;
30
+
31
+ if ('addEventListener' in mediaQuery)
32
+ mediaQuery.addEventListener('change', update);
33
+ // @ts-expect-error deprecated API
34
+ else mediaQuery.addListener(update);
35
+ };
36
+
37
+ watchEffect(update);
38
+
39
+ tryOnScopeDispose(() => cleanup());
40
+
41
+ return matches;
42
+ }
package/src/lang/en.json CHANGED
@@ -33,8 +33,8 @@
33
33
  "file_must_be_of_type": "The file must be of type",
34
34
  "filters": "Filters",
35
35
  "go_to_page": "Go to ",
36
- "just_now": "Just now",
37
36
  "invalid_value": "Invalid value",
37
+ "just_now": "Just now",
38
38
  "maximum_x_decimal_places": "Maximum 1 decimal place|Maximum {count} decimal places",
39
39
  "min_x_characters": "{x} characters minimum",
40
40
  "month": "Month",
@@ -46,7 +46,8 @@
46
46
  "of": "of",
47
47
  "or": "or",
48
48
  "page": "Page",
49
- "pagination_detail": "{page} records of {total}",
49
+ "pagination_detail_1": "Viewing",
50
+ "pagination_detail_2": "of",
50
51
  "postal_code_zip_code": "Postal Code / Zip Code",
51
52
  "previous": "Previous",
52
53
  "previous_month": "Previous month",
package/src/lang/fr.json CHANGED
@@ -33,8 +33,8 @@
33
33
  "file_must_be_of_type": "Le fichier doit être de type",
34
34
  "filters": "Filtres",
35
35
  "go_to_page": "Page",
36
- "just_now": "à l’instant",
37
36
  "invalid_value": "Valeur invalide",
37
+ "just_now": "à l’instant",
38
38
  "maximum_x_decimal_places": "Maximum 1 décimale|Maximum {count} décimales",
39
39
  "min_x_characters": "{x} caractères minimum",
40
40
  "month": "Mois",
@@ -46,7 +46,8 @@
46
46
  "of": "de",
47
47
  "or": "ou",
48
48
  "page": "Page",
49
- "pagination_detail": "{page} items de {total}",
49
+ "pagination_detail_1": "Affichage de",
50
+ "pagination_detail_2": "de",
50
51
  "postal_code_zip_code": "Code postal",
51
52
  "previous": "Précédent",
52
53
  "previous_month": "Mois précédent",