@origostudio/origo-design 0.0.51 → 0.0.53

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 (105) hide show
  1. package/CHANGELOG.md +3 -6
  2. package/dist/packages/angular-renderer/CHANGELOG.md +23 -0
  3. package/dist/packages/angular-renderer/package.json +4 -3
  4. package/dist/packages/angular-renderer/src/adapters/web/adapter.d.ts +2 -2
  5. package/dist/packages/angular-renderer/src/adapters/web/adapter.js.map +1 -1
  6. package/dist/packages/angular-renderer/src/components/primitives/card/card.component.d.ts +18 -2
  7. package/dist/packages/angular-renderer/src/components/primitives/card/card.component.js +41 -0
  8. package/dist/packages/angular-renderer/src/components/primitives/card/card.component.js.map +1 -1
  9. package/dist/packages/angular-renderer/src/components/primitives/container/container.component.d.ts +20 -0
  10. package/dist/packages/angular-renderer/src/components/primitives/container/container.component.js +54 -0
  11. package/dist/packages/angular-renderer/src/components/primitives/container/container.component.js.map +1 -0
  12. package/dist/packages/angular-renderer/src/components/primitives/date-range-picker/date-range-picker.component.d.ts +1 -1
  13. package/dist/packages/angular-renderer/src/components/primitives/date-range-picker/date-range-picker.component.js.map +1 -1
  14. package/dist/packages/angular-renderer/src/components/primitives/divider/divider.component.d.ts +21 -0
  15. package/dist/packages/angular-renderer/src/components/primitives/divider/divider.component.js +86 -0
  16. package/dist/packages/angular-renderer/src/components/primitives/divider/divider.component.js.map +1 -0
  17. package/dist/packages/angular-renderer/src/components/primitives/dropzone/dropzone.component.d.ts +70 -0
  18. package/dist/packages/angular-renderer/src/components/primitives/dropzone/dropzone.component.js +263 -0
  19. package/dist/packages/angular-renderer/src/components/primitives/dropzone/dropzone.component.js.map +1 -0
  20. package/dist/packages/angular-renderer/src/components/primitives/file-input/file-input.component.d.ts +64 -0
  21. package/dist/packages/angular-renderer/src/components/primitives/file-input/file-input.component.js +192 -0
  22. package/dist/packages/angular-renderer/src/components/primitives/file-input/file-input.component.js.map +1 -0
  23. package/dist/packages/angular-renderer/src/components/primitives/grid/grid.component.d.ts +24 -0
  24. package/dist/packages/angular-renderer/src/components/primitives/grid/grid.component.js +111 -0
  25. package/dist/packages/angular-renderer/src/components/primitives/grid/grid.component.js.map +1 -0
  26. package/dist/packages/angular-renderer/src/components/primitives/rich-text-editor/rich-text-editor.component.d.ts +44 -0
  27. package/dist/packages/angular-renderer/src/components/primitives/rich-text-editor/rich-text-editor.component.js +143 -0
  28. package/dist/packages/angular-renderer/src/components/primitives/rich-text-editor/rich-text-editor.component.js.map +1 -0
  29. package/dist/packages/angular-renderer/src/components/primitives/stack/stack.component.d.ts +24 -0
  30. package/dist/packages/angular-renderer/src/components/primitives/stack/stack.component.js +101 -0
  31. package/dist/packages/angular-renderer/src/components/primitives/stack/stack.component.js.map +1 -0
  32. package/dist/packages/angular-renderer/src/index.d.ts +9 -1
  33. package/dist/packages/angular-renderer/src/index.js +11 -1
  34. package/dist/packages/angular-renderer/src/index.js.map +1 -1
  35. package/dist/packages/angular-renderer/src/lib/primitives.provider.js +14 -0
  36. package/dist/packages/angular-renderer/src/lib/primitives.provider.js.map +1 -1
  37. package/dist/packages/cli/CHANGELOG.md +8 -0
  38. package/dist/packages/cli/package.json +2 -2
  39. package/dist/packages/cli/package.json.bak +2 -2
  40. package/dist/packages/core/CHANGELOG.md +8 -0
  41. package/dist/packages/core/package.json +1 -1
  42. package/dist/packages/core/package.json.bak +1 -1
  43. package/dist/packages/design-tokens/CHANGELOG.md +8 -0
  44. package/dist/packages/design-tokens/package.json +1 -1
  45. package/dist/packages/playground/browser/{chunk-V8VJI0nO.js → chunk-BD3aW3fo.js} +1 -1
  46. package/dist/packages/playground/browser/{chunk-CD79k8Eb.js → chunk-BGrPMh-Q.js} +1 -1
  47. package/dist/packages/playground/browser/{chunk-2fyh0Go5.js → chunk-Bb34YjCX.js} +1 -1
  48. package/dist/packages/playground/browser/{chunk-mGxxpk2V.js → chunk-CYa5xYdO.js} +1 -1
  49. package/dist/packages/playground/browser/{chunk-DnW3HJ2k.js → chunk-CZYE6Vo5.js} +1 -1
  50. package/dist/packages/playground/browser/{chunk-BSIGVQT8.js → chunk-CoyK3eaz.js} +1 -1
  51. package/dist/packages/playground/browser/{chunk-DGb2Oa6d.js → chunk-Cxq4lcyl.js} +1 -1
  52. package/dist/packages/playground/browser/{chunk-BQHgLM1h.js → chunk-D-gQXFhO.js} +1 -1
  53. package/dist/packages/playground/browser/{chunk-6qDdu3iP.js → chunk-DFUtHoSa.js} +1 -1
  54. package/dist/packages/playground/browser/{chunk-DBZa4hap.js → chunk-DGFBCrz0.js} +1 -1
  55. package/dist/packages/playground/browser/{chunk-BQrkBjEv.js → chunk-DjQs2rZT.js} +1 -1
  56. package/dist/packages/playground/browser/{chunk-D6mKAQPx.js → chunk-DoDHfFRC.js} +1 -1
  57. package/dist/packages/playground/browser/{chunk-DPEeny3K.js → chunk-K_6Vunnz.js} +1 -1
  58. package/dist/packages/playground/browser/{chunk-DeS5TtZS.js → chunk-OWSRr_rS.js} +1 -1
  59. package/dist/packages/playground/browser/{chunk-vt9o3pSK.js → chunk-kcBcpdDQ.js} +1 -1
  60. package/dist/packages/playground/browser/index.html +1 -1
  61. package/dist/packages/playground/browser/main-ZTUYGW6H.js +748 -0
  62. package/package.json +1 -1
  63. package/packages/angular-renderer/CHANGELOG.md +23 -0
  64. package/packages/angular-renderer/package.json +4 -3
  65. package/packages/angular-renderer/src/adapters/web/adapter.ts +5 -2
  66. package/packages/angular-renderer/src/components/primitives/card/card.component.html +3 -1
  67. package/packages/angular-renderer/src/components/primitives/card/card.component.scss +40 -10
  68. package/packages/angular-renderer/src/components/primitives/card/card.component.ts +55 -2
  69. package/packages/angular-renderer/src/components/primitives/container/container.component.html +12 -0
  70. package/packages/angular-renderer/src/components/primitives/container/container.component.scss +9 -0
  71. package/packages/angular-renderer/src/components/primitives/container/container.component.ts +65 -0
  72. package/packages/angular-renderer/src/components/primitives/date-range-picker/date-range-picker.component.ts +1 -1
  73. package/packages/angular-renderer/src/components/primitives/divider/divider.component.html +5 -0
  74. package/packages/angular-renderer/src/components/primitives/divider/divider.component.scss +60 -0
  75. package/packages/angular-renderer/src/components/primitives/divider/divider.component.ts +92 -0
  76. package/packages/angular-renderer/src/components/primitives/dropzone/dropzone.component.html +24 -0
  77. package/packages/angular-renderer/src/components/primitives/dropzone/dropzone.component.scss +32 -0
  78. package/packages/angular-renderer/src/components/primitives/dropzone/dropzone.component.ts +293 -0
  79. package/packages/angular-renderer/src/components/primitives/file-input/file-input.component.html +13 -0
  80. package/packages/angular-renderer/src/components/primitives/file-input/file-input.component.scss +32 -0
  81. package/packages/angular-renderer/src/components/primitives/file-input/file-input.component.ts +216 -0
  82. package/packages/angular-renderer/src/components/primitives/grid/grid.component.html +9 -0
  83. package/packages/angular-renderer/src/components/primitives/grid/grid.component.scss +51 -0
  84. package/packages/angular-renderer/src/components/primitives/grid/grid.component.ts +118 -0
  85. package/packages/angular-renderer/src/components/primitives/rich-text-editor/rich-text-editor.component.html +23 -0
  86. package/packages/angular-renderer/src/components/primitives/rich-text-editor/rich-text-editor.component.scss +33 -0
  87. package/packages/angular-renderer/src/components/primitives/rich-text-editor/rich-text-editor.component.ts +165 -0
  88. package/packages/angular-renderer/src/components/primitives/stack/stack.component.html +9 -0
  89. package/packages/angular-renderer/src/components/primitives/stack/stack.component.scss +44 -0
  90. package/packages/angular-renderer/src/components/primitives/stack/stack.component.ts +106 -0
  91. package/packages/angular-renderer/src/index.ts +9 -1
  92. package/packages/angular-renderer/src/lib/primitives.provider.ts +14 -0
  93. package/packages/cli/CHANGELOG.md +8 -0
  94. package/packages/cli/package.json +2 -2
  95. package/packages/core/CHANGELOG.md +8 -0
  96. package/packages/core/package.json +1 -1
  97. package/packages/design-tokens/CHANGELOG.md +8 -0
  98. package/packages/design-tokens/package.json +1 -1
  99. package/packages/devtools/CHANGELOG.md +8 -0
  100. package/packages/devtools/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  101. package/packages/devtools/package.json +3 -3
  102. package/packages/playground/CHANGELOG.md +8 -0
  103. package/packages/playground/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  104. package/packages/playground/package.json +3 -3
  105. package/dist/packages/playground/browser/main-6RRVB3JV.js +0 -740
