@genesislcap/pbc-documents-ui 0.0.1 → 0.0.2

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 (29) hide show
  1. package/package.json +3 -3
  2. package/src/components/components.ts +0 -49
  3. package/src/components/foundation-document-manager/component/document-grid/column-config.ts +0 -108
  4. package/src/components/foundation-document-manager/component/document-grid/document-grid.styles.ts +0 -10
  5. package/src/components/foundation-document-manager/component/document-grid/document-grid.template.ts +0 -14
  6. package/src/components/foundation-document-manager/component/document-grid/document-grid.ts +0 -39
  7. package/src/components/foundation-document-manager/component/document-tile/document-tile.styles.ts +0 -137
  8. package/src/components/foundation-document-manager/component/document-tile/document-tile.template.ts +0 -71
  9. package/src/components/foundation-document-manager/component/document-tile/document-tile.ts +0 -119
  10. package/src/components/foundation-document-manager/component/document-upload/document-upload.styles.ts +0 -157
  11. package/src/components/foundation-document-manager/component/document-upload/document-upload.template.ts +0 -82
  12. package/src/components/foundation-document-manager/component/document-upload/document-upload.ts +0 -146
  13. package/src/components/foundation-document-manager/document-manager.styles.ts +0 -245
  14. package/src/components/foundation-document-manager/document-manager.template.ts +0 -111
  15. package/src/components/foundation-document-manager/document-manager.ts +0 -128
  16. package/src/components/foundation-document-manager/index.ts +0 -1
  17. package/src/components/foundation-document-manager/utils/action-cell-renderer.ts +0 -55
  18. package/src/components/foundation-document-manager/utils/file-type-cell-renderer.ts +0 -33
  19. package/src/components/foundation-document-manager/utils/icons.ts +0 -251
  20. package/src/components/index.ts +0 -1
  21. package/src/index.federated.ts +0 -1
  22. package/src/index.ts +0 -3
  23. package/src/services/document.service.ts +0 -83
  24. package/src/utils/dataserver.ts +0 -42
  25. package/src/utils/endpoint.ts +0 -19
  26. package/src/utils/formatting.ts +0 -59
  27. package/src/utils/index.ts +0 -1
  28. package/src/utils/logger.ts +0 -2
  29. package/src/utils/types.ts +0 -11
