@mezzanine-ui/core 0.7.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/_styles.scss CHANGED
@@ -61,6 +61,9 @@
61
61
  @include _load-styles($options, textarea);
62
62
  @include _load-styles($options, upload);
63
63
  @include _load-styles($options, upload, upload-result);
64
+ @include _load-styles($options, upload, upload-picture);
65
+ @include _load-styles($options, upload, upload-picture-block);
66
+ @include _load-styles($options, upload, upload-picture-wall);
64
67
  @include _load-styles($options, picker);
65
68
  @include _load-styles($options, date-range-picker);
66
69
  @include _load-styles($options, date-time-picker);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mezzanine-ui/core",
3
- "version": "0.7.2",
3
+ "version": "0.7.3",
4
4
  "description": "Core for mezzanine-ui",
5
5
  "author": "Mezzanine",
6
6
  "repository": {
@@ -23,7 +23,7 @@
23
23
  "build:clean": "node ../../scripts/cleanBuild.js"
24
24
  },
25
25
  "dependencies": {
26
- "@mezzanine-ui/icons": "^0.5.0",
26
+ "@mezzanine-ui/icons": "^0.7.3",
27
27
  "@mezzanine-ui/system": "^0.7.0",
28
28
  "tslib": "^2.1.0"
29
29
  }
@@ -0,0 +1,51 @@
1
+ /// <reference types="node" />
2
+ import { CssVarInterpolations } from '@mezzanine-ui/system/css';
3
+ import EventEmitter from 'events';
4
+ export declare const uploadPictureBlockPrefix = "mzn-upload-picture-block";
5
+ export interface UploadPictureBlockCssVars {
6
+ percentage?: number;
7
+ }
8
+ export declare const uploadPictureBlockClasses: {
9
+ host: string;
10
+ disabled: string;
11
+ error: string;
12
+ loading: string;
13
+ group: string;
14
+ status: string;
15
+ preview: string;
16
+ delete: string;
17
+ };
18
+ export declare function toUploadPictureBlockCssVars(variables: UploadPictureBlockCssVars): CssVarInterpolations;
19
+ export declare class ImageUploader extends EventEmitter {
20
+ uid: string;
21
+ file: File | null;
22
+ percentage: number;
23
+ preview: string;
24
+ url: string;
25
+ isLoading: boolean;
26
+ isError: boolean;
27
+ constructor(file?: File, url?: string);
28
+ setNewFile(file: File): void;
29
+ setPreview(): void;
30
+ setPercentage(percentage: number): void;
31
+ setUrl(url: string): void;
32
+ setLoadingStatus(isLoading: boolean): void;
33
+ setErrorStatus(isError: boolean): void;
34
+ clear(): void;
35
+ getUid(): string;
36
+ getFile(): File | null;
37
+ getPercentage(): number;
38
+ getPreview(): string;
39
+ getUrl(): string;
40
+ getIsLoading(): boolean;
41
+ getIsError(): boolean;
42
+ getAll(): {
43
+ uid: string;
44
+ file: File | null;
45
+ percentage: number;
46
+ preview: string;
47
+ url: string;
48
+ isLoading: boolean;
49
+ isError: boolean;
50
+ };
51
+ }
@@ -0,0 +1,111 @@
1
+ import EventEmitter from 'events';
2
+ import uniqueId from 'lodash/uniqueId';
3
+
4
+ const uploadPictureBlockPrefix = 'mzn-upload-picture-block';
5
+ const uploadPictureBlockClasses = {
6
+ host: uploadPictureBlockPrefix,
7
+ disabled: `${uploadPictureBlockPrefix}--disabled`,
8
+ error: `${uploadPictureBlockPrefix}--error`,
9
+ loading: `${uploadPictureBlockPrefix}--loading`,
10
+ group: `${uploadPictureBlockPrefix}__group`,
11
+ status: `${uploadPictureBlockPrefix}__status`,
12
+ preview: `${uploadPictureBlockPrefix}__preview`,
13
+ delete: `${uploadPictureBlockPrefix}__delete`,
14
+ };
15
+ function toUploadPictureBlockCssVars(variables) {
16
+ const { percentage, } = variables;
17
+ return {
18
+ [`--${uploadPictureBlockPrefix}-percentage`]: percentage,
19
+ };
20
+ }
21
+ class ImageUploader extends EventEmitter {
22
+ constructor(file, url) {
23
+ super();
24
+ this.uid = uniqueId('file_');
25
+ this.file = file || null;
26
+ this.percentage = 0;
27
+ this.preview = '';
28
+ this.url = url || '';
29
+ this.isLoading = false;
30
+ this.isError = false;
31
+ }
32
+ setNewFile(file) {
33
+ this.uid = uniqueId('file_');
34
+ this.file = file;
35
+ this.percentage = 0;
36
+ this.preview = '';
37
+ this.url = '';
38
+ this.isLoading = false;
39
+ this.isError = false;
40
+ this.emit('fileChange');
41
+ }
42
+ setPreview() {
43
+ if (this.file) {
44
+ const reader = new FileReader();
45
+ reader.addEventListener('load', () => {
46
+ this.preview = reader.result;
47
+ this.emit('previewChange');
48
+ });
49
+ reader.readAsDataURL(this.file);
50
+ }
51
+ }
52
+ setPercentage(percentage) {
53
+ this.percentage = percentage;
54
+ this.emit('percentageChange');
55
+ }
56
+ setUrl(url) {
57
+ this.url = url;
58
+ this.emit('urlChange');
59
+ }
60
+ setLoadingStatus(isLoading) {
61
+ this.isLoading = isLoading;
62
+ this.emit('loadingStatusChange');
63
+ }
64
+ setErrorStatus(isError) {
65
+ this.isError = isError;
66
+ this.emit('errorStatusChange');
67
+ }
68
+ clear() {
69
+ this.file = null;
70
+ this.percentage = 0;
71
+ this.preview = '';
72
+ this.url = '';
73
+ this.isLoading = false;
74
+ this.isError = false;
75
+ this.emit('clear');
76
+ }
77
+ getUid() {
78
+ return this.uid;
79
+ }
80
+ getFile() {
81
+ return this.file;
82
+ }
83
+ getPercentage() {
84
+ return this.percentage;
85
+ }
86
+ getPreview() {
87
+ return this.preview;
88
+ }
89
+ getUrl() {
90
+ return this.url;
91
+ }
92
+ getIsLoading() {
93
+ return this.isLoading;
94
+ }
95
+ getIsError() {
96
+ return this.isError;
97
+ }
98
+ getAll() {
99
+ return {
100
+ uid: this.uid,
101
+ file: this.file,
102
+ percentage: this.percentage,
103
+ preview: this.preview,
104
+ url: this.url,
105
+ isLoading: this.isLoading,
106
+ isError: this.isError,
107
+ };
108
+ }
109
+ }
110
+
111
+ export { ImageUploader, toUploadPictureBlockCssVars, uploadPictureBlockClasses, uploadPictureBlockPrefix };
@@ -0,0 +1,5 @@
1
+ export declare const uploadPictureWallPrefix = "mzn-upload-picture-wall";
2
+ export declare const uploadPictureWallClasses: {
3
+ host: string;
4
+ item: string;
5
+ };
@@ -0,0 +1,7 @@
1
+ const uploadPictureWallPrefix = 'mzn-upload-picture-wall';
2
+ const uploadPictureWallClasses = {
3
+ host: uploadPictureWallPrefix,
4
+ item: `${uploadPictureWallPrefix}__item`,
5
+ };
6
+
7
+ export { uploadPictureWallClasses, uploadPictureWallPrefix };
@@ -1,2 +1,5 @@
1
1
  @forward './upload';
