@quickflo/quickforms-quasar 0.3.0

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 (37) hide show
  1. package/README.md +285 -0
  2. package/dist/components/QuasarAllOfField.vue.d.ts +31 -0
  3. package/dist/components/QuasarAllOfField.vue.d.ts.map +1 -0
  4. package/dist/components/QuasarArrayField.vue.d.ts +31 -0
  5. package/dist/components/QuasarArrayField.vue.d.ts.map +1 -0
  6. package/dist/components/QuasarBooleanField.vue.d.ts +31 -0
  7. package/dist/components/QuasarBooleanField.vue.d.ts.map +1 -0
  8. package/dist/components/QuasarDateField.vue.d.ts +31 -0
  9. package/dist/components/QuasarDateField.vue.d.ts.map +1 -0
  10. package/dist/components/QuasarDateTimeField.vue.d.ts +31 -0
  11. package/dist/components/QuasarDateTimeField.vue.d.ts.map +1 -0
  12. package/dist/components/QuasarEnumField.vue.d.ts +31 -0
  13. package/dist/components/QuasarEnumField.vue.d.ts.map +1 -0
  14. package/dist/components/QuasarMultiEnumField.vue.d.ts +31 -0
  15. package/dist/components/QuasarMultiEnumField.vue.d.ts.map +1 -0
  16. package/dist/components/QuasarNumberField.vue.d.ts +31 -0
  17. package/dist/components/QuasarNumberField.vue.d.ts.map +1 -0
  18. package/dist/components/QuasarObjectField.vue.d.ts +31 -0
  19. package/dist/components/QuasarObjectField.vue.d.ts.map +1 -0
  20. package/dist/components/QuasarOneOfField.vue.d.ts +31 -0
  21. package/dist/components/QuasarOneOfField.vue.d.ts.map +1 -0
  22. package/dist/components/QuasarStringField.vue.d.ts +31 -0
  23. package/dist/components/QuasarStringField.vue.d.ts.map +1 -0
  24. package/dist/components/QuasarTimeField.vue.d.ts +31 -0
  25. package/dist/components/QuasarTimeField.vue.d.ts.map +1 -0
  26. package/dist/env.d.ts +7 -0
  27. package/dist/index.d.ts +18 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +8999 -0
  30. package/dist/registry.d.ts +30 -0
  31. package/dist/registry.d.ts.map +1 -0
  32. package/dist/style.css +1 -0
  33. package/dist/types.d.ts +143 -0
  34. package/dist/types.d.ts.map +1 -0
  35. package/dist/utils.d.ts +9 -0
  36. package/dist/utils.d.ts.map +1 -0
  37. package/package.json +57 -0
