Activities of "sumeyye.kurtulus"

The issue you raised regarding the ability to modify the icons displayed in the mobile navbar has been addressed and will be included in the next release. You can track the updates here: ABP Releases.

Additionally, we acknowledge your suggestions for further customization options, such as controlling the visibility of languages, appearance settings, and theme behavior. These enhancements have been noted for future development to improve flexibility and user experience.

As requested, we have processed a refund for this ticket.

My question is: How can I update the ABP CLI to version 9.1 the right way? To try again.

You can use abp cli update command to update your cli. You can also check documentation for more options: https://abp.io/docs/latest/cli#cli

If you want to update your solution, you can check this part of the documentation: https://abp.io/docs/latest/cli#update

Can you share more details on that please?

Thank you for confirming your version details.

As mentioned earlier, ABP 9.0 is compatible with Angular 18. If you wish to leverage the features of Angular 19, you will need to upgrade your project to ABP 9.1.

In summary:

  • ABP 9.0 supports Angular 18

  • ABP 9.1 supports Angular 19

Please let me know if you need any further clarification. I appreciate your cooperation.

I noticed that you are using ABP version 9.0. Could you please confirm whether you are using Angular version 18 with this release?

We have the same error with an existing application using the lepton theme. Also, are there any plans to remove the lepton theme so we need to migrate to lepton-x, or is it still OK to use it?

Hello, the Lepton theme remains valid for use, and there are currently no plans to discontinue its support.

Thank you for your reply.
Could you please tell me if there is a temporary fix for this error?
Or, if you can specify the release date for the fix, we can arrange the upgrade plan accordingly.

You can track the latest patch releases for a fix at the following link: ABP Patch Releases.

In the meantime, I recommend overriding the function that is causing the issue as a temporary solution.

To do this, create a CustomImpersonationService that extends ImpersonationService:

import { Injectable } from '@angular/core';
import { ImpersonationService } from '@volo/abp.commercial.ng.ui/config';

@Injectable({
  providedIn: 'root'
})
export class CustomImpersonationService extends ImpersonationService {

  constructor() {
    super();
  }

  override isImpersonatorVisible(): boolean {
    const {
      currentUser: { impersonatorUserId: userId } = {}
    } = this.configState.getAll();
    return !!userId;
  }
}

Once created, add it to the providers array in app.module.ts.

{ provide: ImpersonationService, useClass: CustomImpersonationService },

Let me know if you need further assistance.

Hello, thank you for reporting this. It will be fixed by next patch release. So, I am refunding your ticket.

Thank you for reaching out again. The current React Native template remains supported, and the issues you’ve pointed out are actively being managed. There should be no problem with using and publishing apps at this time. Running the expo doctor command can help ensure compatibility with the latest updates.

That said, the template continues to be a priority, and we are consistently testing and refining it. We appreciate your patience and feedback.

Yes, you can use this workaround until we release the solution:

  1. Patch the feature management setting tab.
//app.component.ts
import { SettingTabsService } from '@abp/ng.setting-management/config';
import { NewFeatureManagementTabComponent } from './new-feature-management-tab/new-feature-management-tab.component';

@Component(...)
export class AppComponent {
  protected settingTabs = inject(SettingTabsService);

  constructor() {
    this.settingTabs.patch('AbpFeatureManagement::Permission:FeatureManagement', {
      name: 'New Feature Management',
      order: 100,
      requiredPolicy: 'FeatureManagement.ManageHostFeatures',
      component: NewFeatureManagementTabComponent,
    });
  }
}
  1. Implement NewFeatureManagementTabComponent as follows:
// new-feature-management-tab.component.ts
import { LocalizationModule } from '@abp/ng.core';
import { Component } from '@angular/core';
import { NewFeatureManagementComponent } from '../new-feature-management/new-feature-management.component';
import { FeatureManagementTabComponent } from '@abp/ng.feature-management';

@Component({
  selector: 'app-new-feature-management-tab',
  imports: [LocalizationModule, NewFeatureManagementComponent],
  template: `
    <p class="pt-2 text-wrap">
      {{ 'AbpFeatureManagement::ManageHostFeaturesText' | abpLocalization }}
    </p>

    <button class="btn btn-primary" type="button" (click)="openFeaturesModal()">
      <i class="me-1 fa fa-cog" aria-hidden="true"></i>
      {{ 'AbpFeatureManagement::ManageHostFeatures' | abpLocalization }}
    </button>
    @if (visibleFeatures) {
    <app-new-feature-management
      [(visible)]="visibleFeatures"
      providerName="T"
      [providerKey]="providerKey"
    />
    }
  `,
  styleUrl: './new-feature-management-tab.component.scss',
})
export class NewFeatureManagementTabComponent extends FeatureManagementTabComponent {}
  1. Add NewFeatureManagementComponent.
// new-feature-management.component.ts
import { LocalizationModule } from '@abp/ng.core';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
import { Component } from '@angular/core';
import { CommonModule, NgTemplateOutlet } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';
import { FeatureManagementComponent, FreeTextInputDirective } from '@abp/ng.feature-management';

