@dereekb/dbx-form 13.7.0 → 13.9.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.
- package/fesm2022/dereekb-dbx-form-calendar.mjs +425 -144
- package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form-expand.field.component-Bp5_uO1A.mjs +56 -0
- package/fesm2022/dereekb-dbx-form-expand.field.component-Bp5_uO1A.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-form-flex.wrapper.component-CpOHCk87.mjs +39 -0
- package/fesm2022/dereekb-dbx-form-flex.wrapper.component-CpOHCk87.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-form-info.field.component-B0cFprvc.mjs +50 -0
- package/fesm2022/dereekb-dbx-form-info.field.component-B0cFprvc.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-form-info.wrapper.component-18n632L-.mjs +61 -0
- package/fesm2022/dereekb-dbx-form-info.wrapper.component-18n632L-.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-form-mapbox.mjs +639 -32
- package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form-quiz.mjs +46 -55
- package/fesm2022/dereekb-dbx-form-quiz.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form-section.wrapper.component-vq21oG6v.mjs +52 -0
- package/fesm2022/dereekb-dbx-form-section.wrapper.component-vq21oG6v.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-form-style.wrapper.component-BbKj-IHD.mjs +42 -0
- package/fesm2022/dereekb-dbx-form-style.wrapper.component-BbKj-IHD.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-form.mjs +13688 -5235
- package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
- package/lib/forge/_forge.scss +14 -0
- package/lib/forge/field/_field.scss +12 -0
- package/lib/forge/field/selection/_selection.scss +18 -0
- package/lib/forge/field/selection/list/_list.scss +17 -0
- package/lib/forge/field/selection/pickable/_pickable.scss +36 -0
- package/lib/forge/field/selection/searchable/_searchable.scss +34 -0
- package/lib/forge/field/selection/sourceselect/_sourceselect.scss +30 -0
- package/lib/forge/field/wrapper/_wrapper.scss +72 -0
- package/lib/{formly/form/_form.scss → forge/preset/_preset.scss} +3 -12
- package/lib/forge/style/_shared.scss +36 -0
- package/lib/form/_form.scss +109 -0
- package/lib/formly/field/selection/sourceselect/_sourceselect.scss +0 -7
- package/lib/formly/field/texteditor/_texteditor.scss +8 -0
- package/lib/formly/field/value/array/_array.scss +6 -0
- package/lib/formly/field/value/phone/_phone.scss +4 -1
- package/lib/style/_all-core.scss +2 -2
- package/lib/style/_all-theme.scss +2 -2
- package/lib/style/_all-typography.scss +1 -1
- package/package.json +16 -14
- package/types/dereekb-dbx-form-calendar.d.ts +306 -100
- package/types/dereekb-dbx-form-mapbox.d.ts +304 -8
- package/types/dereekb-dbx-form.d.ts +8837 -2720
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
@use './style/shared';
|
|
2
|
+
@use './preset/preset';
|
|
3
|
+
@use './field/field';
|
|
4
|
+
|
|
5
|
+
@mixin all-forge-core() {
|
|
6
|
+
@include shared.core();
|
|
7
|
+
@include preset.core();
|
|
8
|
+
@include field.all-field-core();
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@mixin all-forge-theme($theme-config) {
|
|
12
|
+
@include preset.theme($theme-config);
|
|
13
|
+
@include field.all-field-theme($theme-config);
|
|
14
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
@use './selection/selection';
|
|
2
|
+
@use './wrapper/wrapper';
|
|
3
|
+
|
|
4
|
+
@mixin all-field-core() {
|
|
5
|
+
@include selection.all-selection-core();
|
|
6
|
+
@include wrapper.core();
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
@mixin all-field-theme($theme-config) {
|
|
10
|
+
@include selection.all-selection-theme($theme-config);
|
|
11
|
+
@include wrapper.theme($theme-config);
|
|
12
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
@use './list/list';
|
|
2
|
+
@use './pickable/pickable';
|
|
3
|
+
@use './searchable/searchable';
|
|
4
|
+
@use './sourceselect/sourceselect';
|
|
5
|
+
|
|
6
|
+
@mixin all-selection-core() {
|
|
7
|
+
@include list.core();
|
|
8
|
+
@include pickable.core();
|
|
9
|
+
@include searchable.core();
|
|
10
|
+
@include sourceselect.core();
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@mixin all-selection-theme($theme-config) {
|
|
14
|
+
@include list.theme($theme-config);
|
|
15
|
+
@include pickable.theme($theme-config);
|
|
16
|
+
@include searchable.theme($theme-config);
|
|
17
|
+
@include sourceselect.theme($theme-config);
|
|
18
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// MARK: Variables
|
|
2
|
+
$default-dbx-forge-list-item-field-height: 300px;
|
|
3
|
+
|
|
4
|
+
// MARK: Mixin
|
|
5
|
+
@mixin core() {
|
|
6
|
+
.dbx-forge-list-item-field {
|
|
7
|
+
max-height: var(--dbx-forge-list-item-field-height, $default-dbx-forge-list-item-field-height);
|
|
8
|
+
overflow: auto;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.dbx-forge-list-field-disabled {
|
|
12
|
+
--mat-list-list-item-disabled-label-text-opacity: 1; // the forge disabled state already applies an opacity
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@mixin theme($theme-config) {
|
|
17
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// MARK: Mixin
|
|
2
|
+
@mixin core() {
|
|
3
|
+
// Container margin and chip list max-height are defined in formly's _pickable.scss
|
|
4
|
+
// and apply to both formly and forge contexts (same class names).
|
|
5
|
+
//
|
|
6
|
+
// Bare input styling is provided by the .dbx-forge-bare-input class
|
|
7
|
+
// applied directly in the pickable templates.
|
|
8
|
+
|
|
9
|
+
// List variant styling
|
|
10
|
+
.dbx-pickable-item-field-list {
|
|
11
|
+
.dbx-pickable-item-field-list-content {
|
|
12
|
+
max-height: 300px;
|
|
13
|
+
overflow-y: auto;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.dbx-pickable-item-field-select-all {
|
|
17
|
+
padding: 4px 0;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.dbx-pickable-select-all-button {
|
|
21
|
+
background: none;
|
|
22
|
+
border: none;
|
|
23
|
+
cursor: pointer;
|
|
24
|
+
padding: 4px 16px;
|
|
25
|
+
font-size: 0.875rem;
|
|
26
|
+
color: var(--mat-sys-primary, inherit);
|
|
27
|
+
|
|
28
|
+
&:hover {
|
|
29
|
+
text-decoration: underline;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@mixin theme($theme-config) {
|
|
36
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
@mixin core() {
|
|
2
|
+
dbx-forge-searchable-text-field,
|
|
3
|
+
dbx-forge-searchable-chip-field {
|
|
4
|
+
display: block;
|
|
5
|
+
width: 100%;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.dbx-searchable-field {
|
|
9
|
+
width: 100%;
|
|
10
|
+
|
|
11
|
+
> .dbx-searchable-text-field-input,
|
|
12
|
+
> .dbx-searchable-chip-field-input {
|
|
13
|
+
width: 100%;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Bare input styling is provided by the .dbx-forge-bare-input class
|
|
18
|
+
// applied directly in the searchable templates.
|
|
19
|
+
//
|
|
20
|
+
// The show/hide pattern (.dbx-searchable-text-field-has-value) and
|
|
21
|
+
// .dbx-searchable-text-field-value width are defined in formly's _searchable.scss
|
|
22
|
+
// and apply to both formly and forge contexts (same class names).
|
|
23
|
+
|
|
24
|
+
// Reveal the search input when the ancestor form-field wrapper has focus.
|
|
25
|
+
// The forge wrapper uses :focus-within instead of the .mat-focused class.
|
|
26
|
+
.dbx-forge-form-field-wrapper:focus-within .dbx-searchable-text-field-has-value.dbx-searchable-text-field-show-value .dbx-searchable-text-field-input {
|
|
27
|
+
margin-top: 8px;
|
|
28
|
+
opacity: unset;
|
|
29
|
+
height: unset;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@mixin theme($theme-config) {
|
|
34
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// MARK: Mixin
|
|
2
|
+
@mixin core() {
|
|
3
|
+
.dbx-source-select-field-loading {
|
|
4
|
+
position: absolute;
|
|
5
|
+
bottom: 5px;
|
|
6
|
+
left: 0px;
|
|
7
|
+
right: 0px;
|
|
8
|
+
overflow: hidden;
|
|
9
|
+
border-radius: 999px;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
dbx-forge-source-select-field {
|
|
13
|
+
display: block;
|
|
14
|
+
width: 100%;
|
|
15
|
+
|
|
16
|
+
// mat-form-field needs relative positioning for the loading bar
|
|
17
|
+
.mat-mdc-form-field {
|
|
18
|
+
position: relative;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Suffix button styling inside mat-form-field
|
|
22
|
+
.dbx-source-select-field-suffix {
|
|
23
|
+
display: flex;
|
|
24
|
+
align-items: center;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@mixin theme($theme-config) {
|
|
30
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
@use '../../../style/theming';
|
|
2
|
+
|
|
3
|
+
// MARK: Variables
|
|
4
|
+
$dbx-forge-form-field-slider-thumb-margin: 22px;
|
|
5
|
+
|
|
6
|
+
// MARK: Mixin
|
|
7
|
+
@mixin core() {
|
|
8
|
+
// Forge form-field wrapper: suppress child field label/hint/error inside the wrapper.
|
|
9
|
+
// The wrapper provides its own label (notched outline), hint, and error subscript.
|
|
10
|
+
dbx-forge-form-field-wrapper {
|
|
11
|
+
.slider-label,
|
|
12
|
+
mat-error,
|
|
13
|
+
[matError],
|
|
14
|
+
.mat-hint,
|
|
15
|
+
.df-mat-error,
|
|
16
|
+
.df-mat-hint {
|
|
17
|
+
display: none !important;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Slider margin fix for the form-field wrapper (mirrors the formly number slider fix).
|
|
22
|
+
// Adds margin so the slider thumb doesn't overlap the outlined border.
|
|
23
|
+
dbx-forge-form-field-wrapper .mat-mdc-slider {
|
|
24
|
+
margin: $dbx-forge-form-field-slider-thumb-margin $dbx-forge-form-field-slider-thumb-margin 0;
|
|
25
|
+
width: calc(100% - #{$dbx-forge-form-field-slider-thumb-margin * 2}) !important;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// List selection field inside the form-field wrapper: reduce padding so the list
|
|
29
|
+
// items render at full width within the outlined border. Uses !important to
|
|
30
|
+
// override the component's scoped inline styles (ViewEncapsulation.Emulated
|
|
31
|
+
// adds attribute selectors that raise specificity above global rules).
|
|
32
|
+
dbx-forge-form-field-wrapper .dbx-forge-form-field-content:has(dbx-forge-list-selection-field) {
|
|
33
|
+
padding-left: 0 !important;
|
|
34
|
+
padding-right: 0 !important;
|
|
35
|
+
padding-bottom: 0 !important;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// The wrapper's mat-mdc-form-field host class causes Angular Material's
|
|
39
|
+
// form-field line-height (24px) and letter-spacing (0.496px) to cascade
|
|
40
|
+
// into all descendants. For list selection fields this distorts the list
|
|
41
|
+
// item layout. Reset typography on the list field element so descendant
|
|
42
|
+
// components inherit normal values instead of the form-field overrides.
|
|
43
|
+
dbx-forge-form-field-wrapper dbx-forge-list-selection-field {
|
|
44
|
+
display: block;
|
|
45
|
+
line-height: normal;
|
|
46
|
+
letter-spacing: normal;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Shared working bar spacing used by both the working field and working wrapper field.
|
|
50
|
+
.dbx-forge-working-bar {
|
|
51
|
+
margin-top: 4px;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Flex layout wrapper: ng-forge's GroupFieldComponent applies `display: grid`
|
|
55
|
+
// and `gap: var(--df-grid-row-gap)` via :host styling (scoped attribute selector).
|
|
56
|
+
// Override both when our `dbx-flex-group` class is present so the flex sizing
|
|
57
|
+
// classes work. The dbx-flex-N children use padding for spacing instead of gap.
|
|
58
|
+
.df-group.dbx-flex-group {
|
|
59
|
+
display: flex !important;
|
|
60
|
+
flex-wrap: wrap;
|
|
61
|
+
gap: 0 !important;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.dbx-form-repeat-array-field {
|
|
65
|
+
.dbx-form-repeat-array-bar .dbx-chip {
|
|
66
|
+
margin-right: 3px;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@mixin theme($theme-config) {
|
|
72
|
+
}
|
|
@@ -6,18 +6,9 @@
|
|
|
6
6
|
@mixin core() {
|
|
7
7
|
.dbx-form-search-form {
|
|
8
8
|
width: 100%;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
// adapt the search form to fit in the header
|
|
12
|
-
// TODO: Consider test that other one-field input forms fit in the dbx-section-page-header
|
|
13
|
-
.dbx-section-page-header-search-form {
|
|
14
|
-
.mat-mdc-form-field .mat-mdc-form-field-wrapper {
|
|
15
|
-
margin: 0;
|
|
16
|
-
padding: 0;
|
|
17
9
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
10
|
+
.mat-mdc-notch-piece.mdc-notched-outline__notch {
|
|
11
|
+
width: 100%;
|
|
21
12
|
}
|
|
22
13
|
}
|
|
23
14
|
|
|
@@ -26,7 +17,7 @@
|
|
|
26
17
|
display: flex;
|
|
27
18
|
align-items: center;
|
|
28
19
|
|
|
29
|
-
.dbx-
|
|
20
|
+
.dbx-forge {
|
|
30
21
|
width: 100%;
|
|
31
22
|
}
|
|
32
23
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Bare input class for forge fields rendered outside <mat-form-field>.
|
|
2
|
+
// Resets the native input and applies Material body-large typography so
|
|
3
|
+
// inputs inside the forge wrapper match their formly/mat-form-field counterparts.
|
|
4
|
+
//
|
|
5
|
+
// Apply by adding the class directly to <input> elements in forge templates.
|
|
6
|
+
@mixin core() {
|
|
7
|
+
// Resets native <input> elements that render inside the forge form-field wrapper
|
|
8
|
+
// (outside a <mat-form-field>) so they match Material body-large typography.
|
|
9
|
+
// Used by pickable filter inputs and searchable text/chip field inputs.
|
|
10
|
+
input.dbx-forge-bare-input {
|
|
11
|
+
border: none;
|
|
12
|
+
outline: none;
|
|
13
|
+
width: 100%;
|
|
14
|
+
background: transparent;
|
|
15
|
+
font-family: var(--mat-sys-body-large-font);
|
|
16
|
+
font-size: var(--mat-sys-body-large-size);
|
|
17
|
+
line-height: var(--mat-sys-body-large-line-height);
|
|
18
|
+
letter-spacing: var(--mat-sys-body-large-tracking);
|
|
19
|
+
padding: 5px 0 3px;
|
|
20
|
+
|
|
21
|
+
&::placeholder {
|
|
22
|
+
color: var(--mat-sys-on-surface-variant);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.dbx-forge {
|
|
27
|
+
// pushes icons in fields like dbxForgeDateTimeField() away from the edge
|
|
28
|
+
.mat-mdc-form-field-icon-prefix {
|
|
29
|
+
padding-left: 4px;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.mat-mdc-form-field-icon-suffix {
|
|
33
|
+
padding-right: 4px;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
package/lib/form/_form.scss
CHANGED
|
@@ -4,6 +4,115 @@
|
|
|
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
|
+
// Generic forge disabled class for fields that only need CSS-based disabling.
|
|
63
|
+
.dbx-forge-disabled {
|
|
64
|
+
opacity: 0.38;
|
|
65
|
+
pointer-events: none;
|
|
66
|
+
--mat-list-list-item-disabled-label-text-opacity: unset;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Form-level disabled state: disables all interactive elements inside a forge form.
|
|
70
|
+
// Applied to <dbx-forge> host when the form is disabled. This handles built-in ng-forge
|
|
71
|
+
// material fields (input, textarea, select, datepicker, toggle, checkbox) that don't
|
|
72
|
+
// have custom disabled propagation. Custom forge field components additionally use
|
|
73
|
+
// inject(FORM_OPTIONS) for programmatic disabled handling (e.g. disabling FormControls).
|
|
74
|
+
.dbx-forge-form-disabled {
|
|
75
|
+
// Disable pointer events on all standard interactive elements
|
|
76
|
+
input,
|
|
77
|
+
textarea,
|
|
78
|
+
select,
|
|
79
|
+
button,
|
|
80
|
+
mat-select,
|
|
81
|
+
mat-slider,
|
|
82
|
+
mat-checkbox,
|
|
83
|
+
mat-slide-toggle,
|
|
84
|
+
mat-chip-listbox,
|
|
85
|
+
mat-chip-grid,
|
|
86
|
+
.mat-mdc-form-field {
|
|
87
|
+
pointer-events: none;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Reduce opacity on form fields to indicate disabled state
|
|
91
|
+
.mat-mdc-form-field,
|
|
92
|
+
.dbx-forge-styled-box {
|
|
93
|
+
opacity: 0.38;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Reduce opacity on hint/description/error elements that render outside mat-form-field.
|
|
97
|
+
// These custom forge field components render subscript text (hints, errors, descriptions)
|
|
98
|
+
// as siblings beside their mat-form-field containers, so the rule above does not reach them.
|
|
99
|
+
.dbx-forge-datetime-hint,
|
|
100
|
+
.dbx-forge-datetime-error,
|
|
101
|
+
.dbx-forge-datetime-desc,
|
|
102
|
+
.dbx-forge-daterange-field > mat-hint,
|
|
103
|
+
.dbx-forge-daterange-field > mat-error,
|
|
104
|
+
.dbx-form-repeat-array-bar,
|
|
105
|
+
.dbx-form-repeat-array-footer {
|
|
106
|
+
opacity: 0.38;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// The expand trigger has no mat-form-field wrapping and needs both visual
|
|
110
|
+
// and interaction disabling.
|
|
111
|
+
dbx-forge-expand-field {
|
|
112
|
+
opacity: 0.38;
|
|
113
|
+
pointer-events: none;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
7
116
|
}
|
|
8
117
|
|
|
9
118
|
@mixin theme($theme-config) {
|
|
@@ -9,6 +9,12 @@
|
|
|
9
9
|
border: dotted 3px #999;
|
|
10
10
|
min-height: 100px;
|
|
11
11
|
transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
|
|
12
|
+
|
|
13
|
+
// Hide the placeholder by default; CDK adds .cdk-drag-placeholder
|
|
14
|
+
// when it activates the element during a drag operation.
|
|
15
|
+
&:not(.cdk-drag-placeholder) {
|
|
16
|
+
display: none;
|
|
17
|
+
}
|
|
12
18
|
}
|
|
13
19
|
|
|
14
20
|
.dbx-form-repeat-array {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
@use '../../../../style/theming';
|
|
2
2
|
|
|
3
3
|
// MARK: Variables
|
|
4
|
+
$extension-input-width: 40px !default;
|
|
5
|
+
$country-selector-width: 85px !default;
|
|
4
6
|
|
|
5
7
|
// MARK: Mixin
|
|
6
8
|
@mixin core() {
|
|
@@ -12,7 +14,7 @@
|
|
|
12
14
|
|
|
13
15
|
.dbx-form-phone-field-phone-content button.country-selector {
|
|
14
16
|
opacity: 100;
|
|
15
|
-
width:
|
|
17
|
+
width: var(--dbx-phone-field-country-selector-width, #{$country-selector-width});
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
.dbx-form-phone-field .ngx-mat-tel-input-container input:not(.country-search) {
|
|
@@ -27,6 +29,7 @@
|
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
.dbx-form-phone-field-extension-input {
|
|
32
|
+
width: var(--dbx-phone-field-extension-input-width, #{$extension-input-width});
|
|
30
33
|
border: 0;
|
|
31
34
|
border-bottom: 1px solid var(--mat-sys-outline);
|
|
32
35
|
background: none;
|
package/lib/style/_all-core.scss
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
@use '../formly/formly';
|
|
3
3
|
@use '../layout/layout';
|
|
4
4
|
@use '../formly/field/field';
|
|
5
|
-
@use '../
|
|
5
|
+
@use '../forge/forge';
|
|
6
6
|
@use '../extension/extension';
|
|
7
7
|
|
|
8
8
|
// Includes all theming config
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
@include form.core();
|
|
11
11
|
@include formly.core();
|
|
12
12
|
@include field.all-field-core();
|
|
13
|
-
@include
|
|
13
|
+
@include forge.all-forge-core();
|
|
14
14
|
@include layout.core();
|
|
15
15
|
@include extension.all-extension-core($theme-config);
|
|
16
16
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
@use '../formly/formly';
|
|
3
3
|
@use '../layout/layout';
|
|
4
4
|
@use '../formly/field/field';
|
|
5
|
-
@use '../
|
|
5
|
+
@use '../forge/forge';
|
|
6
6
|
@use '../extension/extension';
|
|
7
7
|
|
|
8
8
|
// Includes all theming config
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
@include form.theme($theme-config);
|
|
11
11
|
@include formly.theme($theme-config);
|
|
12
12
|
@include field.all-field-theme($theme-config);
|
|
13
|
-
@include
|
|
13
|
+
@include forge.all-forge-theme($theme-config);
|
|
14
14
|
@include layout.theme($theme-config);
|
|
15
15
|
@include extension.all-extension-theme($theme-config);
|
|
16
16
|
}
|
package/package.json
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/dbx-form",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.9.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@angular/cdk": "21.2.3",
|
|
6
|
-
"@angular/common": "21.2.
|
|
7
|
-
"@angular/core": "21.2.
|
|
8
|
-
"@angular/forms": "21.2.
|
|
9
|
-
"@angular/material": "21.2.3",
|
|
5
|
+
"@angular/cdk": "^21.2.3",
|
|
6
|
+
"@angular/common": "21.2.4",
|
|
7
|
+
"@angular/core": "21.2.4",
|
|
8
|
+
"@angular/forms": "21.2.4",
|
|
9
|
+
"@angular/material": "^21.2.3",
|
|
10
10
|
"@angular/material-date-fns-adapter": "21.2.3",
|
|
11
|
-
"@angular/platform-browser": "21.2.
|
|
11
|
+
"@angular/platform-browser": "21.2.4",
|
|
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.
|
|
13
|
+
"@dereekb/date": "13.9.0",
|
|
14
|
+
"@dereekb/dbx-core": "13.9.0",
|
|
15
|
+
"@dereekb/dbx-web": "13.9.0",
|
|
16
|
+
"@dereekb/model": "13.9.0",
|
|
17
|
+
"@dereekb/rxjs": "13.9.0",
|
|
18
|
+
"@dereekb/util": "13.9.0",
|
|
19
|
+
"@dereekb/vitest": "13.9.0",
|
|
20
|
+
"@ng-forge/dynamic-forms": "0.8.0-next.2",
|
|
21
|
+
"@ng-forge/dynamic-forms-material": "0.8.0-next.2",
|
|
20
22
|
"@ng-web-apis/geolocation": "^5.1.0",
|
|
21
23
|
"@ngbracket/ngx-layout": "^21.0.0",
|
|
22
24
|
"@ngrx/component-store": "^21.0.0",
|