@ng-forge/dynamic-forms-ionic 0.9.0-next.9 → 0.10.0-next.1
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.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ng-forge/dynamic-forms-ionic",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0-next.1",
|
|
4
4
|
"description": "Ionic integration for @ng-forge/dynamic-forms. Pre-built Ionic form components for mobile and desktop.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -25,6 +25,16 @@
|
|
|
25
25
|
"ng-forge"
|
|
26
26
|
],
|
|
27
27
|
"sideEffects": true,
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"default": "./fesm2022/ng-forge-dynamic-forms-ionic.mjs",
|
|
31
|
+
"types": "./types/ng-forge-dynamic-forms-ionic.d.ts"
|
|
32
|
+
},
|
|
33
|
+
"./styles/defaults": "./styles/_defaults.scss",
|
|
34
|
+
"./package.json": {
|
|
35
|
+
"default": "./package.json"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
28
38
|
"engines": {
|
|
29
39
|
"node": ">=20"
|
|
30
40
|
},
|
|
@@ -33,7 +43,7 @@
|
|
|
33
43
|
"@angular/core": "~21.2.0",
|
|
34
44
|
"@angular/forms": "~21.2.0",
|
|
35
45
|
"@ionic/angular": ">=7.0.0",
|
|
36
|
-
"@ng-forge/dynamic-forms": "~0.
|
|
46
|
+
"@ng-forge/dynamic-forms": "~0.10.0-next.1",
|
|
37
47
|
"rxjs": ">=7.0.0"
|
|
38
48
|
},
|
|
39
49
|
"dependencies": {
|
|
@@ -41,14 +51,5 @@
|
|
|
41
51
|
"tslib": "^2.3.0"
|
|
42
52
|
},
|
|
43
53
|
"module": "fesm2022/ng-forge-dynamic-forms-ionic.mjs",
|
|
44
|
-
"typings": "types/ng-forge-dynamic-forms-ionic.d.ts"
|
|
45
|
-
"exports": {
|
|
46
|
-
"./package.json": {
|
|
47
|
-
"default": "./package.json"
|
|
48
|
-
},
|
|
49
|
-
".": {
|
|
50
|
-
"types": "./types/ng-forge-dynamic-forms-ionic.d.ts",
|
|
51
|
-
"default": "./fesm2022/ng-forge-dynamic-forms-ionic.mjs"
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
+
"typings": "types/ng-forge-dynamic-forms-ionic.d.ts"
|
|
54
55
|
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Ionic form defaults.
|
|
3
|
+
*
|
|
4
|
+
* Opinionated host-framework defaults for Ionic apps. Library SCSS uses
|
|
5
|
+
* `var(--df-name, structural-fallback)` for layout-essential vars so forms
|
|
6
|
+
* render usefully without any opt-in. These mixins layer in the rest —
|
|
7
|
+
* color, typography, focus accent — that an Ionic app expects.
|
|
8
|
+
*
|
|
9
|
+
* Usage (in your app's global stylesheet):
|
|
10
|
+
*
|
|
11
|
+
* @use '@ng-forge/dynamic-forms-ionic/styles/defaults' as df;
|
|
12
|
+
*
|
|
13
|
+
* :root {
|
|
14
|
+
* @include df.apply-ionic-form-defaults;
|
|
15
|
+
* }
|
|
16
|
+
*
|
|
17
|
+
* Ionic doesn't auto-style components when `.ng-invalid` is set, so error
|
|
18
|
+
* styling depends on the `.ng-touched` / `.ng-invalid` compat classes from
|
|
19
|
+
* `withLegacyStatusClasses()`. If you opt into that feature, also include
|
|
20
|
+
* `apply-ionic-legacy-error-styles` once at the document level — the mixin
|
|
21
|
+
* emits unscoped `ion-*` selectors and matches globally regardless of where
|
|
22
|
+
* it's included:
|
|
23
|
+
*
|
|
24
|
+
* provideDynamicForm(...withIonicFields(), withLegacyStatusClasses())
|
|
25
|
+
*
|
|
26
|
+
* @include df.apply-ionic-legacy-error-styles;
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
@mixin form-grid-defaults {
|
|
30
|
+
--df-grid-columns: 12;
|
|
31
|
+
--df-grid-gap: 0.5rem;
|
|
32
|
+
--df-grid-row-gap: 0.5rem;
|
|
33
|
+
|
|
34
|
+
--df-grid-gap-sm: 0.5rem;
|
|
35
|
+
--df-grid-gap-md: 0.5rem;
|
|
36
|
+
--df-grid-gap-lg: 0.5rem;
|
|
37
|
+
--df-grid-gap-xl: 0.5rem;
|
|
38
|
+
|
|
39
|
+
--df-grid-row-gap-sm: 0.5rem;
|
|
40
|
+
--df-grid-row-gap-md: 0.5rem;
|
|
41
|
+
--df-grid-row-gap-lg: 0.5rem;
|
|
42
|
+
--df-grid-row-gap-xl: 0.5rem;
|
|
43
|
+
|
|
44
|
+
--df-array-item-gap: var(--df-grid-row-gap);
|
|
45
|
+
|
|
46
|
+
--df-focus-color: var(--ion-color-primary, #3880ff);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@mixin form-page-defaults {
|
|
50
|
+
--df-page-custom-spacing: 1.5rem;
|
|
51
|
+
--df-page-transition-duration: 0.3s;
|
|
52
|
+
--df-page-transition-timing: ease-in-out;
|
|
53
|
+
--df-page-slide-offset: -10px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@mixin form-ionic-defaults {
|
|
57
|
+
--df-field-gap: 0.5rem;
|
|
58
|
+
--df-label-font-weight: 500;
|
|
59
|
+
--df-label-color: inherit;
|
|
60
|
+
--df-hint-color: var(--ion-color-medium, #92949c);
|
|
61
|
+
--df-hint-font-size: 0.875rem;
|
|
62
|
+
--df-error-color: var(--ion-color-danger, #eb445a);
|
|
63
|
+
--df-error-font-size: 0.875rem;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@mixin apply-ionic-form-defaults {
|
|
67
|
+
@include form-grid-defaults;
|
|
68
|
+
@include form-page-defaults;
|
|
69
|
+
@include form-ionic-defaults;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Error-state colors for Ionic components, keyed on the legacy ng-touched /
|
|
73
|
+
// ng-invalid classes from `withLegacyStatusClasses()`. The selectors are
|
|
74
|
+
// unscoped `ion-*` element matches — include once at the document level.
|
|
75
|
+
// Fallback values match Ionic's documented defaults so the rules still
|
|
76
|
+
// produce sensible colors if `--ion-color-danger` isn't defined for some
|
|
77
|
+
// reason (e.g. Ionic CSS not loaded yet, or themed-out).
|
|
78
|
+
@mixin apply-ionic-legacy-error-styles {
|
|
79
|
+
ion-input.ng-invalid.ng-touched,
|
|
80
|
+
ion-textarea.ng-invalid.ng-touched {
|
|
81
|
+
--highlight-color: var(--ion-color-danger, #eb445a);
|
|
82
|
+
--border-color: var(--ion-color-danger, #eb445a);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
ion-select.ng-invalid.ng-touched {
|
|
86
|
+
--highlight-color: var(--ion-color-danger, #eb445a);
|
|
87
|
+
--border-color: var(--ion-color-danger, #eb445a);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
ion-checkbox.ng-invalid.ng-touched {
|
|
91
|
+
--checkbox-background-checked: var(--ion-color-danger, #eb445a);
|
|
92
|
+
--border-color: var(--ion-color-danger, #eb445a);
|
|
93
|
+
--border-color-checked: var(--ion-color-danger, #eb445a);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
ion-radio.ng-invalid.ng-touched {
|
|
97
|
+
--color: var(--ion-color-danger, #eb445a);
|
|
98
|
+
--color-checked: var(--ion-color-danger, #eb445a);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
ion-range.ng-invalid.ng-touched {
|
|
102
|
+
--bar-background: var(--ion-color-danger, #eb445a);
|
|
103
|
+
--knob-background: var(--ion-color-danger, #eb445a);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
ion-toggle.ng-invalid.ng-touched {
|
|
107
|
+
--track-background: var(--ion-color-danger-tint, #f4707d);
|
|
108
|
+
--track-background-checked: var(--ion-color-danger, #eb445a);
|
|
109
|
+
--handle-background-checked: var(--ion-color-danger-contrast, #ffffff);
|
|
110
|
+
}
|
|
111
|
+
}
|