com.phloxui
Version:
PhloxUI Ng2+ Framework
1,022 lines (1,021 loc) • 108 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, Input, ViewChild } from '@angular/core';
import { AbstractDataEditorView } from './AbstractDataEditorView';
import { FormViewModel } from '../model/FormViewModel';
import { TabPane } from '../../component/TabPane.component';
import { TabModel } from '../model/TabModel';
import { DialogService } from '../../service/DialogService.service';
import { ArrayUtils } from '../../share/utils/ArrayUtils';
import { ParrotsEditorSettingFactory } from '../../service/ParrotsEditorSettingFactory.service';
import { Option } from '../../decorator/Option.decorator';
import { I18N } from '../../decorator/I18N.decorator';
import { DataUtils } from '../../share/utils/DataUtils';
const /** @type {?} */ TYPE_NAME = "phx-form-view";
export class FormView extends AbstractDataEditorView {
/**
* @param {?} dialogService
* @param {?} editorSettingFactory
* @param {?} elementRef
*/
constructor(dialogService, editorSettingFactory, elementRef) {
super(editorSettingFactory, elementRef);
this.tabsData = [];
this.originalTabsData = [];
this.dialogService = dialogService;
this.showMoreMenu = true;
}
/**
* @return {?}
*/
ngOnInit() {
super.ngOnInit();
if (this.editor !== null && (typeof this.editor !== 'undefined')) {
this.editor.addViewComponent(this);
let /** @type {?} */ objIdField = this.editor.getObjectIdField();
if (this.showEvent !== null && (typeof this.showEvent !== 'undefined')) {
this.showEvent.subscribe((event) => {
this.reloadAllTab();
});
}
let /** @type {?} */ createdEvent = this.editor.getDataCreateEvent();
if (createdEvent !== null && (typeof createdEvent !== 'undefined')) {
createdEvent.subscribe((event) => {
let /** @type {?} */ original = null;
let /** @type {?} */ data = null;
if (event.detail !== null && typeof event.detail !== 'undefined') {
if (event.detail.data !== null && typeof event.detail.data !== 'undefined') {
if (event.detail.data.data !== null && typeof event.detail.data.data !== 'undefined') {
data = event.detail.data.data;
}
if (event.detail.data.original !== null && typeof event.detail.data.original !== 'undefined') {
original = event.detail.data.original;
}
}
}
// got id ? update in tab with dataID
if (data !== null) {
// get all tabIndex
let /** @type {?} */ indexMap = {};
if (original !== null) {
for (let /** @type {?} */ i = 0; i < original.length; i++) {
let /** @type {?} */ oriItem = original[i];
let /** @type {?} */ item = null;
if (i < data.length) {
item = data[i];
}
if (item === null || typeof item === 'undefined') {
continue;
}
let /** @type {?} */ indexArray = this.getTabDataIndexesMatched(oriItem, false);
for (let /** @type {?} */ index of indexArray) {
if (index <= -1) {
continue;
}
let /** @type {?} */ keyString = index + "";
if (indexMap[keyString] !== null && typeof indexMap[keyString] !== 'undefined') {
indexMap[keyString].push(item);
}
else {
indexMap[keyString] = [item];
}
}
}
}
for (let /** @type {?} */ key in indexMap) {
let /** @type {?} */ curTab = parseInt(key);
let /** @type {?} */ objArray = indexMap[key];
if (curTab > -1) {
// update model title
let /** @type {?} */ tModels = this.tabPane.getTabModels();
let /** @type {?} */ firstData = null;
if (objArray.length > 0) {
firstData = objArray[0];
}
if (curTab < tModels.length) {
tModels[curTab].label = this.generateTabLabel(objArray);
}
// update data in tab
this.tabPane.setTabData(curTab, objArray);
this.tabPane.saveTabData(curTab);
let /** @type {?} */ tabDataObjs = null;
if (curTab < this.tabsData.length) {
this.tabsData[curTab].objects = [];
tabDataObjs = this.tabsData[curTab].objects;
}
let /** @type {?} */ originalObjs = null;
if (curTab < this.originalTabsData.length) {
this.originalTabsData[curTab] = [];
originalObjs = this.originalTabsData[curTab];
}
for (let /** @type {?} */ d of objArray) {
// add to tabBody
if (tabDataObjs !== null) {
let /** @type {?} */ cloneData = JSON.parse(JSON.stringify(d));
tabDataObjs.push(cloneData);
}
// add to original
if (originalObjs !== null) {
originalObjs.push(d);
}
}
// refresh
this.reloadTabIndex(curTab);
}
}
}
});
}
let /** @type {?} */ updateEvent = this.editor.getDataUpdateEvent();
if (updateEvent !== null && (typeof updateEvent !== 'undefined')) {
updateEvent.subscribe((event) => {
let /** @type {?} */ data = null;
if (event.detail !== null && typeof event.detail !== 'undefined') {
if (event.detail.data !== null && typeof event.detail.data !== 'undefined') {
data = event.detail.data.data;
}
}
if (data !== null) {
let /** @type {?} */ updateTabIndexes = this.getTabDataIndexesMatched(data, false);
for (let /** @type {?} */ updateTabIndex of updateTabIndexes) {
if (updateTabIndex > -1) {
// reload data & render by tab
this.reloadTabIndex(updateTabIndex);
}
}
}
});
}
// delete by id if exist close tab and more
let /** @type {?} */ deleteEvent = this.editor.getDataDeleteEvent();
if (deleteEvent !== null && (typeof deleteEvent !== 'undefined')) {
deleteEvent.subscribe((event) => {
let /** @type {?} */ data = null;
if (event.detail !== null && typeof event.detail !== 'undefined') {
if (event.detail.data !== null && typeof event.detail.data !== 'undefined') {
data = event.detail.data.data;
}
}
if (data !== null) {
for (let /** @type {?} */ d of data) {
let /** @type {?} */ dIndex = this.getIndexFromOriginalData(d);
if (dIndex > -1) {
// close tab
this.closeTabAtIndex(dIndex);
// remove from original
this.removeFromOriginalData(d);
if (dIndex < this.originalTabsData.length && this.originalTabsData[dIndex].length <= 0) {
// remove
this.originalTabsData.splice(dIndex, 1);
}
}
}
}
});
}
// revert
let /** @type {?} */ revertEvent = this.editor.getDataRevertEvent();
if (revertEvent !== null && (typeof revertEvent !== 'undefined')) {
revertEvent.subscribe((event) => {
let /** @type {?} */ data = null;
if (event.detail !== null && typeof event.detail !== 'undefined') {
if (event.detail.data !== null && typeof event.detail.data !== 'undefined') {
data = event.detail.data.data;
}
}
if (data !== null) {
let /** @type {?} */ updateTabIndexes = this.getTabDataIndexesMatched(data, false);
for (let /** @type {?} */ updateTabIndex of updateTabIndexes) {
if (updateTabIndex > -1) {
// reload data & render by tab
this.reloadTabIndex(updateTabIndex);
}
}
}
});
}
let /** @type {?} */ dataReloadEvent = this.editor.getDataReloadEvent();
if (dataReloadEvent !== null && (typeof dataReloadEvent !== 'undefined')) {
dataReloadEvent.subscribe((event) => {
//! do reload sthing
});
}
}
if (this.model !== null && this.model instanceof FormViewModel) {
this.tabComponentType = this.model.tabComponentType;
this.tabComponentModel = this.model.tabComponentModel;
}
}
/**
* @return {?}
*/
ngOnDestroy() {
if (this.editor !== null && (typeof this.editor !== 'undefined')) {
this.editor.removeViewComponent(this);
}
}
/**
* @param {?} objects
* @return {?}
*/
generateTabLabel(objects) {
if (this.tabLabelGenerator !== null && typeof this.tabLabelGenerator === 'function') {
try {
let /** @type {?} */ value = this.tabLabelGenerator(this, objects);
return value;
}
catch (/** @type {?} */ error) {
}
}
if (objects !== null && typeof objects !== 'undefined') {
if (objects.length == 1) {
let /** @type {?} */ objIdField = (this.editor === null ? "" : this.editor.getObjectIdField());
return DataUtils.getDataValue(objIdField, objects[0]);
}
else {
return "MULTIPLE DATA";
}
}
return "New tab";
}
/**
* @param {?} data
* @return {?}
*/
removeFromOriginalData(data) {
if (data !== null && typeof data !== 'undefined') {
let /** @type {?} */ tempDatas = [];
for (let /** @type {?} */ dataContainer of this.originalTabsData) {
let /** @type {?} */ tempContainer = [];
for (let /** @type {?} */ d of dataContainer) {
if (!this.editor.getDataComparator().equals(d, data)) {
tempContainer.push(d);
}
}
tempDatas.push(tempContainer);
}
this.originalTabsData = tempDatas;
}
}
/**
* @param {?} data
* @return {?}
*/
getIndexFromOriginalData(data) {
if (data === null || typeof data === 'undefined') {
return -1;
}
let /** @type {?} */ index = 0;
for (let /** @type {?} */ dataContainer of this.originalTabsData) {
if (dataContainer !== null && typeof dataContainer !== 'undefined') {
for (let /** @type {?} */ d of dataContainer) {
if (Array.isArray(data)) {
for (let /** @type {?} */ inner of data) {
if (this.editor.getDataComparator().equals(d, inner)) {
return index;
}
}
}
else {
if (this.editor.getDataComparator().equals(d, data)) {
return index;
}
}
}
}
index += 1;
}
return -1;
}
/**
* @param {?} index
* @return {?}
*/
isTabDirty(index) {
if (index === null || typeof index === 'undefined' || index < 0) {
return false;
}
return this.tabPane.isTabDirty(index);
}
/**
* @return {?}
*/
getAllDirtyData() {
let /** @type {?} */ result = [];
for (let /** @type {?} */ i = 0; i < this.tabsData.length; i++) {
if (this.isTabDirty(i)) {
let /** @type {?} */ tabDataArray = this.getTabData(i);
for (let /** @type {?} */ d of tabDataArray) {
result.push(d);
}
}
}
return result;
}
/**
* @param {?} dataObject
* @return {?}
*/
getWrapDataObject(dataObject) {
let /** @type {?} */ data = {
editor: this.editor,
objects: dataObject
};
return data;
}
/**
* @param {?} sourceArray
* @param {?} value
* @return {?}
*/
isMatchValue(sourceArray, value) {
if (sourceArray === null || typeof sourceArray === 'undefined') {
return false;
}
for (let /** @type {?} */ a of sourceArray) {
try {
return this.editor.getDataComparator().equals(a, value);
}
catch (/** @type {?} */ err) {
}
}
return false;
}
/**
* @param {?} sourceArray
* @param {?} toMatchArray
* @return {?}
*/
isMatchLessOneValue(sourceArray, toMatchArray) {
if (sourceArray === null || typeof sourceArray === 'undefined') {
return false;
}
if (toMatchArray === null || typeof toMatchArray === 'undefined') {
return false;
}
for (let /** @type {?} */ a of toMatchArray) {
if (this.isMatchValue(sourceArray, a)) {
return true;
}
}
return false;
}
/**
* @param {?} sourceArray
* @param {?} toMatchArray
* @return {?}
*/
isMatchAllValue(sourceArray, toMatchArray) {
if (sourceArray === null || typeof sourceArray === 'undefined') {
return false;
}
if (toMatchArray === null || typeof toMatchArray === 'undefined') {
return false;
}
if (sourceArray.length !== toMatchArray.length) {
return false;
}
for (let /** @type {?} */ a of toMatchArray) {
if (!this.isMatchValue(sourceArray, a)) {
return false;
}
}
return true;
}
/**
* @param {?} index
* @return {?}
*/
removeTabDataAtIndex(index) {
if (index < this.tabsData.length) {
this.tabsData.splice(index, 1);
}
if (index < this.originalTabsData.length) {
this.originalTabsData.splice(index, 1);
}
}
/**
* @param {?} data
* @return {?}
*/
getTabDataIndexes(data) {
return this.getTabDataIndexesMatched(data, true);
}
/**
* @param {?} objects
* @return {?}
*/
getDefaultDataArray(objects) {
let /** @type {?} */ result = [];
if (objects !== null && typeof objects !== 'undefined') {
let /** @type {?} */ langField = null;
let /** @type {?} */ langFieldName = null;
if (this.editor !== null && typeof this.editor !== 'undefined') {
langFieldName = this.editor.getLanguageField();
}
for (let /** @type {?} */ obj of objects) {
if (obj[langFieldName] === null || typeof obj[langFieldName] === 'undefined') {
result.push(obj);
}
}
}
return result;
}
/**
* @param {?} data
* @param {?} isMatchAll
* @return {?}
*/
getTabDataIndexesMatched(data, isMatchAll) {
let /** @type {?} */ result = [];
if (data !== null && typeof data !== 'undefined') {
let /** @type {?} */ index = 0;
for (let /** @type {?} */ wrapperData of this.tabsData) {
let /** @type {?} */ defObjArray = this.getDefaultDataArray(wrapperData.objects);
if (Array.isArray(data)) {
if (isMatchAll) {
if (this.isMatchAllValue(defObjArray, data)) {
result.push(index);
}
}
else {
if (this.isMatchLessOneValue(defObjArray, data)) {
result.push(index);
}
}
}
else {
if (isMatchAll) {
if (this.isMatchAllValue(defObjArray, [data])) {
result.push(index);
}
}
else {
if (this.isMatchLessOneValue(defObjArray, [data])) {
result.push(index);
}
}
}
index += 1;
}
}
return result;
}
/**
* @return {?}
*/
reloadAllData() {
// reload from editor
let /** @type {?} */ tabSize = this.tabsData.length;
for (let /** @type {?} */ i = 0; i < tabSize; i++) {
this.reloadDataAtIndex(i);
}
}
/**
* @param {?} index
* @return {?}
*/
reloadDataAtIndex(index) {
let /** @type {?} */ dataArray = this.getTabData(index);
let /** @type {?} */ oriDataArray = this.getOriginalTabData(index);
let /** @type {?} */ editorData = [];
if (this.editor != null && this.editor.getData() != null && typeof this.editor.getData() !== 'undefined') {
editorData = this.editor.getData();
}
if (editorData.length <= 0) {
return;
}
let /** @type {?} */ comparator = this.editor.getDataComparator();
let /** @type {?} */ tempData = [];
let /** @type {?} */ cloneTempData = [];
for (let /** @type {?} */ d of oriDataArray) {
let /** @type {?} */ isAdding = false;
for (let /** @type {?} */ editorDT of editorData) {
if (comparator !== null) {
if (comparator.equals(d, editorDT)) {
tempData.push(editorDT);
let /** @type {?} */ cloneData = JSON.parse(JSON.stringify(editorDT));
cloneTempData.push(cloneData);
isAdding = true;
break;
}
}
}
if (!isAdding) {
tempData.push(d);
let /** @type {?} */ cloneData = JSON.parse(JSON.stringify(d));
cloneTempData.push(cloneData);
}
}
if (index < this.originalTabsData.length) {
this.originalTabsData[index] = tempData;
}
if (index < this.tabsData.length) {
this.tabsData[index].objects = cloneTempData;
}
}
/**
* @param {?} index
* @return {?}
*/
reloadTabIndex(index) {
if (index === null || typeof index === 'undefined' || index <= -1) {
return;
}
this.reloadDataAtIndex(index);
if (index < this.tabsData.length) {
let /** @type {?} */ tabData = this.tabsData[index];
// update data in tab
this.tabPane.setTabData(index, tabData);
}
}
/**
* @return {?}
*/
reloadAllTab() {
this.reloadAllData();
for (let /** @type {?} */ i = 0; i < this.tabsData.length; i++) {
this.tabPane.setTabData(i, this.tabsData[i]);
}
}
/**
* @param {?} index
* @return {?}
*/
getOriginalTabData(index) {
if (index == null) {
return [];
}
if (index < this.originalTabsData.length) {
return this.originalTabsData[index];
}
return [];
}
/**
* @return {?}
*/
onViewSettingLoaded() {
this.reloadAllTab();
}
/**
* @param {?} $event
* @return {?}
*/
onNewTabBtnClick($event) {
// do sth
}
/**
* @param {?} $event
* @return {?}
*/
onTabChange($event) {
// tab change
}
/**
* @return {?}
*/
isShowMoreMenu() {
return this.showMoreMenu;
}
/**
* @param {?} $event
* @return {?}
*/
onTabMoved($event) {
let /** @type {?} */ evData = null;
if ($event.detail !== null && typeof $event.detail !== 'undefined') {
evData = $event.detail.data;
}
if (evData !== null && typeof evData !== 'undefined') {
let /** @type {?} */ fromIndex = evData.fromIndex;
let /** @type {?} */ toIndex = evData.toIndex;
ArrayUtils.move(this.tabsData, fromIndex, toIndex);
ArrayUtils.move(this.originalTabsData, fromIndex, toIndex);
}
}
/**
* @param {?} $event
* @return {?}
*/
onTabAdded($event) {
let /** @type {?} */ evData = null;
if ($event.detail !== null && typeof $event.detail !== 'undefined') {
evData = $event.detail.data;
}
if (evData !== null && typeof evData !== 'undefined') {
let /** @type {?} */ tBody = evData.tabBody;
let /** @type {?} */ tHeader = evData.tabHeader;
if (tBody !== null && typeof tBody !== 'undefined') {
let /** @type {?} */ hasData = false;
if (typeof tBody.getData === 'function') {
hasData = (tBody.getData() !== null && typeof tBody.getData() !== 'undefined') ? true : false;
}
// if no data set new data
if (!hasData && typeof tBody.setData === 'function') {
// init {}
// let newObj: any = {};
let /** @type {?} */ newObj = this.editor.newDataObject();
let /** @type {?} */ tBodyData = this.getWrapDataObject([newObj]); // new value
this.tabsData.push(tBodyData);
this.originalTabsData.push([newObj]); // add new value
tBody.setData(tBodyData);
if (tHeader !== null && typeof tHeader !== 'undefined') {
if (typeof tHeader.setData === 'function') {
tHeader.setData(tBodyData);
}
}
}
}
}
}
/**
* @param {?} data
* @return {?}
*/
createTab(data) {
let /** @type {?} */ newObj = this.editor.newDataObject();
let /** @type {?} */ tBodyData = this.getWrapDataObject([newObj]);
if (data !== null && typeof data !== 'undefined') {
if (Array.isArray(data)) {
let /** @type {?} */ cloneArray = [];
for (let /** @type {?} */ item of data) {
let /** @type {?} */ cloneData = JSON.parse(JSON.stringify(item));
cloneArray.push(cloneData);
}
tBodyData = this.getWrapDataObject(cloneArray);
this.originalTabsData.push(data);
}
else {
let /** @type {?} */ cloneData = JSON.parse(JSON.stringify(data));
tBodyData = this.getWrapDataObject([cloneData]);
this.originalTabsData.push([data]);
}
}
else {
this.originalTabsData.push([newObj]);
}
let /** @type {?} */ tabName = this.generateTabLabel(tBodyData.objects);
let /** @type {?} */ labelField = null;
this.tabsData.push(tBodyData);
let /** @type {?} */ tModel = new TabModel(tabName, null, this.tabComponentType, this.tabComponentModel, tBodyData, labelField, null, null);
this.tabPane.addTab(tModel);
}
/**
* @param {?} data
* @return {?}
*/
closeTab(data) {
// find index from data
let /** @type {?} */ index = this.getTabDataIndex(data);
this.closeTabAtIndex(index);
}
/**
* @param {?} index
* @return {?}
*/
closeTabAtIndex(index) {
// remove dirty
let /** @type {?} */ tModels = this.tabPane.getTabModels();
if (index > -1 && index < tModels.length) {
// is dirty
let /** @type {?} */ isDirty = this.isTabDirty(index);
if (isDirty) {
// dialog
this.dialogService.showConfirmDialog('Confirm close Tab', 'Data unsaved confirm close ?', true).then((result) => {
let /** @type {?} */ tempIndex = index;
if (result == 1) {
// ok close
let /** @type {?} */ tempModel = tModels[tempIndex];
this.tabPane.closeTabAtIndex(tempIndex);
this.removeTabDataAtIndex(tempIndex);
}
else if (result == -1) {
// cancel not to change view
return;
}
else {
// no option set tap to index
this.tabPane.showTabAtIndex(tempIndex);
}
});
return;
}
}
// close tab
this.tabPane.closeTabAtIndex(index);
this.removeTabDataAtIndex(index);
}
/**
* @return {?}
*/
getTabsCount() {
return this.tabPane.getTabsCount();
}
/**
* @param {?} model
* @return {?}
*/
getTabModelIndex(model) {
return this.tabPane.getTabModelIndex(model);
}
/**
* @param {?} index
* @return {?}
*/
getTabModelByIndex(index) {
if (index === null || typeof index === 'undefined' || index <= -1) {
return null;
}
let /** @type {?} */ tModels = this.tabPane.getTabModels();
if (tModels !== null && typeof tModels !== 'undefined') {
if (index < tModels.length) {
return tModels[index];
}
}
return null;
}
/**
* @param {?} data
* @return {?}
*/
getTabDataIndex(data) {
let /** @type {?} */ indexArray = this.getTabDataIndexes(data);
if (indexArray.length > 0) {
return indexArray[0];
}
return -1;
}
/**
* @param {?} index
* @return {?}
*/
getTabData(index) {
if (index == null || index <= -1) {
return [];
}
if (index < this.tabsData.length) {
return this.tabsData[index].objects;
}
return [];
}
/**
* @param {?} index
* @return {?}
*/
showTabAtIndex(index) {
if (index == null || index <= -1) {
return null;
}
this.tabPane.showTabAtIndex(index);
}
/**
* @param {?} data
* @return {?}
*/
showTabByData(data) {
let /** @type {?} */ indexes = this.getTabDataIndexes(data);
let /** @type {?} */ inTab = -1;
if (indexes.length > 0) {
if (indexes.length > 1) {
// close other and open new one
for (let /** @type {?} */ idx of indexes) {
this.closeTabAtIndex(idx);
}
}
else {
inTab = indexes[0];
}
}
else {
inTab = this.getTabDataIndex(data);
}
// close other and open new one
if (inTab === -1 && Array.isArray(data) && data.length > 1) {
for (let /** @type {?} */ d of data) {
let /** @type {?} */ idx = this.getTabDataIndex(d);
this.closeTabAtIndex(idx);
}
}
if (inTab > -1) {
this.showTabAtIndex(inTab);
}
else {
this.createTab(data);
let /** @type {?} */ allTabsCount = this.getTabsCount();
if (allTabsCount > 0) {
this.showTabAtIndex(allTabsCount - 1);
}
}
}
/**
* @return {?}
*/
getCurrentTabIndex() {
return this.tabPane.getCurrentTabIndex();
}
/**
* @return {?}
*/
getEditorDirtyData() {
return new Promise((resolve, reject) => {
let /** @type {?} */ dirtyArray = this.getAllDirtyData();
resolve(dirtyArray);
});
}
/**
* @return {?}
*/
getSelectedData() {
return new Promise((resolve, reject) => {
let /** @type {?} */ selectedArray = [];
let /** @type {?} */ curTab = this.getCurrentTabIndex();
let /** @type {?} */ tabDataArary = this.getTabData(curTab);
if (tabDataArary !== null) {
selectedArray = tabDataArary;
}
resolve(selectedArray);
});
}
/**
* @return {?}
*/
selfSaveData() {
}
/**
* @return {?}
*/
selfResetData() {
}
/**
* @return {?}
*/
doPreload() { return new Promise((resolve, reject) => { resolve(null); }); }
/**
* @return {?}
*/
doLoaded() {
}
/**
* @return {?}
*/
isSelfDataDirty() {
return false;
}
/**
* @return {?}
*/
getTabLabelGenerator() {
return this.tabLabelGenerator;
}
/**
* @param {?} generator
* @return {?}
*/
setTabLabelGenerator(generator) {
this.tabLabelGenerator = generator;
}
/**
* @return {?}
*/
getTabComponentType() {
return this.tabComponentType;
}
/**
* @return {?}
*/
getTabComponentModel() {
return this.tabComponentModel;
}
/**
* @return {?}
*/
getCurrentHistoryState() {
return this.tabsData;
}
/**
* @param {?} history
* @param {?} state
* @return {?}
*/
loadHistoryState(history, state) {
if (history === null || typeof history === 'undefined') {
return Promise.reject(new Error('The "history" cannot be "null" or "undefined".'));
}
return new Promise((resolve, reject) => {
try {
resolve();
}
catch (/** @type {?} */ e) {
reject(e);
}
});
}
/**
* @return {?}
*/
reloadView() {
this.reloadAllTab();
}
}
FormView.TYPE_NAME = TYPE_NAME;
FormView.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: `<div class="phx-form-view" [class.hide]="!isActive()">
<phx-tab-pane #tabPane [tabComponentType]="getTabComponentType()" [tabComponentModel]="getTabComponentModel()"
[menuFactory]="getEditor().getMenuModelFactory()" (newTabClickedEventHandler)="onNewTabBtnClick($event)"
[showMoreMenu]="isShowMoreMenu()"
(tabChangedEventHandler)="onTabChange($event)" (tabAddedEventHandler)="onTabAdded($event)"
(tabMovedEventHandler)="onTabMoved($event)"></phx-tab-pane>
</div>
`
},] },
];
/** @nocollapse */
FormView.ctorParameters = () => [
{ type: DialogService, },
{ type: ParrotsEditorSettingFactory, },
{ type: ElementRef, },
];
FormView.propDecorators = {
"model": [{ type: Input },],
"dataParent": [{ type: Input },],
"ignoreParentData": [{ type: Input },],
"data": [{ type: Input },],
"ignoreParentDisabled": [{ type: Input },],
"delegateHistory": [{ type: Input },],
"onDisabled": [{ type: Input },],
"onEnabled": [{ type: Input },],
"loadingEnabled": [{ type: Input },],
"i18nKey": [{ type: Input },],
"bypass": [{ type: Input, args: ['i18nBypass',] },],
"options": [{ type: Input },],
"tabPane": [{ type: ViewChild, args: ['tabPane',] },],
};
tslib_1.__decorate([
Option('tabPane'),
I18N('tabPane'),
tslib_1.__metadata("design:type", TabPane)
], FormView.prototype, "tabPane", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], FormView.prototype, "tabLabelGenerator", void 0);
function FormView_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
FormView.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
FormView.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
FormView.propDecorators;
/** @type {?} */
FormView.TYPE_NAME;
/** @type {?} */
FormView.prototype.model;
/** @type {?} */
FormView.prototype.dataParent;
/** @type {?} */
FormView.prototype.ignoreParentData;
/** @type {?} */
FormView.prototype.data;
/** @type {?} */
FormView.prototype.ignoreParentDisabled;
/** @type {?} */
FormView.prototype.delegateHistory;
/** @type {?} */
FormView.prototype.onDisabled;
/** @type {?} */
FormView.prototype.onEnabled;
/** @type {?} */
FormView.prototype.loadingEnabled;
/** @type {?} */
FormView.prototype.i18nKey;
/** @type {?} */
FormView.prototype.bypass;
/** @type {?} */
FormView.prototype.options;
/** @type {?} */
FormView.prototype.tabPane;
/** @type {?} */
FormView.prototype.tabLabelGenerator;
/** @type {?} */
FormView.prototype.dialogService;
/** @type {?} */
FormView.prototype.tabComponentType;
/** @type {?} */
FormView.prototype.tabComponentModel;
/** @type {?} */
FormView.prototype.tabsData;
/** @type {?} */
FormView.prototype.originalTabsData;
/** @type {?} */
FormView.prototype.showMoreMenu;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybVZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L2VkaXRvci9Gb3JtVmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBRSxLQUFLLEVBQVEsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDaEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFNeEQsdUJBQU0sU0FBUyxHQUFXLGVBQWUsQ0FBQztBQWMxQyxNQUFNLGVBQWdCLFNBQVEsc0JBQXNCOzs7Ozs7SUF5Q2xELFlBQVksYUFBNEIsRUFBRSxvQkFBaUQsRUFBRSxVQUFzQjtRQUNqSCxLQUFLLENBQUMsb0JBQW9CLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJ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