2
2
  @forward './upload-result';
3
+ @forward './upload-picture';
4
+ @forward './upload-picture-block';
5
+ @forward './upload-picture-wall';
@@ -0,0 +1,119 @@
1
+ @use '~@mezzanine-ui/system/palette';
2
+ @use '~@mezzanine-ui/system/transition';
3
+ @use '~@mezzanine-ui/system/spacing';
4
+ @use '~@mezzanine-ui/system/typography';
5
+ @use '../icon';
6
+ @use './upload-picture-block' as *;
7
+
8
+ $icon-size: 32px !default;
9
+
10
+ .#{$prefix} {
11
+ --#{$prefix}-status-color: #{palette.color(text-primary)};
12
+ --#{$prefix}-icon-color: #{palette.color(primary)};
13
+ --#{$prefix}-preview-opacity: 1;
14
+
15
+ position: relative;
16
+ display: flex;
17
+ align-items: center;
18
+ justify-content: center;
19
+ background-color: palette.color(surface);
20
+ width: 100%;
21
+ height: 100%;
22
+ padding: 0;
23
+ border: 1px solid palette.color(border);
24
+ box-sizing: border-box;
25
+ cursor: pointer;
26
+ transition: transition.standard(border-color);
27
+ will-change: border-color;
28
+
29
+ .#{icon.$prefix} {
30
+ width: $icon-size;
31
+ height: $icon-size;
32
+ color: var(--#{$prefix}-icon-color);
33
+ }
34
+
35
+ &__preview {
36
+ width: 100%;
37
+ height: 100%;
38
+ opacity: var(--#{$prefix}-preview-opacity);
39
+ }
40
+
41
+ &__status {
42
+ @include typography.variant(input2);
43
+
44
+ color: var(--#{$prefix}-status-color);
45
+ }
46
+
47
+ &__group {
48
+ display: flex;
49
+ flex-direction: column;
50
+ align-items: center;
51
+ justify-content: center;
52
+ position: absolute;
53
+ padding: spacing.level(2);
54
+ }
55
+
56
+ &__delete {
57
+ display: flex;
58
+ align-items: center;
59
+ justify-content: center;
60
+ position: absolute;
61
+ width: 100%;
62
+ height: 100%;
63
+ padding: 0;
64
+ border: none;
65
+ pointer-events: none;
66
+ background-color: transparent;
67
+ opacity: 0;
68
+ transition: transition.standard(background-color), transition.standard(opacity);
69
+ will-change: background-color, opacity;
70
+ }
71
+
72
+ &:hover {
73
+ &:not(.#{$prefix}--loading):not(.#{$prefix}--disabled) {
74
+ .#{$prefix}__delete {
75
+ background-color: palette.color(surface);
76
+ opacity: 0.9;
77
+ }
78
+ }
79
+
80
+ &:not(.#{$prefix}--disabled):not(.#{$prefix}--error) {
81
+ border-color: palette.color(primary);
82
+ }
83
+ }
84
+
85
+ &--loading {
86
+ --#{$prefix}-preview-opacity: 0.15;
87
+
88
+ cursor: default;
89
+ pointer-events: none;
90
+
91
+ &::before {
92
+ position: absolute;
93
+ content: "";
94
+ top: 0;
95
+ left: 0;
96
+ width: 100%;
97
+ height: 100%;
98
+ background-color: palette.color(primary-hover-bg);
99
+ transform-origin: left;
100
+ transform: scaleX(calc(var(--#{$prefix}-percentage, 0) / 100));
101
+ }
102
+ }
103
+
104
+ &--error {
105
+ --#{$prefix}-status-color: #{palette.color(error)};
106
+ --#{$prefix}-icon-color: #{palette.color(error)};
107
+
108
+ border-color: palette.color(error);
109
+ }
110
+
111
+ &--disabled {
112
+ --#{$prefix}-status-color: #{palette.color(text-disabled)};
113
+ --#{$prefix}-icon-color: #{palette.color(action-disabled)};
114
+
115
+ background-color: palette.color(action-disabled-bg);
116
+ border-color: palette.color(action-disabled-bg);
117
+ cursor: default;
118
+ }
119
+ }
@@ -0,0 +1,3 @@
1
+ @use './upload';
2
+
3
+ $prefix: #{upload.$prefix}-picture-block;
@@ -0,0 +1,9 @@
1
+ @use './upload-picture' as *;
2
+
3
+ $width: 128px !default;
4
+ $height: 128px !default;
5
+
6
+ .#{$prefix} {
7
+ width: $width;
8
+ height: $height;
9
+ }
@@ -0,0 +1,20 @@
1
+ @use '~@mezzanine-ui/system/spacing';
2
+ @use './upload-picture-wall' as *;
3
+
4
+ $width: 128px !default;
5
+ $height: 128px !default;
6
+ $row-gap: spacing.level(3) !default;
7
+ $column-gap: spacing.level(3) !default;
8
+ $repeat: 3;
9
+
10
+ .#{$prefix} {
11
+ display: grid;
12
+ grid-template-columns: repeat($repeat, minmax(0, $width));
13
+ row-gap: $row-gap;
14
+ column-gap: $column-gap;
15
+
16
+ &__item {
17
+ width: $width;
18
+ height: $height;
19
+ }
20
+ }
@@ -0,0 +1,3 @@
1
+ @use './upload';
2
+
3
+ $prefix: #{upload.$prefix}-picture-wall;
@@ -0,0 +1,3 @@
1
+ @use './upload';
2
+
3
+ $prefix: #{upload.$prefix}-picture;
package/upload/index.d.ts CHANGED
@@ -1,2 +1,5 @@
1
1
  export * from './uploadInput';
2
2
  export * from './uploadResult';
3
+ export * from './uploadPicture';
4
+ export * from './UploadPictureBlock';
5
+ export * from './UploadPictureWall';
package/upload/index.js CHANGED
@@ -1,2 +1,5 @@
1
1
  export { uploadInputClasses, uploadInputPrefix } from './uploadInput.js';
2
2
  export { toUploadResultCssVars, uploadResultClasses, uploadResultPrefix } from './uploadResult.js';
3
+ export { uploadPictureClasses, uploadPicturePrefix } from './uploadPicture.js';
4
+ export { ImageUploader, toUploadPictureBlockCssVars, uploadPictureBlockClasses, uploadPictureBlockPrefix } from './UploadPictureBlock.js';
5
+ export { uploadPictureWallClasses, uploadPictureWallPrefix } from './UploadPictureWall.js';
@@ -0,0 +1,4 @@
1
+ export declare const uploadPicturePrefix = "mzn-upload-picture";
2
+ export declare const uploadPictureClasses: {
3
+ host: string;
4
+ };
@@ -0,0 +1,6 @@
1
+ const uploadPicturePrefix = 'mzn-upload-picture';
2
+ const uploadPictureClasses = {
3
+ host: uploadPicturePrefix,
4
+ };
5
+
6
+ export { uploadPictureClasses, uploadPicturePrefix };