UNPKG

igniteui-react-grids

Version:

Ignite UI React grid components.

774 lines (773 loc) 30.1 kB
import { __extends, __values } from "tslib"; import * as React from 'react'; import { ensureEnum, brushToString, stringToBrush, ensureBool, NamePatcher, isValidProp, getModifiedProps } from "igniteui-react-core"; import { FontInfo } from "igniteui-react-core"; import { ReactRenderer } from "igniteui-react-core"; import { delegateCombine, delegateRemove } from "igniteui-react-core"; import { GridColumnOptions } from './GridColumnOptions'; import { IgrGridColumnOptionsBase } from "./igr-grid-column-options-base"; import { IgrGridColumnSortOptions } from "./igr-grid-column-sort-options"; import { IgrGridColumnMoveOptions } from "./igr-grid-column-move-options"; import { IgrGridColumnPinOptions } from "./igr-grid-column-pin-options"; import { IgrGridColumnHideOptions } from "./igr-grid-column-hide-options"; import { IgrGridColumnGroupOptions } from "./igr-grid-column-group-options"; import { IgrGridColumnFilterOptions } from "./igr-grid-column-filter-options"; import { IgrGridColumnSummaryOptions } from "./igr-grid-column-summary-options"; import { IgrGridColumnButtonOptions } from "./igr-grid-column-button-options"; import { IgrApplyButtonClickEventArgs } from './igr-apply-button-click-event-args'; import { IgrCancelButtonClickEventArgs } from './igr-cancel-button-click-event-args'; import { ControlDisplayDensity_$type } from "igniteui-react-core"; var IgrGridColumnOptions = /** @class */ /*@__PURE__*/ (function (_super) { __extends(IgrGridColumnOptions, _super); function IgrGridColumnOptions(props) { var _this = _super.call(this, props) || this; _this._reactRenderer = null; _this._applyButtonClick = null; _this._applyButtonClick_wrapped = null; _this._cancelButtonClick = null; _this._cancelButtonClick_wrapped = null; if (_this._styling) { NamePatcher.ensureStylablePatched(Object.getPrototypeOf(_this)); } _this._getMainRef = _this._getMainRef.bind(_this); _this._getSortSectionRef = _this._getSortSectionRef.bind(_this); _this._getMoveSectionRef = _this._getMoveSectionRef.bind(_this); _this._getPinSectionRef = _this._getPinSectionRef.bind(_this); _this._getFilterSectionRef = _this._getFilterSectionRef.bind(_this); _this._getSummarySectionRef = _this._getSummarySectionRef.bind(_this); _this._getButtonSectionRef = _this._getButtonSectionRef.bind(_this); _this._getHeaderColumnNameSectionRef = _this._getHeaderColumnNameSectionRef.bind(_this); _this._getHeaderButtonsSectionRef = _this._getHeaderButtonsSectionRef.bind(_this); _this._getHideSectionRef = _this._getHideSectionRef.bind(_this); _this._getGroupSectionRef = _this._getGroupSectionRef.bind(_this); _this._getHeaderSectionRef = _this._getHeaderSectionRef.bind(_this); _this._getSortOptionsRef = _this._getSortOptionsRef.bind(_this); _this._getMoveOptionsRef = _this._getMoveOptionsRef.bind(_this); _this._getPinOptionsRef = _this._getPinOptionsRef.bind(_this); _this._getHideOptionsRef = _this._getHideOptionsRef.bind(_this); _this._getGroupOptionsRef = _this._getGroupOptionsRef.bind(_this); _this._getFilterOptionsRef = _this._getFilterOptionsRef.bind(_this); _this._getSummaryOptionsRef = _this._getSummaryOptionsRef.bind(_this); _this._getButtonOptionsRef = _this._getButtonOptionsRef.bind(_this); var columnOptions = _this.i; columnOptions.notifySizeChanged(); if (props) { _this.initializeProperties(); } return _this; } Object.defineProperty(IgrGridColumnOptions.prototype, "height", { get: function () { return this._height; }, set: function (value) { this._height = value; if (this._elRef) { this._elRef.style.height = value; this.i.notifySizeChanged(); } }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "width", { get: function () { return this._width; }, set: function (value) { this._width = value; if (this._elRef) { this._elRef.style.height = value; this.i.notifySizeChanged(); } }, enumerable: false, configurable: true }); IgrGridColumnOptions.prototype._getMainRef = function (ref) { this._elRef = ref; this.verifyReferences(); }; // These are the main sections at the root level. IgrGridColumnOptions.prototype._getHeaderSectionRef = function (ref) { this._headerSectionRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype._getSortSectionRef = function (ref) { this._sortSectionRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype._getMoveSectionRef = function (ref) { this._moveSectionRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype._getPinSectionRef = function (ref) { this._pinSectionRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype._getFilterSectionRef = function (ref) { this._filterSectionRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype._getSummarySectionRef = function (ref) { this._summarySectionRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype._getButtonSectionRef = function (ref) { this._buttonSectionRef = ref; this.verifyReferences(); }; // Sub-sections IgrGridColumnOptions.prototype._getHeaderColumnNameSectionRef = function (ref) { this._headerColumnNameSectionRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype._getHeaderButtonsSectionRef = function (ref) { this._headerButtonsSectionRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype._getHideSectionRef = function (ref) { this._hideSectionRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype._getGroupSectionRef = function (ref) { this._groupSectionRef = ref; this.verifyReferences(); }; // The actual components IgrGridColumnOptions.prototype._getSortOptionsRef = function (ref) { this._sortOptionsRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype._getMoveOptionsRef = function (ref) { this._moveOptionsRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype._getPinOptionsRef = function (ref) { this._pinOptionsRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype._getHideOptionsRef = function (ref) { this._hideOptionsRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype._getGroupOptionsRef = function (ref) { this._groupOptionsRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype._getFilterOptionsRef = function (ref) { this._filterOptionsRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype._getSummaryOptionsRef = function (ref) { this._summaryOptionsRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype._getButtonOptionsRef = function (ref) { this._buttonOptionsRef = ref; this.verifyReferences(); }; IgrGridColumnOptions.prototype.render = function () { return (React.createElement("div", { className: "ig-grid-column-options igr-grid-column-options", ref: this._getMainRef }, React.createElement("div", { ref: this._getHeaderSectionRef, key: "headerSection" }, React.createElement("div", { ref: this._getHeaderColumnNameSectionRef, key: "headerColumnNameSection" }), React.createElement("div", { ref: this._getHeaderButtonsSectionRef, key: "headerButtonsSection" }, React.createElement("div", { ref: this._getGroupSectionRef, key: "groupSection" }, React.createElement(IgrGridColumnGroupOptions, { ref: this._getGroupOptionsRef, key: "groupOptions" })), React.createElement("div", { ref: this._getHideSectionRef, key: "hideSection" }, React.createElement(IgrGridColumnHideOptions, { ref: this._getHideOptionsRef, key: "hideOptions" })))), React.createElement("div", { ref: this._getSortSectionRef, key: "sortSection" }, React.createElement(IgrGridColumnSortOptions, { ref: this._getSortOptionsRef, key: "sortOptions" })), React.createElement("div", { ref: this._getMoveSectionRef, key: "moveSection" }, React.createElement(IgrGridColumnMoveOptions, { ref: this._getMoveOptionsRef, key: "moveOptions" })), React.createElement("div", { ref: this._getPinSectionRef, key: "pinSection" }, React.createElement(IgrGridColumnPinOptions, { ref: this._getPinOptionsRef, key: "pinOptions" })), React.createElement("div", { ref: this._getSummarySectionRef, key: "summarySection" }, React.createElement(IgrGridColumnSummaryOptions, { ref: this._getSummaryOptionsRef, key: "summaryOptions" })), React.createElement("div", { ref: this._getFilterSectionRef, key: "filterSection" }, React.createElement(IgrGridColumnFilterOptions, { ref: this._getFilterOptionsRef, key: "filterOptions" })), React.createElement("div", { ref: this._getButtonSectionRef, key: "buttonSection" }, React.createElement(IgrGridColumnButtonOptions, { ref: this._getButtonOptionsRef, key: "buttonOptions" })))); }; IgrGridColumnOptions.prototype.verifyReferences = function () { var _this = this; if (this._elRef && this._headerSectionRef && this._sortSectionRef && this._moveSectionRef && this._pinSectionRef && this._filterSectionRef && this._summarySectionRef && this._buttonSectionRef && this._headerColumnNameSectionRef && this._headerButtonsSectionRef && this._hideSectionRef && this._groupSectionRef && this._sortOptionsRef && this._moveOptionsRef && this._pinOptionsRef && this._hideOptionsRef && this._groupOptionsRef && this._filterOptionsRef && this._summaryOptionsRef && this._buttonOptionsRef) { this._reactRenderer = new ReactRenderer(this._elRef, document, false, null); if (document) { this._elRef.style.display = "block"; this._elRef.style.width = "100%"; this._elRef.style.height = "100%"; } this.i.provideRenderer(this._reactRenderer); var headerSectionWrapper = this._reactRenderer.getWrapper(this._headerSectionRef); var sortSectionWrapper = this._reactRenderer.getWrapper(this._sortSectionRef); var moveSectionWrapper = this._reactRenderer.getWrapper(this._moveSectionRef); var pinSectionWrapper = this._reactRenderer.getWrapper(this._pinSectionRef); var filterSectionWrapper = this._reactRenderer.getWrapper(this._filterSectionRef); var summarySectionWrapper = this._reactRenderer.getWrapper(this._summarySectionRef); var buttonSectionWrapper = this._reactRenderer.getWrapper(this._buttonSectionRef); var headerColumnNameSectionWrapper = this._reactRenderer.getWrapper(this._headerColumnNameSectionRef); var headerButtonsSectionWrapper = this._reactRenderer.getWrapper(this._headerButtonsSectionRef); var hideSectionWrapper = this._reactRenderer.getWrapper(this._hideSectionRef); var groupSectionWrapper = this._reactRenderer.getWrapper(this._groupSectionRef); this.i.provideContent(headerSectionWrapper, sortSectionWrapper, moveSectionWrapper, pinSectionWrapper, filterSectionWrapper, summarySectionWrapper, buttonSectionWrapper, headerColumnNameSectionWrapper, headerButtonsSectionWrapper, hideSectionWrapper, groupSectionWrapper, this._sortOptionsRef.i, this._moveOptionsRef.i, this._pinOptionsRef.i, this._hideOptionsRef.i, this._groupOptionsRef.i, this._filterOptionsRef.i, this._summaryOptionsRef.i, this._buttonOptionsRef.i); this._reactRenderer.addSizeWatcher(function () { _this.i.notifySizeChanged(); }); } }; IgrGridColumnOptions.prototype.shouldComponentUpdate = function (nextProps, nextState) { var e_1, _a; var mod = getModifiedProps(this.props, nextProps); try { for (var _b = __values(Object.keys(mod)), _c = _b.next(); !_c.done; _c = _b.next()) { var p = _c.value; if (isValidProp(this, p)) { this[p] = mod[p]; } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } return true; }; IgrGridColumnOptions.prototype.initializeProperties = function () { var e_2, _a; try { for (var _b = __values(Object.keys(this.props)), _c = _b.next(); !_c.done; _c = _b.next()) { var p = _c.value; if (isValidProp(this, p)) { this[p] = this.props[p]; } } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_2) throw e_2.error; } } }; // supports angular themes or custom properties set in CSS IgrGridColumnOptions.prototype.updateStyle = function () { this._styling(this._elRef, this); }; IgrGridColumnOptions.prototype.destroy = function () { this.i.destroy(); if (this._reactRenderer) this._reactRenderer.destroy(); }; IgrGridColumnOptions.prototype.componentWillUnmount = function () { }; IgrGridColumnOptions.prototype.componentDidMount = function () { this._elRef.style.width = this._width ? this._width : ""; this._elRef.style.height = this._height ? this._height : ""; this.i.notifySizeChanged(); this.initializeContent(); }; IgrGridColumnOptions.prototype.initializeContent = function () { this._styling(this._elRef, this); this.updateStyle(); this.i.notifySizeChanged(); }; IgrGridColumnOptions.prototype.createImplementation = function () { return new GridColumnOptions(); }; Object.defineProperty(IgrGridColumnOptions.prototype, "i", { get: function () { return this._implementation; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "headerOptionsVisibleResolved", { get: function () { return this.i.cp; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "sortOptionsVisibleResolved", { get: function () { return this.i.c3; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "moveOptionsVisibleResolved", { get: function () { return this.i.cx; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "pinOptionsVisibleResolved", { get: function () { return this.i.c0; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "hideOptionsVisibleResolved", { get: function () { return this.i.cu; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "groupOptionsVisibleResolved", { get: function () { return this.i.co; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "filterOptionsVisibleResolved", { get: function () { return this.i.cl; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "summaryOptionsVisibleResolved", { get: function () { return this.i.c6; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "columnNameTextStyle", { /** * Gets or sets the font to use for columnNames. */ get: function () { if (this.i.cg == null) { return null; } return this.i.cg.fontString; }, set: function (v) { var fi = new FontInfo(); fi.fontString = v; this.i.cg = fi; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "paddingLeft", { /** * Gets or sets the amount of left padding to use for the left edge of the component. */ get: function () { return this.i.dh; }, set: function (v) { this.i.dh = +v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "paddingTop", { /** * Gets or sets the amount of left padding to use for the top edge of the component. */ get: function () { return this.i.dj; }, set: function (v) { this.i.dj = +v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "paddingRight", { /** * Gets or sets the amount of left padding to use for the right edge of the component. */ get: function () { return this.i.di; }, set: function (v) { this.i.di = +v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "paddingBottom", { /** * Gets or sets the amount of left padding to use for the bottom edge of the component. */ get: function () { return this.i.dg; }, set: function (v) { this.i.dg = +v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "headerVisible", { get: function () { return this.i.cr; }, set: function (v) { this.i.cr = ensureBool(v); }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "sortOptionsVisible", { get: function () { return this.i.c2; }, set: function (v) { this.i.c2 = ensureBool(v); }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "moveOptionsVisible", { get: function () { return this.i.cw; }, set: function (v) { this.i.cw = ensureBool(v); }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "pinOptionsVisible", { get: function () { return this.i.cz; }, set: function (v) { this.i.cz = ensureBool(v); }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "hideOptionsVisible", { get: function () { return this.i.ct; }, set: function (v) { this.i.ct = ensureBool(v); }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "groupOptionsVisible", { get: function () { return this.i.cn; }, set: function (v) { this.i.cn = ensureBool(v); }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "filterOptionsVisible", { get: function () { return this.i.ck; }, set: function (v) { this.i.ck = ensureBool(v); }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "summaryOptionsVisible", { get: function () { return this.i.c5; }, set: function (v) { this.i.c5 = ensureBool(v); }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "sortHeaderCaption", { get: function () { return this.i.e4; }, set: function (v) { this.i.e4 = v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "sortAscendingCaption", { get: function () { return this.i.ey; }, set: function (v) { this.i.ey = v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "sortDescendingCaption", { get: function () { return this.i.e1; }, set: function (v) { this.i.e1 = v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "moveHeaderCaption", { get: function () { return this.i.ea; }, set: function (v) { this.i.ea = v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "moveLeftCaption", { get: function () { return this.i.ed; }, set: function (v) { this.i.ed = v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "moveRightCaption", { get: function () { return this.i.eh; }, set: function (v) { this.i.eh = v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "pinHeaderCaption", { get: function () { return this.i.eo; }, set: function (v) { this.i.eo = v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "pinLeftCaption", { get: function () { return this.i.er; }, set: function (v) { this.i.er = v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "pinRightCaption", { get: function () { return this.i.ev; }, set: function (v) { this.i.ev = v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "applyFiltersButtonCaption", { get: function () { return this.i.dp; }, set: function (v) { this.i.dp = v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "cancelFiltersButtonCaption", { get: function () { return this.i.ds; }, set: function (v) { this.i.ds = v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "clearColumnFiltersCaption", { get: function () { return this.i.dv; }, set: function (v) { this.i.dv = v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "summaryListDensity", { /** * Gets or sets the display density to use for the summary list menu. */ get: function () { return this.i.summaryListDensity; }, set: function (v) { this.i.summaryListDensity = ensureEnum(ControlDisplayDensity_$type, v); }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "actualSummaryListDensity", { /** * Gets the actual display density used for the summary list menu. */ get: function () { return this.i.b8; }, set: function (v) { this.i.b8 = ensureEnum(ControlDisplayDensity_$type, v); }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "filterListDensity", { /** * Gets or sets the display Density to use for the buttons in the component. */ get: function () { return this.i.filterListDensity; }, set: function (v) { this.i.filterListDensity = ensureEnum(ControlDisplayDensity_$type, v); }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "actualFilterListDensity", { /** * Gets the actual display filterListDensity to use for the component. */ get: function () { return this.i.b7; }, set: function (v) { this.i.b7 = ensureEnum(ControlDisplayDensity_$type, v); }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "filterListPlaceholderText", { get: function () { return this.i.d1; }, set: function (v) { this.i.d1 = v; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "summaryListTextColor", { /** * Gets or sets the text color for the summary options menu. */ get: function () { return brushToString(this.i.fm); }, set: function (v) { this.i.fm = stringToBrush(v); }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "summaryListBackground", { /** * Gets or sets the background color for the summary options menu. */ get: function () { return brushToString(this.i.fl); }, set: function (v) { this.i.fl = stringToBrush(v); }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "applyButtonClick", { get: function () { return this._applyButtonClick; }, set: function (ev) { var _this = this; if (this._applyButtonClick_wrapped !== null) { this.i.applyButtonClick = delegateRemove(this.i.applyButtonClick, this._applyButtonClick_wrapped); this._applyButtonClick_wrapped = null; this._applyButtonClick = null; } this._applyButtonClick = ev; this._applyButtonClick_wrapped = function (o, e) { var outerArgs = new IgrApplyButtonClickEventArgs(); outerArgs._provideImplementation(e); if (_this.beforeApplyButtonClick) { _this.beforeApplyButtonClick(_this, outerArgs); } if (_this._applyButtonClick) { _this._applyButtonClick(_this, outerArgs); } }; this.i.applyButtonClick = delegateCombine(this.i.applyButtonClick, this._applyButtonClick_wrapped); ; }, enumerable: false, configurable: true }); Object.defineProperty(IgrGridColumnOptions.prototype, "cancelButtonClick", { get: function () { return this._cancelButtonClick; }, set: function (ev) { var _this = this; if (this._cancelButtonClick_wrapped !== null) { this.i.cancelButtonClick = delegateRemove(this.i.cancelButtonClick, this._cancelButtonClick_wrapped); this._cancelButtonClick_wrapped = null; this._cancelButtonClick = null; } this._cancelButtonClick = ev; this._cancelButtonClick_wrapped = function (o, e) { var outerArgs = new IgrCancelButtonClickEventArgs(); outerArgs._provideImplementation(e); if (_this.beforeCancelButtonClick) { _this.beforeCancelButtonClick(_this, outerArgs); } if (_this._cancelButtonClick) { _this._cancelButtonClick(_this, outerArgs); } }; this.i.cancelButtonClick = delegateCombine(this.i.cancelButtonClick, this._cancelButtonClick_wrapped); ; }, enumerable: false, configurable: true }); return IgrGridColumnOptions; }(IgrGridColumnOptionsBase)); export { IgrGridColumnOptions };