sprintify-ui 0.0.41 → 0.0.42

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.
Files changed (89) hide show
  1. package/dist/sprintify-ui.es.js +6033 -5518
  2. package/dist/types/src/components/BaseAutocomplete.vue.d.ts +32 -12
  3. package/dist/types/src/components/BaseAutocompleteFetch.vue.d.ts +28 -28
  4. package/dist/types/src/components/BaseBelongsTo.vue.d.ts +35 -35
  5. package/dist/types/src/components/BaseButtonGroup.vue.d.ts +46 -8
  6. package/dist/types/src/components/BaseDatePicker.vue.d.ts +18 -9
  7. package/dist/types/src/components/BaseDateSelect.vue.d.ts +14 -5
  8. package/dist/types/src/components/BaseField.vue.d.ts +151 -0
  9. package/dist/types/src/components/BaseFieldI18n.vue.d.ts +93 -0
  10. package/dist/types/src/components/BaseForm.vue.d.ts +267 -0
  11. package/dist/types/src/components/BaseFormField.d.ts +81 -0
  12. package/dist/types/src/components/BaseHasMany.vue.d.ts +31 -31
  13. package/dist/types/src/components/BaseInput.vue.d.ts +1 -1
  14. package/dist/types/src/components/BaseInputError.vue.d.ts +48 -0
  15. package/dist/types/src/components/BaseInputPercent.vue.d.ts +1 -1
  16. package/dist/types/src/components/BaseLocaleForm.vue.d.ts +420 -0
  17. package/dist/types/src/components/BaseMediaLibrary.vue.d.ts +46 -24
  18. package/dist/types/src/components/BaseNumberForm.vue.d.ts +382 -0
  19. package/dist/types/src/components/BasePassword.vue.d.ts +10 -14
  20. package/dist/types/src/components/BasePasswordForm.vue.d.ts +365 -0
  21. package/dist/types/src/components/BaseRadioGroup.vue.d.ts +23 -4
  22. package/dist/types/src/components/BaseSelect.vue.d.ts +20 -1
  23. package/dist/types/src/components/BaseSwitch.vue.d.ts +155 -23
  24. package/dist/types/src/components/BaseTagAutocomplete.vue.d.ts +31 -12
  25. package/dist/types/src/components/BaseTagAutocompleteFetch.vue.d.ts +20 -20
  26. package/dist/types/src/components/BaseTextarea.vue.d.ts +9 -0
  27. package/dist/types/src/components/BaseTextareaAutoresize.vue.d.ts +18 -0
  28. package/dist/types/src/components/BaseTextareaForm.vue.d.ts +394 -0
  29. package/dist/types/src/components/index.d.ts +4 -1
  30. package/dist/types/src/composables/field.d.ts +17 -0
  31. package/dist/types/src/index.d.ts +3 -0
  32. package/dist/types/src/types/index.d.ts +11 -0
  33. package/package.json +4 -1
  34. package/src/components/BaseAutocomplete.stories.js +56 -51
  35. package/src/components/BaseAutocomplete.vue +25 -8
  36. package/src/components/BaseAutocompleteFetch.stories.js +67 -65
  37. package/src/components/BaseAutocompleteFetch.vue +9 -29
  38. package/src/components/BaseBelongsTo.stories.js +72 -82
  39. package/src/components/BaseBelongsTo.vue +10 -11
  40. package/src/components/BaseButtonGroup.stories.js +11 -10
  41. package/src/components/BaseButtonGroup.vue +22 -9
  42. package/src/components/BaseCharacterCounter.stories.js +1 -1
  43. package/src/components/BaseDatePicker.stories.js +13 -9
  44. package/src/components/BaseDatePicker.vue +25 -8
  45. package/src/components/BaseDateSelect.stories.js +15 -9
  46. package/src/components/BaseDateSelect.vue +20 -8
  47. package/src/components/BaseField.vue +109 -0
  48. package/src/components/BaseFieldI18n.stories.js +38 -0
  49. package/src/components/BaseFieldI18n.vue +162 -0
  50. package/src/components/BaseFileUploader.stories.js +3 -3
  51. package/src/components/BaseFileUploader.vue +3 -3
  52. package/src/components/BaseForm.vue +298 -0
  53. package/src/components/BaseFormField.ts +117 -0
  54. package/src/components/BaseHasMany.stories.js +25 -10
  55. package/src/components/BaseHasMany.vue +9 -9
  56. package/src/components/BaseInput.stories.js +27 -14
  57. package/src/components/BaseInput.vue +17 -8
  58. package/src/components/BaseInputError.vue +7 -0
  59. package/src/components/BaseInputPercent.stories.js +10 -3
  60. package/src/components/BaseInputPercent.vue +2 -1
  61. package/src/components/BaseLocaleForm.vue +142 -0
  62. package/src/components/BaseMediaLibrary.stories.js +7 -6
  63. package/src/components/BaseMediaLibrary.vue +32 -31
  64. package/src/components/BaseMenu.vue +1 -1
  65. package/src/components/BaseNumberForm.vue +67 -0
  66. package/src/components/BasePassword.stories.js +9 -4
  67. package/src/components/BasePassword.vue +49 -44
  68. package/src/components/BasePasswordForm.vue +59 -0
  69. package/src/components/BaseRadioGroup.stories.js +9 -8
  70. package/src/components/BaseRadioGroup.vue +17 -3
  71. package/src/components/BaseSelect.stories.js +15 -2
  72. package/src/components/BaseSelect.vue +26 -10
  73. package/src/components/BaseSwitch.stories.js +7 -0
  74. package/src/components/BaseSwitch.vue +134 -124
  75. package/src/components/BaseTagAutocomplete.stories.js +21 -14
  76. package/src/components/BaseTagAutocomplete.vue +25 -14
  77. package/src/components/BaseTagAutocompleteFetch.stories.js +37 -21
  78. package/src/components/BaseTagAutocompleteFetch.vue +5 -5
  79. package/src/components/BaseTextarea.stories.js +11 -3
  80. package/src/components/BaseTextarea.vue +20 -6
  81. package/src/components/BaseTextareaAutoresize.stories.js +11 -2
  82. package/src/components/BaseTextareaAutoresize.vue +28 -4
  83. package/src/components/BaseTextareaForm.vue +101 -0
  84. package/src/components/BaseTimeline.vue +1 -1
  85. package/src/components/BaseTimelineItem.vue +4 -4
  86. package/src/components/index.ts +6 -0
  87. package/src/composables/field.ts +100 -0
  88. package/src/index.ts +11 -1
  89. package/src/types/index.ts +12 -0
