UNPKG

@itwin/appui-abstract

Version:
197 lines • 7 kB
"use strict"; /*--------------------------------------------------------------------------------------------- * 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