@solidev/data 0.0.1-dev.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 (155) hide show
  1. package/README.md +7 -0
  2. package/esm2020/lib/auth/auth-interceptor.service.mjs +73 -0
  3. package/esm2020/lib/auth/auth.service.mjs +114 -0
  4. package/esm2020/lib/auth/jwt.mjs +21 -0
  5. package/esm2020/lib/data/data-backend.mjs +106 -0
  6. package/esm2020/lib/data/data-collection.mjs +109 -0
  7. package/esm2020/lib/data/data-collection.mock.mjs +39 -0
  8. package/esm2020/lib/data/data-model.mjs +287 -0
  9. package/esm2020/lib/data/data-parameters.mjs +34 -0
  10. package/esm2020/lib/data/data-query.mjs +143 -0
  11. package/esm2020/lib/data/data-query.mock.mjs +46 -0
  12. package/esm2020/lib/data/fields/base.mjs +142 -0
  13. package/esm2020/lib/data/fields/boolean.mjs +38 -0
  14. package/esm2020/lib/data/fields/datetime.mjs +109 -0
  15. package/esm2020/lib/data/fields/index.mjs +7 -0
  16. package/esm2020/lib/data/fields/numbers.mjs +28 -0
  17. package/esm2020/lib/data/fields/primaryfield.mjs +9 -0
  18. package/esm2020/lib/data/fields/relations.mjs +53 -0
  19. package/esm2020/lib/data/fields/stringfields.mjs +71 -0
  20. package/esm2020/lib/dispedit/choice.pipe.mjs +38 -0
  21. package/esm2020/lib/dispedit/dispedit/dispedit.component.mjs +457 -0
  22. package/esm2020/lib/dispedit/dispedit/dispedit.constants.mjs +2 -0
  23. package/esm2020/lib/dispedit/dispedit.module.mjs +60 -0
  24. package/esm2020/lib/dispedit/fkselect/fkselect.component.mjs +140 -0
  25. package/esm2020/lib/dispedit/m2mselect/m2mselect.component.mjs +316 -0
  26. package/esm2020/lib/dispedit/sdelete/sdelete.component.mjs +43 -0
  27. package/esm2020/lib/messages/message-zone/message-zone.component.mjs +57 -0
  28. package/esm2020/lib/messages/message.service.mjs +151 -0
  29. package/esm2020/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +34 -0
  30. package/esm2020/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +63 -0
  31. package/esm2020/lib/modellist/model-list-fields/model-list-fields.mjs +225 -0
  32. package/esm2020/lib/modellist/model-list-filters/filters/filtertypes.mjs +3 -0
  33. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +104 -0
  34. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.mjs +31 -0
  35. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +25 -0
  36. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.mjs +40 -0
  37. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +21 -0
  38. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.mjs +14 -0
  39. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +21 -0
  40. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.mjs +14 -0
  41. package/esm2020/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +21 -0
  42. package/esm2020/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.mjs +14 -0
  43. package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +21 -0
  44. package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.mjs +14 -0
  45. package/esm2020/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +44 -0
  46. package/esm2020/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.mjs +49 -0
  47. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +45 -0
  48. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.mjs +26 -0
  49. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +21 -0
  50. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.mjs +14 -0
  51. package/esm2020/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +40 -0
  52. package/esm2020/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.mjs +14 -0
  53. package/esm2020/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +21 -0
  54. package/esm2020/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.mjs +14 -0
  55. package/esm2020/lib/modellist/model-list-filters/model-list-filter.mjs +41 -0
  56. package/esm2020/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +48 -0
  57. package/esm2020/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +30 -0
  58. package/esm2020/lib/modellist/model-list-filters/model-list-filters.mjs +80 -0
  59. package/esm2020/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +70 -0
  60. package/esm2020/lib/modellist/model-list-paginator/model-list-paginator.mjs +47 -0
  61. package/esm2020/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +49 -0
  62. package/esm2020/lib/modellist/model-list-sorter/model-list-sorter.mjs +116 -0
  63. package/esm2020/lib/modellist/model-list.service.mjs +115 -0
  64. package/esm2020/lib/routing/breadcrumb/breadcrumb.component.mjs +142 -0
  65. package/esm2020/lib/routing/routing.mjs +57 -0
  66. package/esm2020/lib/uploader/index.mjs +6 -0
  67. package/esm2020/lib/uploader/interfaces.mjs +8 -0
  68. package/esm2020/lib/uploader/ng-file-drop.directive.mjs +81 -0
  69. package/esm2020/lib/uploader/ng-file-select.directive.mjs +51 -0
  70. package/esm2020/lib/uploader/ngx-uploader.class.mjs +308 -0
  71. package/esm2020/lib/uploader/ngx-uploader.module.mjs +17 -0
  72. package/esm2020/lib/utils/slugify.mjs +16 -0
  73. package/esm2020/lib/utils/tab-memory.service.mjs +71 -0
  74. package/esm2020/public-api.mjs +41 -0
  75. package/esm2020/solidev-data.mjs +5 -0
  76. package/fesm2015/solidev-data.mjs +4791 -0
  77. package/fesm2015/solidev-data.mjs.map +1 -0
  78. package/fesm2020/solidev-data.mjs +4757 -0
  79. package/fesm2020/solidev-data.mjs.map +1 -0
  80. package/index.d.ts +5 -0
  81. package/lib/auth/auth-interceptor.service.d.ts +16 -0
  82. package/lib/auth/auth.service.d.ts +38 -0
  83. package/lib/auth/jwt.d.ts +22 -0
  84. package/lib/data/data-backend.d.ts +47 -0
  85. package/lib/data/data-collection.d.ts +87 -0
  86. package/lib/data/data-collection.mock.d.ts +19 -0
  87. package/lib/data/data-model.d.ts +91 -0
  88. package/lib/data/data-parameters.d.ts +26 -0
  89. package/lib/data/data-query.d.ts +100 -0
  90. package/lib/data/data-query.mock.d.ts +25 -0
  91. package/lib/data/fields/base.d.ts +116 -0
  92. package/lib/data/fields/boolean.d.ts +9 -0
  93. package/lib/data/fields/datetime.d.ts +39 -0
  94. package/lib/data/fields/index.d.ts +6 -0
  95. package/lib/data/fields/numbers.d.ts +31 -0
  96. package/lib/data/fields/primaryfield.d.ts +8 -0
  97. package/lib/data/fields/relations.d.ts +45 -0
  98. package/lib/data/fields/stringfields.d.ts +50 -0
  99. package/lib/dispedit/choice.pipe.d.ts +8 -0
  100. package/lib/dispedit/dispedit/dispedit.component.d.ts +177 -0
  101. package/lib/dispedit/dispedit/dispedit.constants.d.ts +6 -0
  102. package/lib/dispedit/dispedit.module.d.ts +20 -0
  103. package/lib/dispedit/fkselect/fkselect.component.d.ts +43 -0
  104. package/lib/dispedit/m2mselect/m2mselect.component.d.ts +120 -0
  105. package/lib/dispedit/sdelete/sdelete.component.d.ts +26 -0
  106. package/lib/messages/message-zone/message-zone.component.d.ts +14 -0
  107. package/lib/messages/message.service.d.ts +59 -0
  108. package/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.d.ts +15 -0
  109. package/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.d.ts +19 -0
  110. package/lib/modellist/model-list-fields/model-list-fields.d.ts +67 -0
  111. package/lib/modellist/model-list-filters/filters/filtertypes.d.ts +1 -0
  112. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.d.ts +30 -0
  113. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.d.ts +24 -0
  114. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.d.ts +10 -0
  115. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.d.ts +15 -0
  116. package/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.d.ts +11 -0
  117. package/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.d.ts +4 -0
  118. package/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.d.ts +11 -0
  119. package/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.d.ts +4 -0
  120. package/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.d.ts +11 -0
  121. package/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.d.ts +4 -0
  122. package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.d.ts +11 -0
  123. package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.d.ts +4 -0
  124. package/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.d.ts +17 -0
  125. package/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.d.ts +19 -0
  126. package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.d.ts +17 -0
  127. package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.d.ts +16 -0
  128. package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.d.ts +11 -0
  129. package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.d.ts +4 -0
  130. package/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.d.ts +16 -0
  131. package/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.d.ts +4 -0
  132. package/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.d.ts +11 -0
  133. package/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.d.ts +4 -0
  134. package/lib/modellist/model-list-filters/model-list-filter.d.ts +31 -0
  135. package/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.d.ts +9 -0
  136. package/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.d.ts +13 -0
  137. package/lib/modellist/model-list-filters/model-list-filters.d.ts +15 -0
  138. package/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.d.ts +23 -0
  139. package/lib/modellist/model-list-paginator/model-list-paginator.d.ts +16 -0
  140. package/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.d.ts +22 -0
  141. package/lib/modellist/model-list-sorter/model-list-sorter.d.ts +61 -0
  142. package/lib/modellist/model-list.service.d.ts +79 -0
  143. package/lib/routing/breadcrumb/breadcrumb.component.d.ts +42 -0
  144. package/lib/routing/routing.d.ts +64 -0
  145. package/lib/uploader/index.d.ts +5 -0
  146. package/lib/uploader/interfaces.d.ts +67 -0
  147. package/lib/uploader/ng-file-drop.directive.d.ts +22 -0
  148. package/lib/uploader/ng-file-select.directive.d.ts +19 -0
  149. package/lib/uploader/ngx-uploader.class.d.ts +35 -0
  150. package/lib/uploader/ngx-uploader.module.d.ts +8 -0
  151. package/lib/utils/slugify.d.ts +1 -0
  152. package/lib/utils/tab-memory.service.d.ts +29 -0
  153. package/package.json +32 -0
  154. package/public-api.d.ts +37 -0
  155. package/src/lib/data/README.md +35 -0