@@ -0,0 +1,263 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DropzoneComponent = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@angular/core");
6
+ const adapter_1 = require("../../../adapters/web/adapter");
7
+ const forms_1 = require("@angular/forms");
8
+ const common_1 = require("@angular/common");
9
+ const http_1 = require("@angular/common/http");
10
+ let DropzoneComponent = (() => {
11
+ let _classDecorators = [(0, core_1.Component)({
12
+ selector: 'origo-dropzone',
13
+ standalone: true,
14
+ imports: [common_1.CommonModule],
15
+ templateUrl: './dropzone.component.html',
16
+ styleUrls: ['./dropzone.component.scss'],
17
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush,
18
+ encapsulation: core_1.ViewEncapsulation.ShadowDom,
19
+ providers: [
20
+ {
21
+ provide: forms_1.NG_VALUE_ACCESSOR,
22
+ useExisting: (0, core_1.forwardRef)(() => DropzoneComponent),
23
+ multi: true,
24
+ },
25
+ ],
26
+ host: {
27
+ '[class.origo-dropzone]': 'true',
28
+ '[attr.data-testid]': 'contract().id',
29
+ '[attr.aria-label]': 'computedAriaLabel()',
30
+ '[attr.aria-describedby]': 'computedAriaDescribedBy()',
31
+ },
32
+ })];
33
+ let _classDescriptor;
34
+ let _classExtraInitializers = [];
35
+ let _classThis;
36
+ var DropzoneComponent = class {
37
+ static { _classThis = this; }
38
+ static {
39
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
40
+ tslib_1.__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
41
+ DropzoneComponent = _classThis = _classDescriptor.value;
42
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
43
+ }
44
+ static contractSchema = {
45
+ permissions: 'object',
46
+ rules: 'object',
47
+ metadata: 'object',
48
+ multiple: 'boolean',
49
+ accept: 'string',
50
+ maxFileSize: 'number',
51
+ uploadUrl: 'string',
52
+ 'aria-label': 'string',
53
+ 'aria-describedby': 'string',
54
+ };
55
+ static strictContract = false;
56
+ contract = core_1.input.required();
57
+ vc = core_1.viewChild.required('vc', { read: core_1.ViewContainerRef });
58
+ inputRef = (0, core_1.viewChild)('inputEl');
59
+ fileDrop = (0, core_1.output)();
60
+ fileSelect = (0, core_1.output)();
61
+ fileRemove = (0, core_1.output)();
62
+ fileError = (0, core_1.output)();
63
+ clear = (0, core_1.output)();
64
+ focus = (0, core_1.output)();
65
+ blur = (0, core_1.output)();
66
+ uploadStart = (0, core_1.output)();
67
+ uploadProgress = (0, core_1.output)();
68
+ uploadSuccess = (0, core_1.output)();
69
+ uploadError = (0, core_1.output)();
70
+ http = (0, core_1.inject)(http_1.HttpClient, { optional: true });
71
+ props = (0, core_1.computed)(() => {
72
+ return (0, adapter_1.coerceContractProps)(this.contract().props, DropzoneComponent.contractSchema);
73
+ });
74
+ computedMultiple = (0, core_1.computed)(() => !!this.props()?.multiple);
75
+ computedAccept = (0, core_1.computed)(() => this.props()?.accept ?? '*/*');
76
+ computedMaxFileSize = (0, core_1.computed)(() => this.props()?.maxFileSize);
77
+ computedUploadUrl = (0, core_1.computed)(() => this.props()?.uploadUrl);
78
+ computedAriaLabel = (0, core_1.computed)(() => this.props()?.['aria-label'] || null);
79
+ computedAriaDescribedBy = (0, core_1.computed)(() => this.props()?.['aria-describedby'] || null);
80
+ disabled = false;
81
+ files = (0, core_1.signal)([]);
82
+ isDragging = (0, core_1.signal)(false);
83
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
84
+ onChange = () => { };
85
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
86
+ onTouched = () => { };
87
+ writeValue(obj) {
88
+ if (!obj) {
89
+ this.files.set([]);
90
+ const inputEl = this.inputRef()?.nativeElement;
91
+ if (inputEl)
92
+ inputEl.value = '';
93
+ }
94
+ else if (Array.isArray(obj)) {
95
+ this.files.set(obj);
96
+ }
97
+ else {
98
+ this.files.set([obj]);
99
+ }
100
+ }
101
+ registerOnChange(fn) {
102
+ this.onChange = fn;
103
+ }
104
+ registerOnTouched(fn) {
105
+ this.onTouched = fn;
106
+ }
107
+ setDisabledState(isDisabled) {
108
+ this.disabled = isDisabled;
109
+ }
110
+ onDragOver(event) {
111
+ if (this.disabled)
112
+ return;
113
+ event.preventDefault();
114
+ this.isDragging.set(true);
115
+ }
116
+ onDragLeave(event) {
117
+ if (this.disabled)
118
+ return;
119
+ event.preventDefault();
120
+ // Ignore dragleave if it's just moving into a child element
121
+ const rect = event.currentTarget.getBoundingClientRect();
122
+ if (event.clientX > rect.left &&
123
+ event.clientX < rect.right &&
124
+ event.clientY > rect.top &&
125
+ event.clientY < rect.bottom) {
126
+ return;
127
+ }
128
+ this.isDragging.set(false);
129
+ }
130
+ onDrop(event) {
131
+ if (this.disabled)
132
+ return;
133
+ event.preventDefault();
134
+ this.isDragging.set(false);
135
+ this.onTouched();
136
+ if (event.dataTransfer?.files) {
137
+ const droppedFiles = Array.from(event.dataTransfer.files);
138
+ if (!droppedFiles.length)
139
+ return;
140
+ this.processFiles(droppedFiles, 'drop');
141
+ }
142
+ }
143
+ onFileChange(event) {
144
+ const inputEl = event.target;
145
+ if (inputEl.files) {
146
+ const selectedFiles = Array.from(inputEl.files);
147
+ if (!selectedFiles.length)
148
+ return;
149
+ this.processFiles(selectedFiles, 'select');
150
+ inputEl.value = '';
151
+ }
152
+ }
153
+ processFiles(incomingFiles, source) {
154
+ const accept = this.computedAccept();
155
+ let validFiles = incomingFiles;
156
+ if (accept !== '*/*') {
157
+ const acceptedTypes = accept.split(',').map((a) => a.trim().toLowerCase());
158
+ validFiles = incomingFiles.filter(file => {
159
+ const fileType = file.type.toLowerCase();
160
+ const fileExt = file.name.substring(file.name.lastIndexOf('.')).toLowerCase();
161
+ return acceptedTypes.some((type) => {
162
+ if (type.startsWith('.'))
163
+ return fileExt === type;
164
+ if (type.endsWith('/*'))
165
+ return fileType.startsWith(type.substring(0, type.length - 1));
166
+ return fileType === type;
167
+ });
168
+ });
169
+ if (validFiles.length < incomingFiles.length) {
170
+ this.fileError.emit(`Some files were rejected because they do not match the accepted types: ${accept}`);
171
+ }
172
+ }
173
+ if (!validFiles.length)
174
+ return;
175
+ const maxFileSize = this.computedMaxFileSize();
176
+ if (typeof maxFileSize === 'number' && maxFileSize >= 0) {
177
+ const invalidFiles = validFiles.filter(file => file.size > maxFileSize);
178
+ if (invalidFiles.length > 0) {
179
+ this.fileError.emit(`File size exceeds maximum allowed size of ${maxFileSize} bytes`);
180
+ validFiles = validFiles.filter(file => file.size <= maxFileSize);
181
+ }
182
+ }
183
+ if (!validFiles.length)
184
+ return;
185
+ const currentFiles = this.computedMultiple()
186
+ ? [...this.files(), ...validFiles]
187
+ : [...validFiles];
188
+ this.files.set(currentFiles);
189
+ this.onChange(currentFiles);
190
+ if (source === 'drop') {
191
+ this.fileDrop.emit(validFiles);
192
+ }
193
+ else {
194
+ this.fileSelect.emit(validFiles);
195
+ }
196
+ const uploadUrl = this.computedUploadUrl();
197
+ if (uploadUrl && validFiles.length > 0) {
198
+ this.uploadFiles(validFiles, uploadUrl);
199
+ }
200
+ }
201
+ onFocus(event) {
202
+ this.focus.emit(event);
203
+ }
204
+ onBlur(event) {
205
+ this.onTouched();
206
+ this.blur.emit(event);
207
+ }
208
+ removeFile(file) {
209
+ const updated = this.files().filter(f => f !== file);
210
+ this.files.set(updated);
211
+ this.onChange(updated);
212
+ this.fileRemove.emit(file);
213
+ }
214
+ clearFiles() {
215
+ this.files.set([]);
216
+ this.onChange([]);
217
+ this.clear.emit();
218
+ const inputEl = this.inputRef()?.nativeElement;
219
+ if (inputEl)
220
+ inputEl.value = '';
221
+ }
222
+ uploadFiles(filesToUpload, url) {
223
+ this.uploadStart.emit();
224
+ if (!this.http) {
225
+ this.uploadError.emit('HttpClient is not provided.');
226
+ return;
227
+ }
228
+ const formData = new FormData();
229
+ filesToUpload.forEach(file => formData.append('file', file));
230
+ this.http
231
+ .post(url, formData, {
232
+ reportProgress: true,
233
+ observe: 'events',
234
+ responseType: 'json',
235
+ })
236
+ .subscribe({
237
+ next: event => {
238
+ if (event.type === http_1.HttpEventType.UploadProgress) {
239
+ if (event.total && event.total > 0) {
240
+ const percentComplete = (event.loaded / event.total) * 100;
241
+ this.uploadProgress.emit(percentComplete);
242
+ }
243
+ else {
244
+ this.uploadProgress.emit(100);
245
+ }
246
+ }
247
+ else if (event.type === http_1.HttpEventType.Response) {
248
+ this.uploadSuccess.emit(event.body);
249
+ }
250
+ },
251
+ error: err => {
252
+ this.uploadError.emit(err.message || 'Upload failed');
253
+ },
254
+ });
255
+ }
256
+ static {
257
+ tslib_1.__runInitializers(_classThis, _classExtraInitializers);
258
+ }
259
+ };
260
+ return DropzoneComponent = _classThis;
261
+ })();
262
+ exports.DropzoneComponent = DropzoneComponent;
263
+ //# sourceMappingURL=dropzone.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropzone.component.js","sourceRoot":"","sources":["../../../../../../../packages/angular-renderer/src/components/primitives/dropzone/dropzone.component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import { ViewContainerRef, ElementRef } from '@angular/core';
2
+ import { InteractionContract } from '@origostudio/core';
3
+ import { OrigoAdapter } from '../../../adapters/web/adapter';
4
+ import { ControlValueAccessor } from '@angular/forms';
5
+ export interface FileInputProps {
6
+ permissions?: Record<string, string>;
7
+ rules?: Record<string, unknown>;
8
+ metadata?: Record<string, unknown>;
9
+ multiple?: boolean;
10
+ accept?: string;
11
+ maxFileSize?: number;
12
+ uploadUrl?: string;
13
+ 'aria-label'?: string;
14
+ 'aria-describedby'?: string;
15
+ }
16
+ export declare class FileInputComponent implements OrigoAdapter<FileInputProps>, ControlValueAccessor {
17
+ static readonly contractSchema: {
18
+ readonly permissions: "object";
19
+ readonly rules: "object";
20
+ readonly metadata: "object";
21
+ readonly multiple: "boolean";
22
+ readonly accept: "string";
23
+ readonly maxFileSize: "number";
24
+ readonly uploadUrl: "string";
25
+ readonly 'aria-label': "string";
26
+ readonly 'aria-describedby': "string";
27
+ };
28
+ static readonly strictContract = false;
29
+ contract: import("@angular/core").InputSignal<InteractionContract<FileInputProps>>;
30
+ vc: import("@angular/core").Signal<ViewContainerRef>;
31
+ inputRef: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
32
+ fileSelect: import("@angular/core").OutputEmitterRef<File[]>;
33
+ fileRemove: import("@angular/core").OutputEmitterRef<File>;
34
+ fileError: import("@angular/core").OutputEmitterRef<string>;
35
+ clear: import("@angular/core").OutputEmitterRef<void>;
36
+ focus: import("@angular/core").OutputEmitterRef<FocusEvent>;
37
+ blur: import("@angular/core").OutputEmitterRef<FocusEvent>;
38
+ uploadStart: import("@angular/core").OutputEmitterRef<void>;
39
+ uploadProgress: import("@angular/core").OutputEmitterRef<number>;
40
+ uploadSuccess: import("@angular/core").OutputEmitterRef<unknown>;
41
+ uploadError: import("@angular/core").OutputEmitterRef<unknown>;
42
+ private http;
43
+ protected props: import("@angular/core").Signal<FileInputProps>;
44
+ computedMultiple: import("@angular/core").Signal<boolean>;
45
+ computedAccept: import("@angular/core").Signal<string>;
46
+ computedMaxFileSize: import("@angular/core").Signal<number | undefined>;
47
+ computedUploadUrl: import("@angular/core").Signal<string | undefined>;
48
+ computedAriaLabel: import("@angular/core").Signal<string | null>;
49
+ computedAriaDescribedBy: import("@angular/core").Signal<string | null>;
50
+ disabled: boolean;
51
+ files: File[];
52
+ private onChange;
53
+ private onTouched;
54
+ writeValue(obj: unknown): void;
55
+ registerOnChange(fn: (value: File[]) => void): void;
56
+ registerOnTouched(fn: () => void): void;
57
+ setDisabledState?(isDisabled: boolean): void;
58
+ onFileChange(event: Event): void;
59
+ onFocus(event: FocusEvent): void;
60
+ onBlur(event: FocusEvent): void;
61
+ removeFile(file: File): void;
62
+ clearFiles(): void;
63
+ private uploadFiles;
64
+ }
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FileInputComponent = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@angular/core");
6
+ const adapter_1 = require("../../../adapters/web/adapter");
7
+ const forms_1 = require("@angular/forms");
8
+ const http_1 = require("@angular/common/http");
9
+ let FileInputComponent = (() => {
10
+ let _classDecorators = [(0, core_1.Component)({
11
+ selector: 'origo-file-input',
12
+ standalone: true,
13
+ templateUrl: './file-input.component.html',
14
+ styleUrls: ['./file-input.component.scss'],
15
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush,
16
+ encapsulation: core_1.ViewEncapsulation.ShadowDom,
17
+ providers: [
18
+ {
19
+ provide: forms_1.NG_VALUE_ACCESSOR,
20
+ useExisting: (0, core_1.forwardRef)(() => FileInputComponent),
21
+ multi: true,
22
+ },
23
+ ],
24
+ host: {
25
+ '[class.origo-file-input]': 'true',
26
+ '[attr.data-testid]': 'contract().id',
27
+ '[attr.aria-label]': 'computedAriaLabel()',
28
+ '[attr.aria-describedby]': 'computedAriaDescribedBy()',
29
+ },
30
+ })];
31
+ let _classDescriptor;
32
+ let _classExtraInitializers = [];
33
+ let _classThis;
34
+ var FileInputComponent = class {
35
+ static { _classThis = this; }
36
+ static {
37
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
38
+ tslib_1.__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
39
+ FileInputComponent = _classThis = _classDescriptor.value;
40
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
41
+ }
42
+ static contractSchema = {
43
+ permissions: 'object',
44
+ rules: 'object',
45
+ metadata: 'object',
46
+ multiple: 'boolean',
47
+ accept: 'string',
48
+ maxFileSize: 'number',
49
+ uploadUrl: 'string',
50
+ 'aria-label': 'string',
51
+ 'aria-describedby': 'string',
52
+ };
53
+ static strictContract = false;
54
+ contract = core_1.input.required();
55
+ vc = core_1.viewChild.required('vc', { read: core_1.ViewContainerRef });
56
+ inputRef = (0, core_1.viewChild)('inputEl');
57
+ fileSelect = (0, core_1.output)();
58
+ fileRemove = (0, core_1.output)();
59
+ fileError = (0, core_1.output)();
60
+ clear = (0, core_1.output)();
61
+ focus = (0, core_1.output)();
62
+ blur = (0, core_1.output)();
63
+ uploadStart = (0, core_1.output)();
64
+ uploadProgress = (0, core_1.output)();
65
+ uploadSuccess = (0, core_1.output)();
66
+ uploadError = (0, core_1.output)();
67
+ http = (0, core_1.inject)(http_1.HttpClient, { optional: true });
68
+ props = (0, core_1.computed)(() => {
69
+ return (0, adapter_1.coerceContractProps)(this.contract().props, FileInputComponent.contractSchema);
70
+ });
71
+ computedMultiple = (0, core_1.computed)(() => !!this.props()?.multiple);
72
+ computedAccept = (0, core_1.computed)(() => this.props()?.accept ?? '*/*');
73
+ computedMaxFileSize = (0, core_1.computed)(() => this.props()?.maxFileSize);
74
+ computedUploadUrl = (0, core_1.computed)(() => this.props()?.uploadUrl);
75
+ computedAriaLabel = (0, core_1.computed)(() => this.props()?.['aria-label'] || null);
76
+ computedAriaDescribedBy = (0, core_1.computed)(() => this.props()?.['aria-describedby'] || null);
77
+ disabled = false;
78
+ files = [];
79
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
80
+ onChange = () => { };
81
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
82
+ onTouched = () => { };
83
+ writeValue(obj) {
84
+ if (!obj) {
85
+ this.files = [];
86
+ const inputEl = this.inputRef()?.nativeElement;
87
+ if (inputEl)
88
+ inputEl.value = '';
89
+ }
90
+ else if (Array.isArray(obj)) {
91
+ this.files = obj;
92
+ }
93
+ else {
94
+ this.files = [obj];
95
+ }
96
+ }
97
+ registerOnChange(fn) {
98
+ this.onChange = fn;
99
+ }
100
+ registerOnTouched(fn) {
101
+ this.onTouched = fn;
102
+ }
103
+ setDisabledState(isDisabled) {
104
+ this.disabled = isDisabled;
105
+ }
106
+ onFileChange(event) {
107
+ const inputEl = event.target;
108
+ if (inputEl.files) {
109
+ const selectedFiles = Array.from(inputEl.files);
110
+ if (!selectedFiles.length)
111
+ return;
112
+ const maxFileSize = this.computedMaxFileSize();
113
+ if (typeof maxFileSize === 'number' && maxFileSize >= 0) {
114
+ const invalidFiles = selectedFiles.filter(file => file.size > maxFileSize);
115
+ if (invalidFiles.length > 0) {
116
+ this.fileError.emit(`File size exceeds maximum allowed size of ${maxFileSize} bytes`);
117
+ inputEl.value = '';
118
+ return;
119
+ }
120
+ }
121
+ this.files = this.computedMultiple() ? [...this.files, ...selectedFiles] : [...selectedFiles];
122
+ this.onChange(this.files);
123
+ this.fileSelect.emit(selectedFiles);
124
+ const uploadUrl = this.computedUploadUrl();
125
+ if (uploadUrl && selectedFiles.length > 0) {
126
+ this.uploadFiles(selectedFiles, uploadUrl);
127
+ }
128
+ inputEl.value = '';
129
+ }
130
+ }
131
+ onFocus(event) {
132
+ this.focus.emit(event);
133
+ }
134
+ onBlur(event) {
135
+ this.onTouched();
136
+ this.blur.emit(event);
137
+ }
138
+ removeFile(file) {
139
+ this.files = this.files.filter(f => f !== file);
140
+ this.onChange(this.files);
141
+ this.fileRemove.emit(file);
142
+ }
143
+ clearFiles() {
144
+ this.files = [];
145
+ this.onChange(this.files);
146
+ this.clear.emit();
147
+ const inputEl = this.inputRef()?.nativeElement;
148
+ if (inputEl)
149
+ inputEl.value = '';
150
+ }
151
+ uploadFiles(files, url) {
152
+ this.uploadStart.emit();
153
+ if (!this.http) {
154
+ this.uploadError.emit('HttpClient is not provided.');
155
+ return;
156
+ }
157
+ const formData = new FormData();
158
+ files.forEach(file => formData.append('file', file));
159
+ this.http
160
+ .post(url, formData, {
161
+ reportProgress: true,
162
+ observe: 'events',
163
+ responseType: 'json',
164
+ })
165
+ .subscribe({
166
+ next: event => {
167
+ if (event.type === http_1.HttpEventType.UploadProgress) {
168
+ if (event.total && event.total > 0) {
169
+ const percentComplete = (event.loaded / event.total) * 100;
170
+ this.uploadProgress.emit(percentComplete);
171
+ }
172
+ else {
173
+ this.uploadProgress.emit(100);
174
+ }
175
+ }
176
+ else if (event.type === http_1.HttpEventType.Response) {
177
+ this.uploadSuccess.emit(event.body);
178
+ }
179
+ },
180
+ error: err => {
181
+ this.uploadError.emit(err.message || 'Upload failed');
182
+ },
183
+ });
184
+ }
185
+ static {
186
+ tslib_1.__runInitializers(_classThis, _classExtraInitializers);
187
+ }
188
+ };
189
+ return FileInputComponent = _classThis;
190
+ })();
191
+ exports.FileInputComponent = FileInputComponent;
192
+ //# sourceMappingURL=file-input.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-input.component.js","sourceRoot":"","sources":["../../../../../../../packages/angular-renderer/src/components/primitives/file-input/file-input.component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { ViewContainerRef } from '@angular/core';
2
+ import { InteractionContract } from '@origostudio/core';
3
+ import { OrigoAdapter, ContainerComponent as IContainerComponent } from '../../../adapters/web/adapter';
4
+ export interface GridProps {
5
+ columns?: number | string | Record<string, number>;
6
+ gap?: number | string;
7
+ align?: string;
8
+ justify?: string;
9
+ responsive?: Record<string, number>;
10
+ permissions?: Record<string, string>;
11
+ rules?: Record<string, unknown>;
12
+ metadata?: Record<string, unknown>;
13
+ 'aria-label'?: string;
14
+ 'aria-describedby'?: string;
15
+ }
16
+ export declare class GridComponent implements OrigoAdapter<GridProps>, IContainerComponent {
17
+ static readonly contractSchema: Record<keyof GridProps, "string" | "number" | "boolean" | "object" | "array">;
18
+ contract: import("@angular/core").InputSignal<InteractionContract<GridProps>>;
19
+ vc: import("@angular/core").Signal<ViewContainerRef>;
20
+ protected props: import("@angular/core").Signal<GridProps>;
21
+ protected get gridTemplateColumns(): string;
22
+ protected get gapValue(): string;
23
+ protected get inlineStyles(): Record<string, string>;
24
+ }