@@ -0,0 +1,100 @@
1
+ import { Ref } from 'vue';
2
+
3
+ interface Config {
4
+ name: Ref<string | null | undefined>;
5
+ required: Ref<boolean>;
6
+ hasError: Ref<boolean | undefined>;
7
+ emit: any;
8
+ errorType?: string;
9
+ labelClass?: string;
10
+ }
11
+
12
+ export function useField(config: Config) {
13
+ const name = config.name;
14
+ const required = config.required;
15
+ const hasError = config.hasError;
16
+ const emit = config.emit;
17
+ const errorType = config.errorType ?? null;
18
+ const labelClass = config.labelClass ?? null;
19
+
20
+ // Injections
21
+
22
+ const fieldRequired = inject('field:required', ref(false)) as Ref<boolean>;
23
+ const fieldName = inject('field:name', ref('')) as Ref<string>;
24
+
25
+ const fieldOnUpdate = inject('field:onUpdate', () => {
26
+ return;
27
+ }) as () => void;
28
+
29
+ const getErrorMessageByName = inject(
30
+ 'form:getErrorMessageByName',
31
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
32
+ (name: string) => {
33
+ return null;
34
+ }
35
+ ) as (name: string) => string | null | undefined;
36
+
37
+ const setErrorType = inject(
38
+ 'field:setErrorType',
39
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
40
+ (errorType: string | null) => {
41
+ return;
42
+ }
43
+ ) as (errorType: string | null) => void;
44
+
45
+ if (errorType) {
46
+ setErrorType(errorType);
47
+ }
48
+
49
+ const setLabelClass = inject(
50
+ 'field:setLabelClass',
51
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
52
+ (labelClass: string | string[]) => {
53
+ return;
54
+ }
55
+ ) as (errorType: string | string[]) => void;
56
+
57
+ if (labelClass) {
58
+ setLabelClass(labelClass);
59
+ }
60
+
61
+ const requiredInternal = computed((): boolean => {
62
+ if (required.value) {
63
+ return required.value;
64
+ }
65
+
66
+ return fieldRequired.value;
67
+ });
68
+
69
+ const nameInternal = computed((): string => {
70
+ if (name.value) {
71
+ return name.value;
72
+ }
73
+
74
+ return fieldName.value;
75
+ });
76
+
77
+ const errorMessageInternal = computed((): string | null | undefined => {
78
+ return getErrorMessageByName(nameInternal.value);
79
+ });
80
+
81
+ const hasErrorInternal = computed((): boolean => {
82
+ if (hasError.value) {
83
+ return hasError.value;
84
+ }
85
+
86
+ return !!errorMessageInternal.value;
87
+ });
88
+
89
+ function emitUpdate(value: any) {
90
+ emit('update:modelValue', value);
91
+ fieldOnUpdate();
92
+ }
93
+ return {
94
+ requiredInternal,
95
+ nameInternal,
96
+ hasErrorInternal,
97
+ errorMessageInternal,
98
+ emitUpdate,
99
+ };
100
+ }
package/src/index.ts CHANGED
@@ -2,7 +2,7 @@ import axios, { AxiosInstance } from 'axios';
2
2
  import { App } from 'vue';
