1fb726d48Sopenharmony_ci/*
2fb726d48Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd.
3fb726d48Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4fb726d48Sopenharmony_ci * you may not use this file except in compliance with the License.
5fb726d48Sopenharmony_ci * You may obtain a copy of the License at
6fb726d48Sopenharmony_ci *
7fb726d48Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8fb726d48Sopenharmony_ci *
9fb726d48Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10fb726d48Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11fb726d48Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF unknown KIND, either express or implied.
12fb726d48Sopenharmony_ci * See the License for the specific language governing permissions and
13fb726d48Sopenharmony_ci * limitations under the License.
14fb726d48Sopenharmony_ci */
15fb726d48Sopenharmony_ci
16fb726d48Sopenharmony_ciimport { BaseElement, element } from '../BaseElement'
17fb726d48Sopenharmony_ci
18fb726d48Sopenharmony_ci@element('lit-loading')
19fb726d48Sopenharmony_ciexport class LitLoading extends BaseElement {
20fb726d48Sopenharmony_ci
21fb726d48Sopenharmony_ci    initHtml(): string {
22fb726d48Sopenharmony_ci        return `
23fb726d48Sopenharmony_ci            <style>
24fb726d48Sopenharmony_ci            .loadEl {
25fb726d48Sopenharmony_ci                display:flex;
26fb726d48Sopenharmony_ci                flex-flow:column;
27fb726d48Sopenharmony_ci                align-items:center;
28fb726d48Sopenharmony_ci            }
29fb726d48Sopenharmony_ci            .loading,.loading > div {
30fb726d48Sopenharmony_ci                position: relative;
31fb726d48Sopenharmony_ci                box-sizing: border-box;
32fb726d48Sopenharmony_ci            }           
33fb726d48Sopenharmony_ci                
34fb726d48Sopenharmony_ci                .loading {
35fb726d48Sopenharmony_ci                  display: block;
36fb726d48Sopenharmony_ci                  font-size: 0;
37fb726d48Sopenharmony_ci                  color: #000;
38fb726d48Sopenharmony_ci                }
39fb726d48Sopenharmony_ci                
40fb726d48Sopenharmony_ci                .loading.la-dark {
41fb726d48Sopenharmony_ci                  color:#333;
42fb726d48Sopenharmony_ci                }
43fb726d48Sopenharmony_ci                
44fb726d48Sopenharmony_ci                .loading > div {
45fb726d48Sopenharmony_ci                  display: inline-block;
46fb726d48Sopenharmony_ci                  float: none;
47fb726d48Sopenharmony_ci                  background-color: currentColor;
48fb726d48Sopenharmony_ci                  border: 0 solid currentColor;
49fb726d48Sopenharmony_ci                }
50fb726d48Sopenharmony_ci                
51fb726d48Sopenharmony_ci                .loading {
52fb726d48Sopenharmony_ci                  width: 32px;
53fb726d48Sopenharmony_ci                  height: 32px;
54fb726d48Sopenharmony_ci                }
55fb726d48Sopenharmony_ci                
56fb726d48Sopenharmony_ci                .loading > div {
57fb726d48Sopenharmony_ci                  position: absolute;
58fb726d48Sopenharmony_ci                  top: 50%;
59fb726d48Sopenharmony_ci                  left: 50%;
60fb726d48Sopenharmony_ci                  width: 8px;
61fb726d48Sopenharmony_ci                  height: 8px;
62fb726d48Sopenharmony_ci                  margin-top: -4px;
63fb726d48Sopenharmony_ci                  margin-left: -4px;
64fb726d48Sopenharmony_ci                  border-radius: 100%;
65fb726d48Sopenharmony_ci                  animation: ball-spin 1s infinite ease-in-out;
66fb726d48Sopenharmony_ci                }
67fb726d48Sopenharmony_ci                
68fb726d48Sopenharmony_ci                .loading > div:nth-child(1) {
69fb726d48Sopenharmony_ci                  top: 5%;
70fb726d48Sopenharmony_ci                  left: 50%;
71fb726d48Sopenharmony_ci                  animation-delay: -1.125s;
72fb726d48Sopenharmony_ci                }
73fb726d48Sopenharmony_ci                
74fb726d48Sopenharmony_ci                .loading > div:nth-child(2) {
75fb726d48Sopenharmony_ci                  top: 18.1801948466%;
76fb726d48Sopenharmony_ci                  left: 81.8198051534%;
77fb726d48Sopenharmony_ci                  animation-delay: -1.25s;
78fb726d48Sopenharmony_ci                }
79fb726d48Sopenharmony_ci                
80fb726d48Sopenharmony_ci                .loading > div:nth-child(3) {
81fb726d48Sopenharmony_ci                  top: 50%;
82fb726d48Sopenharmony_ci                  left: 95%;
83fb726d48Sopenharmony_ci                  animation-delay: -1.375s;
84fb726d48Sopenharmony_ci                }   
85fb726d48Sopenharmony_ci                
86fb726d48Sopenharmony_ci                .loading > div:nth-child(4) {
87fb726d48Sopenharmony_ci                  top: 81.8198051534%;
88fb726d48Sopenharmony_ci                  left: 81.8198051534%;
89fb726d48Sopenharmony_ci                  animation-delay: -1.5s;
90fb726d48Sopenharmony_ci                }
91fb726d48Sopenharmony_ci                
92fb726d48Sopenharmony_ci                .loading > div:nth-child(5) {   
93fb726d48Sopenharmony_ci                  top: 94.9999999966%;
94fb726d48Sopenharmony_ci                  left: 50.0000000005%;
95fb726d48Sopenharmony_ci                  animation-delay: -1.625s;
96fb726d48Sopenharmony_ci                }
97fb726d48Sopenharmony_ci                
98fb726d48Sopenharmony_ci                .loading > div:nth-child(6) {
99fb726d48Sopenharmony_ci                  top: 81.8198046966%;
100fb726d48Sopenharmony_ci                  left: 18.1801949248%;
101fb726d48Sopenharmony_ci                  animation-delay: -1.75s;
102fb726d48Sopenharmony_ci                }
103fb726d48Sopenharmony_ci                
104fb726d48Sopenharmony_ci                .loading > div:nth-child(7) {
105fb726d48Sopenharmony_ci                  top: 49.9999750815%;
106fb726d48Sopenharmony_ci                  left: 5.0000051215%;
107fb726d48Sopenharmony_ci                  animation-delay: -1.875s;
108fb726d48Sopenharmony_ci                }
109fb726d48Sopenharmony_ci                  .loading > div:nth-child(8) {
110fb726d48Sopenharmony_ci                  top: 18.179464974%;
111fb726d48Sopenharmony_ci                  left: 18.1803700518%;
112fb726d48Sopenharmony_ci                  animation-delay: -2s;
113fb726d48Sopenharmony_ci                }
114fb726d48Sopenharmony_ci                
115fb726d48Sopenharmony_ci                .loading.la-sm {
116fb726d48Sopenharmony_ci                  width: 16px;
117fb726d48Sopenharmony_ci                  height: 16px;
118fb726d48Sopenharmony_ci                }
119fb726d48Sopenharmony_ci                
120fb726d48Sopenharmony_ci                .loading.la-sm > div {
121fb726d48Sopenharmony_ci                  width: 4px;
122fb726d48Sopenharmony_ci                  height: 4px;
123fb726d48Sopenharmony_ci                  margin-top: -2px;
124fb726d48Sopenharmony_ci                  margin-left: -2px;
125fb726d48Sopenharmony_ci                }
126fb726d48Sopenharmony_ci                
127fb726d48Sopenharmony_ci                .loading.la-2x {
128fb726d48Sopenharmony_ci                  width: 64px;
129fb726d48Sopenharmony_ci                  height: 64px;
130fb726d48Sopenharmony_ci                }
131fb726d48Sopenharmony_ci                
132fb726d48Sopenharmony_ci                .loading.la-2x > div {
133fb726d48Sopenharmony_ci                  width: 16px;
134fb726d48Sopenharmony_ci                  height: 16px;
135fb726d48Sopenharmony_ci                  margin-top: -8px;
136fb726d48Sopenharmony_ci                  margin-left: -8px;
137fb726d48Sopenharmony_ci                }
138fb726d48Sopenharmony_ci                
139fb726d48Sopenharmony_ci                .loading.la-3x {
140fb726d48Sopenharmony_ci                  width: 96px;
141fb726d48Sopenharmony_ci                  height: 96px;
142fb726d48Sopenharmony_ci                }
143fb726d48Sopenharmony_ci                
144fb726d48Sopenharmony_ci                .loading.la-3x > div {
145fb726d48Sopenharmony_ci                  width: 24px;
146fb726d48Sopenharmony_ci                  height: 24px;
147fb726d48Sopenharmony_ci                  margin-top: -12px;
148fb726d48Sopenharmony_ci                  margin-left: -12px;
149fb726d48Sopenharmony_ci                }
150fb726d48Sopenharmony_ci                
151fb726d48Sopenharmony_ci                @keyframes ball-spin {
152fb726d48Sopenharmony_ci                  0%,
153fb726d48Sopenharmony_ci                  100% {
154fb726d48Sopenharmony_ci                    opacity: 1;
155fb726d48Sopenharmony_ci                    transform: scale(1);
156fb726d48Sopenharmony_ci                  }
157fb726d48Sopenharmony_ci                
158fb726d48Sopenharmony_ci                  20% {
159fb726d48Sopenharmony_ci                    opacity: 1;
160fb726d48Sopenharmony_ci                  }
161fb726d48Sopenharmony_ci                
162fb726d48Sopenharmony_ci                  80% {
163fb726d48Sopenharmony_ci                    opacity: 0;
164fb726d48Sopenharmony_ci                    transform: scale(0);
165fb726d48Sopenharmony_ci                  }
166fb726d48Sopenharmony_ci                }
167fb726d48Sopenharmony_ci
168fb726d48Sopenharmony_ci                .loadingText {
169fb726d48Sopenharmony_ci                    margin-top:20px;
170fb726d48Sopenharmony_ci                }
171fb726d48Sopenharmony_ci            </style>
172fb726d48Sopenharmony_ci            <div class="loadEl">
173fb726d48Sopenharmony_ci                <div class="loading" id="lit-loading">
174fb726d48Sopenharmony_ci                    <div></div>
175fb726d48Sopenharmony_ci                    <div></div>
176fb726d48Sopenharmony_ci                    <div></div>
177fb726d48Sopenharmony_ci                    <div></div>
178fb726d48Sopenharmony_ci                    <div></div>
179fb726d48Sopenharmony_ci                    <div></div>
180fb726d48Sopenharmony_ci                    <div></div>
181fb726d48Sopenharmony_ci                    <div></div>
182fb726d48Sopenharmony_ci                </div>
183fb726d48Sopenharmony_ci                <div class="loadingText">
184fb726d48Sopenharmony_ci                    加载中 ...
185fb726d48Sopenharmony_ci                </div>
186fb726d48Sopenharmony_ci            </div>
187fb726d48Sopenharmony_ci            `;
188fb726d48Sopenharmony_ci    }
189fb726d48Sopenharmony_ci
190fb726d48Sopenharmony_ci    initElements(): void {
191fb726d48Sopenharmony_ci    }
192fb726d48Sopenharmony_ci}