@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.
Files changed (42) hide show
  1. package/fesm2022/dereekb-dbx-form-calendar.mjs +425 -144
  2. package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
  3. package/fesm2022/dereekb-dbx-form-expand.field.component-Bp5_uO1A.mjs +56 -0
  4. package/fesm2022/dereekb-dbx-form-expand.field.component-Bp5_uO1A.mjs.map +1 -0
  5. package/fesm2022/dereekb-dbx-form-flex.wrapper.component-CpOHCk87.mjs +39 -0
  6. package/fesm2022/dereekb-dbx-form-flex.wrapper.component-CpOHCk87.mjs.map +1 -0
  7. package/fesm2022/dereekb-dbx-form-info.field.component-B0cFprvc.mjs +50 -0
  8. package/fesm2022/dereekb-dbx-form-info.field.component-B0cFprvc.mjs.map +1 -0
  9. package/fesm2022/dereekb-dbx-form-info.wrapper.component-18n632L-.mjs +61 -0
  10. package/fesm2022/dereekb-dbx-form-info.wrapper.component-18n632L-.mjs.map +1 -0
  11. package/fesm2022/dereekb-dbx-form-mapbox.mjs +639 -32
  12. package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
  13. package/fesm2022/dereekb-dbx-form-quiz.mjs +46 -55
  14. package/fesm2022/dereekb-dbx-form-quiz.mjs.map +1 -1
  15. package/fesm2022/dereekb-dbx-form-section.wrapper.component-vq21oG6v.mjs +52 -0
  16. package/fesm2022/dereekb-dbx-form-section.wrapper.component-vq21oG6v.mjs.map +1 -0
  17. package/fesm2022/dereekb-dbx-form-style.wrapper.component-BbKj-IHD.mjs +42 -0
  18. package/fesm2022/dereekb-dbx-form-style.wrapper.component-BbKj-IHD.mjs.map +1 -0
  19. package/fesm2022/dereekb-dbx-form.mjs +13688 -5235
  20. package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
  21. package/lib/forge/_forge.scss +14 -0
  22. package/lib/forge/field/_field.scss +12 -0
  23. package/lib/forge/field/selection/_selection.scss +18 -0
  24. package/lib/forge/field/selection/list/_list.scss +17 -0
  25. package/lib/forge/field/selection/pickable/_pickable.scss +36 -0
  26. package/lib/forge/field/selection/searchable/_searchable.scss +34 -0
  27. package/lib/forge/field/selection/sourceselect/_sourceselect.scss +30 -0
  28. package/lib/forge/field/wrapper/_wrapper.scss +72 -0
  29. package/lib/{formly/form/_form.scss → forge/preset/_preset.scss} +3 -12
  30. package/lib/forge/style/_shared.scss +36 -0
  31. package/lib/form/_form.scss +109 -0
  32. package/lib/formly/field/selection/sourceselect/_sourceselect.scss +0 -7
  33. package/lib/formly/field/texteditor/_texteditor.scss +8 -0
  34. package/lib/formly/field/value/array/_array.scss +6 -0
  35. package/lib/formly/field/value/phone/_phone.scss +4 -1
  36. package/lib/style/_all-core.scss +2 -2
  37. package/lib/style/_all-theme.scss +2 -2
  38. package/lib/style/_all-typography.scss +1 -1
  39. package/package.json +16 -14
  40. package/types/dereekb-dbx-form-calendar.d.ts +306 -100
  41. package/types/dereekb-dbx-form-mapbox.d.ts +304 -8
  42. 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
- .mat-mdc-form-field-infix {
19
- padding: 11px;
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-formly {
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
+ }
@@ -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) {
@@ -4,13 +4,6 @@
4
4
 
5
5
  // MARK: Mixin
6
6
  @mixin core() {
7
- .dbx-source-select-field-loading {
8
- position: absolute;
9
- bottom: 0px;
10
- left: -16px;
11
- right: -16px;
12
- }
13
-
14
7
  .dbx-source-select-field-content {
15
8
  display: flex;
16
9
 
@@ -56,6 +56,14 @@
56
56
  color: var(--mat-sys-on-surface);
57
57
  }
58
58
  }
59
+
60
+ .dbx-texteditor-field-disabled {
61
+ .dbx-texteditor-field-input,
62
+ .dbx-texteditor-field-menu {
63
+ opacity: 0.38;
64
+ pointer-events: none;
65
+ }
66
+ }
59
67
  }
60
68
 
61
69
  @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: 105px;
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;
@@ -2,7 +2,7 @@
2
2
  @use '../formly/formly';
3
3
  @use '../layout/layout';
4
4
  @use '../formly/field/field';
5
- @use '../formly/form/form' as forms;
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 forms.core();
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 '../formly/form/form' as forms;
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 forms.theme($theme-config);
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
  }
@@ -3,7 +3,7 @@
3
3
  @use '../formly/formly';
4
4
  @use '../layout/layout';
5
5
  @use '../formly/field/field';
6
- @use '../formly/form/form' as forms;
6
+ @use '../forge/forge';
7
7
  @use '../extension/extension';
8
8
 
9
9
  // Includes all of the typographic styles.
package/package.json CHANGED
@@ -1,22 +1,24 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-form",
3
- "version": "13.7.0",
3
+ "version": "13.9.0",
4
4
  "peerDependencies": {
5
- "@angular/cdk": "21.2.3",
6
- "@angular/common": "21.2.3",
7
- "@angular/core": "21.2.3",
8
- "@angular/forms": "21.2.3",
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.3",
11
+ "@angular/platform-browser": "21.2.4",
12
12
  "@bobbyquantum/ngx-editor": "21.0.0",
13
- "@dereekb/date": "13.7.0",
14
- "@dereekb/dbx-core": "13.7.0",
15
- "@dereekb/dbx-web": "13.7.0",
16
- "@dereekb/model": "13.7.0",
17
- "@dereekb/rxjs": "13.7.0",
18
- "@dereekb/util": "13.7.0",
19
- "@dereekb/vitest": "13.7.0",
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",