solara 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/solara +18 -0
- data/solara/lib/.DS_Store +0 -0
- data/solara/lib/core/.DS_Store +0 -0
- data/solara/lib/core/aliases/alias_generator.rb +128 -0
- data/solara/lib/core/aliases/alias_generator_manager.rb +28 -0
- data/solara/lib/core/aliases/solara_terminal_setup.rb +103 -0
- data/solara/lib/core/brands/brand_onboarder.rb +46 -0
- data/solara/lib/core/brands/brand_switcher.rb +204 -0
- data/solara/lib/core/brands/brands_manager.rb +154 -0
- data/solara/lib/core/dashboard/.DS_Store +0 -0
- data/solara/lib/core/dashboard/brand/.DS_Store +0 -0
- data/solara/lib/core/dashboard/brand/BrandDetail.js +11 -0
- data/solara/lib/core/dashboard/brand/BrandDetailController.js +361 -0
- data/solara/lib/core/dashboard/brand/BrandDetailModel.js +155 -0
- data/solara/lib/core/dashboard/brand/BrandDetailView.js +245 -0
- data/solara/lib/core/dashboard/brand/brand.html +477 -0
- data/solara/lib/core/dashboard/brand/source/BrandLocalSource.js +123 -0
- data/solara/lib/core/dashboard/brand/source/BrandRemoteSource.js +260 -0
- data/solara/lib/core/dashboard/brands/Brands.js +10 -0
- data/solara/lib/core/dashboard/brands/BrandsController.js +155 -0
- data/solara/lib/core/dashboard/brands/BrandsModel.js +136 -0
- data/solara/lib/core/dashboard/brands/BrandsView.js +136 -0
- data/solara/lib/core/dashboard/brands/brands.html +345 -0
- data/solara/lib/core/dashboard/component/AddFieldSheet.js +212 -0
- data/solara/lib/core/dashboard/component/AliasesBottomSheet.js +128 -0
- data/solara/lib/core/dashboard/component/BrandOptionsBottomSheet.js +130 -0
- data/solara/lib/core/dashboard/component/ConfirmationDialog.js +103 -0
- data/solara/lib/core/dashboard/component/MessageBottomSheet.js +80 -0
- data/solara/lib/core/dashboard/component/OnboardBrandBottomSheet.js +214 -0
- data/solara/lib/core/dashboard/dashboard_manager.rb +19 -0
- data/solara/lib/core/dashboard/dashboard_server.rb +132 -0
- data/solara/lib/core/dashboard/handler/base_handler.rb +25 -0
- data/solara/lib/core/dashboard/handler/brand_alisases_handler.rb +33 -0
- data/solara/lib/core/dashboard/handler/brand_configurations_handler.rb +18 -0
- data/solara/lib/core/dashboard/handler/brand_configurations_manager.rb +73 -0
- data/solara/lib/core/dashboard/handler/brand_icon_handler.rb +20 -0
- data/solara/lib/core/dashboard/handler/brand_section_handler.rb +20 -0
- data/solara/lib/core/dashboard/handler/brands_handler.rb +14 -0
- data/solara/lib/core/dashboard/handler/current_brand_handler.rb +18 -0
- data/solara/lib/core/dashboard/handler/doctor_handler.rb +39 -0
- data/solara/lib/core/dashboard/handler/edit_section_handler.rb +55 -0
- data/solara/lib/core/dashboard/handler/offboard_brand_handler.rb +34 -0
- data/solara/lib/core/dashboard/handler/onboard_brand_handler.rb +53 -0
- data/solara/lib/core/dashboard/handler/redirect_handler.rb +12 -0
- data/solara/lib/core/dashboard/handler/switch_handler.rb +25 -0
- data/solara/lib/core/dashboard/index.html +36 -0
- data/solara/lib/core/dashboard/local.html +41 -0
- data/solara/lib/core/dashboard/res/favicon/android-chrome-192x192.png +0 -0
- data/solara/lib/core/dashboard/res/favicon/android-chrome-512x512.png +0 -0
- data/solara/lib/core/dashboard/res/favicon/apple-touch-icon.png +0 -0
- data/solara/lib/core/dashboard/res/favicon/favicon-16x16.png +0 -0
- data/solara/lib/core/dashboard/res/favicon/favicon-32x32.png +0 -0
- data/solara/lib/core/dashboard/res/favicon/favicon.ico +0 -0
- data/solara/lib/core/dashboard/res/favicon/site.webmanifest +1 -0
- data/solara/lib/core/dashboard/solara.png +0 -0
- data/solara/lib/core/doctor/brand_doctor.rb +94 -0
- data/solara/lib/core/doctor/doctor_manager.rb +35 -0
- data/solara/lib/core/doctor/project_doctor.rb +8 -0
- data/solara/lib/core/doctor/schema/brand_configurations.json +60 -0
- data/solara/lib/core/doctor/schema/platform/android/android_config.json +23 -0
- data/solara/lib/core/doctor/schema/platform/android/android_signing.json +23 -0
- data/solara/lib/core/doctor/schema/platform/ios/ios_config.json +27 -0
- data/solara/lib/core/doctor/schema/platform/ios/ios_signing.json +27 -0
- data/solara/lib/core/doctor/schema/platform/shared/theme.json +48 -0
- data/solara/lib/core/doctor/validator/brand_settings_validator.rb +55 -0
- data/solara/lib/core/doctor/validator/brand_settings_validator_manager.rb +82 -0
- data/solara/lib/core/doctor/validator/directory_structure_validator.rb +38 -0
- data/solara/lib/core/doctor/validator/file_structure_validator.rb +37 -0
- data/solara/lib/core/doctor/validator/json_file_validator.rb +21 -0
- data/solara/lib/core/doctor/validator/json_schema_validator.rb +32 -0
- data/solara/lib/core/doctor/validator/project_filesystem_validator.rb +70 -0
- data/solara/lib/core/doctor/validator/template/android_template_validation_config.yml +51 -0
- data/solara/lib/core/doctor/validator/template/flutter_template_validation_config.yml +53 -0
- data/solara/lib/core/doctor/validator/template/ios_template_validation_config.yml +51 -0
- data/solara/lib/core/doctor/validator/template/template_validator.rb +108 -0
- data/solara/lib/core/doctor/validator/validation_strategy.rb +7 -0
- data/solara/lib/core/scripts/brand_config_generator.rb +245 -0
- data/solara/lib/core/scripts/brand_config_manager.rb +90 -0
- data/solara/lib/core/scripts/brand_exporter.rb +38 -0
- data/solara/lib/core/scripts/brand_importer.rb +84 -0
- data/solara/lib/core/scripts/brand_offboarder.rb +19 -0
- data/solara/lib/core/scripts/brand_resources_manager.rb +77 -0
- data/solara/lib/core/scripts/directory_creator.rb +22 -0
- data/solara/lib/core/scripts/file_manager.rb +90 -0
- data/solara/lib/core/scripts/file_path.rb +327 -0
- data/solara/lib/core/scripts/folder_copier.rb +41 -0
- data/solara/lib/core/scripts/gitignore_manager.rb +54 -0
- data/solara/lib/core/scripts/interactive_file_system_validator.rb +110 -0
- data/solara/lib/core/scripts/platform/android/android_manifest_switcher.rb +24 -0
- data/solara/lib/core/scripts/platform/android/android_strings_switcher.rb +39 -0
- data/solara/lib/core/scripts/platform/android/gradle_switcher.rb +233 -0
- data/solara/lib/core/scripts/platform/android/properties_generator.rb +31 -0
- data/solara/lib/core/scripts/platform/ios/ios_file_path_manager.rb +109 -0
- data/solara/lib/core/scripts/platform/ios/ios_plist_manager.rb +42 -0
- data/solara/lib/core/scripts/platform/ios/xcconfig_generator.rb +44 -0
- data/solara/lib/core/scripts/platform/ios/xcode_asset_manager.rb +56 -0
- data/solara/lib/core/scripts/platform/ios/xcode_project_manager.rb +82 -0
- data/solara/lib/core/scripts/platform/ios/xcode_project_switcher.rb +130 -0
- data/solara/lib/core/scripts/project_settings_manager.rb +39 -0
- data/solara/lib/core/scripts/solara_logger.rb +103 -0
- data/solara/lib/core/scripts/solara_settings_manager.rb +73 -0
- data/solara/lib/core/scripts/solara_status_manager.rb +55 -0
- data/solara/lib/core/scripts/solara_version_manager.rb +42 -0
- data/solara/lib/core/scripts/strings_xml_manager.rb +22 -0
- data/solara/lib/core/scripts/terminal_input_manager.rb +22 -0
- data/solara/lib/core/scripts/theme_generator.rb +250 -0
- data/solara/lib/core/scripts/yaml_manager.rb +72 -0
- data/solara/lib/core/solara_configurator.rb +15 -0
- data/solara/lib/core/template/brands/android/android_config.json +8 -0
- data/solara/lib/core/template/brands/android/android_signing.json +6 -0
- data/solara/lib/core/template/brands/android/res/.DS_Store +0 -0
- data/solara/lib/core/template/brands/android/res/mipmap-hdpi/ic_launcher.png +0 -0
- data/solara/lib/core/template/brands/android/res/mipmap-hdpi/ic_launcher_round.png +0 -0
- data/solara/lib/core/template/brands/android/res/mipmap-mdpi/ic_launcher.png +0 -0
- data/solara/lib/core/template/brands/android/res/mipmap-mdpi/ic_launcher_round.png +0 -0
- data/solara/lib/core/template/brands/android/res/mipmap-xhdpi/ic_launcher.png +0 -0
- data/solara/lib/core/template/brands/android/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- data/solara/lib/core/template/brands/android/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- data/solara/lib/core/template/brands/android/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- data/solara/lib/core/template/brands/android/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- data/solara/lib/core/template/brands/android/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- data/solara/lib/core/template/brands/brands.json +4 -0
- data/solara/lib/core/template/brands/ios/assets/.DS_Store +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/100.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/102.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/1024.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/114.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/120.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/128.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/144.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/152.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/16.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/167.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/172.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/180.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/196.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/20.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/216.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/256.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/29.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/32.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/40.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/48.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/50.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/512.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/55.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/57.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/58.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/60.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/64.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/66.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/72.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/76.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/80.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/87.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/88.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/92.png +0 -0
- data/solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/Contents.json +1 -0
- data/solara/lib/core/template/brands/ios/ios_config.json +7 -0
- data/solara/lib/core/template/brands/ios/ios_signing.json +7 -0
- data/solara/lib/core/template/brands/shared/.DS_Store +0 -0
- data/solara/lib/core/template/brands/shared/brand_config.json +2 -0
- data/solara/lib/core/template/brands/shared/theme.json +46 -0
- data/solara/lib/core/template/config/android_template_config.json +57 -0
- data/solara/lib/core/template/config/flutter_template_config.json +62 -0
- data/solara/lib/core/template/config/ios_template_config.json +57 -0
- data/solara/lib/core/template/project_template_generator.rb +63 -0
- data/solara/lib/platform_detector.rb +84 -0
- data/solara/lib/solara/cli.rb +5 -0
- data/solara/lib/solara/version.rb +3 -0
- data/solara/lib/solara.rb +238 -0
- data/solara/lib/solara_initializer.rb +44 -0
- data/solara/lib/solara_manager.rb +73 -0
- metadata +346 -0
@@ -0,0 +1,245 @@
|
|
1
|
+
import {DataSource} from './BrandDetailModel.js';
|
2
|
+
import '../component/OnboardBrandBottomSheet.js';
|
3
|
+
import '../component/AddFieldSheet.js';
|
4
|
+
import '../component/ConfirmationDialog.js';
|
5
|
+
import '../component/MessageBottomSheet.js';
|
6
|
+
|
7
|
+
class BrandDetailView {
|
8
|
+
constructor(model) {
|
9
|
+
this.model = model;
|
10
|
+
this.brandDetailsContainer = document.getElementById('brand-details-container');
|
11
|
+
this.addBrandContainer = document.getElementById('add-brand-container');
|
12
|
+
|
13
|
+
this.sectionsContainer = document.getElementById('sections');
|
14
|
+
this.addFieldSheet = document.getElementById('addFieldSheet');
|
15
|
+
this.confirmationDialog = document.getElementById('confirmationDialog');
|
16
|
+
this.messageBottomSheet = document.getElementById('messageBottomSheet');
|
17
|
+
|
18
|
+
this.uploadBrandBtn = document.getElementById('uploadBrandBtn');
|
19
|
+
this.uploadJsonBtn = document.getElementById('uploadJsonBtn');
|
20
|
+
this.addNewBrandBtn = document.getElementById('newBrandBtn');
|
21
|
+
this.exportBrandBtn = document.getElementById('exportBrandBtn');
|
22
|
+
this.allBrandsButton = document.getElementById('allBrandsButton');
|
23
|
+
|
24
|
+
this.onboardSheet = document.getElementById('onboardBottomSheet');
|
25
|
+
|
26
|
+
this.initializeApp();
|
27
|
+
}
|
28
|
+
|
29
|
+
async initializeApp() {
|
30
|
+
switch (this.model.source) {
|
31
|
+
case DataSource.LOCAL:
|
32
|
+
return await this.setupLocal();
|
33
|
+
case DataSource.REMOTE:
|
34
|
+
return await this.setupRemote();
|
35
|
+
default:
|
36
|
+
throw new Error('Unknown data source');
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
async setupLocal() {
|
41
|
+
this.allBrandsButton.style.display = 'block'
|
42
|
+
this.toggleAddBrandContainer(false);
|
43
|
+
}
|
44
|
+
|
45
|
+
async setupRemote() {
|
46
|
+
this.allBrandsButton.style.display = 'none'
|
47
|
+
this.toggleAddBrandContainer(true);
|
48
|
+
}
|
49
|
+
|
50
|
+
toggleAddBrandContainer(show) {
|
51
|
+
this.addBrandContainer.style.display = show ? 'block' : 'none';
|
52
|
+
this.brandDetailsContainer.style.display = show ? 'none' : 'block';
|
53
|
+
}
|
54
|
+
|
55
|
+
updateAppNameTitle(brandName) {
|
56
|
+
const brandNametitle = document.getElementById('brandNametitle');
|
57
|
+
if (brandNametitle) {
|
58
|
+
brandNametitle.textContent = brandName;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
createSection(key, name, inputType) {
|
63
|
+
const section = document.createElement('div');
|
64
|
+
section.className = 'section';
|
65
|
+
|
66
|
+
section.dataset.key = key
|
67
|
+
section.dataset.name = name
|
68
|
+
section.dataset.inputType = inputType
|
69
|
+
|
70
|
+
const titleContainer = document.createElement('div');
|
71
|
+
titleContainer.className = 'section-title-container';
|
72
|
+
|
73
|
+
const title = document.createElement('h2');
|
74
|
+
title.textContent = name;
|
75
|
+
titleContainer.appendChild(title);
|
76
|
+
|
77
|
+
const subtitleElement = document.createElement('p');
|
78
|
+
subtitleElement.className = 'section-subtitle';
|
79
|
+
subtitleElement.textContent = `${key}.json`;
|
80
|
+
titleContainer.appendChild(subtitleElement);
|
81
|
+
|
82
|
+
section.appendChild(titleContainer);
|
83
|
+
|
84
|
+
return section;
|
85
|
+
}
|
86
|
+
|
87
|
+
populateSection(sectionItem, sectionElement, content, inputType) {
|
88
|
+
for (const [key, value] of Object.entries(content)) {
|
89
|
+
if (Array.isArray(value)) {
|
90
|
+
sectionElement.appendChild(this.createInputField(sectionItem, key, value, 'array'));
|
91
|
+
} else if (typeof value === 'object' && value !== null) {
|
92
|
+
for (const [subKey, subValue] of Object.entries(value)) {
|
93
|
+
sectionElement.appendChild(this.createInputField(sectionItem, `${key}.${subKey}`, subValue, inputType));
|
94
|
+
}
|
95
|
+
} else {
|
96
|
+
sectionElement.appendChild(this.createInputField(sectionItem, key, value, inputType));
|
97
|
+
}
|
98
|
+
}
|
99
|
+
}
|
100
|
+
|
101
|
+
createInputField(sectionItem, key, value, inputType) {
|
102
|
+
const container = document.createElement('div');
|
103
|
+
container.className = 'input-group';
|
104
|
+
const label = document.createElement('label');
|
105
|
+
label.textContent = key;
|
106
|
+
container.appendChild(label);
|
107
|
+
|
108
|
+
const inputWrapper = document.createElement('div');
|
109
|
+
inputWrapper.className = 'input-wrapper';
|
110
|
+
|
111
|
+
if (inputType === 'array') {
|
112
|
+
const arrayInputContainer = document.createElement('div');
|
113
|
+
arrayInputContainer.className = 'array-input-container';
|
114
|
+
|
115
|
+
const input = document.createElement('input');
|
116
|
+
input.type = 'text';
|
117
|
+
input.id = key;
|
118
|
+
input.className = 'array-input';
|
119
|
+
input.placeholder = 'Enter array value';
|
120
|
+
|
121
|
+
const addButton = document.createElement('button');
|
122
|
+
addButton.className = 'add-array-item';
|
123
|
+
addButton.textContent = '+';
|
124
|
+
|
125
|
+
arrayInputContainer.appendChild(input);
|
126
|
+
arrayInputContainer.appendChild(addButton);
|
127
|
+
|
128
|
+
const arrayItemsContainer = document.createElement('div');
|
129
|
+
arrayItemsContainer.className = 'array-items-container';
|
130
|
+
|
131
|
+
inputWrapper.appendChild(arrayInputContainer);
|
132
|
+
inputWrapper.appendChild(arrayItemsContainer);
|
133
|
+
|
134
|
+
if (Array.isArray(value)) {
|
135
|
+
value.forEach(item => {
|
136
|
+
this.addArrayItem(sectionItem, arrayItemsContainer, item);
|
137
|
+
});
|
138
|
+
}
|
139
|
+
|
140
|
+
addButton.addEventListener('click', () => {
|
141
|
+
this.addArrayItem(sectionItem, arrayItemsContainer, input.value.trim());
|
142
|
+
input.value = '';
|
143
|
+
});
|
144
|
+
|
145
|
+
} else {
|
146
|
+
const input = document.createElement('input');
|
147
|
+
input.type = inputType;
|
148
|
+
input.id = key;
|
149
|
+
|
150
|
+
if (inputType === 'color') {
|
151
|
+
input.value = value.startsWith('#') ? value : `#${value.substring(4)}`;
|
152
|
+
} else {
|
153
|
+
input.value = value;
|
154
|
+
}
|
155
|
+
|
156
|
+
inputWrapper.appendChild(input);
|
157
|
+
}
|
158
|
+
|
159
|
+
const deleteIcon = document.createElement('span');
|
160
|
+
deleteIcon.className = 'delete-icon';
|
161
|
+
deleteIcon.textContent = '×';
|
162
|
+
deleteIcon.onclick = () => this.onDeleteField(sectionItem, container);
|
163
|
+
inputWrapper.appendChild(deleteIcon);
|
164
|
+
|
165
|
+
container.appendChild(inputWrapper);
|
166
|
+
|
167
|
+
container.addEventListener('change', () => this.onSectionChanged(sectionItem, container.closest('.section')));
|
168
|
+
|
169
|
+
return container;
|
170
|
+
}
|
171
|
+
|
172
|
+
addArrayItem(sectionItem, container, value) {
|
173
|
+
const itemContainer = document.createElement('div');
|
174
|
+
itemContainer.classList.add('array-item');
|
175
|
+
|
176
|
+
const itemInput = document.createElement('input');
|
177
|
+
itemInput.type = 'text';
|
178
|
+
itemInput.classList.add('array-item-input');
|
179
|
+
itemInput.value = value;
|
180
|
+
|
181
|
+
const deleteButton = document.createElement('button');
|
182
|
+
deleteButton.classList.add('delete-array-item');
|
183
|
+
deleteButton.textContent = '×';
|
184
|
+
deleteButton.addEventListener('click', () => {
|
185
|
+
itemContainer.remove();
|
186
|
+
this.onSectionChanged(sectionItem, container.closest('.section'));
|
187
|
+
});
|
188
|
+
|
189
|
+
itemContainer.appendChild(itemInput);
|
190
|
+
itemContainer.appendChild(deleteButton);
|
191
|
+
container.appendChild(itemContainer);
|
192
|
+
|
193
|
+
this.onSectionChanged(sectionItem, container.closest('.section'));
|
194
|
+
}
|
195
|
+
|
196
|
+
showAddFieldForm(sectionItem, sectionElement, inputType) {
|
197
|
+
this.addFieldSheet.show(inputType, (name, value) => {
|
198
|
+
const newField = this.createInputField(sectionItem, name, value, inputType);
|
199
|
+
sectionElement.insertBefore(newField, sectionElement.lastElementChild);
|
200
|
+
this.onSectionChanged(sectionItem, sectionElement);
|
201
|
+
})
|
202
|
+
}
|
203
|
+
|
204
|
+
showConfirmationDialog(message, onConfirm) {
|
205
|
+
this.confirmationDialog.showDialog(message, onConfirm);
|
206
|
+
}
|
207
|
+
|
208
|
+
showApplyChangesButton() {
|
209
|
+
const applyChangesButton = document.getElementById('applyChangesButton');
|
210
|
+
applyChangesButton.style.display = 'block';
|
211
|
+
}
|
212
|
+
|
213
|
+
showSwitchButton() {
|
214
|
+
const switchButton = document.getElementById('switchButton');
|
215
|
+
switchButton.style.display = 'block';
|
216
|
+
}
|
217
|
+
|
218
|
+
updateErrorCount(count) {
|
219
|
+
const countElement = document.querySelector('.count');
|
220
|
+
countElement.textContent = count;
|
221
|
+
}
|
222
|
+
|
223
|
+
showMessage(message) {
|
224
|
+
this.messageBottomSheet.showMessage(message);
|
225
|
+
}
|
226
|
+
|
227
|
+
setOnSectionChangedHandler(handler) {
|
228
|
+
this.onSectionChanged = handler;
|
229
|
+
}
|
230
|
+
|
231
|
+
setOnDeleteFieldHandler(handler) {
|
232
|
+
this.onDeleteField = handler;
|
233
|
+
}
|
234
|
+
|
235
|
+
showOnboardBrandForm(onSubmit) {
|
236
|
+
this.onboardSheet.show('Brand Details', 'Add Brand', onSubmit);
|
237
|
+
}
|
238
|
+
|
239
|
+
async hideOnboardBrandForm() {
|
240
|
+
this.onboardSheet.hide();
|
241
|
+
}
|
242
|
+
|
243
|
+
}
|
244
|
+
|
245
|
+
export default BrandDetailView;
|