@dereekb/dbx-form 13.9.0 → 13.10.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/fesm2022/dereekb-dbx-form-calendar.mjs +60 -60
- package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2022/{dereekb-dbx-form-expand.field.component-Bp5_uO1A.mjs → dereekb-dbx-form-expand.field.component-C-U67kCE.mjs} +4 -4
- package/fesm2022/{dereekb-dbx-form-expand.field.component-Bp5_uO1A.mjs.map → dereekb-dbx-form-expand.field.component-C-U67kCE.mjs.map} +1 -1
- package/fesm2022/{dereekb-dbx-form-flex.wrapper.component-CpOHCk87.mjs → dereekb-dbx-form-flex.wrapper.component-DIDKGVO5.mjs} +4 -4
- package/fesm2022/{dereekb-dbx-form-flex.wrapper.component-CpOHCk87.mjs.map → dereekb-dbx-form-flex.wrapper.component-DIDKGVO5.mjs.map} +1 -1
- package/fesm2022/{dereekb-dbx-form-info.field.component-B0cFprvc.mjs → dereekb-dbx-form-info.field.component-CfUse-zd.mjs} +4 -4
- package/fesm2022/{dereekb-dbx-form-info.field.component-B0cFprvc.mjs.map → dereekb-dbx-form-info.field.component-CfUse-zd.mjs.map} +1 -1
- package/fesm2022/{dereekb-dbx-form-info.wrapper.component-18n632L-.mjs → dereekb-dbx-form-info.wrapper.component-BdtiodXl.mjs} +4 -4
- package/fesm2022/{dereekb-dbx-form-info.wrapper.component-18n632L-.mjs.map → dereekb-dbx-form-info.wrapper.component-BdtiodXl.mjs.map} +1 -1
- package/fesm2022/dereekb-dbx-form-mapbox.mjs +30 -30
- package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form-quiz.mjs +28 -28
- package/fesm2022/dereekb-dbx-form-quiz.mjs.map +1 -1
- package/fesm2022/{dereekb-dbx-form-section.wrapper.component-vq21oG6v.mjs → dereekb-dbx-form-section.wrapper.component-6BCFOu3o.mjs} +4 -4
- package/fesm2022/{dereekb-dbx-form-section.wrapper.component-vq21oG6v.mjs.map → dereekb-dbx-form-section.wrapper.component-6BCFOu3o.mjs.map} +1 -1
- package/fesm2022/{dereekb-dbx-form-style.wrapper.component-BbKj-IHD.mjs → dereekb-dbx-form-style.wrapper.component-BJs4BnH0.mjs} +4 -4
- package/fesm2022/{dereekb-dbx-form-style.wrapper.component-BbKj-IHD.mjs.map → dereekb-dbx-form-style.wrapper.component-BJs4BnH0.mjs.map} +1 -1
- package/fesm2022/dereekb-dbx-form.mjs +1297 -748
- package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
- package/lib/forge/field/wrapper/_wrapper.scss +51 -4
- package/lib/forge/preset/_preset.scss +30 -16
- package/lib/form/_form.scss +1 -57
- package/package.json +26 -25
- package/types/dereekb-dbx-form.d.ts +788 -367
|
@@ -46,16 +46,63 @@ $dbx-forge-form-field-slider-thumb-margin: 22px;
|
|
|
46
46
|
letter-spacing: normal;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
// Boolean fields (mat-checkbox / mat-slide-toggle): make the whole content
|
|
50
|
+
// box clickable. Stretches the Material `<label for="...">` to fill the
|
|
51
|
+
// rectangle so native HTML label-click delegation toggles the control on
|
|
52
|
+
// any click in the box. No overlay and no positioning resets, so MDC
|
|
53
|
+
// ripple and focus indicator stay anchored where Material expects.
|
|
54
|
+
//
|
|
55
|
+
// Disabled state already applies `pointer-events: none` on
|
|
56
|
+
// `.dbx-forge-form-field-content` (see formfield.wrapper.component.ts),
|
|
57
|
+
// so disabled clicks remain blocked.
|
|
58
|
+
dbx-forge-form-field-wrapper .dbx-forge-form-field-content:has(mat-checkbox),
|
|
59
|
+
dbx-forge-form-field-wrapper .dbx-forge-form-field-content:has(mat-slide-toggle) {
|
|
60
|
+
cursor: pointer;
|
|
61
|
+
|
|
62
|
+
mat-checkbox,
|
|
63
|
+
mat-slide-toggle {
|
|
64
|
+
display: block;
|
|
65
|
+
width: 100%;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.mdc-form-field {
|
|
69
|
+
display: flex;
|
|
70
|
+
width: 100%;
|
|
71
|
+
align-items: center;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Negative margins cancel the wrapper's 16/16/8 padding so the label's
|
|
75
|
+
// hit-area reaches the outlined edges; matching padding restores visual
|
|
76
|
+
// spacing for the label text itself. Padding-left/inline-start is left
|
|
77
|
+
// alone so Material's gap between the control and the label text is
|
|
78
|
+
// preserved.
|
|
79
|
+
.mdc-form-field > label {
|
|
80
|
+
flex: 1 1 auto;
|
|
81
|
+
align-self: stretch;
|
|
82
|
+
display: flex;
|
|
83
|
+
align-items: center;
|
|
84
|
+
margin: -16px -16px -8px 0;
|
|
85
|
+
padding-top: 16px;
|
|
86
|
+
padding-right: 16px;
|
|
87
|
+
padding-bottom: 8px;
|
|
88
|
+
cursor: pointer;
|
|
89
|
+
min-height: 0;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
49
93
|
// Shared working bar spacing used by both the working field and working wrapper field.
|
|
50
94
|
.dbx-forge-working-bar {
|
|
51
95
|
margin-top: 4px;
|
|
52
96
|
}
|
|
53
97
|
|
|
54
98
|
// Flex layout wrapper: ng-forge's GroupFieldComponent applies `display: grid`
|
|
55
|
-
// and `gap: var(--df-grid-row-gap)` via :host styling
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
|
|
99
|
+
// and `gap: var(--df-grid-row-gap)` via :host styling, and ContainerFieldComponent
|
|
100
|
+
// applies `display: block`. Both are scoped via attribute selectors and tie
|
|
101
|
+
// class-selector specificity, so override with `!important` whenever our
|
|
102
|
+
// `dbx-flex-group` class is present so the flex sizing classes work.
|
|
103
|
+
// The dbx-flex-N children use padding for spacing instead of gap.
|
|
104
|
+
.df-group.dbx-flex-group,
|
|
105
|
+
.df-container.dbx-flex-group {
|
|
59
106
|
display: flex !important;
|
|
60
107
|
flex-wrap: wrap;
|
|
61
108
|
gap: 0 !important;
|
|
@@ -21,38 +21,52 @@
|
|
|
21
21
|
width: 100%;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
dbx-forge-form-field-wrapper {
|
|
25
|
+
> .dbx-forge-form-field-wrapper {
|
|
26
|
+
margin-top: 0;
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
> .dbx-forge-form-field-outline {
|
|
29
|
+
.dbx-forge-form-field-outline-leading {
|
|
30
|
+
display: none;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.dbx-forge-form-field-outline-leading,
|
|
34
|
+
.dbx-forge-form-field-outline-notch,
|
|
35
|
+
.dbx-forge-form-field-outline-trailing {
|
|
36
|
+
border: 0;
|
|
37
|
+
}
|
|
30
38
|
}
|
|
31
39
|
|
|
32
|
-
.
|
|
40
|
+
.dbx-forge-form-field-outline-label {
|
|
33
41
|
margin-left: -4px; // align with the input
|
|
34
42
|
}
|
|
35
43
|
|
|
36
|
-
|
|
44
|
+
.dbx-forge-form-field-content {
|
|
45
|
+
padding: 0;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
> .mat-mdc-form-field-subscript-wrapper {
|
|
50
|
+
display: none;
|
|
37
51
|
}
|
|
38
52
|
}
|
|
39
53
|
}
|
|
40
54
|
|
|
41
|
-
.dbx-section-page-header-search-bar-with-bottom-bar
|
|
42
|
-
> .
|
|
43
|
-
.
|
|
44
|
-
.
|
|
55
|
+
.dbx-section-page-header-search-bar-with-bottom-bar dbx-forge-form-field-wrapper > .dbx-forge-form-field-wrapper {
|
|
56
|
+
> .dbx-forge-form-field-outline {
|
|
57
|
+
.dbx-forge-form-field-outline-notch,
|
|
58
|
+
.dbx-forge-form-field-outline-trailing {
|
|
45
59
|
border-bottom: var(--mdc-outlined-text-field-outline-width) solid;
|
|
46
60
|
border-radius: 0;
|
|
47
61
|
}
|
|
48
62
|
}
|
|
49
63
|
|
|
50
64
|
&:hover,
|
|
51
|
-
|
|
52
|
-
> .
|
|
53
|
-
.
|
|
54
|
-
.
|
|
55
|
-
border-bottom: var(--mdc-outlined-text-field-focus-outline-width)
|
|
65
|
+
&:focus-within {
|
|
66
|
+
> .dbx-forge-form-field-outline {
|
|
67
|
+
.dbx-forge-form-field-outline-notch,
|
|
68
|
+
.dbx-forge-form-field-outline-trailing {
|
|
69
|
+
border-bottom-width: var(--mdc-outlined-text-field-focus-outline-width);
|
|
56
70
|
}
|
|
57
71
|
}
|
|
58
72
|
}
|
package/lib/form/_form.scss
CHANGED
|
@@ -4,61 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
// MARK: Mixin
|
|
6
6
|
@mixin core() {
|
|
7
|
-
// Forge styled box: outlined box around fields that don't use mat-form-field (checkbox, toggle, slider).
|
|
8
|
-
// Mirrors the Material outlined form-field appearance (border-radius, padding, min-height, hint styling).
|
|
9
|
-
.dbx-forge-styled-box {
|
|
10
|
-
mat-checkbox,
|
|
11
|
-
mat-slide-toggle {
|
|
12
|
-
border: 1px solid var(--mdc-outlined-text-field-outline-color, var(--mat-sys-outline, rgba(0, 0, 0, 0.38)));
|
|
13
|
-
border-radius: var(--mdc-outlined-text-field-container-shape, 8px);
|
|
14
|
-
padding: 0 16px;
|
|
15
|
-
display: block;
|
|
16
|
-
|
|
17
|
-
&:hover {
|
|
18
|
-
border-color: var(--mdc-outlined-text-field-hover-outline-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
mat-checkbox,
|
|
23
|
-
mat-slide-toggle {
|
|
24
|
-
.mdc-form-field {
|
|
25
|
-
width: 100%;
|
|
26
|
-
|
|
27
|
-
.mdc-label {
|
|
28
|
-
user-select: none;
|
|
29
|
-
width: 100%;
|
|
30
|
-
min-height: 56px;
|
|
31
|
-
display: inline-flex;
|
|
32
|
-
align-items: center;
|
|
33
|
-
padding-top: 6px;
|
|
34
|
-
padding-bottom: 6px;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// Style the hint to match Material's .mat-mdc-form-field-subscript-wrapper / .mat-mdc-form-field-bottom-align / .mat-mdc-form-field-hint-wrapper.
|
|
40
|
-
// We can't add those classes directly since ng-forge renders the element, so we mirror their styles.
|
|
41
|
-
.mat-hint {
|
|
42
|
-
display: block;
|
|
43
|
-
padding: 0 16px;
|
|
44
|
-
-moz-osx-font-smoothing: grayscale;
|
|
45
|
-
-webkit-font-smoothing: antialiased;
|
|
46
|
-
font-family: var(--mat-form-field-subscript-text-font, var(--mat-sys-body-small-font));
|
|
47
|
-
line-height: var(--mat-form-field-subscript-text-line-height, var(--mat-sys-body-small-line-height));
|
|
48
|
-
font-size: var(--mat-form-field-subscript-text-size, var(--mat-sys-body-small-size));
|
|
49
|
-
letter-spacing: var(--mat-form-field-subscript-text-tracking, var(--mat-sys-body-small-tracking));
|
|
50
|
-
font-weight: var(--mat-form-field-subscript-text-weight, var(--mat-sys-body-small-weight));
|
|
51
|
-
color: var(--mat-form-field-subscript-text-color, var(--mat-sys-on-surface-variant, rgba(0, 0, 0, 0.6)));
|
|
52
|
-
|
|
53
|
-
// Matches .mat-mdc-form-field-bottom-align::before spacing
|
|
54
|
-
&::before {
|
|
55
|
-
content: '';
|
|
56
|
-
display: inline-block;
|
|
57
|
-
height: 16px;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
7
|
// Generic forge disabled class for fields that only need CSS-based disabling.
|
|
63
8
|
.dbx-forge-disabled {
|
|
64
9
|
opacity: 0.38;
|
|
@@ -88,8 +33,7 @@
|
|
|
88
33
|
}
|
|
89
34
|
|
|
90
35
|
// Reduce opacity on form fields to indicate disabled state
|
|
91
|
-
.mat-mdc-form-field
|
|
92
|
-
.dbx-forge-styled-box {
|
|
36
|
+
.mat-mdc-form-field {
|
|
93
37
|
opacity: 0.38;
|
|
94
38
|
}
|
|
95
39
|
|
package/package.json
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/dbx-form",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.10.1",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@angular/cdk": "^21.2.
|
|
6
|
-
"@angular/common": "21.2.
|
|
7
|
-
"@angular/core": "21.2.
|
|
8
|
-
"@angular/forms": "21.2.
|
|
9
|
-
"@angular/material": "^21.2.
|
|
10
|
-
"@angular/material-date-fns-adapter": "21.2.
|
|
11
|
-
"@angular/platform-browser": "21.2.
|
|
5
|
+
"@angular/cdk": "^21.2.8",
|
|
6
|
+
"@angular/common": "21.2.10",
|
|
7
|
+
"@angular/core": "21.2.10",
|
|
8
|
+
"@angular/forms": "21.2.10",
|
|
9
|
+
"@angular/material": "^21.2.8",
|
|
10
|
+
"@angular/material-date-fns-adapter": "21.2.8",
|
|
11
|
+
"@angular/platform-browser": "21.2.10",
|
|
12
12
|
"@bobbyquantum/ngx-editor": "21.0.0",
|
|
13
|
-
"@dereekb/date": "13.
|
|
14
|
-
"@dereekb/dbx-core": "13.
|
|
15
|
-
"@dereekb/dbx-web": "13.
|
|
16
|
-
"@dereekb/model": "13.
|
|
17
|
-
"@dereekb/rxjs": "13.
|
|
18
|
-
"@dereekb/util": "13.
|
|
19
|
-
"@dereekb/vitest": "13.
|
|
20
|
-
"@ng-forge/dynamic-forms": "
|
|
21
|
-
"@ng-forge/dynamic-forms-material": "0.8.0-next.
|
|
22
|
-
"@ng-web-apis/geolocation": "^5.
|
|
13
|
+
"@dereekb/date": "13.10.1",
|
|
14
|
+
"@dereekb/dbx-core": "13.10.1",
|
|
15
|
+
"@dereekb/dbx-web": "13.10.1",
|
|
16
|
+
"@dereekb/model": "13.10.1",
|
|
17
|
+
"@dereekb/rxjs": "13.10.1",
|
|
18
|
+
"@dereekb/util": "13.10.1",
|
|
19
|
+
"@dereekb/vitest": "13.10.1",
|
|
20
|
+
"@ng-forge/dynamic-forms": "git+https://git@github.com/dereekb/ng-forge#e3059f8881fb39b1b1d279cd89486469dbad226d",
|
|
21
|
+
"@ng-forge/dynamic-forms-material": "0.8.0-next.4",
|
|
22
|
+
"@ng-web-apis/geolocation": "^5.2.0",
|
|
23
23
|
"@ngbracket/ngx-layout": "^21.0.0",
|
|
24
|
-
"@ngrx/component-store": "^21.
|
|
24
|
+
"@ngrx/component-store": "^21.1.0",
|
|
25
25
|
"@ngx-formly/core": "git+https://git@github.com/dereekb/ngx-formly#996d1041c8d2afbe429985a5ad394e59327bfa1d",
|
|
26
26
|
"@ngx-formly/material": "git+https://git@github.com/dereekb/ngx-formly#02e615006744374a587b5d35de3b2d137e2e05a8",
|
|
27
27
|
"@uirouter/core": "^6.1.2",
|
|
28
|
-
"angular-calendar": "^0.32.
|
|
28
|
+
"angular-calendar": "^0.32.2",
|
|
29
29
|
"change-case-all": "^2.1.0",
|
|
30
|
-
"date-fns": "^4.
|
|
31
|
-
"mapbox-gl": "^3.
|
|
30
|
+
"date-fns": "^4.1.0",
|
|
31
|
+
"mapbox-gl": "^3.22.0",
|
|
32
32
|
"ng-overlay-container": "^21.0.1",
|
|
33
33
|
"ngx-mapbox-gl": "git+https://git@github.com/dereekb/ngx-mapbox-gl#3f1d25b0661bc48abbd415dc79ca7f66568bae2e",
|
|
34
|
-
"ngx-mat-input-tel": "^21.
|
|
35
|
-
"rxjs": "^7.8.
|
|
34
|
+
"ngx-mat-input-tel": "^21.4.1",
|
|
35
|
+
"rxjs": "^7.8.2"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"tslib": "^2.3.0"
|
|
@@ -61,5 +61,6 @@
|
|
|
61
61
|
},
|
|
62
62
|
"module": "fesm2022/dereekb-dbx-form.mjs",
|
|
63
63
|
"typings": "types/dereekb-dbx-form.d.ts",
|
|
64
|
-
"sideEffects": false
|
|
64
|
+
"sideEffects": false,
|
|
65
|
+
"type": "module"
|
|
65
66
|
}
|