@@ -0,0 +1,30 @@
1
+ import { Component } from 'vue';
2
+ import { ComponentRegistry } from '@quickflo/quickforms';
3
+
4
+ /**
5
+ * Create a Quasar component registry with all built-in Quasar field components
6
+ *
7
+ * This provides a pre-configured registry with Quasar UI components (QInput, QSelect, etc.)
8
+ * that can be used directly with DynamicForm. Users can extend this registry with custom
9
+ * components or create their own from scratch.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { createQuasarRegistry } from '@quickflo/quickforms-quasar';
14
+ * import { DynamicForm } from '@quickflo/quickforms-vue';
15
+ * import { rankWith, isStringType } from '@quickflo/quickforms';
16
+ * import CustomPhoneField from './CustomPhoneField.vue';
17
+ *
18
+ * const registry = createQuasarRegistry();
19
+ *
20
+ * // Register custom component with higher priority
21
+ * registry.register('phone', CustomPhoneField, (schema) =>
22
+ * rankWith(10, isStringType(schema) && schema.format === 'phone')
23
+ * );
24
+ *
25
+ * // Use in form
26
+ * <DynamicForm :schema="schema" v-model="data" :options="{ registry }" />
27
+ * ```
28
+ */
29
+ export declare function createQuasarRegistry(): ComponentRegistry<Component>;
30
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,EACL,iBAAiB,EAelB,MAAM,sBAAsB,CAAC;AAe9B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAkFnE"}
package/dist/style.css ADDED
@@ -0,0 +1 @@
1
+ .datetime-picker-card[data-v-76abc7a3]{overflow:hidden}[data-v-76abc7a3] .datetime-date-picker .q-date__view,[data-v-76abc7a3] .datetime-time-picker .q-time{border:none!important;box-shadow:none!important}[data-v-76abc7a3] .datetime-date-picker,[data-v-76abc7a3] .datetime-time-picker{max-width:290px}
@@ -0,0 +1,143 @@
1
+ import { FormOptions as VueFormOptions } from '@quickflo/quickforms-vue';
2
+
3
+ interface VueComponentDefaults {
4
+ select?: {
5
+ autocomplete?: boolean;
6
+ autocompleteThreshold?: number;
7
+ };
8
+ array?: {
9
+ collapsible?: boolean;
10
+ defaultCollapsed?: boolean;
11
+ };
12
+ number?: {
13
+ prefix?: string;
14
+ suffix?: string;
15
+ };
16
+ hints?: {
17
+ showMode?: 'always' | 'focus' | 'hover';
18
+ };
19
+ }
20
+ /**
21
+ * Quasar-specific component defaults
22
+ * These are applied globally to all Quasar components unless overridden by x-quasar-props
23
+ */
24
+ export interface QuasarComponentDefaults extends VueComponentDefaults {
25
+ /** Global defaults applied to ALL Quasar components */
26
+ global?: {
27
+ /** CSS class(es) to apply to all components. Can be string or array. */
28
+ class?: string | string[];
29
+ /** Inline styles to apply to all components. */
30
+ style?: string | Record<string, string>;
31
+ /** Use outlined style for inputs. Default: false */
32
+ outlined?: boolean;
33
+ /** Use filled style for inputs. Default: false */
34
+ filled?: boolean;
35
+ /** Use dense mode for all components. Default: false */
36
+ dense?: boolean;
37
+ /** Use square borders. Default: false */
38
+ square?: boolean;
39
+ /** Use rounded borders. Default: false */
40
+ rounded?: boolean;
41
+ /** Global color for all components. Default: undefined */
42
+ color?: string;
43
+ /** Show bottom border only. Default: false */
44
+ borderless?: boolean;
45
+ /** Hide bottom space reserved for hint/error. Default: false */
46
+ hideBottomSpace?: boolean;
47
+ };
48
+ /** QInput-specific defaults */
49
+ input?: {
50
+ /** CSS class(es) for input fields */
51
+ class?: string | string[];
52
+ /** Inline styles for input fields */
53
+ style?: string | Record<string, string>;
54
+ /** Default outlined style. Default: false */
55
+ outlined?: boolean;
56
+ /** Default dense mode. Default: false */
57
+ dense?: boolean;
58
+ /** Show clear button. Default: false */
59
+ clearable?: boolean;
60
+ /** Input color. Default: undefined */
61
+ color?: string;
62
+ };
63
+ /** QSelect-specific defaults */
64
+ select?: {
65
+ /** Enable/disable autocomplete filtering. Default: true (enabled for all selects) */
66
+ autocomplete?: boolean;
67
+ /** CSS class(es) for select fields */
68
+ class?: string | string[];
69
+ /** Inline styles for select fields */
70
+ style?: string | Record<string, string>;
71
+ /** Default outlined style. Default: false */
72
+ outlined?: boolean;
73
+ /** Default dense mode. Default: false */
74
+ dense?: boolean;
75
+ /** Use chips for multiple selection. Default: false */
76
+ useChips?: boolean;
77
+ /** Select color. Default: undefined */
78
+ color?: string;
79
+ };
80
+ /** QCheckbox-specific defaults */
81
+ checkbox?: {
82
+ /** CSS class(es) for checkboxes */
83
+ class?: string | string[];
84
+ /** Inline styles for checkboxes */
85
+ style?: string | Record<string, string>;
86
+ /** Checkbox color. Default: 'primary' */
87
+ color?: string;
88
+ /** Keep color when unchecked. Default: false */
89
+ keepColor?: boolean;
90
+ /** Use dense mode. Default: false */
91
+ dense?: boolean;
92
+ };
93
+ /** QDate/QTime-specific defaults */
94
+ datetime?: {
95
+ /** CSS class(es) for datetime fields */
96
+ class?: string | string[];
97
+ /** Inline styles for datetime fields */
98
+ style?: string | Record<string, string>;
99
+ /** Date mask format. Default: 'YYYY-MM-DD' */
100
+ dateMask?: string;
101
+ /** Time mask format. Default: 'HH:mm:ss' */
102
+ timeMask?: string;
103
+ /** DateTime mask format. Default: 'YYYY-MM-DD HH:mm:ss' */
104
+ dateTimeMask?: string;
105
+ /** Color for date/time picker. Default: 'primary' */
106
+ color?: string;
107
+ };
108
+ /** QCard-specific defaults for arrays/objects */
109
+ card?: {
110
+ /** CSS class(es) for cards */
111
+ class?: string | string[];
112
+ /** Inline styles for cards */
113
+ style?: string | Record<string, string>;
114
+ /** Use flat style. Default: true */
115
+ flat?: boolean;
116
+ /** Show border. Default: true */
117
+ bordered?: boolean;
118
+ /** Use square borders. Default: false */
119
+ square?: boolean;
120
+ };
121
+ /** QExpansionItem-specific defaults for objects */
122
+ expansion?: {
123
+ /** CSS class(es) for expansion items */
124
+ class?: string | string[];
125
+ /** Inline styles for expansion items */
126
+ style?: string | Record<string, string>;
127
+ /** Start expanded. Default: true */
128
+ defaultOpened?: boolean;
129
+ /** Expansion icon. Default: undefined */
130
+ icon?: string;
131
+ /** Use dense mode. Default: false */
132
+ dense?: boolean;
133
+ };
134
+ }
135
+ /**
136
+ * Quasar-specific form options
137
+ * Extends Vue FormOptions with Quasar-specific componentDefaults
138
+ */
139
+ export interface QuasarFormOptions extends Omit<VueFormOptions, 'componentDefaults'> {
140
+ componentDefaults?: QuasarComponentDefaults;
141
+ }
142
+ export {};
143
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { QuasarComponentDefaults } from './types';
2
+ import { JSONSchema } from '@quickflo/quickforms';
3
+
4
+ /**
5
+ * Merges Quasar component defaults with schema-level props
6
+ * Priority (lowest to highest): global defaults -> component-specific defaults -> x-component-props -> x-quasar-props
7
+ */
8
+ export declare function mergeQuasarProps(schema: JSONSchema, componentDefaults: QuasarComponentDefaults | undefined, componentType: 'input' | 'select' | 'checkbox' | 'datetime' | 'card' | 'expansion'): Record<string, any>;
9
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAClB,iBAAiB,EAAE,uBAAuB,GAAG,SAAS,EACtD,aAAa,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,GACjF,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAarB"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@quickflo/quickforms-quasar",
3
+ "version": "0.3.0",
4
+ "description": "Quasar UI components for QuickForms - JSON Schema form generator",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "scripts": {
19
+ "build": "vite build",
20
+ "dev": "vite",
21
+ "dev:build": "vite build --watch",
22
+ "test": "vitest",
23
+ "typecheck": "tsc --noEmit"
24
+ },
25
+ "keywords": [
26
+ "quasar",
27
+ "vue3",
28
+ "jsonschema",
29
+ "forms",
30
+ "validation",
31
+ "veevalidate"
32
+ ],
33
+ "author": "",
34
+ "license": "MIT",
35
+ "peerDependencies": {
36
+ "quasar": "^2.0.0",
37
+ "vue": "^3.3.0"
38
+ },
39
+ "dependencies": {
40
+ "@quickflo/quickforms": "workspace:*",
41
+ "@quickflo/quickforms-vue": "workspace:*",
42
+ "vee-validate": "^4.12.0"
43
+ },
44
+ "devDependencies": {
45
+ "@quasar/extras": "^1.17.0",
46
+ "@quasar/vite-plugin": "^1.4.0",
47
+ "@types/node": "^20.0.0",
48
+ "@vitejs/plugin-vue": "^5.0.0",
49
+ "quasar": "^2.14.0",
50
+ "sass": "^1.94.2",
51
+ "typescript": "^5.3.0",
52
+ "vite": "^5.0.0",
53
+ "vite-plugin-dts": "^3.0.0",
54
+ "vitest": "^1.0.0",
55
+ "vue": "^3.4.0"
56
+ }
57
+ }