3
3
  import * as components from './components';
4
4
  import QueryString from 'qs';
5
- import { createI18n, I18n } from 'vue-i18n';
5
+ import { createI18n, I18n, Locale } from 'vue-i18n';
6
6
  import en from '@/lang/en.json';
7
7
  import fr from '@/lang/fr.json';
8
8
  import { useDialogsStore } from './stores/dialogs';
@@ -12,12 +12,14 @@ import { useSystemAlertStore } from './stores/systemAlerts';
12
12
  const messages = { en, fr };
13
13
 
14
14
  import './assets/main.css';
15
+ import { Locales } from './types';
15
16
 
16
17
  export interface Options {
17
18
  // eslint-disable-next-line @typescript-eslint/ban-types
18
19
  i18n?: I18n<typeof messages, {}, {}, string, true>;
19
20
  http?: AxiosInstance;
20
21
  upload_url?: string;
22
+ locales?: Locales;
21
23
  formatQueryString?: (params: Record<string, any>) => string;
22
24
  parseQueryString?: (params: string) => Record<string, any>;
23
25
  }
@@ -29,6 +31,10 @@ const config = {
29
31
  messages: { en, fr },
30
32
  }),
31
33
  http: axios.create(),
34
+ locales: {
35
+ en: 'English',
36
+ fr: 'Français',
37
+ } as Locales,
32
38
  upload_url: '/api/upload',
33
39
  formatQueryString(params: Record<string, any>) {
34
40
  return QueryString.stringify(params, {
@@ -55,6 +61,10 @@ function install(app: App, options?: Options) {
55
61
  config.http = options.http;
56
62
  }
57
63
 
64
+ if (options?.locales) {
65
+ config.locales = options.locales;
66
+ }
67
+
58
68
  if (options?.upload_url) {
59
69
  config.upload_url = options.upload_url;
60
70
  }
@@ -4,6 +4,18 @@ import { RouteLocationRaw } from 'vue-router';
4
4
  import { UploadedFile } from './UploadedFile';
5
5
  import { Notification as AppNotification } from './Notification';
6
6
 
7
+ export type Locales = { [locale: string]: string };
8
+
9
+ export enum Method {
10
+ post = 'post',
11
+ patch = 'patch',
12
+ }
13
+
14
+ export enum DataFormat {
15
+ json = 'json',
16
+ formData = 'formData',
17
+ }
18
+
7
19
  export interface Breadcrumb {
8
20
  icon?: string;
9
21
  to: RouteLocationRaw;