@itwin/appui-abstract
Version:
iTwin.js UI abstractions
197 lines • 7 kB
JavaScript
;
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
/** @packageDocumentation
* @module Properties
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.PropertyDescriptionHelper = void 0;
const EditorParams_1 = require("./EditorParams");
const StandardEditorNames_1 = require("./StandardEditorNames");
const StandardTypeNames_1 = require("./StandardTypeNames");
/** Helper class that builds property descriptions for specific PropertyEditors and processes descriptions.
* @public
*/
class PropertyDescriptionHelper {
/** Builds a number description with a "weight-picker" editor name
* @public
*/
static buildWeightPickerDescription(name, label, additionalParams = []) {
return {
name,
displayLabel: label,
typename: StandardTypeNames_1.StandardTypeNames.Number,
editor: {
name: StandardEditorNames_1.StandardEditorNames.WeightPicker,
params: additionalParams,
},
};
}
/** Builds an editor that uses [NumberInput]($core-react) control
* @public
*/
static buildNumberEditorDescription(name, label, overrideParams, additionalParams = []) {
const editorParams = [{
type: EditorParams_1.PropertyEditorParamTypes.Range,
step: 1,
precision: 0,
...overrideParams,
}, ...additionalParams];
const editor = {
name: StandardEditorNames_1.StandardEditorNames.NumericInput,
params: editorParams,
};
return {
name,
displayLabel: label,
typename: StandardTypeNames_1.StandardTypeNames.Number,
editor,
};
}
/** Builds a string description
* @public
*/
static buildTextEditorDescription(name, label, additionalParams = []) {
const editor = {
params: additionalParams,
};
return {
name,
displayLabel: label,
typename: StandardTypeNames_1.StandardTypeNames.String,
editor,
};
}
/** Builds an enum description
* @public
*/
static buildEnumPicklistEditorDescription(name, label, choices, additionalParams = []) {
const editor = additionalParams.length ? {
params: additionalParams,
} : undefined;
return {
name,
displayLabel: label,
typename: StandardTypeNames_1.StandardTypeNames.Enum,
editor,
enum: {
choices,
},
};
}
/** Builds a number description for a tool settings or dialog property that will display a "color-picker" control.
* @public
*/
static buildColorPickerDescription(name, label, colorValues, numColumns, additionalParams = []) {
const editorParams = [
{
type: EditorParams_1.PropertyEditorParamTypes.ColorData,
colorValues,
numColumns,
},
...additionalParams,
];
return {
name,
displayLabel: label,
typename: StandardTypeNames_1.StandardTypeNames.Number,
editor: {
name: StandardEditorNames_1.StandardEditorNames.ColorPicker,
params: editorParams,
},
};
}
/** Builds a boolean description for a tool settings or dialog property that will display a "toggle" control.
* @public
*/
static buildToggleDescription(name, label, additionalParams = []) {
return {
name,
displayLabel: label,
typename: StandardTypeNames_1.StandardTypeNames.Boolean,
editor: {
name: StandardEditorNames_1.StandardEditorNames.Toggle,
params: additionalParams,
},
};
}
/** Builds a boolean description for a tool settings or dialog property that will display a "image-check-box" control.
* @public
*/
static buildImageCheckBoxDescription(name, label, imageOff, imageOn, additionalParams = []) {
const editorParams = [{
type: EditorParams_1.PropertyEditorParamTypes.CheckBoxImages,
imageOff,
imageOn,
}, ...additionalParams];
return {
name,
displayLabel: label,
typename: StandardTypeNames_1.StandardTypeNames.Boolean,
editor: {
name: StandardEditorNames_1.StandardEditorNames.ImageCheckBox,
params: editorParams,
},
};
}
/** Builds a boolean description for a tool settings or dialog property that will display a checkbox control.
* @public
*/
static buildCheckboxDescription(name, label, additionalParams = []) {
const editor = {
params: additionalParams,
};
return {
name,
displayLabel: label,
typename: StandardTypeNames_1.StandardTypeNames.Boolean,
editor,
};
}
/** Builds a property description for a tool settings or dialog `lock` property. This will create a checkbox control with no label.
* @public
*/
static buildLockPropertyDescription(name, additionalParams = []) {
const defaultParams = {
type: EditorParams_1.PropertyEditorParamTypes.SuppressEditorLabel,
suppressLabelPlaceholder: true,
};
const editor = {
params: [defaultParams, ...additionalParams],
};
return {
name,
displayLabel: "",
typename: StandardTypeNames_1.StandardTypeNames.Boolean,
editor,
};
}
/** Bumps an enum property description value
* @public
*/
static async bumpEnumProperty(description, value) {
let choices;
if (description.enum) {
if (description.enum.choices instanceof Promise) {
choices = await description.enum.choices;
}
else {
choices = description.enum.choices;
}
}
if (!choices || choices.length === 0)
return value;
let choiceIndex = choices.findIndex((choice) => choice.value === value);
if (choiceIndex < 0)
return value;
choiceIndex++;
if (choiceIndex >= choices.length)
choiceIndex = 0;
const newValue = choices[choiceIndex].value;
return newValue;
}
}
exports.PropertyDescriptionHelper = PropertyDescriptionHelper;
//# sourceMappingURL=Description.js.map