@konomi-app/ui 1.6.3 → 1.7.1

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/dist/index.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export * from './loading-overlay';
2
+ export * from './task-list-overlay';
package/dist/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './loading-overlay';
2
+ export * from './task-list-overlay';
2
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Overlay } from './overlay';
1
+ import { Overlay } from '../overlay';
2
2
  type Label = string | string[];
3
3
  type ConstructorProps = Readonly<Partial<{
4
4
  label: Label;
@@ -15,8 +15,5 @@ export declare class LoadingOverlay extends Overlay {
15
15
  set html(html: string);
16
16
  set progress(progress: number);
17
17
  render(): void;
18
- private containerStyle;
19
- private loaderStyle;
20
- private progressStyle;
21
18
  }
22
19
  export {};
@@ -0,0 +1,67 @@
1
+ import { Overlay } from '../overlay';
2
+ import { containerStyle, loaderStyle, progressStyle } from './style';
3
+ export class LoadingOverlay extends Overlay {
4
+ #label;
5
+ #html;
6
+ #progress;
7
+ _loaderElement;
8
+ _progressElement;
9
+ _contentElement;
10
+ constructor(props = {}) {
11
+ super();
12
+ this.#label = props.label ?? '';
13
+ this.#html = '';
14
+ this.#progress = props.progress ?? null;
15
+ const container = document.createElement('div');
16
+ container.classList.add(containerStyle);
17
+ this._root.append(container);
18
+ const loaderElement = document.createElement('div');
19
+ loaderElement.innerHTML = '<div><div></div></div>';
20
+ loaderElement.classList.add(loaderStyle);
21
+ this._loaderElement = loaderElement;
22
+ container.append(loaderElement);
23
+ const progressElement = document.createElement('div');
24
+ progressElement.classList.add(progressStyle);
25
+ this._progressElement = progressElement;
26
+ container.append(progressElement);
27
+ const contentElement = document.createElement('div');
28
+ this._contentElement = contentElement;
29
+ container.append(contentElement);
30
+ this.render();
31
+ }
32
+ hide() {
33
+ this.#progress = 0;
34
+ this.#html = '';
35
+ this.#label = '';
36
+ super.hide();
37
+ }
38
+ set label(label) {
39
+ this.#label = label;
40
+ this.render();
41
+ }
42
+ set html(html) {
43
+ this.#html = html;
44
+ this.render();
45
+ }
46
+ set progress(progress) {
47
+ this.#progress = progress;
48
+ this.render();
49
+ }
50
+ render() {
51
+ super.render();
52
+ this._progressElement.style.width = `${this.#progress}%`;
53
+ this._loaderElement.style.animation = this._shown ? 'rotate 1.2s infinite linear' : 'none';
54
+ if (this.#html) {
55
+ this._contentElement.innerHTML = this.#html;
56
+ }
57
+ else {
58
+ if (this.#label instanceof Array) {
59
+ this._contentElement.innerHTML = `<div>${this.#label.join('</div><div>')}</div>`;
60
+ }
61
+ else {
62
+ this._contentElement.innerText = this.#label;
63
+ }
64
+ }
65
+ }
66
+ }
67
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/loading-overlay/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const containerStyle: string;
2
+ export declare const loaderStyle: string;
3
+ export declare const progressStyle: string;
@@ -0,0 +1,70 @@
1
+ import { css } from '@emotion/css';
2
+ export const containerStyle = css `
3
+ display: flex;
4
+ flex-direction: column;
5
+ align-items: center;
6
+ justify-content: center;
7
+ gap: 32px;
8
+ padding: 32px;
9
+ background-color: #fff;
10
+ border-radius: 0;
11
+ box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
12
+ border: 1px solid #f3f4f6;
13
+ width: 100%;
14
+ min-height: 200px;
15
+ position: relative;
16
+ overflow: hidden;
17
+ transition: all 250ms ease;
18
+
19
+ @media (min-width: 640px) {
20
+ width: 400px;
21
+ max-width: 90vw;
22
+ border-radius: 4px;
23
+ }
24
+ `;
25
+ export const loaderStyle = css `
26
+ font-size: 60px;
27
+ width: 1em;
28
+ height: 1em;
29
+ border-radius: 50%;
30
+ box-shadow: inset 0 0 0 1px #3b82f633;
31
+ position: relative;
32
+ > div {
33
+ position: absolute;
34
+ left: 50%;
35
+ top: 50%;
36
+ width: 0.5em;
37
+ height: 1em;
38
+ margin-left: -0.5em;
39
+ margin-top: -0.5em;
40
+ overflow: hidden;
41
+ transform-origin: 0.5em 0.5em;
42
+ mask-image: linear-gradient(top, #000f, #0000);
43
+ -webkit-mask-image: -webkit-linear-gradient(top, #000f, #0000);
44
+
45
+ > div {
46
+ width: 1em;
47
+ height: 1em;
48
+ border-radius: 50%;
49
+ box-shadow: inset 0 0 0 1px #3b82f6;
50
+ }
51
+ }
52
+ @keyframes rotate {
53
+ 0% {
54
+ transform: rotate(0deg);
55
+ }
56
+ 100% {
57
+ transform: rotate(360deg);
58
+ }
59
+ }
60
+ `;
61
+ export const progressStyle = css `
62
+ position: absolute;
63
+ bottom: 0px;
64
+ left: 0;
65
+ width: 0%;
66
+ height: 2px;
67
+ background-color: #2563eb;
68
+ transition: all 350ms ease;
69
+ `;
70
+ //# sourceMappingURL=style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/loading-overlay/style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;CAsBhC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC7B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;;;;;;;;CAQ/B,CAAC"}
package/dist/overlay.d.ts CHANGED
@@ -9,12 +9,8 @@ export declare class Overlay {
9
9
  /** JavaScript中にページを離れようとした場合にアラートを表示します */
10
10
  private beforeunload;
11
11
  private rootClass;
12
- /**
13
- * @deprecated このメソッドは非推奨です。代わりに`show`メソッドを使用してください。
14
- */
12
+ /** @deprecated このメソッドは非推奨です。代わりに`show`メソッドを使用してください。 */
15
13
  start(): void;
16
- /**
17
- * @deprecated このメソッドは非推奨です。代わりに`hide`メソッドを使用してください。
18
- */
14
+ /** @deprecated このメソッドは非推奨です。代わりに`hide`メソッドを使用してください。 */
19
15
  stop(): void;
20
16
  }
package/dist/overlay.js CHANGED
@@ -36,11 +36,11 @@ export class Overlay {
36
36
  font-family: 'Yu Gothic Medium', '游ゴシック', YuGothic, 'メイリオ', 'Hiragino Kaku Gothic ProN',
37
37
  Meiryo, sans-serif;
38
38
  color: #356;
39
- font-size: 17px;
39
+ font-size: 16px;
40
40
 
41
41
  overflow: hidden;
42
- background-color: #fff6;
43
- backdrop-filter: blur(10px);
42
+ background-color: #fffb;
43
+ backdrop-filter: blur(4px);
44
44
  box-sizing: content-box;
45
45
 
46
46
  position: fixed;
@@ -49,21 +49,21 @@ export class Overlay {
49
49
  height: 100vh;
50
50
 
51
51
  display: grid;
52
- place-items: center;
53
52
  transition: all 250ms ease;
54
53
  z-index: 1000;
55
54
  opacity: 0;
56
55
  transition: all 250ms ease;
56
+
57
+ place-items: end stretch;
58
+ @media (min-width: 640px) {
59
+ place-items: center;
60
+ }
57
61
  `;
58
- /**
59
- * @deprecated このメソッドは非推奨です。代わりに`show`メソッドを使用してください。
60
- */
62
+ /** @deprecated このメソッドは非推奨です。代わりに`show`メソッドを使用してください。 */
61
63
  start() {
62
64
  this.show();
63
65
  }
64
- /**
65
- * @deprecated このメソッドは非推奨です。代わりに`hide`メソッドを使用してください。
66
- */
66
+ /** @deprecated このメソッドは非推奨です。代わりに`hide`メソッドを使用してください。 */
67
67
  stop() {
68
68
  this.hide();
69
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,MAAM,OAAO,OAAO;IACC,KAAK,CAAiB;IAC/B,MAAM,CAAU;IAChB,oBAAoB,CAAU;IAExC;QACE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAElC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAES,MAAM;QACd,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAChE,CAAC;IAED,2CAA2C;IACnC,YAAY,CAAC,KAAwB;QAC3C,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;IACzB,CAAC;IAEO,SAAS,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;GAsBtB,CAAC;IAEF;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IACD;;OAEG;IACI,IAAI;QACT,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,MAAM,OAAO,OAAO;IACC,KAAK,CAAiB;IAC/B,MAAM,CAAU;IAChB,oBAAoB,CAAU;IAExC;QACE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAElC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAES,MAAM;QACd,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAChE,CAAC;IAED,2CAA2C;IACnC,YAAY,CAAC,KAAwB;QAC3C,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;IACzB,CAAC;IAEO,SAAS,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BtB,CAAC;IAEF,wDAAwD;IACjD,KAAK;QACV,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IACD,wDAAwD;IACjD,IAAI;QACT,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,34 @@
1
+ import { Overlay } from './overlay';
2
+ type Label = string | string[];
3
+ type TaskStatus = 'new' | 'in-progress' | 'done' | 'error';
4
+ type Task = {
5
+ key: string;
6
+ label: Label;
7
+ status: TaskStatus;
8
+ };
9
+ type ConstructorProps = Readonly<Partial<{
10
+ taskList: Task[];
11
+ }>>;
12
+ export declare class TaskListOverlay extends Overlay {
13
+ #private;
14
+ protected readonly _contentElement: HTMLDivElement;
15
+ constructor(props?: ConstructorProps);
16
+ hide(): void;
17
+ done(key: string): void;
18
+ error(key: string): void;
19
+ inProgress(key: string): void;
20
+ addTask(...tasks: {
21
+ key: string;
22
+ label: Label;
23
+ }[]): void;
24
+ render(): void;
25
+ private renderTask;
26
+ private getTaskStatusElement;
27
+ private containerStyle;
28
+ private contentStyle;
29
+ private taskListContainerStyle;
30
+ private taskContainerStyle;
31
+ private taskLabelStyle;
32
+ private taskStatusStyle;
33
+ }
34
+ export {};
@@ -0,0 +1,177 @@
1
+ import { css } from '@emotion/css';
2
+ import { Overlay } from './overlay';
3
+ export class TaskListOverlay extends Overlay {
4
+ #taskList;
5
+ _contentElement;
6
+ constructor(props = {}) {
7
+ super();
8
+ this.#taskList = props.taskList ?? [];
9
+ const container = document.createElement('div');
10
+ container.classList.add(this.containerStyle);
11
+ this._root.append(container);
12
+ const contentElement = document.createElement('div');
13
+ this._contentElement = contentElement;
14
+ contentElement.classList.add(this.contentStyle);
15
+ container.append(contentElement);
16
+ this.render();
17
+ }
18
+ hide() {
19
+ this.#taskList = [];
20
+ super.hide();
21
+ }
22
+ done(key) {
23
+ const task = this.#taskList.find((t) => t.key === key);
24
+ if (task) {
25
+ task.status = 'done';
26
+ this.render();
27
+ }
28
+ }
29
+ error(key) {
30
+ const task = this.#taskList.find((t) => t.key === key);
31
+ if (task) {
32
+ task.status = 'error';
33
+ this.render();
34
+ }
35
+ }
36
+ inProgress(key) {
37
+ const task = this.#taskList.find((t) => t.key === key);
38
+ if (task) {
39
+ task.status = 'in-progress';
40
+ this.render();
41
+ }
42
+ }
43
+ addTask(...tasks) {
44
+ this.#taskList.push(...tasks.map(({ key, label }) => ({ key, label, status: 'new' })));
45
+ this.render();
46
+ }
47
+ render() {
48
+ super.render();
49
+ this._contentElement.innerHTML = `
50
+ <div class="${this.taskListContainerStyle}">
51
+ ${this.#taskList.map((task) => this.renderTask(task)).join('')}
52
+ </div>
53
+ `;
54
+ }
55
+ renderTask(task) {
56
+ const label = Array.isArray(task.label) ? task.label.join(' ') : task.label;
57
+ const status = task.status;
58
+ return `
59
+ <div class="${this.taskContainerStyle}">
60
+ <div class="${this.taskStatusStyle} status-${status}">${this.getTaskStatusElement(task.status)}</div>
61
+ <div class="${this.taskLabelStyle}">${label}</div>
62
+ </div>
63
+ `;
64
+ }
65
+ getTaskStatusElement(status) {
66
+ switch (status) {
67
+ case 'new':
68
+ return `<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="#ddd" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-minus-circle"><circle cx="12" cy="12" r="10"></circle><line x1="8" y1="12" x2="16" y2="12"></line></svg>`;
69
+ case 'in-progress':
70
+ return `<div><div></div></div>`;
71
+ case 'done':
72
+ return `<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="#80beaf" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-check-circle"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>`;
73
+ default:
74
+ return ``;
75
+ }
76
+ }
77
+ containerStyle = css `
78
+ display: flex;
79
+ flex-direction: column;
80
+ align-items: center;
81
+ justify-content: center;
82
+ gap: 32px;
83
+ padding: 32px 64px;
84
+ background-color: #fffc;
85
+ border-radius: 8px;
86
+ box-shadow: 0 5px 24px -6px #0002;
87
+ width: 300px;
88
+ max-width: 90vw;
89
+ min-height: 200px;
90
+ position: relative;
91
+ overflow: hidden;
92
+ transition: all 250ms ease;
93
+
94
+ @keyframes spin {
95
+ 0% {
96
+ transform: rotate(0deg);
97
+ border-radius: 1em;
98
+ }
99
+ 20% {
100
+ transform: rotate(0deg);
101
+ }
102
+ 30%,
103
+ 60% {
104
+ border-radius: 0.25em;
105
+ }
106
+ 70% {
107
+ transform: rotate(180deg);
108
+ }
109
+ 100% {
110
+ transform: rotate(180deg);
111
+ border-radius: 1em;
112
+ }
113
+ }
114
+ `;
115
+ contentStyle = css `
116
+ width: 100%;
117
+ `;
118
+ taskListContainerStyle = css `
119
+ display: flex;
120
+ flex-direction: column;
121
+ gap: 1em;
122
+ width: 100%;
123
+ `;
124
+ taskContainerStyle = css `
125
+ display: flex;
126
+ align-items: center;
127
+ gap: 1em;
128
+ `;
129
+ taskLabelStyle = css ``;
130
+ taskStatusStyle = css `
131
+ font-size: 32px;
132
+ width: 1em;
133
+ height: 1em;
134
+ display: flex;
135
+ justify-content: center;
136
+ align-items: center;
137
+
138
+ &.status-new {
139
+ }
140
+
141
+ &.status-in-progress {
142
+ border-radius: 50%;
143
+ box-shadow: inset 0 0 0 1px #3b82f633;
144
+ position: relative;
145
+ animation: rotate 1.2s infinite linear;
146
+ > div {
147
+ position: absolute;
148
+ left: 50%;
149
+ top: 50%;
150
+ width: 0.5em;
151
+ height: 1em;
152
+ margin-left: -0.5em;
153
+ margin-top: -0.5em;
154
+ overflow: hidden;
155
+ transform-origin: 0.5em 0.5em;
156
+ mask-image: linear-gradient(top, #000f, #0000);
157
+ -webkit-mask-image: -webkit-linear-gradient(top, #000f, #0000);
158
+
159
+ > div {
160
+ width: 1em;
161
+ height: 1em;
162
+ border-radius: 50%;
163
+ box-shadow: inset 0 0 0 1px #3b82f6;
164
+ }
165
+ }
166
+ @keyframes rotate {
167
+ 0% {
168
+ transform: rotate(0deg);
169
+ }
170
+ 100% {
171
+ transform: rotate(360deg);
172
+ }
173
+ }
174
+ }
175
+ `;
176
+ }
177
+ //# sourceMappingURL=task-list-overlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-list-overlay.js","sourceRoot":"","sources":["../src/task-list-overlay.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@konomi-app/ui",
3
- "version": "1.6.3",
3
+ "version": "1.7.1",
4
4
  "types": "dist/index.d.ts",
5
5
  "main": "dist/index.js",
6
6
  "author": "adachi",
7
7
  "license": "MIT",
8
8
  "scripts": {
9
- "build": "tsc",
9
+ "build": "rmdir dist /s /q && tsc",
10
10
  "prepare": "yarn run build"
11
11
  },
12
12
  "dependencies": {
13
- "@emotion/css": "^11.10.8"
13
+ "@emotion/css": "^11.11.2"
14
14
  },
15
15
  "devDependencies": {
16
- "typescript": "^5.0.4"
16
+ "typescript": "^5.2.2"
17
17
  },
18
18
  "prettier": {
19
19
  "printWidth": 100,
@@ -24,4 +24,4 @@
24
24
  "trailingComma": "es5",
25
25
  "endOfLine": "lf"
26
26
  }
27
- }
27
+ }
package/dist/index.css DELETED
@@ -1,15 +0,0 @@
1
- /* esbuild-plugin-sass:C:\Users\Ribbit\Documents\github\ui-modules\vanilla\src\dialog\theme.scss */
2
- @keyframes swal2-show {
3
- 0% {
4
- opacity: 0;
5
- }
6
- 100% {
7
- opacity: 1;
8
- }
9
- }
10
- @keyframes swal2-hide {
11
- 100% {
12
- opacity: 0;
13
- }
14
- }
15
- /*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiZXNidWlsZC1wbHVnaW4tc2FzczpDOlxcVXNlcnNcXFJpYmJpdFxcRG9jdW1lbnRzXFxnaXRodWJcXHVpLW1vZHVsZXNcXHZhbmlsbGFcXHNyY1xcZGlhbG9nXFx0aGVtZS5zY3NzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJAa2V5ZnJhbWVzIHN3YWwyLXNob3cge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5Aa2V5ZnJhbWVzIHN3YWwyLWhpZGUge1xuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59Il0sCiAgIm1hcHBpbmdzIjogIjtBQUFBO0FBQUE7QUFFSTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFHSjtBQUFBO0FBRUk7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo= */
@@ -1,150 +0,0 @@
1
- import { css } from '@emotion/css';
2
- import { Overlay } from './overlay';
3
- export class LoadingOverlay extends Overlay {
4
- #label;
5
- #html;
6
- #progress;
7
- _loaderElement;
8
- _progressElement;
9
- _contentElement;
10
- constructor(props = {}) {
11
- super();
12
- this.#label = props.label ?? '';
13
- this.#html = '';
14
- this.#progress = props.progress ?? null;
15
- const container = document.createElement('div');
16
- container.classList.add(this.containerStyle);
17
- this._root.append(container);
18
- const loaderElement = document.createElement('div');
19
- loaderElement.innerHTML = '<div><div></div></div>';
20
- loaderElement.classList.add(this.loaderStyle);
21
- this._loaderElement = loaderElement;
22
- container.append(loaderElement);
23
- const progressElement = document.createElement('div');
24
- progressElement.classList.add(this.progressStyle);
25
- this._progressElement = progressElement;
26
- container.append(progressElement);
27
- const contentElement = document.createElement('div');
28
- this._contentElement = contentElement;
29
- container.append(contentElement);
30
- this.render();
31
- }
32
- hide() {
33
- this.#progress = 0;
34
- this.#html = '';
35
- this.#label = '';
36
- super.hide();
37
- }
38
- set label(label) {
39
- this.#label = label;
40
- this.render();
41
- }
42
- set html(html) {
43
- this.#html = html;
44
- this.render();
45
- }
46
- set progress(progress) {
47
- this.#progress = progress;
48
- this.render();
49
- }
50
- render() {
51
- super.render();
52
- this._progressElement.style.width = `${this.#progress}%`;
53
- this._loaderElement.style.animation = this._shown ? 'rotate 1.2s infinite linear' : 'none';
54
- if (this.#html) {
55
- this._contentElement.innerHTML = this.#html;
56
- }
57
- else {
58
- if (this.#label instanceof Array) {
59
- this._contentElement.innerHTML = `<div>${this.#label.join('</div><div>')}</div>`;
60
- }
61
- else {
62
- this._contentElement.innerText = this.#label;
63
- }
64
- }
65
- }
66
- containerStyle = css `
67
- display: flex;
68
- flex-direction: column;
69
- align-items: center;
70
- justify-content: center;
71
- gap: 32px;
72
- padding: 32px 64px;
73
- background-color: #fffc;
74
- border-radius: 8px;
75
- box-shadow: 0 5px 24px -6px #0002;
76
- width: 300px;
77
- max-width: 90vw;
78
- min-height: 200px;
79
- position: relative;
80
- overflow: hidden;
81
- transition: all 250ms ease;
82
-
83
- @keyframes spin {
84
- 0% {
85
- transform: rotate(0deg);
86
- border-radius: 1em;
87
- }
88
- 20% {
89
- transform: rotate(0deg);
90
- }
91
- 30%,
92
- 60% {
93
- border-radius: 0.25em;
94
- }
95
- 70% {
96
- transform: rotate(180deg);
97
- }
98
- 100% {
99
- transform: rotate(180deg);
100
- border-radius: 1em;
101
- }
102
- }
103
- `;
104
- loaderStyle = css `
105
- font-size: 60px;
106
- width: 1em;
107
- height: 1em;
108
- border-radius: 50%;
109
- box-shadow: inset 0 0 0 1px #3b82f633;
110
- position: relative;
111
- > div {
112
- position: absolute;
113
- left: 50%;
114
- top: 50%;
115
- width: 0.5em;
116
- height: 1em;
117
- margin-left: -0.5em;
118
- margin-top: -0.5em;
119
- overflow: hidden;
120
- transform-origin: 0.5em 0.5em;
121
- mask-image: linear-gradient(top, #000f, #0000);
122
- -webkit-mask-image: -webkit-linear-gradient(top, #000f, #0000);
123
-
124
- > div {
125
- width: 1em;
126
- height: 1em;
127
- border-radius: 50%;
128
- box-shadow: inset 0 0 0 1px #3b82f6;
129
- }
130
- }
131
- @keyframes rotate {
132
- 0% {
133
- transform: rotate(0deg);
134
- }
135
- 100% {
136
- transform: rotate(360deg);
137
- }
138
- }
139
- `;
140
- progressStyle = css `
141
- position: absolute;
142
- bottom: 0px;
143
- left: 0;
144
- width: 0%;
145
- height: 2px;
146
- background-color: #2563eb;
147
- transition: all 350ms ease;
148
- `;
149
- }
150
- //# sourceMappingURL=loading-overlay.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loading-overlay.js","sourceRoot":"","sources":["../src/loading-overlay.ts"],"names":[],"mappings":"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"}