@@ -1,157 +0,0 @@
1
- import { ElementStyles, css } from '@microsoft/fast-element';
2
-
3
- export const DocumentUploadStyles: ElementStyles = css`
4
- :host {
5
- height: 100%;
6
- width: 100%;
7
- padding: calc(var(--design-unit) * 3px);
8
- position: absolute;
9
- background-color: var(--neutral-layer-4);
10
- box-sizing: border-box;
11
- }
12
-
13
- .container {
14
- display: flex;
15
- justify-content: center;
16
- align-items: center;
17
- height: 100%;
18
- border-radius: calc(var(--control-corner-radius) * 1px);
19
- border: calc(var(--stroke-width) * 1px) dashed var(--accent-fill-rest);
20
- background-color: var(--neutral-layer-3);
21
- box-sizing: border-box;
22
- }
23
-
24
- .clickable {
25
- cursor: pointer;
26
- }
27
-
28
- .dialog {
29
- display: flex;
30
- flex-direction: column;
31
- align-items: center;
32
- gap: calc(var(--design-unit) * 3px);
33
- }
34
-
35
- .document-name {
36
- font-size: var(--type-ramp-minus-1-font-size);
37
- color: var(--neutral-stroke-hover);
38
- text-align: center;
39
- line-height: var(--type-ramp-base-line-height);
40
- }
41
-
42
- .document-size {
43
- color: var(--neutral-foreground-hint);
44
- font-size: var(--type-ramp-minus-1-font-size);
45
- text-align: center;
46
- line-height: normal;
47
- }
48
-
49
- .drag-prompt {
50
- font-size: var(--type-ramp-minus-1-font-size);;
51
- color: var(--neutral-foreground-rest);
52
- text-align: center;
53
- line-height: normal;
54
- }
55
-
56
- .drag-prompt > span {
57
- color: var(--accent-fill-rest);
58
- }
59
-
60
- .progress {
61
- width: 261px;
62
- height: calc(var(--design-unit) * 1px);
63
- }
64
-
65
- .error-progress::part(determinate) {
66
- background-color: var(--error-color);
67
- }
68
-
69
- .type-prompt {
70
- font-size: var(--type-ramp-minus-1-font-size);
71
- color: var(--neutral-foreground-hint);
72
- text-align: center;
73
- line-height: normal;
74
- }
75
-
76
- .upload-icon,
77
- .error-icon {
78
- fill: var(--neutral-foreground-rest);
79
- -webkit-animation: animation-upload-icon 3s infinite;
80
- -moz-animation: animation-upload-icon 3s infinite;
81
- -o-animation: animation-upload-icon 3s infinite;
82
- animation: animation-upload-icon 3s infinite;
83
- }
84
-
85
- .upload-successfull::part(determinate) {
86
- background-color: var(--success-color);
87
- }
88
-
89
- .uploading-prompt {
90
- width: 134px;
91
- margin-left: 75px;
92
- font-size: var(--type-ramp-minus-1-font-size);
93
- color: var(--neutral-foreground-rest);
94
- line-height: normal;
95
- }
96
-
97
- .uploading-prompt:after {
98
- overflow: hidden;
99
- display: inline-block;
100
- vertical-align: bottom;
101
- -webkit-animation: ellipsis steps(4, end) 2s infinite;
102
- animation: ellipsis steps(4, end) 2s infinite;
103
- content: '...';
104
- width: 0px;
105
- }
106
-
107
- .success-icon {
108
- position: relative;
109
- height: calc(var(--base-height-multiplier) * 5px);
110
- }
111
-
112
- .success-icon > svg {
113
- position: absolute;
114
- top: 50%;
115
- left: 50%;
116
- transform: translate(-50%, -50%);
117
- }
118
-
119
- @keyframes ellipsis {
120
- to {
121
- width: 14px;
122
- }
123
- }
124
-
125
- @-webkit-keyframes ellipsis {
126
- to {
127
- width: 14px;
128
- }
129
- }
130
-
131
- .error-icon {
132
- fill: var(--error-color);
133
- }
134
-
135
- @-webkit-keyframes animation-upload-icon {
136
- 0% {
137
- opacity: 1;
138
- }
139
- 50% {
140
- opacity: 0.3;
141
- }
142
- 100% {
143
- opacity: 1;
144
- }
145
- }
146
- @keyframes animation-upload-icon {
147
- 0% {
148
- opacity: 1;
149
- }
150
- 50% {
151
- opacity: 0.3;
152
- }
153
- 100% {
154
- opacity: 1;
155
- }
156
- }
157
- `;
@@ -1,82 +0,0 @@
1
- import { html, ref, when } from '@microsoft/fast-element';
2
- import { DocumentUpload, UploadState } from './document-upload';
3
- import {
4
- checkmark,
5
- checkmarkBackground,
6
- checkmarkCircle,
7
- uploadIcon,
8
- uploadIconLarge,
9
- } from '../../utils/icons';
10
- import { formatBytes } from '../../../../utils/formatting';
11
-
12
- export const DocumentUploadTemplate = html<DocumentUpload>`
13
- <div class="container" ${ref('dropArea')}>
14
- ${when(
15
- (x) => x.currentState === UploadState.START,
16
- html<DocumentUpload>`
17
- <div class="dialog">
18
- <span class="upload-icon">${uploadIconLarge}</span>
19
- <a class="drag-prompt clickable" @click=${(x) => x.fileClick()}>
20
- Drag and drop or
21
- <span>select</span>
22
- a file to upload.
23
- </a>
24
- <a class="type-prompt">Allows file type: PDF, CSV, JPG, PNG</a>
25
- </div>
26
- `,
27
- )}
28
- ${when(
29
- (x) =>
30
- x.currentState === UploadState.UPLOADING ||
31
- x.currentState === UploadState.UPLOADING_UPLOADED,
32
- html<DocumentUpload>`
33
- <div class="dialog">
34
- <span class="upload-icon">${uploadIconLarge}</span>
35
- <a
36
- class="${(x) =>
37
- x.currentState === UploadState.UPLOADING ? 'uploading-prompt' : 'drag-prompt'}"
38
- >
39
- ${(x) => (x.currentState === UploadState.UPLOADING ? 'Uploading' : 'File Uploaded')}
40
- </a>
41
- <a class="document-name">${(x) => x.fileName}</a>
42
- <a class="document-size">${(x) => formatBytes(x.fileSize, 2)}</a>
43
- <zero-progress
44
- class="progress ${(x) =>
45
- x.currentState === UploadState.UPLOADING_UPLOADED || x.fileUploadProgress >= 100
46
- ? 'upload-successfull'
47
- : ''}"
48
- min="0"
49
- max="100"
50
- value=${(x) => x.fileUploadProgress}
51
- ></zero-progress>
52
- </div>
53
- `,
54
- )}
55
- ${when(
56
- (x) => x.currentState === UploadState.UPLOADED,
57
- html<DocumentUpload>`
58
- <div class="dialog">
59
- <span class="success-icon">${checkmarkBackground} ${checkmarkCircle} ${checkmark}</span>
60
- <a class="drag-prompt">Document successfully uploaded</a>
61
- </div>
62
- `,
63
- )}
64
- ${when(
65
- (x) => x.currentState === UploadState.ERROR,
66
- html<DocumentUpload>`
67
- <div class="dialog">
68
- <span class="error-icon">${uploadIconLarge}</span>
69
- <a class="drag-prompt">Error uploading file. Please try again.</a>
70
- <a class="document-name">${(x) => x.fileName}</a>
71
- <a class="document-size">${(x) => formatBytes(x.fileSize, 2)}</a>
72
- <zero-progress
73
- class="progress error-progress"
74
- min="0"
75
- max="100"
76
- value="100"
77
- ></zero-progress>
78
- </div>
79
- `,
80
- )}
81
- </div>
82
- `;
@@ -1,146 +0,0 @@
1
- import { DOM, FASTElement, customElement, observable } from '@microsoft/fast-element';
2
- import { DocumentUploadTemplate } from './document-upload.template';
3
- import { DocumentUploadStyles } from './document-upload.styles';
4
- import { IDocumentService } from '../../../../services/document.service';
5
- import { logger } from '../../../../utils';
6
-
7
- export enum UploadState {
8
- START = 'START',
9
- ERROR = 'ERROR',
10
- UPLOADING = 'UPLOADING',
11
- UPLOADING_UPLOADED = 'UPLOADING_UPLOADED',
12
- UPLOADED = 'UPLOADED',
13
- }
14
-
15
- @customElement({
16
- name: 'document-upload',
17
- template: DocumentUploadTemplate,
18
- styles: DocumentUploadStyles,
19
- })
20
- export class DocumentUpload extends FASTElement {
21
- @IDocumentService docService: IDocumentService;
22
-
23
- @observable currentState: UploadState = UploadState.START;
24
- @observable fileName: string;
25
- @observable fileSize: number;
26
- @observable fileUploadProgress: number = 0;
27
-
28
- public dropArea: HTMLDivElement;
29
- public fileSelect: HTMLInputElement;
30
- public endpoint: string = '';
31
-
32
- private readonly errorViewTime: number = 7000;
33
- private readonly uploadingUploadedViewTime: number = 3000;
34
- private readonly uploadedViewTime: number = 3000;
35
-
36
- private file: any;
37
-
38
- connectedCallback() {
39
- super.connectedCallback();
40
-
41
- DOM.queueUpdate(() => {
42
- this.createFileUploadInput();
43
-
44
- ['dragenter', 'dragover', 'dragleave', 'drop'].forEach((eventName) => {
45
- this.dropArea.addEventListener(eventName, this.preventDefaults, false);
46
- });
47
- this.dropArea.addEventListener('drop', this.handleDrop.bind(this), false);
48
- });
49
- }
50
-
51
- public fileClick() {
52
- this.fileSelect.click();
53
- }
54
-
55
- private handleDrop(e) {
56
- if (this.currentState === UploadState.START) {
57
- const dt = e.dataTransfer;
58
- const files = dt.files;
59
- const contentTypes = [
60
- 'text/csv',
61
- 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
62
- 'application/pdf',
63
- 'image/jpg',
64
- 'image/png',
65
- ];
66
-
67
- const firstElement = 0;
68
-
69
- if (files[firstElement] && contentTypes.includes(files[firstElement].type)) {
70
- const file = files[firstElement];
71
- this.updateSelectedFile(file);
72
- }
73
- }
74
- }
75
-
76
- private createFileUploadInput() {
77
- this.fileSelect = document.createElement('input') as HTMLInputElement;
78
- this.fileSelect.type = 'file';
79
- this.fileSelect.accept =
80
- 'application/pdf,image/jpg,image/png,.csv,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
81
- this.fileSelect.onchange = (event) => {
82
- logger.debug('file upload click');
83
- this.fileSelected(event);
84
- };
85
- }
86
-
87
- private fileSelected(event) {
88
- // Only take the first file
89
- const file = event.target.files[0];
90
- this.updateSelectedFile(file);
91
- }
92
-
93
- private updateSelectedFile(file: any) {
94
- this.file = file;
95
- this.fileName = this.file.name;
96
- this.fileSize = this.file.size;
97
- this.fileSelect.value = '';
98
- this.fileUploadProgress = 0;
99
- this.uploadedFile();
100
- }
101
-
102
- private uploadedFile() {
103
- this.currentState = UploadState.UPLOADING;
104
- this.docService.uploadDocument(this.file).then((x) => {
105
- if (!x.ERROR) {
106
- this.fileUploadProgress = 100;
107
- this.handleFinishUpload();
108
- } else {
109
- this.handleError(); // Add logging later
110
- }
111
- });
112
- }
113
-
114
- public cleanData() {
115
- this.file = undefined;
116
- this.fileName = undefined;
117
- this.fileSize = undefined;
118
- this.fileSelect.value = '';
119
- this.fileUploadProgress = 0;
120
- this.currentState = UploadState.START;
121
- }
122
-
123
- private preventDefaults(e) {
124
- e.preventDefault();
125
- e.stopPropagation();
126
- }
127
-
128
- private handleError() {
129
- this.currentState = UploadState.ERROR;
130
- setTimeout(() => {
131
- this.currentState = UploadState.START;
132
- }, this.errorViewTime);
133
- }
134
-
135
- private handleFinishUpload() {
136
- this.currentState = UploadState.UPLOADING_UPLOADED;
137
- setTimeout(() => {
138
- if (this.currentState === UploadState.UPLOADING_UPLOADED) {
139
- this.currentState = UploadState.UPLOADED;
140
- setTimeout(() => {
141
- this.cleanData();
142
- }, this.uploadedViewTime);
143
- }
144
- }, this.uploadingUploadedViewTime);
145
- }
146
- }
@@ -1,245 +0,0 @@
1
- import { ElementStyles, css } from '@microsoft/fast-element';
2
-
3
- export const DocumentManagerStyles: ElementStyles = css`
4
- :host {
5
- font-family: var(--body-font);
6
- }
7
-
8
- ::-webkit-scrollbar {
9
- width: calc(var(--base-height-multiplier) * 1px);
10
- }
11
-
12
- ::-webkit-scrollbar-track {
13
- background: var(--neutral-layer-1);
14
- }
15
-
16
- ::-webkit-scrollbar-thumb {
17
- background: var(--neutral-fill-rest);
18
- }
19
-
20
- .body {
21
- display: flex;
22
- height: inherit;
23
- }
24
-
25
- .container {
26
- height: 100%;
27
- width: 100%;
28
- background: var(--neutral-layer-3);
29
- position: relative;
30
- border-radius: calc((var(--control-corner-radius) + 2) * 1px);
31
- box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.44);
32
- border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);
33
- display: flex;
34
- flex-direction: column;
35
- }
36
-
37
- .close-btn {
38
- min-width: calc((var(--base-height-multiplier) - 2 )* 3px);
39
- display: flex;
40
- width: calc((var(--base-height-multiplier) - 2 ) * 3px);
41
- height: calc((var(--base-height-multiplier) - 2 ) * 3px);
42
- border-radius: calc(var(--control-corner-radius) * 1px);
43
- background-color: var(--neutral-layer-3);
44
- box-sizing: border-box;
45
- justify-content: center;
46
- align-items: center;
47
- margin: 0;
48
- }
49
-
50
- .close-btn:hover {
51
- background-color: color-mix(in srgb, var(--neutral-foreground-rest), transparent 95%);
52
- }
53
-
54
- .close-btn::part(control):focus-visible {
55
- border-color: transparent;
56
- box-shadow: none;
57
- }
58
-
59
- .directory-list {
60
- display: flex;
61
- flex-direction: column;
62
- }
63
-
64
- .directory-btn,
65
- .directory-btn-selected {
66
- border-left: 3px solid transparent;
67
- margin: 0;
68
- border-radius: 0px;
69
- height: calc((var(--base-height-multiplier) - 1) * 4px);
70
- background-color: transparent;
71
- box-sizing: border-box;
72
- font-size: var(--type-ramp-minus-1-font-size);
73
- color: var(--neutral-foreground-hint);
74
- text-align: left;
75
- line-height: var(--type-ramp-base-line-height);
76
- }
77
-
78
- .directory-btn-selected {
79
- border-left: 3px solid;
80
- color: var(--neutral-foreground-rest);
81
- border-image-slice: 1;
82
- border-image-source: linear-gradient(to bottom, #47bce0, #654df9);
83
- background-color: color-mix(in srgb, var(--neutral-foreground-rest), transparent 96%);
84
- }
85
-
86
- .footer {
87
- display: flex;
88
- align-items: center;
89
- justify-content: end;
90
- padding: calc(var(--design-unit) * 3px) calc(var(--design-unit) * 4px);
91
- font-size: var(--type-ramp-minus-2-font-size);
92
- border-top: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);;
93
- }
94
-
95
- .header {
96
- padding: calc(var(--design-unit) * 2px);
97
- padding-left: calc(var(--design-unit) * 4px);
98
- box-sizing: border-box;
99
- display: flex;
100
- align-items: center;
101
- justify-content: space-between;
102
- border-bottom: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);;
103
- }
104
-
105
- .title {
106
- font-weight: 500;
107
- font-size: var(--type-ramp-minus-1-font-size);
108
- color: var(--neutral-foreground-rest);
109
- text-align: left;
110
- line-height: normal;
111
- }
112
-
113
- .pinned-left {
114
- width: 163px;
115
- padding: 0;
116
- border-right: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);;
117
- background-color: var(--neutral-layer-4);
118
- box-sizing: border-box;
119
- display: flex;
120
- flex-direction: column;
121
- }
122
-
123
- .pinned-left-header {
124
- display: flex;
125
- height: calc(var(--base-height-multiplier) * 4px);
126
- padding: calc(var(--design-unit) * 2px) calc(var(--design-unit) * 4px);
127
- font-weight: 500;
128
- font-size: var(--type-ramp-minus-2-font-size);
129
- color: var(--neutral-foreground-hint);
130
- line-height: var(--type-ramp-base-line-height);
131
- align-items: center;
132
- }
133
-
134
- .pinned-right {
135
- display: flex;
136
- height: 100%;
137
- width: 100%;
138
- flex-direction: column;
139
- }
140
-
141
- .pinned-right-body {
142
- height: 100%;
143
- position: relative;
144
- }
145
-
146
- .pinned-right-header {
147
- display: flex;
148
- align-items: center;
149
- gap: calc(var(--design-unit) * 4px);
150
- height: calc(var(--base-height-multiplier) * 4px);
151
- border-bottom: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);;
152
- padding: calc(var(--design-unit) * 2px) calc(var(--design-unit) * 4px);
153
- justify-content: space-between;
154
- }
155
-
156
- .pinned-right-header-left-group {
157
- flex: 1 1;
158
- display: flex;
159
- flex-direction: row;
160
- align-items: center;
161
- gap: calc(var(--design-unit) * 4px);
162
- }
163
-
164
- .pinned-right-header-left-group > zero-text-field {
165
- max-width: 418px;
166
- flex: 1 1;
167
- }
168
-
169
- .upload-btn {
170
- color: var(--neutral-foreground-hint);
171
- font-size: var(--type-ramp-minus-1-font-size);
172
- background-color: var(--neutral-layer-3);
173
- margin: 0;
174
- }
175
-
176
- .uploading {
177
- color: var(--neutral-foreground-rest);
178
- background-color: var(--neutral-layer-1);
179
- }
180
-
181
- .upload-btn:hover {
182
- color: var(--neutral-foreground-rest);
183
- }
184
-
185
- .upload-btn > svg {
186
- width: calc((var(--base-height-multiplier) - 2 )* 3px);
187
- }
188
-
189
- .upload-btn::part(start) {
190
- margin-inline-end: calc(var(--design-unit) * 2px);
191
- }
192
-
193
- fast-dialog {
194
- --dialog-height: 668px;
195
- --dialog-width: 952px;
196
- }
197
-
198
- zero-segmented-control:first-child {
199
- border-top-left-radius: calc(var(--control-corner-radius) * 1px);
200
- border-bottom-left-radius: calc(var(--control-corner-radius) * 1px);
201
- }
202
-
203
- zero-segmented-control:last-child {
204
- border-top-right-radius: calc(var(--control-corner-radius) * 1px);
205
- border-bottom-right-radius: calc(var(--control-corner-radius) * 1px);
206
- }
207
-
208
- zero-segmented-item {
209
- height: calc((var(--base-height-multiplier) - 1 ) * 4px);
210
- padding: 0 calc(var(--design-unit) * 3px);
211
- border: calc(var(--stroke-width) * 1px) solid var(--neutral-foreground-hint);
212
- fill: var(--neutral-foreground-hint);
213
- }
214
-
215
- zero-segmented-item > svg:focus,
216
- zero-segmented-item > svg > g:focus,
217
- zero-segmented-item > svg > g > path:focus {
218
- outline: none !important;
219
- }
220
-
221
- zero-segmented-item[aria-checked='true'] {
222
- box-shadow: none;
223
- fill: var(--neutral-foreground-rest);
224
- background-image: linear-gradient(
225
- -141.41742576267188deg,
226
- rgba(71, 188, 224, 0.5) 0%,
227
- rgba(101, 77, 249, 0.5) 100%
228
- );
229
- border-image-slice: 1;
230
- border-image-source: linear-gradient(to bottom, #47bce0, #654df9);
231
- border-width: calc(var(--stroke-width) * 1px);
232
- border-style: solid;
233
- }
234
-
235
- zero-modal::part(dialog) {
236
- padding: 0;
237
- background: var(--neutral-layer-4);
238
- border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);
239
- }
240
-
241
- zero-modal::part(top) {
242
- padding: calc(var(--design-unit) * 4px);
243
- border-bottom: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);
244
- }
245
- `;