@futdevpro/fsm-dynamo 1.20.7 → 1.20.9
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/__documentations/2026-08-23-forms-v2-color-picker-settings.md +23 -20
- package/__documentations/2026-08-23-forms-v2-symbol-picker-settings.md +24 -0
- package/build/_modules/ngx-models/_enums/field-type.enum.d.ts +2 -0
- package/build/_modules/ngx-models/_enums/field-type.enum.d.ts.map +1 -1
- package/build/_modules/ngx-models/_enums/field-type.enum.js +2 -0
- package/build/_modules/ngx-models/_enums/field-type.enum.js.map +1 -1
- package/build/_modules/ngx-models/_models/control-models/forms-new/color-picker-field-new-settings.control-model.d.ts.map +1 -1
- package/build/_modules/ngx-models/_models/control-models/forms-new/color-picker-field-new-settings.control-model.js +15 -0
- package/build/_modules/ngx-models/_models/control-models/forms-new/color-picker-field-new-settings.control-model.js.map +1 -1
- package/build/_modules/ngx-models/_models/control-models/forms-new/emoji-picker-field-new-settings.control-model.d.ts +14 -0
- package/build/_modules/ngx-models/_models/control-models/forms-new/emoji-picker-field-new-settings.control-model.d.ts.map +1 -0
- package/build/_modules/ngx-models/_models/control-models/forms-new/emoji-picker-field-new-settings.control-model.js +23 -0
- package/build/_modules/ngx-models/_models/control-models/forms-new/emoji-picker-field-new-settings.control-model.js.map +1 -0
- package/build/_modules/ngx-models/_models/control-models/forms-new/field-new-types.d.ts +3 -1
- package/build/_modules/ngx-models/_models/control-models/forms-new/field-new-types.d.ts.map +1 -1
- package/build/_modules/ngx-models/_models/control-models/forms-new/icon-picker-field-new-settings.control-model.d.ts +17 -0
- package/build/_modules/ngx-models/_models/control-models/forms-new/icon-picker-field-new-settings.control-model.d.ts.map +1 -0
- package/build/_modules/ngx-models/_models/control-models/forms-new/icon-picker-field-new-settings.control-model.js +41 -0
- package/build/_modules/ngx-models/_models/control-models/forms-new/icon-picker-field-new-settings.control-model.js.map +1 -0
- package/build/_modules/ngx-models/_models/control-models/forms-new/index.d.ts +3 -0
- package/build/_modules/ngx-models/_models/control-models/forms-new/index.d.ts.map +1 -1
- package/build/_modules/ngx-models/_models/control-models/forms-new/index.js +3 -0
- package/build/_modules/ngx-models/_models/control-models/forms-new/index.js.map +1 -1
- package/build/_modules/ngx-models/_models/control-models/forms-new/picker-field-new-option.interface.d.ts +10 -0
- package/build/_modules/ngx-models/_models/control-models/forms-new/picker-field-new-option.interface.d.ts.map +1 -0
- package/build/_modules/ngx-models/_models/control-models/forms-new/picker-field-new-option.interface.js +3 -0
- package/build/_modules/ngx-models/_models/control-models/forms-new/picker-field-new-option.interface.js.map +1 -0
- package/package.json +1 -1
- package/src/_modules/ngx-models/_enums/field-type.enum.ts +4 -2
- package/src/_modules/ngx-models/_models/control-models/forms-new/color-picker-field-new-settings.control-model.ts +44 -21
- package/src/_modules/ngx-models/_models/control-models/forms-new/emoji-picker-field-new-settings.control-model.ts +24 -0
- package/src/_modules/ngx-models/_models/control-models/forms-new/field-new-types.ts +9 -5
- package/src/_modules/ngx-models/_models/control-models/forms-new/forms-new.spec.ts +65 -12
- package/src/_modules/ngx-models/_models/control-models/forms-new/icon-picker-field-new-settings.control-model.ts +52 -0
- package/src/_modules/ngx-models/_models/control-models/forms-new/index.ts +5 -2
- package/src/_modules/ngx-models/_models/control-models/forms-new/picker-field-new-option.interface.ts +9 -0
|
@@ -1,20 +1,23 @@
|
|
|
1
|
-
# Forms v2 ColorPicker settings — 2026-08-23
|
|
2
|
-
|
|
3
|
-
## Outcome
|
|
4
|
-
|
|
5
|
-
Forms v2 now exposes `DyFM_ColorPickerFieldNew_Settings` as the serializable bedrock Settings model for a
|
|
6
|
-
color-picker field. `DyFM_Field_Type.colorPicker` uses the stable `color-picker` discriminator.
|
|
7
|
-
|
|
8
|
-
The value contract is a CSS/browser-native `#RRGGBB` string.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
- `
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
# Forms v2 ColorPicker settings — 2026-08-23
|
|
2
|
+
|
|
3
|
+
## Outcome
|
|
4
|
+
|
|
5
|
+
Forms v2 now exposes `DyFM_ColorPickerFieldNew_Settings` as the serializable bedrock Settings model for a
|
|
6
|
+
color-picker field. `DyFM_Field_Type.colorPicker` uses the stable `color-picker` discriminator.
|
|
7
|
+
|
|
8
|
+
The value contract is a CSS/browser-native `#RRGGBB` string. The constructor adds that contract as a serializable
|
|
9
|
+
pattern validator while preserving consumer validators, so backend and Angular consumers share the same rule.
|
|
10
|
+
Rendering and interaction remain the responsibility of `@futdevpro/ngx-dynamo`; this package owns only the
|
|
11
|
+
framework-independent constructor and discriminated union.
|
|
12
|
+
|
|
13
|
+
## Public surface
|
|
14
|
+
|
|
15
|
+
- `DyFM_Field_Type.colorPicker`
|
|
16
|
+
- `DyFM_ColorPickerFieldNew_Settings`
|
|
17
|
+
- `DyFM_FieldNew_Settings_AnyType` includes the new settings class
|
|
18
|
+
|
|
19
|
+
## Verification
|
|
20
|
+
|
|
21
|
+
The Forms v2 settings suite verifies constructor persistence, the immutable discriminator, default hexadecimal
|
|
22
|
+
validation, and preservation of consumer validators. The complete package test and build gates must remain green
|
|
23
|
+
before publishing the patch release.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Forms V2 emoji and Material icon picker settings — 2026-08-23
|
|
2
|
+
|
|
3
|
+
## Outcome
|
|
4
|
+
|
|
5
|
+
The shared `@futdevpro/fsm-dynamo` Forms V2 contract now includes serializable settings for emoji and
|
|
6
|
+
Material Symbols pickers. Both types protect their field discriminator and can carry an optional curated
|
|
7
|
+
option catalog through the backend-safe Settings layer.
|
|
8
|
+
|
|
9
|
+
## Contracts
|
|
10
|
+
|
|
11
|
+
- `DyFM_EmojiPickerFieldNew_Settings` uses `DyFM_Field_Type.emojiPicker`, a string value, configurable
|
|
12
|
+
grid columns, and `DyFM_PickerFieldNew_Option[]`.
|
|
13
|
+
- `DyFM_IconPickerFieldNew_Settings` uses `DyFM_Field_Type.iconPicker`, the same option contract, and a
|
|
14
|
+
`DyFM_ButtonNewIconStyleType` preview style.
|
|
15
|
+
- Icon values accept Material Symbols ligature names such as `rocket_launch`; the settings constructor
|
|
16
|
+
adds the shared pattern validator without duplicating an equivalent consumer validator.
|
|
17
|
+
- Empty option arrays are intentional: the Angular renderer owns the default discovery catalog while
|
|
18
|
+
consumers can replace it with a serializable project-specific catalog.
|
|
19
|
+
|
|
20
|
+
## Verification
|
|
21
|
+
|
|
22
|
+
- TypeScript package build.
|
|
23
|
+
- Focused Forms V2 Jasmine settings tests.
|
|
24
|
+
- ESLint on the new settings and option-interface sources.
|
|
@@ -20,6 +20,8 @@ export declare enum DyFM_Field_Type {
|
|
|
20
20
|
chipMultiselect = "chipMultiselect",//
|
|
21
21
|
radioSelect = "radioSelect",//
|
|
22
22
|
colorPicker = "color-picker",
|
|
23
|
+
emojiPicker = "emoji-picker",
|
|
24
|
+
iconPicker = "icon-picker",
|
|
23
25
|
date = "date",
|
|
24
26
|
dateRange = "dateRange",
|
|
25
27
|
dateTime = "dateTime",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-type.enum.d.ts","sourceRoot":"","sources":["../../../../src/_modules/ngx-models/_enums/field-type.enum.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,oBAAY,eAAe;IAEzB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,YAAY,iBAAiB;IAC7B,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,UAAU,eAAe,CAAE,EAAE;IAC7B,eAAe,oBAAoB,CAAE,EAAE;IACvC,WAAW,gBAAgB,CAAE,EAAE;IAC/B,WAAW,iBAAiB;IAC5B,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAG/B,IAAI,SAAS;IACb,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,QAAQ,aAAa;IAGrB,UAAU,eAAc;IAGxB,UAAU,eAAe;CAa1B"}
|
|
1
|
+
{"version":3,"file":"field-type.enum.d.ts","sourceRoot":"","sources":["../../../../src/_modules/ngx-models/_enums/field-type.enum.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,oBAAY,eAAe;IAEzB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,YAAY,iBAAiB;IAC7B,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,UAAU,eAAe,CAAE,EAAE;IAC7B,eAAe,oBAAoB,CAAE,EAAE;IACvC,WAAW,gBAAgB,CAAE,EAAE;IAC/B,WAAW,iBAAiB;IAC5B,WAAW,iBAAiB;IAC5B,UAAU,gBAAgB;IAC1B,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAG/B,IAAI,SAAS;IACb,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,QAAQ,aAAa;IAGrB,UAAU,eAAc;IAGxB,UAAU,eAAe;CAa1B"}
|
|
@@ -25,6 +25,8 @@ var DyFM_Field_Type;
|
|
|
25
25
|
DyFM_Field_Type["chipMultiselect"] = "chipMultiselect";
|
|
26
26
|
DyFM_Field_Type["radioSelect"] = "radioSelect";
|
|
27
27
|
DyFM_Field_Type["colorPicker"] = "color-picker";
|
|
28
|
+
DyFM_Field_Type["emojiPicker"] = "emoji-picker";
|
|
29
|
+
DyFM_Field_Type["iconPicker"] = "icon-picker";
|
|
28
30
|
DyFM_Field_Type["date"] = "date";
|
|
29
31
|
DyFM_Field_Type["dateRange"] = "dateRange";
|
|
30
32
|
DyFM_Field_Type["dateTime"] = "dateTime";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-type.enum.js","sourceRoot":"","sources":["../../../../src/_modules/ngx-models/_enums/field-type.enum.ts"],"names":[],"mappings":";;;AACA;;GAEG;AACH,IAAY,
|
|
1
|
+
{"version":3,"file":"field-type.enum.js","sourceRoot":"","sources":["../../../../src/_modules/ngx-models/_enums/field-type.enum.ts"],"names":[],"mappings":";;;AACA;;GAEG;AACH,IAAY,eAkDX;AAlDD,WAAY,eAAe;IACzB,gBAAgB;IAChB,oCAAiB,CAAA;IACjB,wCAAqB,CAAA;IACrB,oCAAiB,CAAA;IACjB,gCAAa,CAAA;IACb,wCAAqB,CAAA;IACrB,wCAAqB,CAAA;IACrB,wCAAqB,CAAA;IACrB,gDAA6B,CAAA;IAC7B,oCAAiB,CAAA;IACjB,8CAA2B,CAAA;IAC3B,oCAAiB,CAAA;IACjB,8CAA2B,CAAA;IAC3B,oCAAiB,CAAA;IACjB,8CAA2B,CAAA;IAC3B,4CAAyB,CAAA;IACzB,sDAAmC,CAAA;IACnC,8CAA2B,CAAA;IAC3B,+CAA4B,CAAA;IAC5B,+CAA4B,CAAA;IAC5B,6CAA0B,CAAA;IAC1B,gCAAa,CAAA;IACb,0CAAuB,CAAA;IACvB,wCAAqB,CAAA;IACrB,kDAA+B,CAAA;IAE/B,aAAa;IACb,gCAAa,CAAA;IACb,kCAAe,CAAA;IACf,sCAAmB,CAAA;IACnB,wCAAqB,CAAA;IAErB,gBAAgB;IAChB,4CAAwB,CAAA;IAExB,UAAU;IACV,4CAAyB,CAAA;IAEzB,QAAQ;IACR,qBAAqB;IACrB;;;MAGE;IACF,qBAAqB;IAErB,qBAAqB;IACrB,uEAAuE;AAEzE,CAAC,EAlDW,eAAe,+BAAf,eAAe,QAkD1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-picker-field-new-settings.control-model.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ngx-models/_models/control-models/forms-new/color-picker-field-new-settings.control-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"color-picker-field-new-settings.control-model.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ngx-models/_models/control-models/forms-new/color-picker-field-new-settings.control-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EACL,sBAAsB,EAEvB,MAAM,oCAAoC,CAAC;AAI5C;;;;;GAKG;AACH,qBAAa,iCAAkC,SAAQ,sBAAsB,CAAC,MAAM,CAAC;IACnF,SAAkB,IAAI,EAAE,eAAe,CAAC,WAAW,CAA+B;IAElF,qFAAqF;gBACzE,GAAG,EAAE,OAAO,CAAC,iCAAiC,CAAC;CAwB5D"}
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DyFM_ColorPickerFieldNew_Settings = void 0;
|
|
4
4
|
const field_type_enum_1 = require("../../../_enums/field-type.enum");
|
|
5
|
+
const field_new_validator_type_enum_1 = require("../../../_enums/forms-new/field-new-validator-type.enum");
|
|
5
6
|
const field_new_settings_control_model_1 = require("./field-new-settings.control-model");
|
|
7
|
+
const DYNAMO_COLOR_PICKER_HEX_PATTERN = '^#[0-9a-fA-F]{6}$';
|
|
6
8
|
/**
|
|
7
9
|
* Forms v2 color-picker settings.
|
|
8
10
|
*
|
|
@@ -17,6 +19,19 @@ class DyFM_ColorPickerFieldNew_Settings extends field_new_settings_control_model
|
|
|
17
19
|
const rest = { ...set };
|
|
18
20
|
Reflect.deleteProperty(rest, 'type');
|
|
19
21
|
Object.assign(this, rest);
|
|
22
|
+
const validators = this.validators ?? [];
|
|
23
|
+
const hasHexValidator = validators.some((validator) => validator.type === field_new_validator_type_enum_1.DyFM_FieldNew_Validator_Type.pattern
|
|
24
|
+
&& validator.value === DYNAMO_COLOR_PICKER_HEX_PATTERN);
|
|
25
|
+
if (!hasHexValidator) {
|
|
26
|
+
this.validators = [
|
|
27
|
+
...validators,
|
|
28
|
+
{
|
|
29
|
+
type: field_new_validator_type_enum_1.DyFM_FieldNew_Validator_Type.pattern,
|
|
30
|
+
value: DYNAMO_COLOR_PICKER_HEX_PATTERN,
|
|
31
|
+
message: 'Enter a color as #RRGGBB.',
|
|
32
|
+
},
|
|
33
|
+
];
|
|
34
|
+
}
|
|
20
35
|
}
|
|
21
36
|
}
|
|
22
37
|
exports.DyFM_ColorPickerFieldNew_Settings = DyFM_ColorPickerFieldNew_Settings;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-picker-field-new-settings.control-model.js","sourceRoot":"","sources":["../../../../../../src/_modules/ngx-models/_models/control-models/forms-new/color-picker-field-new-settings.control-model.ts"],"names":[],"mappings":";;;AAAA,qEAAkE;AAClE,
|
|
1
|
+
{"version":3,"file":"color-picker-field-new-settings.control-model.js","sourceRoot":"","sources":["../../../../../../src/_modules/ngx-models/_models/control-models/forms-new/color-picker-field-new-settings.control-model.ts"],"names":[],"mappings":";;;AAAA,qEAAkE;AAClE,2GAAuG;AACvG,yFAG4C;AAE5C,MAAM,+BAA+B,GAAW,mBAAmB,CAAC;AAEpE;;;;;GAKG;AACH,MAAa,iCAAkC,SAAQ,yDAA8B;IACjE,IAAI,GAAgC,iCAAe,CAAC,WAAW,CAAC;IAElF,qFAAqF;IACrF,YAAY,GAA+C;QACzD,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,MAAM,IAAI,GAA+C,EAAE,GAAG,GAAG,EAAE,CAAC;QAEpE,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE1B,MAAM,UAAU,GAAyC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QAC/E,MAAM,eAAe,GAAY,UAAU,CAAC,IAAI,CAAC,CAAC,SAA6C,EAAW,EAAE,CAC1G,SAAS,CAAC,IAAI,KAAK,4DAA4B,CAAC,OAAO;eACpD,SAAS,CAAC,KAAK,KAAK,+BAA+B,CACvD,CAAC;QAEF,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG;gBAChB,GAAG,UAAU;gBACb;oBACE,IAAI,EAAE,4DAA4B,CAAC,OAAO;oBAC1C,KAAK,EAAE,+BAA+B;oBACtC,OAAO,EAAE,2BAA2B;iBACrC;aACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AA5BD,8EA4BC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DyFM_Field_Type } from '../../../_enums/field-type.enum';
|
|
2
|
+
import { DyFM_FieldNew_Settings } from './field-new-settings.control-model';
|
|
3
|
+
import { DyFM_PickerFieldNew_Option } from './picker-field-new-option.interface';
|
|
4
|
+
/** Serializable Forms v2 emoji-picker settings. */
|
|
5
|
+
export declare class DyFM_EmojiPickerFieldNew_Settings extends DyFM_FieldNew_Settings<string> {
|
|
6
|
+
readonly type: DyFM_Field_Type.emojiPicker;
|
|
7
|
+
/** Optional curated options. The UI supplies a default catalog when empty. */
|
|
8
|
+
options: DyFM_PickerFieldNew_Option[];
|
|
9
|
+
/** Preferred picker-grid column count. */
|
|
10
|
+
columns: number;
|
|
11
|
+
/** Creates serializable emoji-picker settings while protecting the discriminator. */
|
|
12
|
+
constructor(set: Partial<DyFM_EmojiPickerFieldNew_Settings>);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=emoji-picker-field-new-settings.control-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emoji-picker-field-new-settings.control-model.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ngx-models/_models/control-models/forms-new/emoji-picker-field-new-settings.control-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEjF,mDAAmD;AACnD,qBAAa,iCAAkC,SAAQ,sBAAsB,CAAC,MAAM,CAAC;IACnF,SAAkB,IAAI,EAAE,eAAe,CAAC,WAAW,CAA+B;IAElF,8EAA8E;IAC9E,OAAO,EAAE,0BAA0B,EAAE,CAAM;IAE3C,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAK;IAEpB,qFAAqF;gBACzE,GAAG,EAAE,OAAO,CAAC,iCAAiC,CAAC;CAQ5D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyFM_EmojiPickerFieldNew_Settings = void 0;
|
|
4
|
+
const field_type_enum_1 = require("../../../_enums/field-type.enum");
|
|
5
|
+
const field_new_settings_control_model_1 = require("./field-new-settings.control-model");
|
|
6
|
+
/** Serializable Forms v2 emoji-picker settings. */
|
|
7
|
+
class DyFM_EmojiPickerFieldNew_Settings extends field_new_settings_control_model_1.DyFM_FieldNew_Settings {
|
|
8
|
+
type = field_type_enum_1.DyFM_Field_Type.emojiPicker;
|
|
9
|
+
/** Optional curated options. The UI supplies a default catalog when empty. */
|
|
10
|
+
options = [];
|
|
11
|
+
/** Preferred picker-grid column count. */
|
|
12
|
+
columns = 8;
|
|
13
|
+
/** Creates serializable emoji-picker settings while protecting the discriminator. */
|
|
14
|
+
constructor(set) {
|
|
15
|
+
super(set);
|
|
16
|
+
const rest = { ...set };
|
|
17
|
+
Reflect.deleteProperty(rest, 'type');
|
|
18
|
+
Object.assign(this, rest);
|
|
19
|
+
this.options = this.options ?? [];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.DyFM_EmojiPickerFieldNew_Settings = DyFM_EmojiPickerFieldNew_Settings;
|
|
23
|
+
//# sourceMappingURL=emoji-picker-field-new-settings.control-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emoji-picker-field-new-settings.control-model.js","sourceRoot":"","sources":["../../../../../../src/_modules/ngx-models/_models/control-models/forms-new/emoji-picker-field-new-settings.control-model.ts"],"names":[],"mappings":";;;AAAA,qEAAkE;AAClE,yFAA4E;AAG5E,mDAAmD;AACnD,MAAa,iCAAkC,SAAQ,yDAA8B;IACjE,IAAI,GAAgC,iCAAe,CAAC,WAAW,CAAC;IAElF,8EAA8E;IAC9E,OAAO,GAAiC,EAAE,CAAC;IAE3C,0CAA0C;IAC1C,OAAO,GAAW,CAAC,CAAC;IAEpB,qFAAqF;IACrF,YAAY,GAA+C;QACzD,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,MAAM,IAAI,GAA+C,EAAE,GAAG,GAAG,EAAE,CAAC;QAEpE,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACpC,CAAC;CACF;AAlBD,8EAkBC"}
|
|
@@ -4,6 +4,8 @@ import { DyFM_DateFieldNew_Settings } from './date-field-new-settings.control-mo
|
|
|
4
4
|
import { DyFM_DateRangeFieldNew_Settings } from './date-range-field-new-settings.control-model';
|
|
5
5
|
import { DyFM_DateTimeFieldNew_Settings } from './datetime-field-new-settings.control-model';
|
|
6
6
|
import { DyFM_DateTimeRangeFieldNew_Settings } from './datetime-range-field-new-settings.control-model';
|
|
7
|
+
import { DyFM_EmojiPickerFieldNew_Settings } from './emoji-picker-field-new-settings.control-model';
|
|
8
|
+
import { DyFM_IconPickerFieldNew_Settings } from './icon-picker-field-new-settings.control-model';
|
|
7
9
|
import { DyFM_MultiselectFieldNew_Settings } from './multiselect-field-new-settings.control-model';
|
|
8
10
|
import { DyFM_NumberFieldNew_Settings } from './number-field-new-settings.control-model';
|
|
9
11
|
import { DyFM_PasswordFieldNew_Settings } from './password-field-new-settings.control-model';
|
|
@@ -25,5 +27,5 @@ import { DyFM_TextFieldNew_Settings } from './text-field-new-settings.control-mo
|
|
|
25
27
|
*
|
|
26
28
|
* @see _specifications/forms-v2/02-architecture-spec.md (11. mátrix)
|
|
27
29
|
*/
|
|
28
|
-
export type DyFM_FieldNew_Settings_AnyType = DyFM_TextFieldNew_Settings | DyFM_TextAreaFieldNew_Settings | DyFM_NumberFieldNew_Settings | DyFM_PasswordFieldNew_Settings | DyFM_SliderFieldNew_Settings | DyFM_SliderRangeFieldNew_Settings | DyFM_CheckboxFieldNew_Settings | DyFM_ColorPickerFieldNew_Settings | DyFM_SelectFieldNew_Settings<unknown> | DyFM_MultiselectFieldNew_Settings<unknown> | DyFM_RadioSelectFieldNew_Settings<unknown> | DyFM_DateFieldNew_Settings | DyFM_DateTimeFieldNew_Settings | DyFM_DateRangeFieldNew_Settings | DyFM_DateTimeRangeFieldNew_Settings;
|
|
30
|
+
export type DyFM_FieldNew_Settings_AnyType = DyFM_TextFieldNew_Settings | DyFM_TextAreaFieldNew_Settings | DyFM_NumberFieldNew_Settings | DyFM_PasswordFieldNew_Settings | DyFM_SliderFieldNew_Settings | DyFM_SliderRangeFieldNew_Settings | DyFM_CheckboxFieldNew_Settings | DyFM_ColorPickerFieldNew_Settings | DyFM_EmojiPickerFieldNew_Settings | DyFM_IconPickerFieldNew_Settings | DyFM_SelectFieldNew_Settings<unknown> | DyFM_MultiselectFieldNew_Settings<unknown> | DyFM_RadioSelectFieldNew_Settings<unknown> | DyFM_DateFieldNew_Settings | DyFM_DateTimeFieldNew_Settings | DyFM_DateRangeFieldNew_Settings | DyFM_DateTimeRangeFieldNew_Settings;
|
|
29
31
|
//# sourceMappingURL=field-new-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-new-types.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ngx-models/_models/control-models/forms-new/field-new-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,iCAAiC,EAAE,MAAM,iDAAiD,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,+CAA+C,CAAC;AAChG,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,mCAAmC,EAAE,MAAM,mDAAmD,CAAC;AACxG,OAAO,EAAE,iCAAiC,EAAE,MAAM,gDAAgD,CAAC;AACnG,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,iCAAiC,EAAE,MAAM,iDAAiD,CAAC;AACpG,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,iCAAiC,EAAE,MAAM,iDAAiD,CAAC;AACpG,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAErF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,8BAA8B,GACtC,0BAA0B,GAC1B,8BAA8B,GAC9B,4BAA4B,GAC5B,8BAA8B,GAC9B,4BAA4B,GAC5B,iCAAiC,GACjC,8BAA8B,GAC9B,iCAAiC,GACjC,4BAA4B,CAAC,OAAO,CAAC,GACrC,iCAAiC,CAAC,OAAO,CAAC,GAC1C,iCAAiC,CAAC,OAAO,CAAC,GAC1C,0BAA0B,GAC1B,8BAA8B,GAC9B,+BAA+B,GAC/B,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"field-new-types.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ngx-models/_models/control-models/forms-new/field-new-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,iCAAiC,EAAE,MAAM,iDAAiD,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,+CAA+C,CAAC;AAChG,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,mCAAmC,EAAE,MAAM,mDAAmD,CAAC;AACxG,OAAO,EAAE,iCAAiC,EAAE,MAAM,iDAAiD,CAAC;AACpG,OAAO,EAAE,gCAAgC,EAAE,MAAM,gDAAgD,CAAC;AAClG,OAAO,EAAE,iCAAiC,EAAE,MAAM,gDAAgD,CAAC;AACnG,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,iCAAiC,EAAE,MAAM,iDAAiD,CAAC;AACpG,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,iCAAiC,EAAE,MAAM,iDAAiD,CAAC;AACpG,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAErF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,8BAA8B,GACtC,0BAA0B,GAC1B,8BAA8B,GAC9B,4BAA4B,GAC5B,8BAA8B,GAC9B,4BAA4B,GAC5B,iCAAiC,GACjC,8BAA8B,GAC9B,iCAAiC,GACjC,iCAAiC,GACjC,gCAAgC,GAChC,4BAA4B,CAAC,OAAO,CAAC,GACrC,iCAAiC,CAAC,OAAO,CAAC,GAC1C,iCAAiC,CAAC,OAAO,CAAC,GAC1C,0BAA0B,GAC1B,8BAA8B,GAC9B,+BAA+B,GAC/B,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DyFM_ButtonNewIconStyleType } from '../../../_enums/button-new/button-new-icon-style-type.enum';
|
|
2
|
+
import { DyFM_Field_Type } from '../../../_enums/field-type.enum';
|
|
3
|
+
import { DyFM_FieldNew_Settings } from './field-new-settings.control-model';
|
|
4
|
+
import { DyFM_PickerFieldNew_Option } from './picker-field-new-option.interface';
|
|
5
|
+
/** Serializable Forms v2 Material Symbols picker settings. */
|
|
6
|
+
export declare class DyFM_IconPickerFieldNew_Settings extends DyFM_FieldNew_Settings<string> {
|
|
7
|
+
readonly type: DyFM_Field_Type.iconPicker;
|
|
8
|
+
/** Optional curated options. The UI supplies a default catalog when empty. */
|
|
9
|
+
options: DyFM_PickerFieldNew_Option[];
|
|
10
|
+
/** Preferred picker-grid column count. */
|
|
11
|
+
columns: number;
|
|
12
|
+
/** Material Symbols font family used by the option preview. */
|
|
13
|
+
iconStyle: DyFM_ButtonNewIconStyleType;
|
|
14
|
+
/** Creates serializable icon-picker settings while protecting the discriminator. */
|
|
15
|
+
constructor(set: Partial<DyFM_IconPickerFieldNew_Settings>);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=icon-picker-field-new-settings.control-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon-picker-field-new-settings.control-model.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ngx-models/_models/control-models/forms-new/icon-picker-field-new-settings.control-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,4DAA4D,CAAC;AACzG,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EACL,sBAAsB,EAEvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAIjF,8DAA8D;AAC9D,qBAAa,gCAAiC,SAAQ,sBAAsB,CAAC,MAAM,CAAC;IAClF,SAAkB,IAAI,EAAE,eAAe,CAAC,UAAU,CAA8B;IAEhF,8EAA8E;IAC9E,OAAO,EAAE,0BAA0B,EAAE,CAAM;IAE3C,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAK;IAEpB,+DAA+D;IAC/D,SAAS,EAAE,2BAA2B,CAAuC;IAE7E,oFAAoF;gBACxE,GAAG,EAAE,OAAO,CAAC,gCAAgC,CAAC;CA0B3D"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyFM_IconPickerFieldNew_Settings = void 0;
|
|
4
|
+
const button_new_icon_style_type_enum_1 = require("../../../_enums/button-new/button-new-icon-style-type.enum");
|
|
5
|
+
const field_type_enum_1 = require("../../../_enums/field-type.enum");
|
|
6
|
+
const field_new_validator_type_enum_1 = require("../../../_enums/forms-new/field-new-validator-type.enum");
|
|
7
|
+
const field_new_settings_control_model_1 = require("./field-new-settings.control-model");
|
|
8
|
+
const DYNAMO_MATERIAL_ICON_PATTERN = '^[a-z0-9]+(?:_[a-z0-9]+)*$';
|
|
9
|
+
/** Serializable Forms v2 Material Symbols picker settings. */
|
|
10
|
+
class DyFM_IconPickerFieldNew_Settings extends field_new_settings_control_model_1.DyFM_FieldNew_Settings {
|
|
11
|
+
type = field_type_enum_1.DyFM_Field_Type.iconPicker;
|
|
12
|
+
/** Optional curated options. The UI supplies a default catalog when empty. */
|
|
13
|
+
options = [];
|
|
14
|
+
/** Preferred picker-grid column count. */
|
|
15
|
+
columns = 6;
|
|
16
|
+
/** Material Symbols font family used by the option preview. */
|
|
17
|
+
iconStyle = button_new_icon_style_type_enum_1.DyFM_ButtonNewIconStyleType.rounded;
|
|
18
|
+
/** Creates serializable icon-picker settings while protecting the discriminator. */
|
|
19
|
+
constructor(set) {
|
|
20
|
+
super(set);
|
|
21
|
+
const rest = { ...set };
|
|
22
|
+
Reflect.deleteProperty(rest, 'type');
|
|
23
|
+
Object.assign(this, rest);
|
|
24
|
+
this.options = this.options ?? [];
|
|
25
|
+
const validators = this.validators ?? [];
|
|
26
|
+
const hasMaterialIconValidator = validators.some((validator) => validator.type === field_new_validator_type_enum_1.DyFM_FieldNew_Validator_Type.pattern
|
|
27
|
+
&& validator.value === DYNAMO_MATERIAL_ICON_PATTERN);
|
|
28
|
+
if (!hasMaterialIconValidator) {
|
|
29
|
+
this.validators = [
|
|
30
|
+
...validators,
|
|
31
|
+
{
|
|
32
|
+
type: field_new_validator_type_enum_1.DyFM_FieldNew_Validator_Type.pattern,
|
|
33
|
+
value: DYNAMO_MATERIAL_ICON_PATTERN,
|
|
34
|
+
message: 'Enter a Material icon name such as rocket_launch.',
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.DyFM_IconPickerFieldNew_Settings = DyFM_IconPickerFieldNew_Settings;
|
|
41
|
+
//# sourceMappingURL=icon-picker-field-new-settings.control-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon-picker-field-new-settings.control-model.js","sourceRoot":"","sources":["../../../../../../src/_modules/ngx-models/_models/control-models/forms-new/icon-picker-field-new-settings.control-model.ts"],"names":[],"mappings":";;;AAAA,gHAAyG;AACzG,qEAAkE;AAClE,2GAAuG;AACvG,yFAG4C;AAG5C,MAAM,4BAA4B,GAAW,4BAA4B,CAAC;AAE1E,8DAA8D;AAC9D,MAAa,gCAAiC,SAAQ,yDAA8B;IAChE,IAAI,GAA+B,iCAAe,CAAC,UAAU,CAAC;IAEhF,8EAA8E;IAC9E,OAAO,GAAiC,EAAE,CAAC;IAE3C,0CAA0C;IAC1C,OAAO,GAAW,CAAC,CAAC;IAEpB,+DAA+D;IAC/D,SAAS,GAAgC,6DAA2B,CAAC,OAAO,CAAC;IAE7E,oFAAoF;IACpF,YAAY,GAA8C;QACxD,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,MAAM,IAAI,GAA8C,EAAE,GAAG,GAAG,EAAE,CAAC;QAEnE,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QAElC,MAAM,UAAU,GAAyC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QAC/E,MAAM,wBAAwB,GAAY,UAAU,CAAC,IAAI,CACvD,CAAC,SAA6C,EAAW,EAAE,CACzD,SAAS,CAAC,IAAI,KAAK,4DAA4B,CAAC,OAAO;eACpD,SAAS,CAAC,KAAK,KAAK,4BAA4B,CACtD,CAAC;QAEF,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG;gBAChB,GAAG,UAAU;gBACb;oBACE,IAAI,EAAE,4DAA4B,CAAC,OAAO;oBAC1C,KAAK,EAAE,4BAA4B;oBACnC,OAAO,EAAE,mDAAmD;iBAC7D;aACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAvCD,4EAuCC"}
|
|
@@ -7,6 +7,9 @@ export * from './slider-field-new-settings.control-model';
|
|
|
7
7
|
export * from './slider-range-field-new-settings.control-model';
|
|
8
8
|
export * from './checkbox-field-new-settings.control-model';
|
|
9
9
|
export * from './color-picker-field-new-settings.control-model';
|
|
10
|
+
export * from './emoji-picker-field-new-settings.control-model';
|
|
11
|
+
export * from './icon-picker-field-new-settings.control-model';
|
|
12
|
+
export * from './picker-field-new-option.interface';
|
|
10
13
|
export * from './select-field-new-settings.control-model';
|
|
11
14
|
export * from './multiselect-field-new-settings.control-model';
|
|
12
15
|
export * from './radio-select-field-new-settings.control-model';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ngx-models/_models/control-models/forms-new/index.ts"],"names":[],"mappings":"AAGA,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,iDAAiD,CAAC;AAChE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iDAAiD,CAAC;AAChE,cAAc,yCAAyC,CAAC;AACxD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,mDAAmD,CAAC;AAClE,cAAc,mCAAmC,CAAC;AAClD,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ngx-models/_models/control-models/forms-new/index.ts"],"names":[],"mappings":"AAGA,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,iDAAiD,CAAC;AAChE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,iDAAiD,CAAC;AAChE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qCAAqC,CAAC;AACpD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iDAAiD,CAAC;AAChE,cAAc,yCAAyC,CAAC;AACxD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,mDAAmD,CAAC;AAClE,cAAc,mCAAmC,CAAC;AAClD,cAAc,mBAAmB,CAAC"}
|
|
@@ -12,6 +12,9 @@ tslib_1.__exportStar(require("./slider-field-new-settings.control-model"), expor
|
|
|
12
12
|
tslib_1.__exportStar(require("./slider-range-field-new-settings.control-model"), exports);
|
|
13
13
|
tslib_1.__exportStar(require("./checkbox-field-new-settings.control-model"), exports);
|
|
14
14
|
tslib_1.__exportStar(require("./color-picker-field-new-settings.control-model"), exports);
|
|
15
|
+
tslib_1.__exportStar(require("./emoji-picker-field-new-settings.control-model"), exports);
|
|
16
|
+
tslib_1.__exportStar(require("./icon-picker-field-new-settings.control-model"), exports);
|
|
17
|
+
tslib_1.__exportStar(require("./picker-field-new-option.interface"), exports);
|
|
15
18
|
tslib_1.__exportStar(require("./select-field-new-settings.control-model"), exports);
|
|
16
19
|
tslib_1.__exportStar(require("./multiselect-field-new-settings.control-model"), exports);
|
|
17
20
|
tslib_1.__exportStar(require("./radio-select-field-new-settings.control-model"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/_modules/ngx-models/_models/control-models/forms-new/index.ts"],"names":[],"mappings":";AAAA,iEAAiE;AACjE,kCAAkC;;;AAElC,6EAAmD;AACnD,kFAAwD;AACxD,sFAA4D;AAC5D,oFAA0D;AAC1D,sFAA4D;AAC5D,oFAA0D;AAC1D,0FAAgE;AAChE,sFAA4D;AAC5D,0FAAgE;AAChE,oFAA0D;AAC1D,yFAA+D;AAC/D,0FAAgE;AAChE,kFAAwD;AACxD,sFAA4D;AAC5D,wFAA8D;AAC9D,4FAAkE;AAClE,4EAAkD;AAClD,4DAAkC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/_modules/ngx-models/_models/control-models/forms-new/index.ts"],"names":[],"mappings":";AAAA,iEAAiE;AACjE,kCAAkC;;;AAElC,6EAAmD;AACnD,kFAAwD;AACxD,sFAA4D;AAC5D,oFAA0D;AAC1D,sFAA4D;AAC5D,oFAA0D;AAC1D,0FAAgE;AAChE,sFAA4D;AAC5D,0FAAgE;AAChE,0FAAgE;AAChE,yFAA+D;AAC/D,8EAAoD;AACpD,oFAA0D;AAC1D,yFAA+D;AAC/D,0FAAgE;AAChE,kFAAwD;AACxD,sFAA4D;AAC5D,wFAA8D;AAC9D,4FAAkE;AAClE,4EAAkD;AAClD,4DAAkC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serializable option shared by the Forms v2 emoji and icon pickers.
|
|
3
|
+
*/
|
|
4
|
+
export interface DyFM_PickerFieldNew_Option {
|
|
5
|
+
value: string;
|
|
6
|
+
label: string;
|
|
7
|
+
keywords?: string[];
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=picker-field-new-option.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"picker-field-new-option.interface.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ngx-models/_models/control-models/forms-new/picker-field-new-option.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"picker-field-new-option.interface.js","sourceRoot":"","sources":["../../../../../../src/_modules/ngx-models/_models/control-models/forms-new/picker-field-new-option.interface.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@futdevpro/fsm-dynamo",
|
|
3
|
-
"version": "1.20.
|
|
3
|
+
"version": "1.20.9",
|
|
4
4
|
"description": "Full Stack Model Collection for Dynamic (NodeJS-Typescript) Framework called Dynamo, by Future Development Ltd.",
|
|
5
5
|
"DyBu_settings": {
|
|
6
6
|
"packageType": "full-stack-package",
|
|
@@ -18,10 +18,12 @@ export enum DyFM_Field_Type {
|
|
|
18
18
|
sliderRange = 'sliderRange',
|
|
19
19
|
select = 'select',
|
|
20
20
|
multiselect = 'multiselect',
|
|
21
|
-
chipSelect = 'chipSelect', //
|
|
22
|
-
chipMultiselect = 'chipMultiselect', //
|
|
21
|
+
chipSelect = 'chipSelect', //
|
|
22
|
+
chipMultiselect = 'chipMultiselect', //
|
|
23
23
|
radioSelect = 'radioSelect', //
|
|
24
24
|
colorPicker = 'color-picker',
|
|
25
|
+
emojiPicker = 'emoji-picker',
|
|
26
|
+
iconPicker = 'icon-picker',
|
|
25
27
|
date = 'date',
|
|
26
28
|
dateRange = 'dateRange',
|
|
27
29
|
dateTime = 'dateTime',
|
|
@@ -1,21 +1,44 @@
|
|
|
1
|
-
import { DyFM_Field_Type } from '../../../_enums/field-type.enum';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
import { DyFM_Field_Type } from '../../../_enums/field-type.enum';
|
|
2
|
+
import { DyFM_FieldNew_Validator_Type } from '../../../_enums/forms-new/field-new-validator-type.enum';
|
|
3
|
+
import {
|
|
4
|
+
DyFM_FieldNew_Settings,
|
|
5
|
+
DyFM_FieldNew_Validator_Descriptor
|
|
6
|
+
} from './field-new-settings.control-model';
|
|
7
|
+
|
|
8
|
+
const DYNAMO_COLOR_PICKER_HEX_PATTERN: string = '^#[0-9a-fA-F]{6}$';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Forms v2 color-picker settings.
|
|
12
|
+
*
|
|
13
|
+
* The string value uses the browser-native `#RRGGBB` color contract so the same
|
|
14
|
+
* serializable Settings object can be shared by frontend and backend consumers.
|
|
15
|
+
*/
|
|
16
|
+
export class DyFM_ColorPickerFieldNew_Settings extends DyFM_FieldNew_Settings<string> {
|
|
17
|
+
override readonly type: DyFM_Field_Type.colorPicker = DyFM_Field_Type.colorPicker;
|
|
18
|
+
|
|
19
|
+
/** Creates serializable color-picker settings while protecting the discriminator. */
|
|
20
|
+
constructor(set: Partial<DyFM_ColorPickerFieldNew_Settings>) {
|
|
21
|
+
super(set);
|
|
22
|
+
const rest: Partial<DyFM_ColorPickerFieldNew_Settings> = { ...set };
|
|
23
|
+
|
|
24
|
+
Reflect.deleteProperty(rest, 'type');
|
|
25
|
+
Object.assign(this, rest);
|
|
26
|
+
|
|
27
|
+
const validators: DyFM_FieldNew_Validator_Descriptor[] = this.validators ?? [];
|
|
28
|
+
const hasHexValidator: boolean = validators.some((validator: DyFM_FieldNew_Validator_Descriptor): boolean =>
|
|
29
|
+
validator.type === DyFM_FieldNew_Validator_Type.pattern
|
|
30
|
+
&& validator.value === DYNAMO_COLOR_PICKER_HEX_PATTERN,
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
if (!hasHexValidator) {
|
|
34
|
+
this.validators = [
|
|
35
|
+
...validators,
|
|
36
|
+
{
|
|
37
|
+
type: DyFM_FieldNew_Validator_Type.pattern,
|
|
38
|
+
value: DYNAMO_COLOR_PICKER_HEX_PATTERN,
|
|
39
|
+
message: 'Enter a color as #RRGGBB.',
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DyFM_Field_Type } from '../../../_enums/field-type.enum';
|
|
2
|
+
import { DyFM_FieldNew_Settings } from './field-new-settings.control-model';
|
|
3
|
+
import { DyFM_PickerFieldNew_Option } from './picker-field-new-option.interface';
|
|
4
|
+
|
|
5
|
+
/** Serializable Forms v2 emoji-picker settings. */
|
|
6
|
+
export class DyFM_EmojiPickerFieldNew_Settings extends DyFM_FieldNew_Settings<string> {
|
|
7
|
+
override readonly type: DyFM_Field_Type.emojiPicker = DyFM_Field_Type.emojiPicker;
|
|
8
|
+
|
|
9
|
+
/** Optional curated options. The UI supplies a default catalog when empty. */
|
|
10
|
+
options: DyFM_PickerFieldNew_Option[] = [];
|
|
11
|
+
|
|
12
|
+
/** Preferred picker-grid column count. */
|
|
13
|
+
columns: number = 8;
|
|
14
|
+
|
|
15
|
+
/** Creates serializable emoji-picker settings while protecting the discriminator. */
|
|
16
|
+
constructor(set: Partial<DyFM_EmojiPickerFieldNew_Settings>) {
|
|
17
|
+
super(set);
|
|
18
|
+
const rest: Partial<DyFM_EmojiPickerFieldNew_Settings> = { ...set };
|
|
19
|
+
|
|
20
|
+
Reflect.deleteProperty(rest, 'type');
|
|
21
|
+
Object.assign(this, rest);
|
|
22
|
+
this.options = this.options ?? [];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { DyFM_CheckboxFieldNew_Settings } from './checkbox-field-new-settings.control-model';
|
|
2
|
-
import { DyFM_ColorPickerFieldNew_Settings } from './color-picker-field-new-settings.control-model';
|
|
1
|
+
import { DyFM_CheckboxFieldNew_Settings } from './checkbox-field-new-settings.control-model';
|
|
2
|
+
import { DyFM_ColorPickerFieldNew_Settings } from './color-picker-field-new-settings.control-model';
|
|
3
3
|
import { DyFM_DateFieldNew_Settings } from './date-field-new-settings.control-model';
|
|
4
4
|
import { DyFM_DateRangeFieldNew_Settings } from './date-range-field-new-settings.control-model';
|
|
5
5
|
import { DyFM_DateTimeFieldNew_Settings } from './datetime-field-new-settings.control-model';
|
|
6
|
-
import { DyFM_DateTimeRangeFieldNew_Settings } from './datetime-range-field-new-settings.control-model';
|
|
6
|
+
import { DyFM_DateTimeRangeFieldNew_Settings } from './datetime-range-field-new-settings.control-model';
|
|
7
|
+
import { DyFM_EmojiPickerFieldNew_Settings } from './emoji-picker-field-new-settings.control-model';
|
|
8
|
+
import { DyFM_IconPickerFieldNew_Settings } from './icon-picker-field-new-settings.control-model';
|
|
7
9
|
import { DyFM_MultiselectFieldNew_Settings } from './multiselect-field-new-settings.control-model';
|
|
8
10
|
import { DyFM_NumberFieldNew_Settings } from './number-field-new-settings.control-model';
|
|
9
11
|
import { DyFM_PasswordFieldNew_Settings } from './password-field-new-settings.control-model';
|
|
@@ -33,9 +35,11 @@ export type DyFM_FieldNew_Settings_AnyType =
|
|
|
33
35
|
| DyFM_PasswordFieldNew_Settings
|
|
34
36
|
| DyFM_SliderFieldNew_Settings
|
|
35
37
|
| DyFM_SliderRangeFieldNew_Settings
|
|
36
|
-
| DyFM_CheckboxFieldNew_Settings
|
|
38
|
+
| DyFM_CheckboxFieldNew_Settings
|
|
37
39
|
| DyFM_ColorPickerFieldNew_Settings
|
|
38
|
-
|
|
|
40
|
+
| DyFM_EmojiPickerFieldNew_Settings
|
|
41
|
+
| DyFM_IconPickerFieldNew_Settings
|
|
42
|
+
| DyFM_SelectFieldNew_Settings<unknown>
|
|
39
43
|
| DyFM_MultiselectFieldNew_Settings<unknown>
|
|
40
44
|
| DyFM_RadioSelectFieldNew_Settings<unknown>
|
|
41
45
|
| DyFM_DateFieldNew_Settings
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { DyFM_Field_Type } from '../../../_enums/field-type.enum';
|
|
2
2
|
import { DyFM_FieldNew_Validator_Type } from '../../../_enums/forms-new/field-new-validator-type.enum';
|
|
3
3
|
import {
|
|
4
|
-
DyFM_CheckboxFieldNew_Settings,
|
|
5
|
-
DyFM_ColorPickerFieldNew_Settings,
|
|
6
|
-
DyFM_DateFieldNew_Settings,
|
|
4
|
+
DyFM_CheckboxFieldNew_Settings,
|
|
5
|
+
DyFM_ColorPickerFieldNew_Settings,
|
|
6
|
+
DyFM_DateFieldNew_Settings,
|
|
7
|
+
DyFM_EmojiPickerFieldNew_Settings,
|
|
7
8
|
DyFM_FieldNew_Settings,
|
|
8
|
-
|
|
9
|
+
DyFM_FieldNew_Validator_Descriptor,
|
|
10
|
+
DyFM_FormNew_Settings,
|
|
11
|
+
DyFM_IconPickerFieldNew_Settings,
|
|
9
12
|
DyFM_MultiselectFieldNew_Settings,
|
|
10
13
|
DyFM_NumberFieldNew_Settings,
|
|
11
14
|
DyFM_SelectFieldNew_Settings,
|
|
@@ -76,7 +79,7 @@ describe('| Forms v2 — Wave-1A Settings layer', () => {
|
|
|
76
79
|
});
|
|
77
80
|
});
|
|
78
81
|
|
|
79
|
-
describe('| DyFM_CheckboxFieldNew_Settings', () => {
|
|
82
|
+
describe('| DyFM_CheckboxFieldNew_Settings', () => {
|
|
80
83
|
it('| default constructor + type is checkbox', () => {
|
|
81
84
|
const s = new DyFM_CheckboxFieldNew_Settings({ key: 'done' });
|
|
82
85
|
expect(s.type).toBe(DyFM_Field_Type.checkbox);
|
|
@@ -88,17 +91,67 @@ describe('| Forms v2 — Wave-1A Settings layer', () => {
|
|
|
88
91
|
expect(s.mode).toBe('toggle');
|
|
89
92
|
expect(s.labelPosition).toBe('before');
|
|
90
93
|
});
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
describe('| DyFM_ColorPickerFieldNew_Settings', () => {
|
|
97
|
+
it('| stores a serializable hex value and owns the color-picker discriminator', () => {
|
|
98
|
+
const settings: DyFM_ColorPickerFieldNew_Settings = new DyFM_ColorPickerFieldNew_Settings({
|
|
99
|
+
key: 'accentColor',
|
|
100
|
+
defaultValue: '#22d3ee',
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
expect(settings.type).toBe(DyFM_Field_Type.colorPicker);
|
|
104
|
+
expect(settings.defaultValue).toBe('#22d3ee');
|
|
105
|
+
expect(settings.validators).toContain(jasmine.objectContaining({
|
|
106
|
+
type: DyFM_FieldNew_Validator_Type.pattern,
|
|
107
|
+
value: '^#[0-9a-fA-F]{6}$',
|
|
108
|
+
message: 'Enter a color as #RRGGBB.',
|
|
109
|
+
}));
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it('| preserves consumer validators while adding the strict hexadecimal contract once', () => {
|
|
113
|
+
const settings: DyFM_ColorPickerFieldNew_Settings = new DyFM_ColorPickerFieldNew_Settings({
|
|
114
|
+
key: 'accentColor',
|
|
115
|
+
validators: [{ type: DyFM_FieldNew_Validator_Type.required }],
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
expect(settings.validators?.map(
|
|
119
|
+
(validator: DyFM_FieldNew_Validator_Descriptor): DyFM_FieldNew_Validator_Type => validator.type,
|
|
120
|
+
))
|
|
121
|
+
.toEqual([DyFM_FieldNew_Validator_Type.required, DyFM_FieldNew_Validator_Type.pattern]);
|
|
122
|
+
});
|
|
91
123
|
});
|
|
92
124
|
|
|
93
|
-
describe('|
|
|
94
|
-
it('| stores
|
|
95
|
-
const settings:
|
|
96
|
-
key: '
|
|
97
|
-
defaultValue: '
|
|
125
|
+
describe('| DyFM_EmojiPickerFieldNew_Settings', () => {
|
|
126
|
+
it('| stores serializable options and protects the emoji-picker discriminator', () => {
|
|
127
|
+
const settings: DyFM_EmojiPickerFieldNew_Settings = new DyFM_EmojiPickerFieldNew_Settings({
|
|
128
|
+
key: 'reaction',
|
|
129
|
+
defaultValue: '🚀',
|
|
130
|
+
columns: 10,
|
|
131
|
+
options: [{ value: '🚀', label: 'Rocket', keywords: ['launch'] }],
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
expect(settings.type).toBe(DyFM_Field_Type.emojiPicker);
|
|
135
|
+
expect(settings.columns).toBe(10);
|
|
136
|
+
expect(settings.options[0].keywords).toEqual(['launch']);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
describe('| DyFM_IconPickerFieldNew_Settings', () => {
|
|
141
|
+
it('| stores serializable options and adds the Material icon-name contract once', () => {
|
|
142
|
+
const settings: DyFM_IconPickerFieldNew_Settings = new DyFM_IconPickerFieldNew_Settings({
|
|
143
|
+
key: 'icon',
|
|
144
|
+
defaultValue: 'rocket_launch',
|
|
145
|
+
validators: [{ type: DyFM_FieldNew_Validator_Type.required }],
|
|
98
146
|
});
|
|
99
147
|
|
|
100
|
-
expect(settings.type).toBe(DyFM_Field_Type.
|
|
101
|
-
expect(settings.
|
|
148
|
+
expect(settings.type).toBe(DyFM_Field_Type.iconPicker);
|
|
149
|
+
expect(settings.validators).toContain(jasmine.objectContaining({
|
|
150
|
+
type: DyFM_FieldNew_Validator_Type.pattern,
|
|
151
|
+
value: '^[a-z0-9]+(?:_[a-z0-9]+)*$',
|
|
152
|
+
message: 'Enter a Material icon name such as rocket_launch.',
|
|
153
|
+
}));
|
|
154
|
+
expect(settings.validators?.length).toBe(2);
|
|
102
155
|
});
|
|
103
156
|
});
|
|
104
157
|
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { DyFM_ButtonNewIconStyleType } from '../../../_enums/button-new/button-new-icon-style-type.enum';
|
|
2
|
+
import { DyFM_Field_Type } from '../../../_enums/field-type.enum';
|
|
3
|
+
import { DyFM_FieldNew_Validator_Type } from '../../../_enums/forms-new/field-new-validator-type.enum';
|
|
4
|
+
import {
|
|
5
|
+
DyFM_FieldNew_Settings,
|
|
6
|
+
DyFM_FieldNew_Validator_Descriptor
|
|
7
|
+
} from './field-new-settings.control-model';
|
|
8
|
+
import { DyFM_PickerFieldNew_Option } from './picker-field-new-option.interface';
|
|
9
|
+
|
|
10
|
+
const DYNAMO_MATERIAL_ICON_PATTERN: string = '^[a-z0-9]+(?:_[a-z0-9]+)*$';
|
|
11
|
+
|
|
12
|
+
/** Serializable Forms v2 Material Symbols picker settings. */
|
|
13
|
+
export class DyFM_IconPickerFieldNew_Settings extends DyFM_FieldNew_Settings<string> {
|
|
14
|
+
override readonly type: DyFM_Field_Type.iconPicker = DyFM_Field_Type.iconPicker;
|
|
15
|
+
|
|
16
|
+
/** Optional curated options. The UI supplies a default catalog when empty. */
|
|
17
|
+
options: DyFM_PickerFieldNew_Option[] = [];
|
|
18
|
+
|
|
19
|
+
/** Preferred picker-grid column count. */
|
|
20
|
+
columns: number = 6;
|
|
21
|
+
|
|
22
|
+
/** Material Symbols font family used by the option preview. */
|
|
23
|
+
iconStyle: DyFM_ButtonNewIconStyleType = DyFM_ButtonNewIconStyleType.rounded;
|
|
24
|
+
|
|
25
|
+
/** Creates serializable icon-picker settings while protecting the discriminator. */
|
|
26
|
+
constructor(set: Partial<DyFM_IconPickerFieldNew_Settings>) {
|
|
27
|
+
super(set);
|
|
28
|
+
const rest: Partial<DyFM_IconPickerFieldNew_Settings> = { ...set };
|
|
29
|
+
|
|
30
|
+
Reflect.deleteProperty(rest, 'type');
|
|
31
|
+
Object.assign(this, rest);
|
|
32
|
+
this.options = this.options ?? [];
|
|
33
|
+
|
|
34
|
+
const validators: DyFM_FieldNew_Validator_Descriptor[] = this.validators ?? [];
|
|
35
|
+
const hasMaterialIconValidator: boolean = validators.some(
|
|
36
|
+
(validator: DyFM_FieldNew_Validator_Descriptor): boolean =>
|
|
37
|
+
validator.type === DyFM_FieldNew_Validator_Type.pattern
|
|
38
|
+
&& validator.value === DYNAMO_MATERIAL_ICON_PATTERN,
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
if (!hasMaterialIconValidator) {
|
|
42
|
+
this.validators = [
|
|
43
|
+
...validators,
|
|
44
|
+
{
|
|
45
|
+
type: DyFM_FieldNew_Validator_Type.pattern,
|
|
46
|
+
value: DYNAMO_MATERIAL_ICON_PATTERN,
|
|
47
|
+
message: 'Enter a Material icon name such as rocket_launch.',
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -8,9 +8,12 @@ export * from './number-field-new-settings.control-model';
|
|
|
8
8
|
export * from './password-field-new-settings.control-model';
|
|
9
9
|
export * from './slider-field-new-settings.control-model';
|
|
10
10
|
export * from './slider-range-field-new-settings.control-model';
|
|
11
|
-
export * from './checkbox-field-new-settings.control-model';
|
|
11
|
+
export * from './checkbox-field-new-settings.control-model';
|
|
12
12
|
export * from './color-picker-field-new-settings.control-model';
|
|
13
|
-
export * from './
|
|
13
|
+
export * from './emoji-picker-field-new-settings.control-model';
|
|
14
|
+
export * from './icon-picker-field-new-settings.control-model';
|
|
15
|
+
export * from './picker-field-new-option.interface';
|
|
16
|
+
export * from './select-field-new-settings.control-model';
|
|
14
17
|
export * from './multiselect-field-new-settings.control-model';
|
|
15
18
|
export * from './radio-select-field-new-settings.control-model';
|
|
16
19
|
export * from './date-field-new-settings.control-model';
|