| Current Path : /home2/wtmwscom/public_html/post/Track and Trace_files/ |
| Current File : /home2/wtmwscom/public_html/post/Track and Trace_files/OutSystemsUI_009.js |
define("OutSystemsUI.Content.AccordionItem.mvc$model", ["OutSystems/ClientRuntime/Main", "OutSystemsUI.model", "OutSystemsUI.controller", "OutSystemsUI.controller$IsWebApp"], function (OutSystems, OutSystemsUIModel, OutSystemsUIController) {
var OS = OutSystems.Internal;
var VariablesRecord = (function (_super) {
__extends(VariablesRecord, _super);
function VariablesRecord(defaults) {
_super.apply(this, arguments);
}
VariablesRecord.attributesToDeclare = function () {
return [
this.attr("IsMultipleItems", "isMultipleItemsVar", "IsMultipleItems", true, false, OS.Types.Boolean, function () {
return false;
}, false),
this.attr("AccordionObj", "accordionObjVar", "AccordionObj", true, false, OS.Types.Object, function () {
return null;
}, false),
this.attr("HasWrapper", "hasWrapperVar", "HasWrapper", true, false, OS.Types.Boolean, function () {
return false;
}, false),
this.attr("IsWebApp", "isWebAppVar", "IsWebApp", true, false, OS.Types.Boolean, function () {
return false;
}, false),
this.attr("IsExpanded", "isExpandedIn", "IsExpanded", true, false, OS.Types.Boolean, function () {
return false;
}, false),
this.attr("_isExpandedInDataFetchStatus", "_isExpandedInDataFetchStatus", "_isExpandedInDataFetchStatus", true, false, OS.Types.Integer, function () {
return /*Fetched*/ 1;
}, false),
this.attr("UsePadding", "usePaddingIn", "UsePadding", true, false, OS.Types.Boolean, function () {
return true;
}, false),
this.attr("_usePaddingInDataFetchStatus", "_usePaddingInDataFetchStatus", "_usePaddingInDataFetchStatus", true, false, OS.Types.Integer, function () {
return /*Fetched*/ 1;
}, false),
this.attr("IsDisabled", "isDisabledIn", "IsDisabled", true, false, OS.Types.Boolean, function () {
return false;
}, false),
this.attr("_isDisabledInDataFetchStatus", "_isDisabledInDataFetchStatus", "_isDisabledInDataFetchStatus", true, false, OS.Types.Integer, function () {
return /*Fetched*/ 1;
}, false),
this.attr("ExtendedClass", "extendedClassIn", "ExtendedClass", true, false, OS.Types.Text, function () {
return "";
}, false),
this.attr("_extendedClassInDataFetchStatus", "_extendedClassInDataFetchStatus", "_extendedClassInDataFetchStatus", true, false, OS.Types.Integer, function () {
return /*Fetched*/ 1;
}, false)
].concat(_super.attributesToDeclare.call(this));
};
VariablesRecord.init();
return VariablesRecord;
})(OS.DataTypes.GenericRecord);
var WidgetsRecord = (function (_super) {
__extends(WidgetsRecord, _super);
function WidgetsRecord() {
_super.apply(this, arguments);
}
WidgetsRecord.getWidgetsType = function () {
return {};
};
return WidgetsRecord;
})(OS.Model.BaseWidgetRecordMap);
var Model = (function (_super) {
__extends(Model, _super);
function Model() {
_super.apply(this, arguments);
}
Model.getVariablesRecordConstructor = function () {
return VariablesRecord;
};
Model.getWidgetsRecordConstructor = function () {
return WidgetsRecord;
};
Object.defineProperty(Model, "hasValidationWidgets", {
enumerable: true,
configurable: true,
get: function () {
return false;
}
});
Model.prototype.setInputs = function (inputs) {
if("IsExpanded" in inputs) {
this.variables.isExpandedIn = inputs.IsExpanded;
if("_isExpandedInDataFetchStatus" in inputs) {
this.variables._isExpandedInDataFetchStatus = inputs._isExpandedInDataFetchStatus;
}
}
if("UsePadding" in inputs) {
this.variables.usePaddingIn = inputs.UsePadding;
if("_usePaddingInDataFetchStatus" in inputs) {
this.variables._usePaddingInDataFetchStatus = inputs._usePaddingInDataFetchStatus;
}
}
if("IsDisabled" in inputs) {
this.variables.isDisabledIn = inputs.IsDisabled;
if("_isDisabledInDataFetchStatus" in inputs) {
this.variables._isDisabledInDataFetchStatus = inputs._isDisabledInDataFetchStatus;
}
}
if("ExtendedClass" in inputs) {
this.variables.extendedClassIn = inputs.ExtendedClass;
if("_extendedClassInDataFetchStatus" in inputs) {
this.variables._extendedClassInDataFetchStatus = inputs._extendedClassInDataFetchStatus;
}
}
};
return Model;
})(OS.Model.BaseViewModel);
return new OS.Model.ModelFactory(Model);
});
define("OutSystemsUI.Content.AccordionItem.mvc$view", ["OutSystems/ClientRuntime/Main", "OutSystemsUI.model", "OutSystemsUI.controller", "react", "OutSystems/ReactView/Main", "OutSystemsUI.Content.AccordionItem.mvc$model", "OutSystemsUI.Content.AccordionItem.mvc$controller", "OutSystems/ReactWidgets/Main", "OutSystemsUI.controller$IsWebApp"], function (OutSystems, OutSystemsUIModel, OutSystemsUIController, React, OSView, OutSystemsUI_Content_AccordionItem_mvc_model, OutSystemsUI_Content_AccordionItem_mvc_controller, OSWidgets) {
var OS = OutSystems.Internal;
var PlaceholderContent = OSView.Widget.PlaceholderContent;
var IteratorPlaceholderContent = OSView.Widget.IteratorPlaceholderContent;
var View = (function (_super) {
__extends(View,_super);
function View() {
try {
this.initialize.apply(this, arguments);
} catch (error) {
View.handleError(error);
throw error;
}
}
View.prototype.initialize = function() {
_super.apply(this, arguments);
};
View.displayName = "Content.AccordionItem";
View.getCssDependencies = function() {
return ["css/OutSystemsReactWidgets.css"];
};
View.getJsDependencies = function() {
return [];
};
View.getBlocks = function() {
return [];
};
Object.defineProperty(View.prototype, "modelFactory", {
get: function () {
return OutSystemsUI_Content_AccordionItem_mvc_model;
},
enumerable: true,
configurable: true
});
Object.defineProperty(View.prototype, "controllerFactory", {
get: function () {
return OutSystemsUI_Content_AccordionItem_mvc_controller;
},
enumerable: true,
configurable: true
});
Object.defineProperty(View.prototype, "title", {
get: function () {
return "";
},
enumerable: true,
configurable: true
});
View.prototype.internalRender = function() {
var model = this.model;
var controller = this.controller;
var idService = this.idService;
var validationService = controller.validationService;
var widgetsRecordProvider = this.widgetsRecordProvider;
var callContext = controller.callContext();
var $if = View.ifWidget;
var asPrimitiveValue = View.asPrimitiveValue;
var _this = this;
return React.createElement("div", this.getRootNodeProperties(), React.createElement(OSWidgets.Container, {
align: /*Default*/ 0,
animate: false,
extendedProperties: {
"data-expanded": (model.variables.isExpandedIn ? "True" : "False")
},
style: model.getCachedValue(idService.getId("SectionItem.Style"), function () {
return (((("section-expandable " + ((model.variables.isExpandedIn) ? (" open is--open") : ("is--closed"))) + ((model.variables.isDisabledIn) ? (" is--disabled") : (""))) + " ") + model.variables.extendedClassIn);
}, function () {
return model.variables.isExpandedIn;
}, function () {
return model.variables.isDisabledIn;
}, function () {
return model.variables.extendedClassIn;
}),
visible: true,
_idProps: {
service: idService,
name: "SectionItem"
},
_widgetRecordProvider: widgetsRecordProvider,
style_dataFetchStatus: OS.Model.calculateDataFetchStatus(model.variables._isExpandedInDataFetchStatus, model.variables._isDisabledInDataFetchStatus, model.variables._extendedClassInDataFetchStatus)
}, React.createElement(OSWidgets.Container, {
align: /*Default*/ 0,
animate: false,
extendedEvents: {
onClick: function () {
return Promise.resolve().then(function () {
var eventHandlerContext = callContext.clone();
controller.onClick$Action(idService.getId("SectionItem"), controller.callContext(eventHandlerContext));
});
;
}
},
style: "section-expandable-title",
visible: true,
_idProps: {
service: idService,
uuid: "1"
},
_widgetRecordProvider: widgetsRecordProvider
}, React.createElement(OSWidgets.Placeholder, {
align: /*Default*/ 0,
content: _this.props.placeholders.title,
style: model.getCachedValue(idService.getId("Title.Style"), function () {
return ("dividers full-width" + ((model.variables.isWebAppVar) ? ("") : (" text-ellipsis")));
}, function () {
return model.variables.isWebAppVar;
}),
_idProps: {
service: idService,
name: "Title"
},
_widgetRecordProvider: widgetsRecordProvider
}), React.createElement(OSWidgets.Container, {
align: /*Default*/ 0,
animate: false,
style: "section-expandable-icon",
visible: true,
_idProps: {
service: idService,
uuid: "3"
},
_widgetRecordProvider: widgetsRecordProvider
})), React.createElement(OSWidgets.Container, {
align: /*Default*/ 0,
animate: false,
style: model.getCachedValue(idService.getId("ContentWrapper.Style"), function () {
return ("section-expandable-content is--collapsed" + ((model.variables.usePaddingIn) ? ("") : (" no-padding")));
}, function () {
return model.variables.usePaddingIn;
}),
visible: true,
_idProps: {
service: idService,
name: "ContentWrapper"
},
_widgetRecordProvider: widgetsRecordProvider,
style_dataFetchStatus: OS.Model.calculateDataFetchStatus(model.variables._usePaddingInDataFetchStatus)
}, React.createElement(OSWidgets.Placeholder, {
align: /*Default*/ 0,
content: _this.props.placeholders.content,
_idProps: {
service: idService,
name: "Content"
},
_widgetRecordProvider: widgetsRecordProvider
}))));
};
return View;
})(OSView.BaseView.BaseWebBlock);
return View;
});
define("OutSystemsUI.Content.AccordionItem.mvc$controller", ["OutSystems/ClientRuntime/Main", "OutSystemsUI.model", "OutSystemsUI.controller", "OutSystemsUI.languageResources", "OutSystemsUI.Content.AccordionItem.mvc$controller.OnClick.CloseAllJS", "OutSystemsUI.Content.AccordionItem.mvc$controller.OnClick.UpdateAttributeJS", "OutSystemsUI.Content.AccordionItem.mvc$controller.Collapse.CollapseJS", "OutSystemsUI.Content.AccordionItem.mvc$controller.OnReady.InitJS", "OutSystemsUI.Content.AccordionItem.mvc$controller.OnReady.SetGlobalActionsJS", "OutSystemsUI.Content.AccordionItem.mvc$controller.Expand.ExpandJS", "OutSystemsUI.controller$IsWebApp"], function (OutSystems, OutSystemsUIModel, OutSystemsUIController, OutSystemsUILanguageResources, OutSystemsUI_Content_AccordionItem_mvc_controller_OnClick_CloseAllJS, OutSystemsUI_Content_AccordionItem_mvc_controller_OnClick_UpdateAttributeJS, OutSystemsUI_Content_AccordionItem_mvc_controller_Collapse_CollapseJS, OutSystemsUI_Content_AccordionItem_mvc_controller_OnReady_InitJS, OutSystemsUI_Content_AccordionItem_mvc_controller_OnReady_SetGlobalActionsJS, OutSystemsUI_Content_AccordionItem_mvc_controller_Expand_ExpandJS) {
var OS = OutSystems.Internal;
var Controller = (function (_super) {
__extends(Controller, _super);
function Controller() {
_super.apply(this, arguments);
var controller = this.controller;
this.clientActionProxies = {
collapse$Action: function () {
return controller.executeActionInsideJSNode(controller._collapse$Action.bind(controller), controller.callContext(), function (actionResults) {
return {};
});
},
expand$Action: function () {
return controller.executeActionInsideJSNode(controller._expand$Action.bind(controller), controller.callContext(), function (actionResults) {
return {};
});
}
};
this.dataFetchDependenciesOriginal = {};
this.dataFetchDependentsGraph = {};
this.useImprovedDataFetch = false;
this.hasDependenciesBetweenSources = false;
this.shouldSendClientVarsToDataSources = false;
}
// Server Actions
// Aggregates and Data Actions
Controller.prototype.dataFetchActionNames = [];
// Client Actions
Controller.prototype._onClick$Action = function (elemIdIn, callContext) {
var model = this.model;
var controller = this.controller;
var idService = this.idService;
controller.ensureControllerAlive("OnClick");
callContext = controller.callContext(callContext);
var vars = new OS.DataTypes.VariableHolder(new (controller.constructor.getVariableGroupType("OutSystemsUI.Content.AccordionItem.OnClick$vars"))());
vars.value.elemIdInLocal = elemIdIn;
return OS.Flow.executeAsyncFlow(function () {
return OS.Flow.executeSequence(function () {
if((!(model.variables.isDisabledIn))) {
if((model.variables.hasWrapperVar)) {
if((!(model.variables.isMultipleItemsVar))) {
controller.safeExecuteJSNode(OutSystemsUI_Content_AccordionItem_mvc_controller_OnClick_CloseAllJS, "CloseAll", "OnClick", {
WidgetId: OS.DataConversion.JSNodeParamConverter.to(vars.value.elemIdInLocal, OS.Types.Text),
AccordionObj: OS.DataConversion.JSNodeParamConverter.to(model.variables.accordionObjVar, OS.Types.Object)
}, function ($parameters) {
}, {}, {});
}
}
if((model.variables.isExpandedIn)) {
// Execute Action: Collapse
controller._collapse$Action(callContext);
} else {
// Execute Action: Expand
controller._expand$Action(callContext);
}
// Trigger Event: OnToggle
return controller.onToggle$Action(model.variables.isExpandedIn, callContext).then(function () {
controller.safeExecuteJSNode(OutSystemsUI_Content_AccordionItem_mvc_controller_OnClick_UpdateAttributeJS, "UpdateAttribute", "OnClick", {
IsExpanded: OS.DataConversion.JSNodeParamConverter.to(model.variables.isExpandedIn, OS.Types.Boolean),
WidgetId: OS.DataConversion.JSNodeParamConverter.to(vars.value.elemIdInLocal, OS.Types.Text)
}, function ($parameters) {
}, {}, {});
});
}
});
});
};
Controller.registerVariableGroupType("OutSystemsUI.Content.AccordionItem.OnClick$vars", [{
name: "ElemId",
attrName: "elemIdInLocal",
mandatory: true,
dataType: OS.Types.Text,
defaultValue: function () {
return "";
}
}]);
Controller.prototype._collapse$Action = function (callContext) {
var model = this.model;
var controller = this.controller;
var idService = this.idService;
controller.ensureControllerAlive("Collapse");
callContext = controller.callContext(callContext);
controller.safeExecuteJSNode(OutSystemsUI_Content_AccordionItem_mvc_controller_Collapse_CollapseJS, "Collapse", "Collapse", {
WidgetId: OS.DataConversion.JSNodeParamConverter.to(idService.getId("SectionItem"), OS.Types.Text)
}, function ($parameters) {
}, {}, {});
// IsExpanded = False
model.variables.isExpandedIn = false;
};
Controller.prototype._onReady$Action = function (idIn, callContext) {
var model = this.model;
var controller = this.controller;
var idService = this.idService;
controller.ensureControllerAlive("OnReady");
callContext = controller.callContext(callContext);
var vars = new OS.DataTypes.VariableHolder(new (controller.constructor.getVariableGroupType("OutSystemsUI.Content.AccordionItem.OnReady$vars"))());
vars.value.idInLocal = idIn;
var initJSResult = new OS.DataTypes.VariableHolder();
initJSResult.value = controller.safeExecuteJSNode(OutSystemsUI_Content_AccordionItem_mvc_controller_OnReady_InitJS, "Init", "OnReady", {
Id: OS.DataConversion.JSNodeParamConverter.to(vars.value.idInLocal, OS.Types.Text),
ContentId: OS.DataConversion.JSNodeParamConverter.to(idService.getId("ContentWrapper"), OS.Types.Text),
IsExpanded: OS.DataConversion.JSNodeParamConverter.to(model.variables.isExpandedIn, OS.Types.Boolean),
IsMultipleItems: OS.DataConversion.JSNodeParamConverter.to(false, OS.Types.Boolean),
AccordionObj: OS.DataConversion.JSNodeParamConverter.to(null, OS.Types.Object),
HasWrapper: OS.DataConversion.JSNodeParamConverter.to(false, OS.Types.Boolean)
}, function ($parameters) {
var jsNodeResult = new (controller.constructor.getVariableGroupType("OutSystemsUI.Content.AccordionItem.OnReady$initJSResult"))();
jsNodeResult.isMultipleItemsOut = OS.DataConversion.JSNodeParamConverter.from($parameters.IsMultipleItems, OS.Types.Boolean);
jsNodeResult.accordionObjOut = OS.DataConversion.JSNodeParamConverter.from($parameters.AccordionObj, OS.Types.Object);
jsNodeResult.hasWrapperOut = OS.DataConversion.JSNodeParamConverter.from($parameters.HasWrapper, OS.Types.Boolean);
return jsNodeResult;
}, {}, {});
// IsMultipleItems = Init.IsMultipleItems
model.variables.isMultipleItemsVar = initJSResult.value.isMultipleItemsOut;
// AccordionObj = Init.AccordionObj
model.variables.accordionObjVar = initJSResult.value.accordionObjOut;
// HasWrapper = Init.HasWrapper
model.variables.hasWrapperVar = initJSResult.value.hasWrapperOut;
// IsWebApp = IsWebApp()
model.variables.isWebAppVar = OutSystemsUIController.default.isWebApp$Action(callContext).isWebAppOut;
controller.safeExecuteJSNode(OutSystemsUI_Content_AccordionItem_mvc_controller_OnReady_SetGlobalActionsJS, "SetGlobalActions", "OnReady", {
WidgetId: OS.DataConversion.JSNodeParamConverter.to(idService.getId("SectionItem"), OS.Types.Text)
}, function ($parameters) {
}, {
Collapse: controller.clientActionProxies.collapse$Action,
Expand: controller.clientActionProxies.expand$Action
}, {});
};
Controller.registerVariableGroupType("OutSystemsUI.Content.AccordionItem.OnReady$vars", [{
name: "Id",
attrName: "idInLocal",
mandatory: true,
dataType: OS.Types.Text,
defaultValue: function () {
return "";
}
}]);
Controller.registerVariableGroupType("OutSystemsUI.Content.AccordionItem.OnReady$initJSResult", [{
name: "IsMultipleItems",
attrName: "isMultipleItemsOut",
mandatory: true,
dataType: OS.Types.Boolean,
defaultValue: function () {
return false;
}
}, {
name: "AccordionObj",
attrName: "accordionObjOut",
mandatory: true,
dataType: OS.Types.Object,
defaultValue: function () {
return null;
}
}, {
name: "HasWrapper",
attrName: "hasWrapperOut",
mandatory: true,
dataType: OS.Types.Boolean,
defaultValue: function () {
return false;
}
}]);
Controller.prototype._expand$Action = function (callContext) {
var model = this.model;
var controller = this.controller;
var idService = this.idService;
controller.ensureControllerAlive("Expand");
callContext = controller.callContext(callContext);
controller.safeExecuteJSNode(OutSystemsUI_Content_AccordionItem_mvc_controller_Expand_ExpandJS, "Expand", "Expand", {
WidgetId: OS.DataConversion.JSNodeParamConverter.to(idService.getId("SectionItem"), OS.Types.Text)
}, function ($parameters) {
}, {}, {});
// IsExpanded = True
model.variables.isExpandedIn = true;
};
Controller.prototype.onClick$Action = function (elemIdIn, callContext) {
var controller = this.controller;
return controller.safeExecuteClientAction(controller._onClick$Action, callContext, elemIdIn);
};
Controller.prototype.collapse$Action = function (callContext) {
var controller = this.controller;
return controller.safeExecuteClientAction(controller._collapse$Action, callContext);
};
Controller.prototype.onReady$Action = function (idIn, callContext) {
var controller = this.controller;
return controller.safeExecuteClientAction(controller._onReady$Action, callContext, idIn);
};
Controller.prototype.expand$Action = function (callContext) {
var controller = this.controller;
return controller.safeExecuteClientAction(controller._expand$Action, callContext);
};
Controller.prototype.onToggle$Action = function () {
return Promise.resolve();
};
// Event Handler Actions
Controller.prototype.onInitializeEventHandler = null;
Controller.prototype.onReadyEventHandler = function (callContext) {
var controller = this.controller;
var model = this.model;
var idService = this.idService;
return controller.onReady$Action(idService.getId("SectionItem"), callContext);
};
Controller.prototype.onRenderEventHandler = null;
Controller.prototype.onDestroyEventHandler = null;
Controller.prototype.onParametersChangedEventHandler = function (callContext) {
var controller = this.controller;
var model = this.model;
var idService = this.idService;
return controller.onReady$Action(idService.getId("SectionItem"), callContext);
};
Controller.prototype.handleError = function (ex) {
return controller.handleError(ex);
};
Controller.checkPermissions = function () {
};
Controller.prototype.getDefaultTimeout = function () {
return OutSystemsUIController.default.defaultTimeout;
};
return Controller;
})(OS.Controller.BaseViewController);
return new OS.Controller.ControllerFactory(Controller, OutSystemsUILanguageResources);
});
define("OutSystemsUI.Content.AccordionItem.mvc$controller.OnClick.CloseAllJS", [], function () {
return function ($parameters, $actions, $roles, $public) {
var accordion = $parameters.AccordionObj;
var accordionItems = accordion.querySelectorAll('.section-expandable');
var thisElem = document.getElementById($parameters.WidgetId);
var isClosed = function(currentAccordionItem) {
if(currentAccordionItem.classList.contains('is--closed')) {
return true;
}
return false;
};
currAccordionItem = thisElem;
for(var i = 0; i < accordionItems.length; i++) {
var accordionItem = accordionItems[i];
if(accordionItem !== currAccordionItem && !isClosed(accordionItem)) {
accordionItem.CollapseItem();
}
}
};
});
define("OutSystemsUI.Content.AccordionItem.mvc$controller.OnClick.UpdateAttributeJS", [], function () {
return function ($parameters, $actions, $roles, $public) {
var accordionItem = document.getElementById($parameters.WidgetId);
accordionItem.setAttribute('data-expanded', $parameters.IsExpanded);
};
});
define("OutSystemsUI.Content.AccordionItem.mvc$controller.Collapse.CollapseJS", [], function () {
return function ($parameters, $actions, $roles, $public) {
var currentAccordionItem = document.getElementById($parameters.WidgetId);
var currentAccordionItemContent = currentAccordionItem.querySelector('.section-expandable-content');
currentAccordionItemContent.removeAttribute('style');
// Gets initial height value
var expandedHeight = currentAccordionItemContent.getBoundingClientRect().height;
// Toggle is--closed/is--open class from current accordion item
currentAccordionItem.classList.add('is--closed');
currentAccordionItem.classList.remove('is--open');
// Removes expanded class and adds the collapsed class to obtain the collapsed height value
currentAccordionItemContent.classList.remove('is--expanded');
currentAccordionItemContent.classList.add('is--collapsed');
var collapsedHeight = currentAccordionItemContent.getBoundingClientRect().height;
currentAccordionItemContent.style.height = expandedHeight + 'px';
// Removes collapsed class and adds the expanded class to animate
currentAccordionItemContent.classList.add('is--expanded');
currentAccordionItemContent.classList.remove('is--collapsed');
// This setTimeout (0ms) will ensure that the DOM received the height 0 before actually starts the transition
var waitDomIterateTimeout = setTimeout(function() {
// Adds is--animating class to current accordion item content to obtain the final height value
currentAccordionItemContent.classList.add('is--animating');
// Removes is--expanded class from current accordion item content
currentAccordionItemContent.classList.remove('is--expanded');
currentAccordionItemContent.style.height = collapsedHeight + 'px';
// Adds event listener to transition end
currentAccordionItemContent.addEventListener('transitionend', transitionEndHandler);
// Adds is--collapsed class to current accordion item content
currentAccordionItemContent.classList.add('is--collapsed');
// Clear timeout
clearTimeout(waitDomIterateTimeout);
}, 0);
var transitionEndHandler = function() {
var currentElement = currentAccordionItemContent;
var currentElementHeader = currentAccordionItem.querySelector('.section-expandable-title');
if(currentElement) {
// Removes is--animating class
currentElement.classList.remove('is--animating');
// Remove height and pointer events inline style
currentElement.style.height = '';
currentElementHeader.style.pointerEvents = '';
// Verify if the currentElement has inline-styles and remove attribute if are empty
if(currentElement.style.cssText.length === 0) {
currentElement.removeAttribute('style');
}
// Removes transitionend event listener
currentElement.removeEventListener('transitionend', transitionEndHandler, false);
}
};
};
});
define("OutSystemsUI.Content.AccordionItem.mvc$controller.OnReady.InitJS", [], function () {
return function ($parameters, $actions, $roles, $public) {
var sectionItem = document.getElementById($parameters.Id);
var sectionContent = document.getElementById($parameters.ContentId);
var accordion;
accordion = sectionItem.parentNode.parentNode;
if(accordion.classList.contains('list')){
accordion = accordion.parentNode;
}
var multipleItemsData = accordion.getAttribute('data-multiple-items');
// Check if is inside Accordion
if(accordion.classList.contains('accordion')) {
$parameters.HasWrapper = true;
}
// Check if MultipleItems is False
if(multipleItemsData === 'True') {
$parameters.IsMultipleItems = true;
}
// Add classes if expanded set as true. Doing here, instead of using Platform If on div, to avoid conflict with FLIP animation
if($parameters.IsExpanded) {
sectionContent.classList.remove('is--collapsed');
sectionContent.classList.add('is--expanded');
}
$parameters.AccordionObj = accordion;
};
});
define("OutSystemsUI.Content.AccordionItem.mvc$controller.OnReady.SetGlobalActionsJS", [], function () {
return function ($parameters, $actions, $roles, $public) {
var element = document.getElementById($parameters.WidgetId);
// Add actions
element.CollapseItem = function() {
$actions.Collapse();
};
element.ExpandItem = function() {
$actions.Expand();
};
};
});
define("OutSystemsUI.Content.AccordionItem.mvc$controller.Expand.ExpandJS", [], function () {
return function ($parameters, $actions, $roles, $public) {
var currentAccordionItem = document.getElementById($parameters.WidgetId);
var currentAccordionItemContent = currentAccordionItem.querySelector('.section-expandable-content');
var currentAccordionItemHeader = currentAccordionItem.querySelector('.section-expandable-title');
// Gets initial height value
var collapsedHeight = currentAccordionItemContent.getBoundingClientRect().height;
// Toggle is--closed/is--open class from current accordion item
currentAccordionItem.classList.remove('is--closed');
currentAccordionItem.classList.add('is--open');
// Prevents multiple clicks on Accordion when it's animating
currentAccordionItemHeader.style.pointerEvents = 'none';
// Toggle is--collapsed/is--expanded class from current accordion item
currentAccordionItemContent.classList.remove('is--collapsed');
currentAccordionItemContent.classList.add('is--expanded');
currentAccordionItemContent.removeAttribute('style');
// Gets final height value
var expandedHeight = currentAccordionItemContent.getBoundingClientRect().height;
// Removes is--expanded class from current accordion item content to animate
currentAccordionItemContent.classList.remove('is--expanded');
currentAccordionItemContent.style.height = collapsedHeight + 'px';
// This setTimeout (0ms) will ensure that the DOM received the height 0 before actually starts the transition
var waitDomIterateTimeout = setTimeout(function() {
// Adds is--animating class to current accordion item content to obtain the final height value
currentAccordionItemContent.classList.add('is--animating');
currentAccordionItemContent.style.height = expandedHeight + 'px';
// Adds event listener to transition end
currentAccordionItemContent.addEventListener('transitionend', transitionEndHandler);
// Adds is--expanded class to current accordion item content
currentAccordionItemContent.classList.add('is--expanded');
// Clear timeout
clearTimeout(waitDomIterateTimeout);
}, 0);
var transitionEndHandler = function() {
var currentElement = currentAccordionItemContent;
var currentElementHeader = currentAccordionItemHeader;
if(currentElement) {
// Removes is--animating class
currentElement.classList.remove('is--animating');
// Remove height and pointer events inline style
currentElement.style.height = '';
currentElementHeader.style.pointerEvents = '';
// Verify if the currentElement has inline-styles and remove attribute if are empty
if(currentElement.style.cssText.length === 0) {
currentElement.removeAttribute('style');
}
// Removes transitionend event listener
currentElement.removeEventListener('transitionend', transitionEndHandler, false);
}
};
};
});