@Component({
  selector: 'app-new-feature-management',
  imports: [
    CommonModule,
    ThemeSharedModule,
    LocalizationModule,
    FormsModule,
    NgbNavModule,
    FreeTextInputDirective,
    NgTemplateOutlet,
  ],
  template: `
    @if (visible) {
    <abp-modal [(visible)]="visible" [busy]="modalBusy" [options]="{ size: 'lg' }">
      <ng-template #abpHeader>
        <h3>
          {{ 'AbpFeatureManagement::Features' | abpLocalization }}
          @if (providerTitle) { - {{ providerTitle }}
          }
        </h3>
      </ng-template>

      <ng-template #abpBody>
        <div class="row">
          @if (groups.length) {
          <div class="col-md-4">
            <ul
              ngbNav
              #nav="ngbNav"
              [(activeId)]="selectedGroupDisplayName"
              class="nav-pills"
              orientation="vertical"
            >
              @for (group of groups; track group.name) {
              <li [ngbNavItem]="group.displayName">
                <a ngbNavLink>{{ group.displayName }}</a>
                <ng-template ngbNavContent>
                  <h4>{{ selectedGroupDisplayName }}</h4>
                  <hr class="mt-2 mb-3" />

                  @for (feature of features[group.name]; track feature.id || i; let i = $index) {
                  <div class="mt-2" [ngStyle]="feature.style" (keyup.enter)="save()">
                    @switch (feature.valueType?.name) { @case (valueTypes.ToggleStringValueType) {
                    <div class="form-check" [class.px-4]="!!feature.parentName">
                      <input
                        class="form-check-input"
                        type="checkbox"
                        [id]="feature.name"
                        [(ngModel)]="feature.value"
                        (ngModelChange)="onCheckboxClick($event, feature)"
                      />

                      <label class="form-check-label" [htmlFor]="feature.name">{{
                        feature.displayName
                      }}</label>
                      <ng-container
                        *ngTemplateOutlet="descTmp; context: { $implicit: feature.description }"
                      ></ng-container>
                    </div>
                    } @case (valueTypes.FreeTextStringValueType) {
                    <div class="mb-3 form-group" [class.px-2]="!!feature.parentName">
                      <label [htmlFor]="feature.name" class="form-label">{{
                        feature.displayName
                      }}</label>
                      <input
                        class="form-control"
                        type="text"
                        [id]="feature.name"
                        [(ngModel)]="feature.value"
                        [abpFeatureManagementFreeText]="feature"
                      />

                      <ng-container
                        *ngTemplateOutlet="descTmp; context: { $implicit: feature.description }"
                      ></ng-container>
                    </div>
                    } @case (valueTypes.SelectionStringValueType) { @if
                    (feature.valueType.itemSource?.items?.length) {
                    <div class="mb-3 form-group" [class.px-2]="!!feature.parentName">
                      <label [htmlFor]="feature.name" class="form-label">{{
                        feature.displayName
                      }}</label>
                      <select class="form-select" [id]="feature.name" [(ngModel)]="feature.value">
                        @for ( item of feature.valueType.itemSource?.items; track item.value ) {
                        <option [ngValue]="item.value">
                          {{
                            item.displayText?.resourceName + '::' + item.displayText?.name
                              | abpLocalization
                          }}
                        </option>
                        }
                      </select>
                      <ng-container
                        *ngTemplateOutlet="descTmp; context: { $implicit: feature.description }"
                      ></ng-container>
                    </div>
                    } } @default {
                    {{ feature.displayName }}
                    } }
                  </div>
                  }
                </ng-template>
              </li>
              }
            </ul>
          </div>

          <ng-template #descTmp let-description>
            @if (description) {
            <small class="d-block form-text text-muted">{{ description }}</small>
            }
          </ng-template>

          <div class="col-md-8"><div class="py-0" [ngbNavOutlet]="nav"></div></div>
          } @if (!groups.length) {
          <div class="col">
            {{ 'AbpFeatureManagement::NoFeatureFoundMessage' | abpLocalization }}
          </div>
          }
        </div>
      </ng-template>

      <ng-template #abpFooter>
        <button abpClose type="button" class="btn btn-link">
          {{ 'AbpFeatureManagement::Cancel' | abpLocalization }}
        </button>

        @if (groups.length) {
        <abp-button
          buttonClass="btn btn-outline-primary"
          [disabled]="modalBusy"
          (click)="resetToDefault()"
          aria-hidden="true"
        >
          {{ 'AbpFeatureManagement::ResetToDefault' | abpLocalization }}
        </abp-button>
        } @if (groups.length) {
        <abp-button
          iconClass="fa fa-check"
          [disabled]="modalBusy"
          (click)="save()"
          aria-hidden="true"
        >
          {{ 'AbpFeatureManagement::Save' | abpLocalization }}
        </abp-button>
        }
      </ng-template>
    </abp-modal>
    }
  `,
  styleUrl: './new-feature-management.component.scss',
})
export class NewFeatureManagementComponent extends FeatureManagementComponent {}

Showing 231 to 240 of 465 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.1.0-preview. Updated on November 04, 2025, 06:41