precyx
1/16/2020 - 8:37 AM

Listview Extension

<CustomAction
    Title="PublishDocuments"
    RegistrationId="0x010100321566DF2DF30743A6241CE8C2AC7FEB000C4BE455A288CE4CBAAAC624CDA70FFC"
    RegistrationType="ContentType"
    Location="ClientSideExtension.ListViewCommandSet.CommandBar"
    ClientSideComponentId="5800008d-fac6-4e2b-b855-36239bc25776"
    ClientSideComponentProperties="{&quot;sampleTextOne&quot;:&quot;One item is selected in the list.&quot;, &quot;sampleTextTwo&quot;:&quot;This command is always visible.&quot;}">
</CustomAction>
  @override
  public onListViewUpdated(event: IListViewCommandSetListViewUpdatedParameters): void {
    const compareOneCommand: Command = this.tryGetCommand('LINK_DOCUMENT_1');
    if (compareOneCommand) {
      compareOneCommand.visible = this.checkCommandOne(event);
    }
  }

  private checkCommandOne = (event: IListViewCommandSetListViewUpdatedParameters): boolean => {

    let SUPPORTED_CONTENT_TYPES = {
      STS_Vorgabedokument_hoch: "0x0101001996AA87F939C444BDF19E8C3716319F0100BA91B1E92A2D9645B4CE4A9EA4913923",
      STS_Vorgabedokument_quer: "0x0101001996AA87F939C444BDF19E8C3716319F0200764D93956317464BAB5EF71A8232CF4C",
    };

    // check if single selected item
    if (event.selectedRows.length != 1) return false;

    // check if item is in "__Freigegeben" folder
    let _fileRef = event.selectedRows[0]["_values"].get("FileRef");
    if (!_fileRef.includes("__Freigegeben")) return false;

    // check if selected item is from supported content type
    let _contentType = event.selectedRows[0]["_values"].get("ContentTypeId");
    if (!Object.keys(SUPPORTED_CONTENT_TYPES).some(c => _contentType.includes(SUPPORTED_CONTENT_TYPES[c]))) {
      return false;
    }

    // action is visible
    return true;
  }