custom-widgets icon indicating copy to clipboard operation
custom-widgets copied to clipboard

[Question] Setting default properties for custom widget

Open mkopinsky opened this issue 6 years ago • 3 comments

I am creating (for use in survey-creator) a custom widget based on multipletext, except that the set of items are predefined, and shouldn't be editable by the user.

I'm able to define the class and set items to non-editable (mostly*) via the following:

  activatedByChanged: function (activatedBy) {
    // We are creating a new class and derived it from multipletext question type, but with the 'items' editor hidden
    Survey.JsonObject.metaData.addClass(
      "bloodpressure", [
        {
          name: 'items',
          visible: false,
        },
      ],
      null,
      "multipletext"
    );
  }

and pass an initial JSON to editor.toolbox.addItems(...), but it would be great if there were a way to set the items from within the custom widget definition itself.

Am I missing something?

mkopinsky avatar Oct 03 '19 20:10 mkopinsky

The "mostly*" above refers to https://github.com/surveyjs/survey-creator/issues/609

mkopinsky avatar Oct 03 '19 21:10 mkopinsky

You can use the "default" property of the metadata:

Serializer.addClass(
  "page",
  [
    {
      name: "navigationButtonsVisibility",
      default: "inherit",
      choices: ["inherit", "show", "hide"]
    },
    {
      name: "questionsOrder",
      default: "default",
      choices: ["default", "initial", "random"]
    },
    { name: "maxTimeToFinish:number", default: 0 }
  ],
  function() {
    return new PageModel();
  },
  "panelbase"
);

tsv2013 avatar Oct 07 '19 08:10 tsv2013

For some reason that didn't set the default values in the JSON when it's added to the toolbox (in QuestionToolbox.prototype.registerCustomWidgets). Perhaps that function should be looking at JSONMetadata to pre-set props into the JSON??

From poking around with a debugger I was able to get it to work by exporting a defaultJSON key in the widget definition.

mkopinsky avatar Oct 08 '19 15:10 mkopinsky