@dssp/project 1.0.0-alpha.8 → 1.0.0-alpha.9

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.
@@ -0,0 +1,627 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import '@material/web/fab/fab.js';
3
+ import '@material/web/icon/icon.js';
4
+ import gql from 'graphql-tag';
5
+ import { client } from '@operato/graphql';
6
+ import { css, html, LitElement } from 'lit';
7
+ import { customElement, property } from 'lit/decorators.js';
8
+ import { ButtonContainerStyles, ScrollbarStyles } from '@operato/styles';
9
+ import '@operato/input/ox-input-signature.js';
10
+ import { store } from '@operato/shell';
11
+ import { connect } from 'pwa-helpers/connect-mixin.js';
12
+ import { openPopup } from '@operato/layout';
13
+ import './comment-list-popup';
14
+ import './attachment-list-popup';
15
+ export var ChecklistTypeMainType;
16
+ (function (ChecklistTypeMainType) {
17
+ ChecklistTypeMainType["BASIC"] = "10";
18
+ ChecklistTypeMainType["NON_BASIC"] = "20";
19
+ })(ChecklistTypeMainType || (ChecklistTypeMainType = {}));
20
+ export const CHECKLIST_MAIN_TYPE_LIST = {
21
+ [ChecklistTypeMainType.BASIC]: '기본 업무',
22
+ [ChecklistTypeMainType.NON_BASIC]: '기본 외 업무'
23
+ };
24
+ export var BuildingInspectionStatus;
25
+ (function (BuildingInspectionStatus) {
26
+ BuildingInspectionStatus["WAIT"] = "WAIT";
27
+ BuildingInspectionStatus["OVERALL_WAIT"] = "OVERALL_WAIT";
28
+ BuildingInspectionStatus["REQUEST"] = "REQUEST";
29
+ BuildingInspectionStatus["OVERALL_REQUEST"] = "OVERALL_REQUEST";
30
+ BuildingInspectionStatus["PASS"] = "PASS";
31
+ BuildingInspectionStatus["FAIL"] = "FAIL";
32
+ })(BuildingInspectionStatus || (BuildingInspectionStatus = {}));
33
+ export const BUILDING_INSPECTION_STATUS_DISPLAY = {
34
+ [BuildingInspectionStatus.WAIT]: '검측 대기',
35
+ [BuildingInspectionStatus.OVERALL_WAIT]: '검측 대기',
36
+ [BuildingInspectionStatus.REQUEST]: '검측 요청',
37
+ [BuildingInspectionStatus.OVERALL_REQUEST]: '검측 요청',
38
+ [BuildingInspectionStatus.PASS]: '합격',
39
+ [BuildingInspectionStatus.FAIL]: '불합격'
40
+ };
41
+ export var ChecklistReferenceType;
42
+ (function (ChecklistReferenceType) {
43
+ ChecklistReferenceType["INSPECTION"] = "INSPECTION";
44
+ ChecklistReferenceType["SCHEDULE"] = "SCHEDULE"; // 공정표
45
+ })(ChecklistReferenceType || (ChecklistReferenceType = {}));
46
+ let ScheduleChecklistView = class ScheduleChecklistView extends connect(store)(LitElement) {
47
+ constructor() {
48
+ super(...arguments);
49
+ this.mode = "VIEWER" /* ChecklistMode.VIEWER */;
50
+ this.checklist = {};
51
+ this.buildingComplex = {
52
+ id: '',
53
+ taskConstructorEmails: [],
54
+ overallConstructorEmails: [],
55
+ taskSupervisoryEmails: [],
56
+ overallSupervisoryEmails: []
57
+ };
58
+ this.status = BuildingInspectionStatus.WAIT;
59
+ }
60
+ render() {
61
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
62
+ const today = this._getDate(new Date());
63
+ // 시공자 스탭 여부
64
+ const isConstructorStep = this.status == BuildingInspectionStatus.WAIT ||
65
+ this.status == BuildingInspectionStatus.OVERALL_WAIT ||
66
+ this.status == BuildingInspectionStatus.FAIL;
67
+ // 감리자 스탭 여부
68
+ const isSupervisoryStep = this.status == BuildingInspectionStatus.REQUEST || this.status == BuildingInspectionStatus.OVERALL_REQUEST;
69
+ // 현재 스탭에 해당하는 계정인지 체크 (편집모드만)
70
+ let havePermissionByStatus = false;
71
+ let isTaskConstructor = false;
72
+ let isOverallConstructor = false;
73
+ let isTaskSupervisory = false;
74
+ let isOverallSupervisory = false;
75
+ if (this.mode == "EDITOR" /* ChecklistMode.EDITOR */ && this.status) {
76
+ const email = (_b = (_a = store.getState().auth) === null || _a === void 0 ? void 0 : _a.user) === null || _b === void 0 ? void 0 : _b.email;
77
+ // 현재 유저가 "공종별 시공 관리자" 인지 체크
78
+ isTaskConstructor = ((_c = this.buildingComplex.taskConstructorEmails) === null || _c === void 0 ? void 0 : _c.includes(email)) || false;
79
+ // 현재 유저가 "총괄 시공 책임자" 인지 체크
80
+ isOverallConstructor = ((_d = this.buildingComplex.overallConstructorEmails) === null || _d === void 0 ? void 0 : _d.includes(email)) || false;
81
+ // 현재 유저가 "공종별 감리 책임자" 인지 체크
82
+ isTaskSupervisory = ((_e = this.buildingComplex.taskSupervisoryEmails) === null || _e === void 0 ? void 0 : _e.includes(email)) || false;
83
+ // 현재 유저가 "총괄 감리 책임자" 인지 체크
84
+ isOverallSupervisory = ((_f = this.buildingComplex.overallSupervisoryEmails) === null || _f === void 0 ? void 0 : _f.includes(email)) || false;
85
+ // 스탭이 시공자 스탭일때에 내가 시공자 권한이 있는지 체크
86
+ havePermissionByStatus = isConstructorStep
87
+ ? isTaskConstructor || isOverallConstructor
88
+ : isTaskSupervisory || isOverallSupervisory;
89
+ }
90
+ // 체크리스트 아이템 정렬
91
+ (_h = (_g = this.checklist) === null || _g === void 0 ? void 0 : _g.checklistItems) === null || _h === void 0 ? void 0 : _h.sort((a, b) => {
92
+ // 1순위: mainType 오름차순
93
+ if (a.mainType < b.mainType)
94
+ return -1;
95
+ if (a.mainType > b.mainType)
96
+ return 1;
97
+ // 2순위: detailType 오름차순
98
+ if (a.detailType < b.detailType)
99
+ return -1;
100
+ if (a.detailType > b.detailType)
101
+ return 1;
102
+ // 3순위: sequence 오름차순
103
+ return a.sequence - b.sequence;
104
+ });
105
+ const processedItems = this.drawChecklistItems(((_j = this.checklist) === null || _j === void 0 ? void 0 : _j.checklistItems) || []);
106
+ return html `
107
+ <div title-row>
108
+ <div name>${this.checklist.name}</div>
109
+ </div>
110
+ <table header>
111
+ <tr>
112
+ <th>공종</th>
113
+ <td>${this.checklist.constructionType}</td>
114
+ <th>문서 번호</th>
115
+ <td>${this.checklist.documentNo}</td>
116
+ </tr>
117
+ <tr>
118
+ <th>세부 공종</th>
119
+ <td>${this.checklist.constructionDetailType}</td>
120
+ <th>검측 상태</th>
121
+ <td>${BUILDING_INSPECTION_STATUS_DISPLAY[this.status]}</td>
122
+ </tr>
123
+ </table>
124
+
125
+ <table body>
126
+ <thead>
127
+ <tr>
128
+ <th colspan="2" rowspan="3" type>구분</th>
129
+ <th rowspan="3" inspection-name>검사항목</th>
130
+ <th rowspan="3" criteria>검사기준</th>
131
+ <th colspan="4" result>검사결과</th>
132
+ <th rowspan="3" small>첨부자료</th>
133
+ <th rowspan="3" small>조치사항</th>
134
+ </tr>
135
+ <tr>
136
+ <th colspan="2">시공자</th>
137
+ <th colspan="2">감리자</th>
138
+ </tr>
139
+ <tr>
140
+ <th>적합</th>
141
+ <th>부적합</th>
142
+ <th>적합</th>
143
+ <th>부적합</th>
144
+ </tr>
145
+ </thead>
146
+ <tbody>
147
+ ${processedItems.map(({ item, showMainTypeCell, mainTypeRowspan, showDetailTypeCell, detailTypeRowspan }, idx) => {
148
+ return html ` <tr>
149
+ ${showMainTypeCell
150
+ ? html `<td main-type bold rowspan="${mainTypeRowspan}">${CHECKLIST_MAIN_TYPE_LIST[item.mainType]}</td>`
151
+ : ''}
152
+ ${showDetailTypeCell ? html ` <td bold rowspan="${detailTypeRowspan}">${item.detailType}</td> ` : ''}
153
+
154
+ <td>${idx + 1}. ${item.name}</td>
155
+ <td>${item.inspctionCriteria}</td>
156
+ <td radio>
157
+ <md-radio
158
+ item-id=${item.id}
159
+ item-name="constructionConfirmStatus"
160
+ name=${'radio-construction-' + item.id}
161
+ value="T"
162
+ .checked=${item.constructionConfirmStatus === 'T'}
163
+ ?disabled=${!isConstructorStep || !havePermissionByStatus}
164
+ @change=${this._onChangeConfirmStatus}
165
+ ></md-radio>
166
+ </td>
167
+ <td radio>
168
+ <md-radio
169
+ item-id=${item.id}
170
+ item-name="constructionConfirmStatus"
171
+ name=${'radio-construction-' + item.id}
172
+ value="F"
173
+ .checked=${item.constructionConfirmStatus === 'F'}
174
+ ?disabled=${!isConstructorStep || !havePermissionByStatus}
175
+ @change=${this._onChangeConfirmStatus}
176
+ ></md-radio>
177
+ </td>
178
+ <td radio>
179
+ <md-radio
180
+ item-id=${item.id}
181
+ item-name="supervisoryConfirmStatus"
182
+ name=${'radio-supervisory-' + item.id}
183
+ value="T"
184
+ .checked=${item.supervisoryConfirmStatus === 'T'}
185
+ ?disabled=${!isSupervisoryStep || !havePermissionByStatus}
186
+ @change=${this._onChangeConfirmStatus}
187
+ ></md-radio>
188
+ </td>
189
+ <td radio>
190
+ <md-radio
191
+ item-id=${item.id}
192
+ item-name="supervisoryConfirmStatus"
193
+ name=${'radio-supervisory-' + item.id}
194
+ value="F"
195
+ .checked=${item.supervisoryConfirmStatus === 'F'}
196
+ ?disabled=${!isSupervisoryStep || !havePermissionByStatus}
197
+ @change=${this._onChangeConfirmStatus}
198
+ ></md-radio>
199
+ </td>
200
+ <td
201
+ attachment
202
+ ?disabled=${this.status == BuildingInspectionStatus.PASS}
203
+ @click=${() => this._onClickAttachment(item.id)}
204
+ >
205
+ <md-icon slot="icon">attach_file</md-icon>
206
+ <span>${(item === null || item === void 0 ? void 0 : item.checklistItemAttachmentCount) || ''}</span>
207
+ </td>
208
+ <td comment ?disabled=${this.status == BuildingInspectionStatus.PASS} @click=${() => this._onClickComment(item.id)}>
209
+ <md-icon slot="icon">chat</md-icon>
210
+ <span>${(item === null || item === void 0 ? void 0 : item.checklistItemCommentCount) || ''}</span>
211
+ </td>
212
+ </tr>`;
213
+ })}
214
+ </tbody>
215
+ </table>
216
+
217
+ <table tail>
218
+ <tbody>
219
+ <tr first>
220
+ <th rowspan="2">시공자 점검일</th>
221
+ <td rowspan="2">
222
+ ${this.mode == "VIEWER" /* ChecklistMode.VIEWER */ ? today : this._getDate(this.checklist.constructionInspectionDate)}
223
+ </td>
224
+ <th>공종별 시공 관리자</th>
225
+ <td>
226
+ <span sign-text>(인)</span>
227
+ <ox-input-signature
228
+ .value=${this.checklist.taskConstructorSignature}
229
+ name="taskConstructorSignature"
230
+ @change=${this._onChangeSignature}
231
+ ?disabled=${(this.status != BuildingInspectionStatus.WAIT && this.status != BuildingInspectionStatus.FAIL) ||
232
+ !isTaskConstructor}
233
+ >
234
+ </ox-input-signature>
235
+ </td>
236
+ </tr>
237
+ <tr>
238
+ <th>총괄 시공 책임자</th>
239
+ <td>
240
+ <span sign-text>(인)</span>
241
+ <ox-input-signature
242
+ .value=${this.checklist.overallConstructorSignature}
243
+ name="overallConstructorSignature"
244
+ @change=${this._onChangeSignature}
245
+ ?disabled=${this.status != BuildingInspectionStatus.OVERALL_WAIT || !isOverallConstructor}
246
+ >
247
+ </ox-input-signature>
248
+ </td>
249
+ </tr>
250
+ <tr>
251
+ <th rowspan="2">감리자 점검일</th>
252
+ <td rowspan="2">
253
+ ${this.mode == "VIEWER" /* ChecklistMode.VIEWER */ ? today : this._getDate(this.checklist.supervisorInspectionDate)}
254
+ </td>
255
+ <th>공종별 감리 책임자</th>
256
+ <td>
257
+ <span sign-text>(인)</span>
258
+ <ox-input-signature
259
+ .value=${this.checklist.taskSupervisorySignature}
260
+ name="taskSupervisorySignature"
261
+ @change=${this._onChangeSignature}
262
+ ?disabled=${this.status != BuildingInspectionStatus.REQUEST || !isTaskSupervisory}
263
+ >
264
+ </ox-input-signature>
265
+ </td>
266
+ </tr>
267
+ <tr>
268
+ <th>총괄 감리 책임자</th>
269
+ <td>
270
+ <span sign-text>(인)</span>
271
+ <ox-input-signature
272
+ .value=${this.checklist.overallSupervisorySignature}
273
+ name="overallSupervisorySignature"
274
+ @change=${this._onChangeSignature}
275
+ ?disabled=${this.status != BuildingInspectionStatus.OVERALL_REQUEST || !isOverallSupervisory}
276
+ >
277
+ </ox-input-signature>
278
+ </td>
279
+ </tr>
280
+ </tbody>
281
+ </table>
282
+
283
+ <div footer>
284
+ <div>
285
+ - 검사결과는 1차, 2차로 구분 재검측시 2차에 기록하고 검사기준도 검사결과와 비교될 수 있도록 시방서 또는 도면 등에 있는
286
+ 수치를 작성하며, 수치가 없는 검사항목은 시방서 또는 설계도서에 있는 내용과 검사한 내용으로 작성함
287
+ </div>
288
+ <div>- 검사항목 및 검사기준은 각 공종별로 감리원과 협의하여 작성할 것</div>
289
+ </div>
290
+ `;
291
+ }
292
+ _onChangeConfirmStatus(e) {
293
+ var _a, _b;
294
+ const target = e.target;
295
+ const itemId = target.getAttribute('item-id');
296
+ const name = target.getAttribute('item-name') || '';
297
+ const value = target.value;
298
+ this.checklist.checklistItems = (_b = (_a = this.checklist) === null || _a === void 0 ? void 0 : _a.checklistItems) === null || _b === void 0 ? void 0 : _b.map(item => item.id == itemId ? Object.assign(Object.assign({}, item), { [name]: value }) : item);
299
+ }
300
+ _onChangeSignature(e) {
301
+ const target = e.target;
302
+ this.checklist[target.name] = target.value;
303
+ }
304
+ _getDate(date) {
305
+ if (!date)
306
+ return ' 년 월 일';
307
+ const _date = new Date(date) || new Date();
308
+ return _date.toLocaleDateString('ko-KR', {
309
+ timeZone: 'Asia/Seoul',
310
+ year: 'numeric',
311
+ month: 'long',
312
+ day: 'numeric'
313
+ });
314
+ }
315
+ drawChecklistItems(checklistItems) {
316
+ const mainTypeRowspans = {};
317
+ const detailTypeRowspans = {};
318
+ let previousMainType = null;
319
+ let previousDetailType = null;
320
+ return checklistItems.map((item, index) => {
321
+ const mainType = item.mainType;
322
+ const detailType = item.detailType;
323
+ // mainType이 변경되면 rowspan을 계산
324
+ if (mainType !== previousMainType) {
325
+ mainTypeRowspans[mainType] = checklistItems.filter(i => i.mainType === mainType).length;
326
+ previousDetailType = null; // detailType 초기화
327
+ }
328
+ // detailType이 변경되면 rowspan을 계산
329
+ if (detailType !== previousDetailType) {
330
+ detailTypeRowspans[`${mainType}-${detailType}`] = checklistItems.filter(i => i.mainType === mainType && i.detailType === detailType).length;
331
+ }
332
+ const showMainTypeCell = mainType !== previousMainType;
333
+ const showDetailTypeCell = detailType !== previousDetailType;
334
+ const mainTypeRowspan = mainTypeRowspans[mainType];
335
+ const detailTypeRowspan = detailTypeRowspans[`${mainType}-${detailType}`];
336
+ // 이전 값을 업데이트
337
+ previousMainType = mainType;
338
+ previousDetailType = detailType;
339
+ return {
340
+ item,
341
+ showMainTypeCell,
342
+ mainTypeRowspan,
343
+ showDetailTypeCell,
344
+ detailTypeRowspan
345
+ };
346
+ });
347
+ }
348
+ _onClickComment(checklistItemId) {
349
+ openPopup(html `
350
+ <comment-list-popup
351
+ .checklistItemId=${checklistItemId}
352
+ .status=${this.status}
353
+ @change-comment=${this._refreshItem.bind(this)}
354
+ ></comment-list-popup>
355
+ `, { backdrop: true, size: 'medium', title: '조치 사항' });
356
+ }
357
+ _onClickAttachment(checklistItemId) {
358
+ openPopup(html `
359
+ <attachment-list-popup
360
+ .checklistItemId=${checklistItemId}
361
+ .status=${this.status}
362
+ @change-attachment=${this._refreshItem.bind(this)}
363
+ ></attachment-list-popup>
364
+ `, { backdrop: true, size: 'medium', title: '첨부 자료' });
365
+ }
366
+ async _refreshItem(e) {
367
+ var _a;
368
+ const { checklistItemId } = e.detail;
369
+ const response = await client.query({
370
+ query: gql `
371
+ query ChecklistItem($checklistItemId: String!) {
372
+ checklistItem(id: $checklistItemId) {
373
+ id
374
+ checklistItemCommentCount
375
+ checklistItemAttachmentCount
376
+ }
377
+ }
378
+ `,
379
+ variables: {
380
+ checklistItemId: checklistItemId
381
+ }
382
+ });
383
+ const checklistItem = ((_a = response.data) === null || _a === void 0 ? void 0 : _a.checklistItem) || [];
384
+ this.checklist.checklistItems = this.checklist.checklistItems.map(item => {
385
+ return item.id != checklistItemId ? item : Object.assign(Object.assign({}, item), checklistItem);
386
+ });
387
+ this.requestUpdate();
388
+ }
389
+ };
390
+ ScheduleChecklistView.styles = [
391
+ ButtonContainerStyles,
392
+ ScrollbarStyles,
393
+ css `
394
+ :host {
395
+ display: flex;
396
+ flex: 1;
397
+ flex-direction: column;
398
+ padding: var(--spacing-large, 12px);
399
+ padding-top: 0;
400
+ font-size: 14px;
401
+ min-width: 800px;
402
+ }
403
+
404
+ [bold] {
405
+ font-weight: bold;
406
+ }
407
+
408
+ div[name] {
409
+ display: flex;
410
+ color: #586878;
411
+ font-size: 24px;
412
+ align-items: center;
413
+ justify-content: center;
414
+ }
415
+
416
+ table {
417
+ width: 100%;
418
+ font-size: 15px;
419
+ color: #586878;
420
+ text-align: left;
421
+ border-collapse: collapse;
422
+ td,
423
+ th {
424
+ border: 1px rgba(51, 51, 51, 0.2) solid;
425
+ padding-inline: var(--spacing-medium, 8px);
426
+ vertical-align: middle;
427
+ }
428
+ th {
429
+ background-color: #efefef;
430
+ font-weight: bold;
431
+ }
432
+ td {
433
+ height: 33px;
434
+ background-color: var(--md-sys-color-on-primary);
435
+ &[radio] {
436
+ text-align: center;
437
+ width: 50px;
438
+ }
439
+ }
440
+ }
441
+
442
+ table[header] {
443
+ margin-top: var(--spacing-small, 4px);
444
+
445
+ td {
446
+ min-width: 180px;
447
+ border-left: none;
448
+ }
449
+ th {
450
+ width: 110px;
451
+ border-right: none;
452
+ }
453
+ }
454
+
455
+ table[body] {
456
+ border: 2px solid var(--md-sys-color-on-primary-container);
457
+ border-bottom: none;
458
+ margin-top: var(--spacing-medium, 8px);
459
+
460
+ th {
461
+ text-align: center;
462
+
463
+ &[type] {
464
+ min-width: 150px;
465
+ }
466
+ &[inspection-name] {
467
+ min-width: 250px;
468
+ }
469
+ &[result] {
470
+ width: 270px;
471
+ }
472
+ &[criteria] {
473
+ width: 90px;
474
+ }
475
+ &[small] {
476
+ width: 60px;
477
+ }
478
+ }
479
+ td {
480
+ &[main-type] {
481
+ width: 50px;
482
+ text-align: center;
483
+ word-break: keep-all;
484
+ }
485
+
486
+ &[attachment] {
487
+ text-align: center;
488
+ cursor: pointer;
489
+
490
+ * {
491
+ vertical-align: middle;
492
+ }
493
+ }
494
+ &[comment] {
495
+ cursor: pointer;
496
+ text-align: center;
497
+
498
+ * {
499
+ vertical-align: middle;
500
+ }
501
+ }
502
+ &[disabled] * {
503
+ opacity: 0.6;
504
+ }
505
+ }
506
+ }
507
+
508
+ table[tail] {
509
+ border: 2px solid var(--md-sys-color-on-primary-container);
510
+ border-top: none;
511
+ margin-top: -1px;
512
+
513
+ td {
514
+ width: 25%;
515
+ border-left: none;
516
+ text-align: center;
517
+ position: relative;
518
+ background-color: var(--md-sys-color-on-primary);
519
+ font-size: 14px;
520
+ }
521
+ th {
522
+ width: 25%;
523
+ border-right: none;
524
+ }
525
+
526
+ span[sign-text] {
527
+ position: absolute;
528
+ top: 50%;
529
+ left: 50%;
530
+ transform: translate(-50%, -50%);
531
+ pointer-events: none;
532
+ }
533
+ ox-input-signature {
534
+ margin: var(--spacing-medium, 8px);
535
+
536
+ &[disabled] {
537
+ background: #eee;
538
+ }
539
+ }
540
+ }
541
+
542
+ div[footer] {
543
+ display: flex;
544
+ flex-direction: column;
545
+ gap: var(--spacing-tiny, 2px);
546
+ font-size: 12px;
547
+ margin-top: var(--spacing-medium, 8px);
548
+ color: #586878;
549
+ text-indent: -9px;
550
+ padding-left: var(--spacing-medium, 8px);
551
+ }
552
+
553
+ .stt-float-btns {
554
+ position: absolute;
555
+ top: 0;
556
+ right: 0;
557
+ display: flex;
558
+ gap: 8px;
559
+ z-index: 10;
560
+ }
561
+ .stt-float-btns button {
562
+ background: #fff;
563
+ border: 1px solid #ccc;
564
+ border-radius: 50%;
565
+ width: 38px;
566
+ height: 38px;
567
+ font-size: 18px;
568
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
569
+ cursor: pointer;
570
+ transition: background 0.2s;
571
+ outline: none;
572
+ }
573
+ .stt-float-btns button:hover {
574
+ background: #f2f2f2;
575
+ }
576
+ div[title-row] {
577
+ position: relative;
578
+ display: flex;
579
+ align-items: center;
580
+ justify-content: center;
581
+ margin-bottom: 8px;
582
+ }
583
+ div[name] {
584
+ color: #586878;
585
+ font-size: 24px;
586
+ font-weight: bold;
587
+ flex: 1;
588
+ text-align: center;
589
+ }
590
+
591
+ @keyframes pulse {
592
+ 0% {
593
+ filter: drop-shadow(0 0 0 #d32f2f);
594
+ }
595
+ 70% {
596
+ filter: drop-shadow(0 0 8px #d32f2f);
597
+ }
598
+ 100% {
599
+ filter: drop-shadow(0 0 0 #d32f2f);
600
+ }
601
+ }
602
+ .stt-fab[active] md-icon {
603
+ color: #d32f2f;
604
+ animation: pulse 1s infinite;
605
+ }
606
+ `
607
+ ];
608
+ __decorate([
609
+ property({ type: String }),
610
+ __metadata("design:type", String)
611
+ ], ScheduleChecklistView.prototype, "mode", void 0);
612
+ __decorate([
613
+ property({ type: Object }),
614
+ __metadata("design:type", Object)
615
+ ], ScheduleChecklistView.prototype, "checklist", void 0);
616
+ __decorate([
617
+ property({ type: Object }),
618
+ __metadata("design:type", Object)
619
+ ], ScheduleChecklistView.prototype, "buildingComplex", void 0);
620
+ __decorate([
621
+ property({ type: String }),
622
+ __metadata("design:type", String)
623
+ ], ScheduleChecklistView.prototype, "status", void 0);
624
+ ScheduleChecklistView = __decorate([
625
+ customElement('schedule-checklist-view')
626
+ ], ScheduleChecklistView);
627
+ //# sourceMappingURL=schedule-checklist-view.js.map