@@ -0,0 +1,142 @@
1
+ import 'reflect-metadata';
2
+ import { FormControl, Validators } from '@angular/forms';
3
+ export const PROPERTY_METADATA_KEY = Symbol('ngxDataMetadata');
4
+ /**
5
+ * Base field manager, stores metadata and provides common field utilities
6
+ *
7
+ * - name : field name, should be the same in data structure and model
8
+ * - help : field help text, blank by default
9
+ * - description : field name for humans
10
+ * - readonly : field is readonly (cannot be changed / pushed to api)
11
+ * - default : default value for field
12
+ *
13
+ * - editor_type : editor type
14
+ * - display_type : display type
15
+ *
16
+ * - fromJson(data) : deserializer
17
+ * - toJson(data) : serialiser
18
+ * - toString(data,format) : to string, for display
19
+ *
20
+ * - formControl : returns field form control
21
+ * - validators : returns field validator
22
+ */
23
+ export class BaseFieldManager {
24
+ constructor(params) {
25
+ this.required = false;
26
+ this.readonly = false;
27
+ this.editorType = 'input.text';
28
+ this.displayType = 'text';
29
+ Object.assign(this, params);
30
+ if (!this.name) {
31
+ this.name = 'noname';
32
+ }
33
+ if (!this.description) {
34
+ this.description = this.name;
35
+ }
36
+ if (!this.help) {
37
+ this.help = '';
38
+ }
39
+ this.getDefaultValue();
40
+ }
41
+ /** Return field validators */
42
+ get validators() {
43
+ return this.getValidators();
44
+ }
45
+ /** Returns current field name */
46
+ get fname() {
47
+ return this.name.split('__')[1] || this.name;
48
+ }
49
+ /** Create a new typed formControl for this field. */
50
+ formControl(instance) {
51
+ return new FormControl(instance[this.fname] || this.getDefaultValue(), this.validators);
52
+ }
53
+ /** JSON deserializer base method. */
54
+ fromJson(data) {
55
+ return data;
56
+ }
57
+ /** JSON serializer base method. */
58
+ toJson(data) {
59
+ return data;
60
+ }
61
+ /**
62
+ * Display value (as string)
63
+ * @param data
64
+ * @param format (not used)
65
+ */
66
+ toString(data, format = 'default') {
67
+ return `${data}`;
68
+ }
69
+ /** Return validators
70
+ *
71
+ * @protected
72
+ */
73
+ getValidators() {
74
+ const v = [];
75
+ if (this.required) {
76
+ v.push(Validators.required);
77
+ }
78
+ return v;
79
+ }
80
+ /**
81
+ * Returns default value for model, using args if needed.
82
+ * @param args
83
+ */
84
+ default(args = {}) {
85
+ return this.getDefaultValue(args);
86
+ }
87
+ /**
88
+ * Returns default value for model, using args if needed.
89
+ * @param args
90
+ * @protected
91
+ */
92
+ getDefaultValue(args = {}) {
93
+ if (this.defaultValue instanceof Function) {
94
+ return this.defaultValue(args);
95
+ }
96
+ if (this.required && this.defaultValue === undefined) {
97
+ throw new Error(`Field ${this.name} : no default value for required field`);
98
+ }
99
+ return this.defaultValue;
100
+ }
101
+ }
102
+ /** Util to get own object keys */
103
+ const ownKeys = (target) => Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));
104
+ /**
105
+ * Creates a field decorator that can only be applied within
106
+ * an object containing a static __name property.
107
+ *
108
+ *
109
+ * @param meta field metadata
110
+ * @param type field type code
111
+ * @param manager field manager
112
+ */
113
+ export function genericDataField(meta, type, manager) {
114
+ return (target, propertyKey) => {
115
+ const allMetadata = Reflect.getMetadata(PROPERTY_METADATA_KEY, target) ||
116
+ new Map();
117
+ let cname = `${target.constructor.__name}`;
118
+ if ((cname === `undefined` || cname === '') && type !== 'primaryField') {
119
+ throw Error(`Decorator ${type} allowed only on classes with static __name field : "${cname}" found for - ${target}`);
120
+ }
121
+ const pk = `${cname}__${String(propertyKey)}`;
122
+ let cm = allMetadata.get(pk);
123
+ /* istanbul ignore if */
124
+ if (cm) {
125
+ // This should never occur as metadata is object bound and property names must be unique
126
+ throw Error(`Field ${pk} already defined = ${cm}`);
127
+ }
128
+ cm = {};
129
+ for (const key of ownKeys(meta)) {
130
+ cm[key] = meta[key];
131
+ }
132
+ if (meta.name === undefined) {
133
+ cm.name = `${String(propertyKey)}`;
134
+ }
135
+ cm.type = type;
136
+ cm.self = pk;
137
+ cm.manager = new manager(cm);
138
+ allMetadata.set(pk, cm);
139
+ Reflect.defineMetadata(PROPERTY_METADATA_KEY, allMetadata, target);
140
+ };
141
+ }
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9kYXRhL2ZpZWxkcy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU90RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQXFCL0Q7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFhM0IsWUFBWSxNQUEwQjtRQVAvQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIsZUFBVSxHQUEwQixZQUFZLENBQUM7UUFDakQsZ0JBQVcsR0FBMkIsTUFBTSxDQUFDO1FBR2xELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7U0FDdEI7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDOUI7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1NBQ2hCO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJ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QUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNwRDtRQUNELEVBQUUsR0FBRyxFQUErQixDQUFDO1FBQ3JDLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxDQUFDLElBQVcsQ0FBQyxFQUFFO1lBQ3JDLEVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBSSxJQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdkM7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQzNCLEVBQUUsQ0FBQyxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztTQUNwQztRQUNELEVBQUUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2YsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDYixFQUFFLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxjQUFjLENBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JFLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRGF0YU1vZGVsIH0gZnJvbSAnLi4vZGF0YS1tb2RlbCc7XG5pbXBvcnQge1xuICBESVNQRURJVF9ESVNQTEFZX1RZUEVTLFxuICBESVNQRURJVF9FRElUT1JfVFlQRVMsXG59IGZyb20gJy4uLy4uL2Rpc3BlZGl0L2Rpc3BlZGl0L2Rpc3BlZGl0LmNvbnN0YW50cyc7XG5cbmV4cG9ydCBjb25zdCBQUk9QRVJUWV9NRVRBREFUQV9LRVkgPSBTeW1ib2woJ25neERhdGFNZXRhZGF0YScpO1xuXG4vKipcbiAqIERlc2NyaXB0aXZlIGluZm8gZm9yIGFsbCBmaWVsZHMuXG4gKiBBbGwgYXJlIG9wdGlvbmFsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaWVsZE1ldGFkYXRhPEZUPiB7XG4gIC8qKiBGaWVsZCBuYW1lIChmb3IgZGlzcGxheSwgY29sdW1uIHRpdGxlLCBldGMuLikgKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqIEZpZWxkIGhlbHAgdGV4dCAoZm9yIGlucHV0KSAqL1xuICBoZWxwPzogc3RyaW5nO1xuICAvKiogRmllbGQgZGVzY3JpcHRpb24gKGZvciBkZXRhaWxzIG9uIGhvdmVyIGV0Yy4uKSAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIEZpZWxkIHJlcXVpcmVkIDogbm8gdW5kZWZpbmVkIGFsbG93ZWQgb24gc2F2ZSA/ICovXG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgLyoqIEZpZWxkIGNhbm5vdCBiZSB1cGRhdGVkICovXG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcbiAgLyoqIERlZmF1bHQgdmFsdWUgKi9cbiAgZGVmYXVsdFZhbHVlPzogRlQgfCAoKGFyZ3M6IGFueSkgPT4gRlQpIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBCYXNlIGZpZWxkIG1hbmFnZXIsIHN0b3JlcyBtZXRhZGF0YSBhbmQgcHJvdmlkZXMgY29tbW9uIGZpZWxkIHV0aWxpdGllc1xuICpcbiAqIC0gbmFtZSA6IGZpZWxkIG5hbWUsIHNob3VsZCBiZSB0aGUgc2FtZSBpbiBkYXRhIHN0cnVjdHVyZSBhbmQgbW9kZWxcbiAqIC0gaGVscCA6IGZpZWxkIGhlbHAgdGV4dCwgYmxhbmsgYnkgZGVmYXVsdFxuICogLSBkZXNjcmlwdGlvbiA6IGZpZWxkIG5hbWUgZm9yIGh1bWFuc1xuICogLSByZWFkb25seSA6IGZpZWxkIGlzIHJlYWRvbmx5IChjYW5ub3QgYmUgY2hhbmdlZCAvIHB1c2hlZCB0byBhcGkpXG4gKiAtIGRlZmF1bHQgOiBkZWZhdWx0IHZhbHVlIGZvciBmaWVsZFxuICpcbiAqIC0gZWRpdG9yX3R5cGUgOiBlZGl0b3IgdHlwZVxuICogLSBkaXNwbGF5X3R5cGUgOiBkaXNwbGF5IHR5cGVcbiAqXG4gKiAtIGZyb21Kc29uKGRhdGEpIDogZGVzZXJpYWxpemVyXG4gKiAtIHRvSnNvbihkYXRhKSA6IHNlcmlhbGlzZXJcbiAqIC0gdG9TdHJpbmcoZGF0YSxmb3JtYXQpIDogdG8gc3RyaW5nLCBmb3IgZGlzcGxheVxuICpcbiAqIC0gZm9ybUNvbnRyb2wgOiByZXR1cm5zIGZpZWxkIGZvcm0gY29udHJvbFxuICogLSB2YWxpZGF0b3JzIDogcmV0dXJucyBmaWVsZCB2YWxpZGF0b3JcbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VGaWVsZE1hbmFnZXI8RlQ+IGltcGxlbWVudHMgSUZpZWxkTWV0YWRhdGE8RlQ+IHtcbiAgLyoqIE5hbWUgaXMgbWFuZGF0b3J5IGluIGEgZmllbGQgbWFuYWdlci4gSXQgaXMgZ2l2ZW4gYnlcbiAgICogZmllbGQgZGVjb3JhdG9yIGlmIG5vdCBkaXJlY3RseSBnaXZlbiBpbiBmaWVsZCBtYW5hZ2VyLiAqL1xuICBwdWJsaWMgbmFtZSE6IHN0cmluZztcbiAgcHVibGljIGRlc2NyaXB0aW9uITogc3RyaW5nO1xuICBwdWJsaWMgaGVscCE6IHN0cmluZztcbiAgcHVibGljIHJlcXVpcmVkID0gZmFsc2U7XG4gIHB1YmxpYyByZWFkb25seSA9IGZhbHNlO1xuICBwdWJsaWMgZGVmYXVsdFZhbHVlPzogRlQgfCAoKGFyZ3M6IGFueSkgPT4gRlQpO1xuXG4gIHB1YmxpYyBlZGl0b3JUeXBlOiBESVNQRURJVF9FRElUT1JfVFlQRVMgPSAnaW5wdXQudGV4dCc7XG4gIHB1YmxpYyBkaXNwbGF5VHlwZTogRElTUEVESVRfRElTUExBWV9UWVBFUyA9ICd0ZXh0JztcblxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IElGaWVsZE1ldGFkYXRhPEZUPikge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgcGFyYW1zKTtcbiAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgdGhpcy5uYW1lID0gJ25vbmFtZSc7XG4gICAgfVxuICAgIGlmICghdGhpcy5kZXNjcmlwdGlvbikge1xuICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IHRoaXMubmFtZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmhlbHApIHtcbiAgICAgIHRoaXMuaGVscCA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmdldERlZmF1bHRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqIFJldHVybiBmaWVsZCB2YWxpZGF0b3JzICovXG4gIHB1YmxpYyBnZXQgdmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWxpZGF0b3JzKCk7XG4gIH1cblxuICAvKiogUmV0dXJucyBjdXJyZW50IGZpZWxkIG5hbWUgKi9cbiAgcHVibGljIGdldCBmbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm5hbWUuc3BsaXQoJ19fJylbMV0gfHwgdGhpcy5uYW1lO1xuICB9XG5cbiAgLyoqIENyZWF0ZSBhIG5ldyB0eXBlZCBmb3JtQ29udHJvbCBmb3IgdGhpcyBmaWVsZC4gKi9cbiAgcHVibGljIGZvcm1Db250cm9sKGluc3RhbmNlOiBEYXRhTW9kZWwpOiBGb3JtQ29udHJvbDxGVCB8IG51bGw+IHtcbiAgICByZXR1cm4gbmV3IEZvcm1Db250cm9sPEZUPihcbiAgICAgICgoaW5zdGFuY2UgYXMgYW55KVt0aGlzLmZuYW1lXSBhcyBGVCkgfHwgKHRoaXMuZ2V0RGVmYXVsdFZhbHVlKCkgYXMgRlQpLFxuICAgICAgdGhpcy52YWxpZGF0b3JzXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBKU09OIGRlc2VyaWFsaXplciBiYXNlIG1ldGhvZC4gKi9cbiAgcHVibGljIGZyb21Kc29uKGRhdGE6IGFueSk6IEZUIHtcbiAgICByZXR1cm4gZGF0YSBhcyBGVDtcbiAgfVxuXG4gIC8qKiBKU09OIHNlcmlhbGl6ZXIgYmFzZSBtZXRob2QuICovXG4gIHB1YmxpYyB0b0pzb24oZGF0YTogRlQpOiBhbnkge1xuICAgIHJldHVybiBkYXRhIGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5IHZhbHVlIChhcyBzdHJpbmcpXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEBwYXJhbSBmb3JtYXQgKG5vdCB1c2VkKVxuICAgKi9cbiAgcHVibGljIHRvU3RyaW5nKGRhdGE6IEZULCBmb3JtYXQ6IHN0cmluZyA9ICdkZWZhdWx0Jyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2RhdGF9YDtcbiAgfVxuXG4gIC8qKiBSZXR1cm4gdmFsaWRhdG9yc1xuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0VmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICBjb25zdCB2OiBWYWxpZGF0b3JGbltdID0gW107XG4gICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcbiAgICAgIHYucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIHY7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBkZWZhdWx0IHZhbHVlIGZvciBtb2RlbCwgdXNpbmcgYXJncyBpZiBuZWVkZWQuXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqL1xuICBwdWJsaWMgZGVmYXVsdChhcmdzOiBhbnkgPSB7fSk6IEZUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5nZXREZWZhdWx0VmFsdWUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBkZWZhdWx0IHZhbHVlIGZvciBtb2RlbCwgdXNpbmcgYXJncyBpZiBuZWVkZWQuXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXREZWZhdWx0VmFsdWUoYXJnczogYW55ID0ge30pOiBGVCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuZGVmYXVsdFZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRWYWx1ZShhcmdzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgdGhpcy5kZWZhdWx0VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRmllbGQgJHt0aGlzLm5hbWV9IDogbm8gZGVmYXVsdCB2YWx1ZSBmb3IgcmVxdWlyZWQgZmllbGRgXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0VmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBGaWVsZCBkYXRhIHN0b3JlZCBvbiByZWZsZWN0ZWQgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZpZWxkU3RvcmVkTWV0YWRhdGE8RlQ+IGV4dGVuZHMgSUZpZWxkTWV0YWRhdGE8RlQ+IHtcbiAgc2VsZjogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgbWFuYWdlcjogQmFzZUZpZWxkTWFuYWdlcjxGVD47XG59XG5cbi8qKiBVdGlsIHRvIGdldCBvd24gb2JqZWN0IGtleXMgKi9cbmNvbnN0IG93bktleXMgPSAodGFyZ2V0OiBhbnkpOiBhbnkgPT5cbiAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KS5jb25jYXQoXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0YXJnZXQpIGFzIGFueVxuICApO1xuXG4vKiogTWFuYWdlciBjb25zdHJ1Y3RvclxuICogIEZUIGlzIGpzIGZpZWxkIHR5cGU7XG4gKiAgVCBpcyBtYW5hZ2VyIHR5cGVcbiAqICovXG50eXBlIEJhc2VGaWVsZE1hbmFnZXJDb25zdHJ1Y3RvcjxGVCwgVCBleHRlbmRzIEJhc2VGaWVsZE1hbmFnZXI8RlQ+PiA9IG5ldyAoXG4gIHBhcmFtczogYW55XG4pID0+IFQ7XG5cbi8qKlxuICogRmllbGQgZGVjb3JhdG9yIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIEZpZWxkRGVjb3JhdG9yRm4gPSAoXG4gIHRhcmdldDogYW55LFxuICBwcm9wZXJ0eUtleTogc3RyaW5nIHwgc3ltYm9sXG4pID0+IHZvaWQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZpZWxkIGRlY29yYXRvciB0aGF0IGNhbiBvbmx5IGJlIGFwcGxpZWQgd2l0aGluXG4gKiBhbiBvYmplY3QgY29udGFpbmluZyBhIHN0YXRpYyBfX25hbWUgcHJvcGVydHkuXG4gKlxuICpcbiAqIEBwYXJhbSBtZXRhIGZpZWxkIG1ldGFkYXRhXG4gKiBAcGFyYW0gdHlwZSBmaWVsZCB0eXBlIGNvZGVcbiAqIEBwYXJhbSBtYW5hZ2VyIGZpZWxkIG1hbmFnZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyaWNEYXRhRmllbGQ8XG4gIEZULFxuICBNRCBleHRlbmRzIElGaWVsZE1ldGFkYXRhPEZUPixcbiAgTUcgZXh0ZW5kcyBCYXNlRmllbGRNYW5hZ2VyPEZUPlxuPihcbiAgbWV0YTogTUQsXG4gIHR5cGU6IHN0cmluZyxcbiAgbWFuYWdlcjogQmFzZUZpZWxkTWFuYWdlckNvbnN0cnVjdG9yPEZULCBNRz5cbik6IEZpZWxkRGVjb3JhdG9yRm4ge1xuICByZXR1cm4gKHRhcmdldDogRGF0YU1vZGVsLCBwcm9wZXJ0eUtleTogc3RyaW5nIHwgc3ltYm9sKSA9PiB7XG4gICAgY29uc3QgYWxsTWV0YWRhdGE6IE1hcDxcbiAgICAgIHN0cmluZyxcbiAgICAgIElGaWVsZFN0b3JlZE1ldGFkYXRhPGFueT5cbiAgICA+ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShQUk9QRVJUWV9NRVRBREFUQV9LRVksIHRhcmdldCkgfHxcbiAgICBuZXcgTWFwPHN0cmluZywgSUZpZWxkU3RvcmVkTWV0YWRhdGE8YW55Pj4oKTtcbiAgICBsZXQgY25hbWU6IHN0cmluZyA9IGAkeyh0YXJnZXQuY29uc3RydWN0b3IgYXMgYW55KS5fX25hbWV9YDtcbiAgICBpZiAoKGNuYW1lID09PSBgdW5kZWZpbmVkYCB8fCBjbmFtZSA9PT0gJycpICYmIHR5cGUgIT09ICdwcmltYXJ5RmllbGQnKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYERlY29yYXRvciAke3R5cGV9IGFsbG93ZWQgb25seSBvbiBjbGFzc2VzIHdpdGggc3RhdGljIF9fbmFtZSBmaWVsZCA6IFwiJHtjbmFtZX1cIiBmb3VuZCBmb3IgLSAke3RhcmdldH1gXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBwayA9IGAke2NuYW1lfV9fJHtTdHJpbmcocHJvcGVydHlLZXkpfWA7XG4gICAgbGV0IGNtID0gYWxsTWV0YWRhdGEuZ2V0KHBrKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoY20pIHtcbiAgICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIG9jY3VyIGFzIG1ldGFkYXRhIGlzIG9iamVjdCBib3VuZCBhbmQgcHJvcGVydHkgbmFtZXMgbXVzdCBiZSB1bmlxdWVcbiAgICAgIHRocm93IEVycm9yKGBGaWVsZCAke3BrfSBhbHJlYWR5IGRlZmluZWQgPSAke2NtfWApO1xuICAgIH1cbiAgICBjbSA9IHt9IGFzIElGaWVsZFN0b3JlZE1ldGFkYXRhPGFueT47XG4gICAgZm9yIChjb25zdCBrZXkgb2Ygb3duS2V5cyhtZXRhIGFzIGFueSkpIHtcbiAgICAgIChjbSBhcyBhbnkpW2tleV0gPSAobWV0YSBhcyBhbnkpW2tleV07XG4gICAgfVxuICAgIGlmIChtZXRhLm5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY20ubmFtZSA9IGAke1N0cmluZyhwcm9wZXJ0eUtleSl9YDtcbiAgICB9XG4gICAgY20udHlwZSA9IHR5cGU7XG4gICAgY20uc2VsZiA9IHBrO1xuICAgIGNtLm1hbmFnZXIgPSBuZXcgbWFuYWdlcihjbSk7XG4gICAgYWxsTWV0YWRhdGEuc2V0KHBrLCBjbSk7XG4gICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShQUk9QRVJUWV9NRVRBREFUQV9LRVksIGFsbE1ldGFkYXRhLCB0YXJnZXQpO1xuICB9O1xufVxuIl19
@@ -0,0 +1,38 @@
1
+ import { BaseFieldManager, genericDataField } from './base';
2
+ export class BooleanFieldManager extends BaseFieldManager {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.editorType = 'input.checkbox';
6
+ this.displayType = 'boolean';
7
+ }
8
+ fromJson(data) {
9
+ if (data === undefined) {
10
+ if (this.required) {
11
+ return this.getDefaultValue();
12
+ }
13
+ else {
14
+ return null;
15
+ }
16
+ }
17
+ if (data === null) {
18
+ if (this.required) {
19
+ return this.getDefaultValue();
20
+ }
21
+ else {
22
+ return null;
23
+ }
24
+ }
25
+ if (typeof data === 'boolean') {
26
+ return data;
27
+ }
28
+ if (typeof data === 'string') {
29
+ if (['true', '1', 'ok', 'yes'].indexOf(data) !== -1) {
30
+ return true;
31
+ }
32
+ return ['false', '0', 'nok', 'no'].indexOf(data) === -1;
33
+ }
34
+ return !!data;
35
+ }
36
+ }
37
+ export const booleanField = (updates = {}) => genericDataField(updates, 'booleanField', BooleanFieldManager);
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9kYXRhL2ZpZWxkcy9ib29sZWFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBa0IsTUFBTSxRQUFRLENBQUM7QUFRNUUsTUFBTSxPQUFPLG1CQUNYLFNBQVEsZ0JBQWdDO0lBRDFDOztRQUlrQixlQUFVLEdBQTBCLGdCQUFnQixDQUFDO1FBQ3JELGdCQUFXLEdBQTJCLFNBQVMsQ0FBQztJQTRCbEUsQ0FBQztJQTFCaUIsUUFBUSxDQUFDLElBQVM7UUFDaEMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFHLENBQUM7YUFDaEM7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFHLENBQUM7YUFDaEM7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsSUFBSSxPQUFPLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDN0IsT0FBTyxJQUFlLENBQUM7U0FDeEI7UUFDRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUM1QixJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUNuRCxPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUN6RDtRQUNELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxVQUFpQyxFQUFFLEVBQUUsRUFBRSxDQUNsRSxnQkFBZ0IsQ0FDZCxPQUFPLEVBQ1AsY0FBYyxFQUNkLG1CQUFtQixDQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUZpZWxkTWFuYWdlciwgZ2VuZXJpY0RhdGFGaWVsZCwgSUZpZWxkTWV0YWRhdGEgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtcbiAgRElTUEVESVRfRElTUExBWV9UWVBFUyxcbiAgRElTUEVESVRfRURJVE9SX1RZUEVTLFxufSBmcm9tICcuLi8uLi9kaXNwZWRpdC9kaXNwZWRpdC9kaXNwZWRpdC5jb25zdGFudHMnO1xuXG5leHBvcnQgdHlwZSBJQm9vbGVhbkZpZWxkTWV0YWRhdGEgPSBJRmllbGRNZXRhZGF0YTxib29sZWFuIHwgbnVsbD47XG5cbmV4cG9ydCBjbGFzcyBCb29sZWFuRmllbGRNYW5hZ2VyXG4gIGV4dGVuZHMgQmFzZUZpZWxkTWFuYWdlcjxib29sZWFuIHwgbnVsbD5cbiAgaW1wbGVtZW50cyBJQm9vbGVhbkZpZWxkTWV0YWRhdGFcbntcbiAgcHVibGljIG92ZXJyaWRlIGVkaXRvclR5cGU6IERJU1BFRElUX0VESVRPUl9UWVBFUyA9ICdpbnB1dC5jaGVja2JveCc7XG4gIHB1YmxpYyBvdmVycmlkZSBkaXNwbGF5VHlwZTogRElTUEVESVRfRElTUExBWV9UWVBFUyA9ICdib29sZWFuJztcblxuICBwdWJsaWMgb3ZlcnJpZGUgZnJvbUpzb24oZGF0YTogYW55KTogYm9vbGVhbiB8IG51bGwge1xuICAgIGlmIChkYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldERlZmF1bHRWYWx1ZSgpITtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YSA9PT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGVmYXVsdFZhbHVlKCkhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gZGF0YSBhcyBib29sZWFuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoWyd0cnVlJywgJzEnLCAnb2snLCAneWVzJ10uaW5kZXhPZihkYXRhKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gWydmYWxzZScsICcwJywgJ25vaycsICdubyddLmluZGV4T2YoZGF0YSkgPT09IC0xO1xuICAgIH1cbiAgICByZXR1cm4gISFkYXRhO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBib29sZWFuRmllbGQgPSAodXBkYXRlczogSUJvb2xlYW5GaWVsZE1ldGFkYXRhID0ge30pID0+XG4gIGdlbmVyaWNEYXRhRmllbGQ8Ym9vbGVhbiB8IG51bGwsIElCb29sZWFuRmllbGRNZXRhZGF0YSwgQm9vbGVhbkZpZWxkTWFuYWdlcj4oXG4gICAgdXBkYXRlcyxcbiAgICAnYm9vbGVhbkZpZWxkJyxcbiAgICBCb29sZWFuRmllbGRNYW5hZ2VyXG4gICk7XG4iXX0=
@@ -0,0 +1,109 @@
1
+ import { BaseFieldManager, genericDataField } from './base';
2
+ export const dateMinimum = (date) => {
3
+ return (control) => {
4
+ if (control.value == null) {
5
+ return null;
6
+ }
7
+ const controlDate = new Date(control.value);
8
+ const validationDate = date;
9
+ return controlDate > validationDate
10
+ ? null
11
+ : {
12
+ minDate: {
13
+ 'date-minimum': validationDate,
14
+ actual: controlDate,
15
+ },
16
+ };
17
+ };
18
+ };
19
+ export const dateMaximum = (date) => {
20
+ return (control) => {
21
+ if (control.value == null) {
22
+ return null;
23
+ }
24
+ const controlDate = new Date(control.value);
25
+ const validationDate = date;
26
+ return controlDate < validationDate
27
+ ? null
28
+ : {
29
+ maxDate: {
30
+ 'date-maximum': validationDate,
31
+ actual: controlDate,
32
+ },
33
+ };
34
+ };
35
+ };
36
+ export class DateFieldManager extends BaseFieldManager {
37
+ constructor() {
38
+ super(...arguments);
39
+ this.autoNow = false;
40
+ this.autoNowAdd = false;
41
+ this.editorType = 'input.date';
42
+ this.displayType = 'date';
43
+ }
44
+ get validators() {
45
+ const v = super.validators;
46
+ if (this.min) {
47
+ v.push(dateMinimum(this.min));
48
+ }
49
+ if (this.max) {
50
+ v.push(dateMaximum(this.max));
51
+ }
52
+ return v;
53
+ }
54
+ fromJson(data) {
55
+ if (data === null) {
56
+ return null;
57
+ }
58
+ return new Date(data);
59
+ }
60
+ toJson(data) {
61
+ if (data === null || data === undefined) {
62
+ return null;
63
+ }
64
+ // if (typeof data === "string") {
65
+ // return data;
66
+ // }
67
+ return `${data.getUTCFullYear()}-${data.getUTCMonth() + 1}-${data.getUTCDate()}`;
68
+ }
69
+ /**
70
+ * Returns default value for model, using args if needed.
71
+ * @param args
72
+ * @protected
73
+ */
74
+ getDefaultValue(args = {}) {
75
+ if (this.defaultValue instanceof Function) {
76
+ return this.defaultValue(args);
77
+ }
78
+ if (this.required && this.defaultValue === undefined) {
79
+ throw new Error(`Field ${this.name} : no default value for required field`);
80
+ }
81
+ if (this.defaultValue === undefined) {
82
+ return this.autoNow || this.autoNowAdd ? new Date() : null;
83
+ }
84
+ return this.defaultValue;
85
+ }
86
+ }
87
+ export class DatetimeFieldManager extends DateFieldManager {
88
+ constructor() {
89
+ super(...arguments);
90
+ this.timezone = 'Europe/Paris';
91
+ this.editorType = 'input.datetime';
92
+ this.displayType = 'datetime';
93
+ }
94
+ toJson(data) {
95
+ if (data === null || data === undefined) {
96
+ return null;
97
+ }
98
+ try {
99
+ return data.toISOString();
100
+ }
101
+ catch (e) {
102
+ console.error(e, data);
103
+ return null;
104
+ }
105
+ }
106
+ }
107
+ export const dateField = (updates = {}) => genericDataField(updates, 'dateField', DateFieldManager);
108
+ export const datetimeField = (updates = {}) => genericDataField(updates, 'datetimeField', DatetimeFieldManager);
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvZGF0YS9maWVsZHMvZGF0ZXRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFrQixNQUFNLFFBQVEsQ0FBQztBQWM1RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFVLEVBQWUsRUFBRTtJQUNyRCxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtRQUMzRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ3pCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBRTVCLE9BQU8sV0FBVyxHQUFHLGNBQWM7WUFDakMsQ0FBQyxDQUFDLElBQUk7WUFDTixDQUFDLENBQUM7Z0JBQ0UsT0FBTyxFQUFFO29CQUNQLGNBQWMsRUFBRSxjQUFjO29CQUM5QixNQUFNLEVBQUUsV0FBVztpQkFDcEI7YUFDRixDQUFDO0lBQ1IsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBVSxFQUFlLEVBQUU7SUFDckQsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7UUFDM0QsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQztRQUU1QixPQUFPLFdBQVcsR0FBRyxjQUFjO1lBQ2pDLENBQUMsQ0FBQyxJ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O0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsVUFBOEIsRUFBRSxFQUFFLEVBQUUsQ0FDNUQsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBRTNELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLFVBQWtDLEVBQUUsRUFBRSxFQUFFLENBQ3BFLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VGaWVsZE1hbmFnZXIsIGdlbmVyaWNEYXRhRmllbGQsIElGaWVsZE1ldGFkYXRhIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7XG4gIERJU1BFRElUX0RJU1BMQVlfVFlQRVMsXG4gIERJU1BFRElUX0VESVRPUl9UWVBFUyxcbn0gZnJvbSAnLi4vLi4vZGlzcGVkaXQvZGlzcGVkaXQvZGlzcGVkaXQuY29uc3RhbnRzJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGVGaWVsZE1ldGFkYXRhIGV4dGVuZHMgSUZpZWxkTWV0YWRhdGE8RGF0ZSB8IG51bGw+IHtcbiAgYXV0b05vdz86IGJvb2xlYW47XG4gIGF1dG9Ob3dBZGQ/OiBib29sZWFuO1xuICBtaW4/OiBEYXRlO1xuICBtYXg/OiBEYXRlO1xufVxuXG5leHBvcnQgY29uc3QgZGF0ZU1pbmltdW0gPSAoZGF0ZTogRGF0ZSk6IFZhbGlkYXRvckZuID0+IHtcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgaWYgKGNvbnRyb2wudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbERhdGUgPSBuZXcgRGF0ZShjb250cm9sLnZhbHVlKTtcblxuICAgIGNvbnN0IHZhbGlkYXRpb25EYXRlID0gZGF0ZTtcblxuICAgIHJldHVybiBjb250cm9sRGF0ZSA+IHZhbGlkYXRpb25EYXRlXG4gICAgICA/IG51bGxcbiAgICAgIDoge1xuICAgICAgICAgIG1pbkRhdGU6IHtcbiAgICAgICAgICAgICdkYXRlLW1pbmltdW0nOiB2YWxpZGF0aW9uRGF0ZSxcbiAgICAgICAgICAgIGFjdHVhbDogY29udHJvbERhdGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkYXRlTWF4aW11bSA9IChkYXRlOiBEYXRlKTogVmFsaWRhdG9yRm4gPT4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBpZiAoY29udHJvbC52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgY29udHJvbERhdGUgPSBuZXcgRGF0ZShjb250cm9sLnZhbHVlKTtcbiAgICBjb25zdCB2YWxpZGF0aW9uRGF0ZSA9IGRhdGU7XG5cbiAgICByZXR1cm4gY29udHJvbERhdGUgPCB2YWxpZGF0aW9uRGF0ZVxuICAgICAgPyBudWxsXG4gICAgICA6IHtcbiAgICAgICAgICBtYXhEYXRlOiB7XG4gICAgICAgICAgICAnZGF0ZS1tYXhpbXVtJzogdmFsaWRhdGlvbkRhdGUsXG4gICAgICAgICAgICBhY3R1YWw6IGNvbnRyb2xEYXRlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRldGltZUZpZWxkTWV0YWRhdGEgZXh0ZW5kcyBJRGF0ZUZpZWxkTWV0YWRhdGEge1xuICB0aW1lem9uZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIERhdGVGaWVsZE1hbmFnZXIgZXh0ZW5kcyBCYXNlRmllbGRNYW5hZ2VyPERhdGUgfCBudWxsPiB7XG4gIHB1YmxpYyBhdXRvTm93ID0gZmFsc2U7XG4gIHB1YmxpYyBhdXRvTm93QWRkID0gZmFsc2U7XG4gIHB1YmxpYyBtaW4/OiBEYXRlO1xuICBwdWJsaWMgbWF4PzogRGF0ZTtcbiAgcHVibGljIG92ZXJyaWRlIGVkaXRvclR5cGU6IERJU1BFRElUX0VESVRPUl9UWVBFUyA9ICdpbnB1dC5kYXRlJztcbiAgcHVibGljIG92ZXJyaWRlIGRpc3BsYXlUeXBlOiBESVNQRURJVF9ESVNQTEFZX1RZUEVTID0gJ2RhdGUnO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgdmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICBjb25zdCB2ID0gc3VwZXIudmFsaWRhdG9ycztcbiAgICBpZiAodGhpcy5taW4pIHtcbiAgICAgIHYucHVzaChkYXRlTWluaW11bSh0aGlzLm1pbikpO1xuICAgIH1cbiAgICBpZiAodGhpcy5tYXgpIHtcbiAgICAgIHYucHVzaChkYXRlTWF4aW11bSh0aGlzLm1heCkpO1xuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBmcm9tSnNvbihkYXRhOiBhbnkpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKGRhdGEgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGUoZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgdG9Kc29uKGRhdGE6IERhdGUgfCBudWxsKTogbnVsbCB8IHN0cmluZyB7XG4gICAgaWYgKGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gaWYgKHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiKSB7XG4gICAgLy8gICByZXR1cm4gZGF0YTtcbiAgICAvLyB9XG4gICAgcmV0dXJuIGAke2RhdGEuZ2V0VVRDRnVsbFllYXIoKX0tJHtcbiAgICAgIGRhdGEuZ2V0VVRDTW9udGgoKSArIDFcbiAgICB9LSR7ZGF0YS5nZXRVVENEYXRlKCl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGRlZmF1bHQgdmFsdWUgZm9yIG1vZGVsLCB1c2luZyBhcmdzIGlmIG5lZWRlZC5cbiAgICogQHBhcmFtIGFyZ3NcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldERlZmF1bHRWYWx1ZShhcmdzOiBhbnkgPSB7fSk6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5kZWZhdWx0VmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFZhbHVlKGFyZ3MpO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiB0aGlzLmRlZmF1bHRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGaWVsZCAke3RoaXMubmFtZX0gOiBubyBkZWZhdWx0IHZhbHVlIGZvciByZXF1aXJlZCBmaWVsZGBcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRlZmF1bHRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5hdXRvTm93IHx8IHRoaXMuYXV0b05vd0FkZCA/IG5ldyBEYXRlKCkgOiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0VmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGV0aW1lRmllbGRNYW5hZ2VyXG4gIGV4dGVuZHMgRGF0ZUZpZWxkTWFuYWdlclxuICBpbXBsZW1lbnRzIElEYXRldGltZUZpZWxkTWV0YWRhdGFcbntcbiAgcHVibGljIHRpbWV6b25lID0gJ0V1cm9wZS9QYXJpcyc7XG4gIHB1YmxpYyBvdmVycmlkZSBlZGl0b3JUeXBlOiBESVNQRURJVF9FRElUT1JfVFlQRVMgPSAnaW5wdXQuZGF0ZXRpbWUnO1xuICBwdWJsaWMgb3ZlcnJpZGUgZGlzcGxheVR5cGU6IERJU1BFRElUX0RJU1BMQVlfVFlQRVMgPSAnZGF0ZXRpbWUnO1xuXG4gIHB1YmxpYyBvdmVycmlkZSB0b0pzb24oZGF0YTogRGF0ZSk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmIChkYXRhID09PSBudWxsIHx8IGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZGF0YS50b0lTT1N0cmluZygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSwgZGF0YSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGRhdGVGaWVsZCA9ICh1cGRhdGVzOiBJRGF0ZUZpZWxkTWV0YWRhdGEgPSB7fSkgPT5cbiAgZ2VuZXJpY0RhdGFGaWVsZCh1cGRhdGVzLCAnZGF0ZUZpZWxkJywgRGF0ZUZpZWxkTWFuYWdlcik7XG5cbmV4cG9ydCBjb25zdCBkYXRldGltZUZpZWxkID0gKHVwZGF0ZXM6IElEYXRldGltZUZpZWxkTWV0YWRhdGEgPSB7fSkgPT5cbiAgZ2VuZXJpY0RhdGFGaWVsZCh1cGRhdGVzLCAnZGF0ZXRpbWVGaWVsZCcsIERhdGV0aW1lRmllbGRNYW5hZ2VyKTtcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export { charField, emailField, textField, passwordField, } from './stringfields';
2
+ export { primaryField } from './primaryfield';
3
+ export { dateField, datetimeField } from './datetime';
4
+ export { foreignKeyField, manyToManyField, reverseForeignKeyField, detailsField, } from './relations';
5
+ export { booleanField } from './boolean';
6
+ export { decimalField, integerField, floatField } from './numbers';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvZGF0YS9maWVsZHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxFQUNULGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIsWUFBWSxHQUNiLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgY2hhckZpZWxkLFxuICBlbWFpbEZpZWxkLFxuICB0ZXh0RmllbGQsXG4gIHBhc3N3b3JkRmllbGQsXG59IGZyb20gJy4vc3RyaW5nZmllbGRzJztcbmV4cG9ydCB7IHByaW1hcnlGaWVsZCB9IGZyb20gJy4vcHJpbWFyeWZpZWxkJztcbmV4cG9ydCB7IGRhdGVGaWVsZCwgZGF0ZXRpbWVGaWVsZCB9IGZyb20gJy4vZGF0ZXRpbWUnO1xuZXhwb3J0IHtcbiAgZm9yZWlnbktleUZpZWxkLFxuICBtYW55VG9NYW55RmllbGQsXG4gIHJldmVyc2VGb3JlaWduS2V5RmllbGQsXG4gIGRldGFpbHNGaWVsZCxcbn0gZnJvbSAnLi9yZWxhdGlvbnMnO1xuZXhwb3J0IHsgYm9vbGVhbkZpZWxkIH0gZnJvbSAnLi9ib29sZWFuJztcbmV4cG9ydCB7IGRlY2ltYWxGaWVsZCwgaW50ZWdlckZpZWxkLCBmbG9hdEZpZWxkIH0gZnJvbSAnLi9udW1iZXJzJztcbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { BaseFieldManager, genericDataField, } from './base';
2
+ import { Validators } from '@angular/forms';
3
+ export class IntegerFieldManager extends BaseFieldManager {
4
+ get validators() {
5
+ const v = super.getValidators();
6
+ if (this.min !== undefined) {
7
+ v.push(Validators.min(this.min));
8
+ }
9
+ if (this.max !== undefined) {
10
+ v.push(Validators.max(this.max));
11
+ }
12
+ return v;
13
+ }
14
+ }
15
+ export class FloatFieldManager extends IntegerFieldManager {
16
+ }
17
+ export class DecimalFieldManager extends IntegerFieldManager {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.displayType = 'decimal';
21
+ this.editorType = 'input.decimal';
22
+ }
23
+ }
24
+ /* eslint-disable max-len */
25
+ export const integerField = (updates = {}) => genericDataField(updates, 'integerField', IntegerFieldManager);
26
+ export const floatField = (updates = {}) => genericDataField(updates, 'floatField', FloatFieldManager);
27
+ export const decimalField = (updates = { factor: 100 }) => genericDataField(updates, 'decimalField', DecimalFieldManager);
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9kYXRhL2ZpZWxkcy9udW1iZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFFaEIsZ0JBQWdCLEdBRWpCLE1BQU0sUUFBUSxDQUFDO0FBS2hCLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWtCekQsTUFBTSxPQUFPLG1CQUNYLFNBQVEsZ0JBQXdCO0lBTWhDLElBQW9CLFVBQVU7UUFDNUIsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hDLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxTQUFTLEVBQUU7WUFDMUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRTtZQUMxQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDbEM7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxpQkFDWCxTQUFRLG1CQUFtQjtDQUNNO0FBRW5DLE1BQU0sT0FBTyxtQkFDWCxTQUFRLG1CQUFtQjtJQUQ3Qjs7UUFLa0IsZ0JBQVcsR0FBMkIsU0FBUyxDQUFDO1FBQ2hELGVBQVUsR0FBMEIsZUFBZSxDQUFDO0lBQ3RFLENBQUM7Q0FBQTtBQUVELDRCQUE0QjtBQUM1QixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FDMUIsVUFBaUMsRUFBRSxFQUNqQixFQUFFLENBQ3BCLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQUVqRSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FDeEIsVUFBK0IsRUFBRSxFQUNmLEVBQUUsQ0FDcEIsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBRTdELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUMxQixVQUFpQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFDOUIsRUFBRSxDQUNwQixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlRmllbGRNYW5hZ2VyLFxuICBGaWVsZERlY29yYXRvckZuLFxuICBnZW5lcmljRGF0YUZpZWxkLFxuICBJRmllbGRNZXRhZGF0YSxcbn0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7XG4gIERJU1BFRElUX0RJU1BMQVlfVFlQRVMsXG4gIERJU1BFRElUX0VESVRPUl9UWVBFUyxcbn0gZnJvbSAnLi4vLi4vZGlzcGVkaXQvZGlzcGVkaXQvZGlzcGVkaXQuY29uc3RhbnRzJztcbmltcG9ydCB7IFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElJbnRlZ2VyRmllbGRNZXRhZGF0YSBleHRlbmRzIElGaWVsZE1ldGFkYXRhPG51bWJlcj4ge1xuICBtaW4/OiBudW1iZXI7XG4gIG1heD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRmxvYXRGaWVsZE1ldGFkYXRhIGV4dGVuZHMgSUZpZWxkTWV0YWRhdGE8bnVtYmVyPiB7XG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEZWNpbWFsRmllbGRNZXRhZGF0YSBleHRlbmRzIElGaWVsZE1ldGFkYXRhPG51bWJlcj4ge1xuICBtaW4/OiBudW1iZXI7XG4gIG1heD86IG51bWJlcjtcbiAgZmFjdG9yPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgSW50ZWdlckZpZWxkTWFuYWdlclxuICBleHRlbmRzIEJhc2VGaWVsZE1hbmFnZXI8bnVtYmVyPlxuICBpbXBsZW1lbnRzIElJbnRlZ2VyRmllbGRNZXRhZGF0YVxue1xuICBwdWJsaWMgbWluPzogbnVtYmVyO1xuICBwdWJsaWMgbWF4PzogbnVtYmVyO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgdmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICBjb25zdCB2ID0gc3VwZXIuZ2V0VmFsaWRhdG9ycygpO1xuICAgIGlmICh0aGlzLm1pbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2LnB1c2goVmFsaWRhdG9ycy5taW4odGhpcy5taW4pKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubWF4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHYucHVzaChWYWxpZGF0b3JzLm1heCh0aGlzLm1heCkpO1xuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmxvYXRGaWVsZE1hbmFnZXJcbiAgZXh0ZW5kcyBJbnRlZ2VyRmllbGRNYW5hZ2VyXG4gIGltcGxlbWVudHMgSUZsb2F0RmllbGRNZXRhZGF0YSB7fVxuXG5leHBvcnQgY2xhc3MgRGVjaW1hbEZpZWxkTWFuYWdlclxuICBleHRlbmRzIEludGVnZXJGaWVsZE1hbmFnZXJcbiAgaW1wbGVtZW50cyBJRGVjaW1hbEZpZWxkTWV0YWRhdGFcbntcbiAgcHVibGljIGZhY3Rvcj86IG51bWJlcjtcbiAgcHVibGljIG92ZXJyaWRlIGRpc3BsYXlUeXBlOiBESVNQRURJVF9ESVNQTEFZX1RZUEVTID0gJ2RlY2ltYWwnO1xuICBwdWJsaWMgb3ZlcnJpZGUgZWRpdG9yVHlwZTogRElTUEVESVRfRURJVE9SX1RZUEVTID0gJ2lucHV0LmRlY2ltYWwnO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5leHBvcnQgY29uc3QgaW50ZWdlckZpZWxkID0gKFxuICB1cGRhdGVzOiBJSW50ZWdlckZpZWxkTWV0YWRhdGEgPSB7fVxuKTogRmllbGREZWNvcmF0b3JGbiA9PlxuICBnZW5lcmljRGF0YUZpZWxkKHVwZGF0ZXMsICdpbnRlZ2VyRmllbGQnLCBJbnRlZ2VyRmllbGRNYW5hZ2VyKTtcblxuZXhwb3J0IGNvbnN0IGZsb2F0RmllbGQgPSAoXG4gIHVwZGF0ZXM6IElGbG9hdEZpZWxkTWV0YWRhdGEgPSB7fVxuKTogRmllbGREZWNvcmF0b3JGbiA9PlxuICBnZW5lcmljRGF0YUZpZWxkKHVwZGF0ZXMsICdmbG9hdEZpZWxkJywgRmxvYXRGaWVsZE1hbmFnZXIpO1xuXG5leHBvcnQgY29uc3QgZGVjaW1hbEZpZWxkID0gKFxuICB1cGRhdGVzOiBJRGVjaW1hbEZpZWxkTWV0YWRhdGEgPSB7IGZhY3RvcjogMTAwIH1cbik6IEZpZWxkRGVjb3JhdG9yRm4gPT5cbiAgZ2VuZXJpY0RhdGFGaWVsZCh1cGRhdGVzLCAnZGVjaW1hbEZpZWxkJywgRGVjaW1hbEZpZWxkTWFuYWdlcik7XG4iXX0=
@@ -0,0 +1,9 @@
1
+ import { BaseFieldManager, genericDataField, } from './base';
2
+ export class PrimaryFieldManager extends BaseFieldManager {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.step = 1;
6
+ }
7
+ }
8
+ export const primaryField = (updates = {}) => genericDataField(updates, 'primaryField', PrimaryFieldManager);
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWFyeWZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2RhdGEvZmllbGRzL3ByaW1hcnlmaWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLGdCQUFnQixHQUVqQixNQUFNLFFBQVEsQ0FBQztBQU1oQixNQUFNLE9BQU8sbUJBQ1gsU0FBUSxnQkFBd0I7SUFEbEM7O1FBSVMsU0FBSSxHQUFHLENBQUMsQ0FBQztJQUNsQixDQUFDO0NBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FDMUIsVUFBaUMsRUFBRSxFQUNqQixFQUFFLENBQ3BCLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VGaWVsZE1hbmFnZXIsXG4gIEZpZWxkRGVjb3JhdG9yRm4sXG4gIGdlbmVyaWNEYXRhRmllbGQsXG4gIElGaWVsZE1ldGFkYXRhLFxufSBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQcmltYXJ5RmllbGRNZXRhZGF0YSBleHRlbmRzIElGaWVsZE1ldGFkYXRhPG51bWJlcj4ge1xuICBzdGVwPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgUHJpbWFyeUZpZWxkTWFuYWdlclxuICBleHRlbmRzIEJhc2VGaWVsZE1hbmFnZXI8bnVtYmVyPlxuICBpbXBsZW1lbnRzIElQcmltYXJ5RmllbGRNZXRhZGF0YVxue1xuICBwdWJsaWMgc3RlcCA9IDE7XG59XG5cbmV4cG9ydCBjb25zdCBwcmltYXJ5RmllbGQgPSAoXG4gIHVwZGF0ZXM6IElQcmltYXJ5RmllbGRNZXRhZGF0YSA9IHt9XG4pOiBGaWVsZERlY29yYXRvckZuID0+XG4gIGdlbmVyaWNEYXRhRmllbGQodXBkYXRlcywgJ3ByaW1hcnlGaWVsZCcsIFByaW1hcnlGaWVsZE1hbmFnZXIpO1xuIl19
@@ -0,0 +1,53 @@
1
+ import { BaseFieldManager, genericDataField, } from './base';
2
+ export class ForeignKeyFieldManager extends BaseFieldManager {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.editorType = 'fkselect';
6
+ this.displayType = 'fkdetails';
7
+ }
8
+ }
9
+ export class ReverseForeignKeyFieldManager extends BaseFieldManager {
10
+ }
11
+ export class DetailsFieldManager extends BaseFieldManager {
12
+ fromJson(data, coll) {
13
+ if (data === null) {
14
+ return data;
15
+ }
16
+ if (data === undefined) {
17
+ return undefined;
18
+ }
19
+ if (this.deserialize) {
20
+ return this.deserialize(data);
21
+ }
22
+ if (this.model) {
23
+ if (!this.many) {
24
+ const d = new this.model(coll);
25
+ d.fromJson(data);
26
+ return d;
27
+ }
28
+ else {
29
+ const out = [];
30
+ for (const dt of data) {
31
+ const d = new this.model(coll);
32
+ d.fromJson(dt);
33
+ out.push(d);
34
+ }
35
+ return out;
36
+ }
37
+ }
38
+ return data;
39
+ }
40
+ }
41
+ export class ManyToManyFieldManager extends BaseFieldManager {
42
+ constructor() {
43
+ super(...arguments);
44
+ this.editorType = 'm2mselect';
45
+ this.displayType = 'm2mdetails';
46
+ }
47
+ }
48
+ /* eslint-disable max-len */
49
+ export const foreignKeyField = (updates) => genericDataField(updates, 'foreignKeyField', ForeignKeyFieldManager);
50
+ export const reverseForeignKeyField = (updates) => genericDataField(updates, 'reverseForeignKeyField', ReverseForeignKeyFieldManager);
51
+ export const detailsField = (meta = {}) => genericDataField(meta, 'detailsField', DetailsFieldManager);
52
+ export const manyToManyField = (meta) => genericDataField(meta, 'manyToManyField', ManyToManyFieldManager);
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2RhdGEvZmllbGRzL3JlbGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLGdCQUFnQixHQUVqQixNQUFNLFFBQVEsQ0FBQztBQTJCaEIsTUFBTSxPQUFPLHNCQUNYLFNBQVEsZ0JBQXdCO0lBRGxDOztRQUtrQixlQUFVLEdBQTBCLFVBQVUsQ0FBQztRQUMvQyxnQkFBVyxHQUEyQixXQUFXLENBQUM7SUFDcEUsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLDZCQUNYLFNBQVEsZ0JBQXdCO0NBSWpDO0FBRUQsTUFBTSxPQUFPLG1CQUNYLFNBQVEsZ0JBQW1CO0lBUVgsUUFBUSxDQUFDLElBQVMsRUFBRSxJQUFzQjtRQUN4RCxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUN0QixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0I7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDZCxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9CLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pCLE9BQU8sQ0FBQyxDQUFDO2FBQ1Y7aUJBQU07Z0JBQ0wsTUFBTSxHQUFHLEdBQVUsRUFBRSxDQUFDO2dCQUN0QixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRTtvQkFDckIsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMvQixDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNmLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2I7Z0JBQ0QsT0FBTyxHQUFHLENBQUM7YUFDWjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFNRCxNQUFNLE9BQU8sc0JBQ1gsU0FBUSxnQkFBMEI7SUFEcEM7O1FBS2tCLGVBQVUsR0FBMEIsV0FBVyxDQUFDO1FBQ2hELGdCQUFXLEdBQTJCLFlBQVksQ0FBQztJQUNyRSxDQUFDO0NBQUE7QUFFRCw0QkFBNEI7QUFDNUIsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQzdCLE9BQWlDLEVBQ2YsRUFBRSxDQUNwQixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztBQUV2RSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUNwQyxPQUF3QyxFQUN0QixFQUFFLENBQ3BCLGdCQUFnQixDQUNkLE9BQU8sRUFDUCx3QkFBd0IsRUFDeEIsNkJBQTZCLENBQzlCLENBQUM7QUFFSixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FDMUIsT0FBbUMsRUFBRSxFQUNuQixFQUFFLENBQ3BCLGdCQUFnQixDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQUU5RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FDN0IsSUFBOEIsRUFDWixFQUFFLENBQ3BCLGdCQUFnQixDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUZpZWxkTWFuYWdlcixcbiAgRmllbGREZWNvcmF0b3JGbixcbiAgZ2VuZXJpY0RhdGFGaWVsZCxcbiAgSUZpZWxkTWV0YWRhdGEsXG59IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZGF0YS1jb2xsZWN0aW9uJztcbmltcG9ydCB7XG4gIERJU1BFRElUX0RJU1BMQVlfVFlQRVMsXG4gIERJU1BFRElUX0VESVRPUl9UWVBFUyxcbn0gZnJvbSAnLi4vLi4vZGlzcGVkaXQvZGlzcGVkaXQvZGlzcGVkaXQuY29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBJRm9yZWlnbktleUZpZWxkTWV0YWRhdGEgZXh0ZW5kcyBJRmllbGRNZXRhZGF0YTxudW1iZXI+IHtcbiAgcmVsYXRlZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUmV2ZXJzZUZvcmVpZ25LZXlGaWVsZE1ldGFkYXRhXG4gIGV4dGVuZHMgSUZpZWxkTWV0YWRhdGE8bnVtYmVyPiB7XG4gIHJlbGF0ZWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGV0YWlsc0ZpZWxkTWV0YWRhdGE8VD4gZXh0ZW5kcyBJRmllbGRNZXRhZGF0YTxUPiB7XG4gIGZpZWxkPzogc3RyaW5nO1xuICBtYW55PzogYm9vbGVhbjtcbiAgbW9kZWw/OiBUO1xuICBkZXNlcmlhbGl6ZT86IChkYXRhOiBhbnkpID0+IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1hbnlUb01hbnlGaWVsZE1ldGFkYXRhIGV4dGVuZHMgSUZpZWxkTWV0YWRhdGE8bnVtYmVyW10+IHtcbiAgcmVsYXRlZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRm9yZWlnbktleUZpZWxkTWFuYWdlclxuICBleHRlbmRzIEJhc2VGaWVsZE1hbmFnZXI8bnVtYmVyPlxuICBpbXBsZW1lbnRzIElGb3JlaWduS2V5RmllbGRNZXRhZGF0YVxue1xuICBwdWJsaWMgcmVsYXRlZD86IHN0cmluZztcbiAgcHVibGljIG92ZXJyaWRlIGVkaXRvclR5cGU6IERJU1BFRElUX0VESVRPUl9UWVBFUyA9ICdma3NlbGVjdCc7XG4gIHB1YmxpYyBvdmVycmlkZSBkaXNwbGF5VHlwZTogRElTUEVESVRfRElTUExBWV9UWVBFUyA9ICdma2RldGFpbHMnO1xufVxuXG5leHBvcnQgY2xhc3MgUmV2ZXJzZUZvcmVpZ25LZXlGaWVsZE1hbmFnZXJcbiAgZXh0ZW5kcyBCYXNlRmllbGRNYW5hZ2VyPG51bWJlcj5cbiAgaW1wbGVtZW50cyBJRm9yZWlnbktleUZpZWxkTWV0YWRhdGFcbntcbiAgcHVibGljIHJlbGF0ZWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBEZXRhaWxzRmllbGRNYW5hZ2VyPFQ+XG4gIGV4dGVuZHMgQmFzZUZpZWxkTWFuYWdlcjxUPlxuICBpbXBsZW1lbnRzIElEZXRhaWxzRmllbGRNZXRhZGF0YTxUPlxue1xuICBwdWJsaWMgZmllbGQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBtYW55PzogYm9vbGVhbjtcbiAgcHVibGljIG1vZGVsOiBhbnk7XG4gIHB1YmxpYyBkZXNlcmlhbGl6ZT86IChkYXRhOiBhbnkpID0+IGFueTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgZnJvbUpzb24oZGF0YTogYW55LCBjb2xsPzogQ29sbGVjdGlvbjxhbnk+KTogYW55IHtcbiAgICBpZiAoZGF0YSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGlmIChkYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmRlc2VyaWFsaXplKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZXNlcmlhbGl6ZShkYXRhKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9kZWwpIHtcbiAgICAgIGlmICghdGhpcy5tYW55KSB7XG4gICAgICAgIGNvbnN0IGQgPSBuZXcgdGhpcy5tb2RlbChjb2xsKTtcbiAgICAgICAgZC5mcm9tSnNvbihkYXRhKTtcbiAgICAgICAgcmV0dXJuIGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBvdXQ6IGFueVtdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZHQgb2YgZGF0YSkge1xuICAgICAgICAgIGNvbnN0IGQgPSBuZXcgdGhpcy5tb2RlbChjb2xsKTtcbiAgICAgICAgICBkLmZyb21Kc29uKGR0KTtcbiAgICAgICAgICBvdXQucHVzaChkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNYW55VG9NYW55S2V5RmllbGRNZXRhZGF0YSBleHRlbmRzIElGaWVsZE1ldGFkYXRhPG51bWJlcltdPiB7XG4gIHJlbGF0ZWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNYW55VG9NYW55RmllbGRNYW5hZ2VyXG4gIGV4dGVuZHMgQmFzZUZpZWxkTWFuYWdlcjxudW1iZXJbXT5cbiAgaW1wbGVtZW50cyBJTWFueVRvTWFueUtleUZpZWxkTWV0YWRhdGFcbntcbiAgcHVibGljIHJlbGF0ZWQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBvdmVycmlkZSBlZGl0b3JUeXBlOiBESVNQRURJVF9FRElUT1JfVFlQRVMgPSAnbTJtc2VsZWN0JztcbiAgcHVibGljIG92ZXJyaWRlIGRpc3BsYXlUeXBlOiBESVNQRURJVF9ESVNQTEFZX1RZUEVTID0gJ20ybWRldGFpbHMnO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5leHBvcnQgY29uc3QgZm9yZWlnbktleUZpZWxkID0gKFxuICB1cGRhdGVzOiBJRm9yZWlnbktleUZpZWxkTWV0YWRhdGFcbik6IEZpZWxkRGVjb3JhdG9yRm4gPT5cbiAgZ2VuZXJpY0RhdGFGaWVsZCh1cGRhdGVzLCAnZm9yZWlnbktleUZpZWxkJywgRm9yZWlnbktleUZpZWxkTWFuYWdlcik7XG5cbmV4cG9ydCBjb25zdCByZXZlcnNlRm9yZWlnbktleUZpZWxkID0gKFxuICB1cGRhdGVzOiBJUmV2ZXJzZUZvcmVpZ25LZXlGaWVsZE1ldGFkYXRhXG4pOiBGaWVsZERlY29yYXRvckZuID0+XG4gIGdlbmVyaWNEYXRhRmllbGQoXG4gICAgdXBkYXRlcyxcbiAgICAncmV2ZXJzZUZvcmVpZ25LZXlGaWVsZCcsXG4gICAgUmV2ZXJzZUZvcmVpZ25LZXlGaWVsZE1hbmFnZXJcbiAgKTtcblxuZXhwb3J0IGNvbnN0IGRldGFpbHNGaWVsZCA9IChcbiAgbWV0YTogSURldGFpbHNGaWVsZE1ldGFkYXRhPGFueT4gPSB7fVxuKTogRmllbGREZWNvcmF0b3JGbiA9PlxuICBnZW5lcmljRGF0YUZpZWxkKG1ldGEsICdkZXRhaWxzRmllbGQnLCBEZXRhaWxzRmllbGRNYW5hZ2VyKTtcblxuZXhwb3J0IGNvbnN0IG1hbnlUb01hbnlGaWVsZCA9IChcbiAgbWV0YTogSU1hbnlUb01hbnlGaWVsZE1ldGFkYXRhXG4pOiBGaWVsZERlY29yYXRvckZuID0+XG4gIGdlbmVyaWNEYXRhRmllbGQobWV0YSwgJ21hbnlUb01hbnlGaWVsZCcsIE1hbnlUb01hbnlGaWVsZE1hbmFnZXIpO1xuIl19
@@ -0,0 +1,71 @@
1
+ import { BaseFieldManager, genericDataField, } from './base';
2
+ import { Validators } from '@angular/forms';
3
+ export class CharFieldManager extends BaseFieldManager {
4
+ constructor(params) {
5
+ super(params);
6
+ if (this.choices) {
7
+ this.editorType = 'select';
8
+ }
9
+ }
10
+ get validators() {
11
+ const v = super.getValidators();
12
+ if (this.minLength) {
13
+ v.push(Validators.minLength(this.minLength));
14
+ }
15
+ if (this.maxLength) {
16
+ v.push(Validators.maxLength(this.maxLength));
17
+ }
18
+ if (this.pattern) {
19
+ v.push(Validators.pattern(this.pattern));
20
+ }
21
+ // TODO: add choices validator ??
22
+ return v;
23
+ }
24
+ fromJson(data) {
25
+ if (data === undefined) {
26
+ return this.getDefaultValue();
27
+ }
28
+ if (data === null) {
29
+ return this.getDefaultValue();
30
+ }
31
+ if (typeof data === 'string') {
32
+ return data;
33
+ }
34
+ return `${data}`;
35
+ }
36
+ }
37
+ export class EmailFieldManager extends CharFieldManager {
38
+ constructor(params) {
39
+ super(params);
40
+ this.validate = true;
41
+ this.editorType = 'input.email';
42
+ if (this.validate === undefined) {
43
+ this.validate = true;
44
+ }
45
+ }
46
+ get validators() {
47
+ const v = super.getValidators();
48
+ if (this.validate) {
49
+ v.push(Validators.email);
50
+ }
51
+ return v;
52
+ }
53
+ }
54
+ export class TextFieldManager extends CharFieldManager {
55
+ constructor() {
56
+ super(...arguments);
57
+ this.editorType = 'textarea';
58
+ }
59
+ }
60
+ export class PasswordFieldManager extends CharFieldManager {
61
+ constructor() {
62
+ super(...arguments);
63
+ this.editorType = 'input.password';
64
+ }
65
+ }
66
+ /* eslint-disable max-len */
67
+ export const charField = (updates = {}) => genericDataField(updates, 'charField', CharFieldManager);
68
+ export const emailField = (updates = {}) => genericDataField(updates, 'emailField', EmailFieldManager);
69
+ export const textField = (updates = {}) => genericDataField(updates, 'textField', TextFieldManager);
70
+ export const passwordField = (updates = {}) => genericDataField(updates, 'passwordField', PasswordFieldManager);
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nZmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2RhdGEvZmllbGRzL3N0cmluZ2ZpZWxkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLGdCQUFnQixHQUVqQixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUE2QnpELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxnQkFBd0I7SUFNNUQsWUFBWSxNQUFXO1FBQ3JCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNkLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRCxJQUFvQixVQUFVO1FBQzVCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNoQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQzlDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUM5QztRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDMUM7UUFDRCxpQ0FBaUM7UUFDakMsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRWUsUUFBUSxDQUFDLElBQVM7UUFDaEMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRyxDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRyxDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8saUJBQ1gsU0FBUSxnQkFBZ0I7SUFNeEIsWUFBWSxNQUFXO1FBQ3JCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUpULGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDUCxlQUFVLEdBQTBCLGFBQWEsQ0FBQztRQUloRSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELElBQW9CLFVBQVU7UUFDNUIsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxQjtRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGdCQUFnQjtJQUF0RDs7UUFFa0IsZUFBVSxHQUEwQixVQUFVLENBQUM7SUFDakUsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGdCQUFnQjtJQUExRDs7UUFFa0IsZUFBVSxHQUEwQixnQkFBZ0IsQ0FBQztJQUN2RSxDQUFDO0NBQUE7QUFFRCw0QkFBNEI7QUFFNUIsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsVUFBOEIsRUFBRSxFQUFvQixFQUFFLENBQzlFLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUUzRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FDeEIsVUFBK0IsRUFBRSxFQUNmLEVBQUUsQ0FDcEIsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBRTdELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLFVBQThCLEVBQUUsRUFBb0IsRUFBRSxDQUM5RSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQzNCLFVBQWtDLEVBQUUsRUFDbEIsRUFBRSxDQUNwQixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlRmllbGRNYW5hZ2VyLFxuICBGaWVsZERlY29yYXRvckZuLFxuICBnZW5lcmljRGF0YUZpZWxkLFxuICBJRmllbGRNZXRhZGF0YSxcbn0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRElTUEVESVRfRURJVE9SX1RZUEVTIH0gZnJvbSAnLi4vLi4vZGlzcGVkaXQvZGlzcGVkaXQvZGlzcGVkaXQuY29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBJQ2hhckZpZWxkRGVzY0Nob2ljZSB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGRlc2M6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSUNoYXJGaWVsZENob2ljZSA9IElDaGFyRmllbGREZXNjQ2hvaWNlIHwgc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDaGFyRmllbGRNZXRhZGF0YSBleHRlbmRzIElGaWVsZE1ldGFkYXRhPHN0cmluZz4ge1xuICBtaW5MZW5ndGg/OiBudW1iZXI7XG4gIG1heExlbmd0aD86IG51bWJlcjtcbiAgcGF0dGVybj86IFJlZ0V4cCB8IHN0cmluZztcbiAgY2hvaWNlcz86IElDaGFyRmllbGRDaG9pY2VbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRW1haWxGaWVsZE1ldGFkYXRhIGV4dGVuZHMgSUNoYXJGaWVsZE1ldGFkYXRhIHtcbiAgdmFsaWRhdGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQYXNzd29yZEZpZWxkTWV0YWRhdGEgZXh0ZW5kcyBJQ2hhckZpZWxkTWV0YWRhdGEge1xuICB2YWxpZGF0ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRleHRGaWVsZE1ldGFkYXRhIGV4dGVuZHMgSUNoYXJGaWVsZE1ldGFkYXRhIHtcbiAgc3ludGF4Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ2hhckZpZWxkTWFuYWdlciBleHRlbmRzIEJhc2VGaWVsZE1hbmFnZXI8c3RyaW5nPiB7XG4gIHB1YmxpYyBtaW5MZW5ndGg/OiBudW1iZXI7XG4gIHB1YmxpYyBtYXhMZW5ndGg/OiBudW1iZXI7XG4gIHB1YmxpYyBjaG9pY2VzPzogSUNoYXJGaWVsZENob2ljZVtdO1xuICBwdWJsaWMgcGF0dGVybj86IFJlZ0V4cCB8IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IGFueSkge1xuICAgIHN1cGVyKHBhcmFtcyk7XG4gICAgaWYgKHRoaXMuY2hvaWNlcykge1xuICAgICAgdGhpcy5lZGl0b3JUeXBlID0gJ3NlbGVjdCc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGdldCB2YWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIGNvbnN0IHYgPSBzdXBlci5nZXRWYWxpZGF0b3JzKCk7XG4gICAgaWYgKHRoaXMubWluTGVuZ3RoKSB7XG4gICAgICB2LnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodGhpcy5taW5MZW5ndGgpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubWF4TGVuZ3RoKSB7XG4gICAgICB2LnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5tYXhMZW5ndGgpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucGF0dGVybikge1xuICAgICAgdi5wdXNoKFZhbGlkYXRvcnMucGF0dGVybih0aGlzLnBhdHRlcm4pKTtcbiAgICB9XG4gICAgLy8gVE9ETzogYWRkIGNob2ljZXMgdmFsaWRhdG9yID8/XG4gICAgcmV0dXJuIHY7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZnJvbUpzb24oZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoZGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXREZWZhdWx0VmFsdWUoKSE7XG4gICAgfVxuICAgIGlmIChkYXRhID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXREZWZhdWx0VmFsdWUoKSE7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICByZXR1cm4gYCR7ZGF0YX1gO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbWFpbEZpZWxkTWFuYWdlclxuICBleHRlbmRzIENoYXJGaWVsZE1hbmFnZXJcbiAgaW1wbGVtZW50cyBJQ2hhckZpZWxkTWV0YWRhdGFcbntcbiAgcHVibGljIHZhbGlkYXRlID0gdHJ1ZTtcbiAgcHVibGljIG92ZXJyaWRlIGVkaXRvclR5cGU6IERJU1BFRElUX0VESVRPUl9UWVBFUyA9ICdpbnB1dC5lbWFpbCc7XG5cbiAgY29uc3RydWN0b3IocGFyYW1zOiBhbnkpIHtcbiAgICBzdXBlcihwYXJhbXMpO1xuICAgIGlmICh0aGlzLnZhbGlkYXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudmFsaWRhdGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgdmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICBjb25zdCB2ID0gc3VwZXIuZ2V0VmFsaWRhdG9ycygpO1xuICAgIGlmICh0aGlzLnZhbGlkYXRlKSB7XG4gICAgICB2LnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XG4gICAgfVxuICAgIHJldHVybiB2O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZXh0RmllbGRNYW5hZ2VyIGV4dGVuZHMgQ2hhckZpZWxkTWFuYWdlciB7XG4gIHB1YmxpYyBzeW50YXg/OiBzdHJpbmc7XG4gIHB1YmxpYyBvdmVycmlkZSBlZGl0b3JUeXBlOiBESVNQRURJVF9FRElUT1JfVFlQRVMgPSAndGV4dGFyZWEnO1xufVxuXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRGaWVsZE1hbmFnZXIgZXh0ZW5kcyBDaGFyRmllbGRNYW5hZ2VyIHtcbiAgcHVibGljIHN5bnRheD86IHN0cmluZztcbiAgcHVibGljIG92ZXJyaWRlIGVkaXRvclR5cGU6IERJU1BFRElUX0VESVRPUl9UWVBFUyA9ICdpbnB1dC5wYXNzd29yZCc7XG59XG5cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cblxuZXhwb3J0IGNvbnN0IGNoYXJGaWVsZCA9ICh1cGRhdGVzOiBJQ2hhckZpZWxkTWV0YWRhdGEgPSB7fSk6IEZpZWxkRGVjb3JhdG9yRm4gPT5cbiAgZ2VuZXJpY0RhdGFGaWVsZCh1cGRhdGVzLCAnY2hhckZpZWxkJywgQ2hhckZpZWxkTWFuYWdlcik7XG5cbmV4cG9ydCBjb25zdCBlbWFpbEZpZWxkID0gKFxuICB1cGRhdGVzOiBJRW1haWxGaWVsZE1ldGFkYXRhID0ge31cbik6IEZpZWxkRGVjb3JhdG9yRm4gPT5cbiAgZ2VuZXJpY0RhdGFGaWVsZCh1cGRhdGVzLCAnZW1haWxGaWVsZCcsIEVtYWlsRmllbGRNYW5hZ2VyKTtcblxuZXhwb3J0IGNvbnN0IHRleHRGaWVsZCA9ICh1cGRhdGVzOiBJVGV4dEZpZWxkTWV0YWRhdGEgPSB7fSk6IEZpZWxkRGVjb3JhdG9yRm4gPT5cbiAgZ2VuZXJpY0RhdGFGaWVsZCh1cGRhdGVzLCAndGV4dEZpZWxkJywgVGV4dEZpZWxkTWFuYWdlcik7XG5cbmV4cG9ydCBjb25zdCBwYXNzd29yZEZpZWxkID0gKFxuICB1cGRhdGVzOiBJUGFzc3dvcmRGaWVsZE1ldGFkYXRhID0ge31cbik6IEZpZWxkRGVjb3JhdG9yRm4gPT5cbiAgZ2VuZXJpY0RhdGFGaWVsZCh1cGRhdGVzLCAncGFzc3dvcmRGaWVsZCcsIFBhc3N3b3JkRmllbGRNYW5hZ2VyKTtcbiJdfQ==
@@ -0,0 +1,38 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ChoicePipe {
4
+ transform(value, field, mode = 'desc') {
5
+ if (!value) {
6
+ return '-';
7
+ }
8
+ const fvalue = value[field];
9
+ if (mode === 'code') {
10
+ return `${fvalue}`;
11
+ }
12
+ const manager = value.FM(field);
13
+ const choices = manager.choices;
14
+ if (!choices) {
15
+ return `${fvalue}`;
16
+ }
17
+ for (const ch of choices) {
18
+ if (ch.value === fvalue) {
19
+ if (mode === 'desc') {
20
+ return ch.desc;
21
+ }
22
+ else {
23
+ return `[${fvalue}] ${ch.desc}`;
24
+ }
25
+ }
26
+ }
27
+ return `[${fvalue}] ??`;
28
+ }
29
+ }
30
+ ChoicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ChoicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
31
+ ChoicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: ChoicePipe, name: "choice" });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ChoicePipe, decorators: [{
33
+ type: Pipe,
34
+ args: [{
35
+ name: 'choice',
36
+ }]
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvaWNlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvZGlzcGVkaXQvY2hvaWNlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxVQUFVO0lBQ3JCLFNBQVMsQ0FDUCxLQUFRLEVBQ1IsS0FBYSxFQUNiLE9BQWlDLE1BQU07UUFFdkMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sR0FBRyxDQUFDO1NBQ1o7UUFDRCxNQUFNLE1BQU0sR0FBSSxLQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO1lBQ25CLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQztTQUNwQjtRQUNELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsTUFBTSxPQUFPLEdBQUksT0FBZSxDQUFDLE9BQU8sQ0FBQztRQUN6QyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDO1NBQ3BCO1FBQ0QsS0FBSyxNQUFNLEVBQUUsSUFBSSxPQUFPLEVBQUU7WUFDeEIsSUFBSSxFQUFFLENBQUMsS0FBSyxLQUFLLE1BQU0sRUFBRTtnQkFDdkIsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO29CQUNuQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7aUJBQ2hCO3FCQUFNO29CQUNMLE9BQU8sSUFBSSxNQUFNLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNqQzthQUNGO1NBQ0Y7UUFDRCxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7SUFDMUIsQ0FBQzs7dUdBNUJVLFVBQVU7cUdBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUh0QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxRQUFRO2lCQUNmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YU1vZGVsIH0gZnJvbSAnLi4vZGF0YS9kYXRhLW1vZGVsJztcblxuQFBpcGUoe1xuICBuYW1lOiAnY2hvaWNlJyxcbn0pXG5leHBvcnQgY2xhc3MgQ2hvaWNlUGlwZTxUIGV4dGVuZHMgRGF0YU1vZGVsPiBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oXG4gICAgdmFsdWU6IFQsXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICBtb2RlOiAnY29kZScgfCAnZGVzYycgfCAnYm90aCcgPSAnZGVzYydcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cbiAgICBjb25zdCBmdmFsdWUgPSAodmFsdWUgYXMgYW55KVtmaWVsZF07XG4gICAgaWYgKG1vZGUgPT09ICdjb2RlJykge1xuICAgICAgcmV0dXJuIGAke2Z2YWx1ZX1gO1xuICAgIH1cbiAgICBjb25zdCBtYW5hZ2VyID0gdmFsdWUuRk0oZmllbGQpO1xuICAgIGNvbnN0IGNob2ljZXMgPSAobWFuYWdlciBhcyBhbnkpLmNob2ljZXM7XG4gICAgaWYgKCFjaG9pY2VzKSB7XG4gICAgICByZXR1cm4gYCR7ZnZhbHVlfWA7XG4gICAgfVxuICAgIGZvciAoY29uc3QgY2ggb2YgY2hvaWNlcykge1xuICAgICAgaWYgKGNoLnZhbHVlID09PSBmdmFsdWUpIHtcbiAgICAgICAgaWYgKG1vZGUgPT09ICdkZXNjJykge1xuICAgICAgICAgIHJldHVybiBjaC5kZXNjO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBgWyR7ZnZhbHVlfV0gJHtjaC5kZXNjfWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGBbJHtmdmFsdWV9XSA/P2A7XG4gIH1cbn1cbiJdfQ==