@flexem/fc-designer 3.0.1-alpha.98 → 3.0.1-alpha.99

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.
@@ -1,106 +1,106 @@
1
- <div bsModal #settingModal="bs-modal" id="textLibrarySettingModal" class="modal fade textLibrarySettingModal" tabindex="-1" role="dialog"
2
- aria-labelledby="settingModal" aria-hidden="true" [config]='{ backdrop: "static" }'>
3
- <div class="modal-dialog modal-lg">
4
- <div class="modal-content element-setting-base">
5
- <div class="fe-modal-container">
6
- <form class="configure" *ngIf="active" #textLibraryForm="ngForm" novalidate (ngSubmit)="save()">
7
- <div class="fe-modal-header">
8
- <div class="fe-modal-header-title">
9
- {{lc("ConfigurationText")}}
10
- </div>
11
- <div class="fe-modal-header-close" aria-label="Close" (click)="close()">×</div>
12
- </div>
13
- <!-- 文本库下拉选择器 -->
14
- <div *ngIf="showTextLibraryDropdown" class="text-library-dropdown-container" style="margin: 15px 0 10px 20px;">
15
- <span class="text-library-label">{{lc("TextList")}}:</span>
16
- <select class="text-library-select" [(ngModel)]="currentTextLibrary.id" name="SelectedTextLibraryItem" (change)="onTextLibraryChange()">
17
- <option *ngFor="let item of textLibraryItems" [value]="item.key">{{item.value}}</option>
18
- </select>
19
- </div>
20
- <div class="fe-modal-middle valueShow">
21
- <div class="fe-modal-content text-library-content">
22
- <div class="form-inline mb-3">
23
- <div class="operation-input-search text-library-input">
24
- <input placeholder='{{l("PleaseInput")}}' type="text" name="filterText" [(ngModel)]="searchInput" (keyup.enter)="onSearch()">
25
- <i class="fcloud-search text-library-search" (click)="onSearch()"></i>
26
- </div>
27
- <button type="button" class="fe-btn fe-btn-default fe-btn-save mr-2" (click)="addTextEntry()" [disabled]="adding">
28
- {{l("Add")}}
29
- </button>
30
- <button type="button" [disabled]="hasUnsavedChanges" class="fe-btn fe-btn-default fe-btn-save mr-2" (click)="importTextEntries()">
31
- {{lc("Import")}}
32
- </button>
33
- <button type="button" [disabled]="hasUnsavedChanges || !textEntries || textEntries.length === 0" class="fe-btn fe-btn-default fe-btn-save mr-2" (click)="exportTextEntries()">
34
- {{l("Export")}}
35
- </button>
36
- <button type="button" [disabled]="hasUnsavedChanges" class="fe-btn fe-btn-default fe-btn-save mr-2" (click)="addLanguage()">
37
- {{lc("AddLanguage")}}
38
- </button>
39
- <button type="button" class="fe-btn fe-btn-default fe-btn-save mr-2"
40
- (click)="saveChanges()"
41
- [disabled]="saving || !hasUnsavedChanges">
42
- {{lc("SaveChanges")}}
43
- </button>
44
- <button type="button" class="fe-btn fe-btn-default fe-btn-save mr-2"
45
- (click)="cancelChanges()"
46
- [disabled]="saving || !hasUnsavedChanges">
47
- {{lc("CancelChanges")}}
48
- </button>
49
- <button type="button" class="fe-btn fe-btn-default btn-batch-delete" [disabled]="!selectedEntries.length" (click)="deleteTextEntries()">
50
- {{l("Delete")}}
51
- </button>
52
- </div>
53
- <!-- 表格容器 - 允许横向滚动,表头固定 -->
54
- <div class="table-responsive" style="overflow-x: auto; white-space: nowrap;">
55
- <table class="table table-bordered" style="margin-bottom: 0; table-layout: fixed;">
56
- <!-- 表头 - 通过CSS固定 -->
57
- <thead>
58
- <tr>
59
- <th style="width: 50px; position: sticky; top: 0; background-color: #f5f5f5; z-index: 10;"><input type="checkbox" [(ngModel)]="selectAll" (change)="selectAllEntries($event)" name="selectAll"></th>
60
- <th style="width: 100px; position: sticky; top: 0; background-color: #f5f5f5; z-index: 10;">{{l("Value")}}</th>
61
- <th *ngFor="let language of languages" style="width: 250px; position: sticky; top: 0; background-color: #f5f5f5; z-index: 10;">{{language.displayName}}</th>
62
- </tr>
63
- </thead>
64
- <!-- 表体 - 可纵向滚动 -->
65
- <tbody>
66
- <!-- 当没有数据时显示暂无数据 -->
67
- <tr *ngIf="filteredTextEntries.length === 0">
68
- <td [attr.colspan]="languages.length + 2" style="text-align: center; height: 100px;">
69
- {{l('NoData')}}
70
- </td>
71
- </tr>
72
- <!-- 有数据时显示数据行 -->
73
- <ng-container *ngIf="filteredTextEntries.length > 0">
74
- <tr *ngFor="let entry of filteredTextEntries; let i = index">
75
- <td style="width: 50px;"><input type="checkbox" [checked]="selectedEntryKeys.has(entry.key)" (change)="onCheckboxChange(entry.key, $event)" name="isSelected{{i}}"></td>
76
- <td style="width: 100px;"><input type="number" class="form-control" min="0" step="1" [ngModel]="entry.value" (input)="handleValueInput(entry, $event.target.value)" (blur)="handleValueBlur(entry)" name="value{{i}}"></td>
77
- <td *ngFor="let language of languages" style="width: 250px;">
78
- <input type="text" class="form-control" [(ngModel)]="entry.cultures[language.name]" (focus)="handleLanguageFocus(entry, language.name)" (blur)="handleLanguageBlur(entry, language.name)" name="{{language.name}}{{i}}">
79
- </td>
80
- </tr>
81
- </ng-container>
82
- </tbody>
83
- </table>
84
- </div>
85
- </div>
86
- </div>
87
- <div class="fe-modal-footer">
88
- <div class="button-group">
89
- <button type="button" class="fe-btn fe-btn-default fe-btn-save" [disabled]="saving || hasUnsavedChanges || (needSelectTextItem && selectedEntryKeys.size !== 1)" (click)="save()" [buttonBusy]="saving"
90
- [busyText]="l('SavingWithThreeDot')">
91
- {{needSelectTextItem ? lc("SelectAndConfirm") : lc("TextConfirm")}}
92
- </button>
93
- <button [disabled]="saving" type="button" class="fe-btn fe-btn-default fe-btn-cancel-one" (click)="close()">
94
- {{l("Cancel")}}
95
- </button>
96
- </div>
97
- </div>
98
- </form>
99
- </div>
100
- </div>
101
- </div>
102
- </div>
103
-
104
- <language-setting-modal #languageSettingModal></language-setting-modal>
105
- <import-text-library-modal #importTextLibraryModal></import-text-library-modal>
1
+ <div bsModal #settingModal="bs-modal" id="textLibrarySettingModal" class="modal fade textLibrarySettingModal" tabindex="-1" role="dialog"
2
+ aria-labelledby="settingModal" aria-hidden="true" [config]='{ backdrop: "static" }'>
3
+ <div class="modal-dialog modal-lg">
4
+ <div class="modal-content element-setting-base">
5
+ <div class="fe-modal-container">
6
+ <form class="configure" *ngIf="active" #textLibraryForm="ngForm" novalidate (ngSubmit)="save()">
7
+ <div class="fe-modal-header">
8
+ <div class="fe-modal-header-title">
9
+ {{lc("ConfigurationText")}}
10
+ </div>
11
+ <div class="fe-modal-header-close" aria-label="Close" (click)="close()">×</div>
12
+ </div>
13
+ <!-- 文本库下拉选择器 -->
14
+ <div *ngIf="showTextLibraryDropdown" class="text-library-dropdown-container" style="margin: 15px 0 10px 20px;">
15
+ <span class="text-library-label">{{lc("TextList")}}:</span>
16
+ <select class="text-library-select" [(ngModel)]="currentTextLibrary.id" name="SelectedTextLibraryItem" (change)="onTextLibraryChange()">
17
+ <option *ngFor="let item of textLibraryItems" [value]="item.key">{{item.value}}</option>
18
+ </select>
19
+ </div>
20
+ <div class="fe-modal-middle valueShow">
21
+ <div class="fe-modal-content text-library-content">
22
+ <div class="form-inline mb-3">
23
+ <div class="operation-input-search text-library-input">
24
+ <input placeholder='{{l("PleaseInput")}}' type="text" name="filterText" [(ngModel)]="searchInput" (keyup.enter)="onSearch()">
25
+ <i class="fcloud-search text-library-search" (click)="onSearch()"></i>
26
+ </div>
27
+ <button type="button" class="fe-btn fe-btn-default fe-btn-save mr-2" (click)="addTextEntry()" [disabled]="adding">
28
+ {{l("Add")}}
29
+ </button>
30
+ <button type="button" [disabled]="hasUnsavedChanges" class="fe-btn fe-btn-default fe-btn-save mr-2" (click)="importTextEntries()">
31
+ {{lc("Import")}}
32
+ </button>
33
+ <button type="button" [disabled]="hasUnsavedChanges || !textEntries || textEntries.length === 0" class="fe-btn fe-btn-default fe-btn-save mr-2" (click)="exportTextEntries()">
34
+ {{l("Export")}}
35
+ </button>
36
+ <button type="button" [disabled]="hasUnsavedChanges" class="fe-btn fe-btn-default fe-btn-save mr-2" (click)="addLanguage()">
37
+ {{lc("AddLanguage")}}
38
+ </button>
39
+ <button type="button" class="fe-btn fe-btn-default fe-btn-save mr-2"
40
+ (click)="saveChanges()"
41
+ [disabled]="saving || !hasUnsavedChanges">
42
+ {{lc("SaveChanges")}}
43
+ </button>
44
+ <button type="button" class="fe-btn fe-btn-default fe-btn-save mr-2"
45
+ (click)="cancelChanges()"
46
+ [disabled]="saving || !hasUnsavedChanges">
47
+ {{lc("CancelChanges")}}
48
+ </button>
49
+ <button type="button" class="fe-btn fe-btn-default btn-batch-delete" [disabled]="!selectedEntries.length" (click)="deleteTextEntries()">
50
+ {{l("Delete")}}
51
+ </button>
52
+ </div>
53
+ <!-- 表格容器 - 允许横向滚动,表头固定 -->
54
+ <div class="table-responsive" style="overflow-x: auto; white-space: nowrap;">
55
+ <table class="table table-bordered" style="margin-bottom: 0; table-layout: fixed;">
56
+ <!-- 表头 - 通过CSS固定 -->
57
+ <thead>
58
+ <tr>
59
+ <th style="width: 50px; position: sticky; top: 0; background-color: #f5f5f5; z-index: 10;"><input type="checkbox" [(ngModel)]="selectAll" (change)="selectAllEntries($event)" name="selectAll"></th>
60
+ <th style="width: 100px; position: sticky; top: 0; background-color: #f5f5f5; z-index: 10;">{{l("Value")}}</th>
61
+ <th *ngFor="let language of languages" style="width: 250px; position: sticky; top: 0; background-color: #f5f5f5; z-index: 10;">{{language.displayName}}</th>
62
+ </tr>
63
+ </thead>
64
+ <!-- 表体 - 可纵向滚动 -->
65
+ <tbody>
66
+ <!-- 当没有数据时显示暂无数据 -->
67
+ <tr *ngIf="filteredTextEntries.length === 0">
68
+ <td [attr.colspan]="languages.length + 2" style="text-align: center; height: 100px;">
69
+ {{l('NoData')}}
70
+ </td>
71
+ </tr>
72
+ <!-- 有数据时显示数据行 -->
73
+ <ng-container *ngIf="filteredTextEntries.length > 0">
74
+ <tr *ngFor="let entry of filteredTextEntries; let i = index">
75
+ <td style="width: 50px;"><input type="checkbox" [checked]="selectedEntryKeys.has(entry.key)" (change)="onCheckboxChange(entry.key, $event)" name="isSelected{{i}}"></td>
76
+ <td style="width: 100px;"><input type="number" class="form-control" min="0" step="1" [ngModel]="entry.value" (input)="handleValueInput(entry, $event.target.value)" (blur)="handleValueBlur(entry)" name="value{{i}}"></td>
77
+ <td *ngFor="let language of languages" style="width: 250px;">
78
+ <input type="text" class="form-control" [(ngModel)]="entry.cultures[language.name]" (focus)="handleLanguageFocus(entry, language.name)" (blur)="handleLanguageBlur(entry, language.name)" name="{{language.name}}{{i}}">
79
+ </td>
80
+ </tr>
81
+ </ng-container>
82
+ </tbody>
83
+ </table>
84
+ </div>
85
+ </div>
86
+ </div>
87
+ <div class="fe-modal-footer">
88
+ <div class="button-group">
89
+ <button type="button" class="fe-btn fe-btn-default fe-btn-save" [disabled]="saving || hasUnsavedChanges || (needSelectTextItem && selectedEntryKeys.size !== 1)" (click)="save()" [buttonBusy]="saving"
90
+ [busyText]="l('SavingWithThreeDot')">
91
+ {{needSelectTextItem ? lc("SelectAndConfirm") : lc("TextConfirm")}}
92
+ </button>
93
+ <button [disabled]="saving" type="button" class="fe-btn fe-btn-default fe-btn-cancel-one" (click)="close()">
94
+ {{l("Cancel")}}
95
+ </button>
96
+ </div>
97
+ </div>
98
+ </form>
99
+ </div>
100
+ </div>
101
+ </div>
102
+ </div>
103
+
104
+ <language-setting-modal #languageSettingModal></language-setting-modal>
105
+ <import-text-library-modal #importTextLibraryModal></import-text-library-modal>
106
106
  <confirm-dialog #confirmDialog (onConfirm)="onDeleteConfirm()"></confirm-dialog>