Browse Source

Add tooltip attribute to extensible form component

pull/19147/head
Sinan Öztürk 3 years ago
parent
commit
4a6743d19b
  1. 3
      npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.html
  2. 2
      npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.ts
  3. 7
      npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html
  4. 3
      npm/ng-packs/packages/components/extensible/src/lib/models/entity-props.ts
  5. 9
      npm/ng-packs/packages/components/extensible/src/lib/models/form-props.ts
  6. 2
      npm/ng-packs/packages/components/extensible/src/lib/models/props.ts

3
npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.html

@ -179,4 +179,7 @@
} }
{{ asterisk }} {{ asterisk }}
</label> </label>
@if (prop.tooltip) {
<i [ngbTooltip]="prop.tooltip.text | abpLocalization" [placement]="prop.tooltip.placement || 'auto'" container="body" class="bi bi-info-circle ms-1"></i>
}
</ng-template> </ng-template>

2
npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.ts

@ -49,6 +49,7 @@ import { NgxValidateCoreModule } from '@ngx-validate/core';
import { ExtensibleFormPropService } from '../../services/extensible-form-prop.service'; import { ExtensibleFormPropService } from '../../services/extensible-form-prop.service';
import { CreateInjectorPipe } from '../../pipes/create-injector.pipe'; import { CreateInjectorPipe } from '../../pipes/create-injector.pipe';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';
@Component({ @Component({
selector: 'abp-extensible-form-prop', selector: 'abp-extensible-form-prop',
@ -61,6 +62,7 @@ import { CommonModule } from '@angular/common';
ReactiveFormsModule, ReactiveFormsModule,
DisabledDirective, DisabledDirective,
NgxValidateCoreModule, NgxValidateCoreModule,
NgbTooltip,
NgbTypeaheadModule, NgbTypeaheadModule,
CreateInjectorPipe, CreateInjectorPipe,
ShowPasswordDirective, ShowPasswordDirective,

7
npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html

@ -31,9 +31,10 @@
> >
<ng-template ngx-datatable-header-template let-column="column"> <ng-template ngx-datatable-header-template let-column="column">
@if (prop.tooltip) { @if (prop.tooltip) {
<span [ngbTooltip]="prop.tooltip | abpLocalization" container="body"> <span [ngbTooltip]="prop.tooltip.text | abpLocalization" [placement]="prop.tooltip.placement || 'auto'"
{{ column.name }} <i class="fa fa-info-circle" aria-hidden="true"></i> container="body">
</span> {{ column.name }} <i class="fa fa-info-circle" aria-hidden="true"></i>
</span>
}@else{ }@else{
{{ column.name }} {{ column.name }}
} }

3
npm/ng-packs/packages/components/extensible/src/lib/models/entity-props.ts

@ -12,6 +12,7 @@ import {
Props, Props,
PropsFactory, PropsFactory,
} from './props'; } from './props';
import { FormPropTooltip } from './form-props';
export class EntityPropList<R = any> extends PropList<R, EntityProp<R>> {} export class EntityPropList<R = any> extends PropList<R, EntityProp<R>> {}
@ -30,7 +31,7 @@ export class EntityProp<R = any> extends Prop<R> {
readonly action?: ActionCallback<R>; readonly action?: ActionCallback<R>;
readonly component?: Type<any>; readonly component?: Type<any>;
readonly enumList?: Array<ABP.Option<any>>; readonly enumList?: Array<ABP.Option<any>>;
readonly tooltip?: string; readonly tooltip?: FormPropTooltip;
readonly columnVisible: ColumnPredicate; readonly columnVisible: ColumnPredicate;
constructor(options: EntityPropOptions<R>) { constructor(options: EntityPropOptions<R>) {

9
npm/ng-packs/packages/components/extensible/src/lib/models/form-props.ts

@ -27,6 +27,11 @@ export interface FormPropGroup {
className?: string; className?: string;
} }
export interface FormPropTooltip {
text: string;
placement?: 'top' | 'end' | 'bottom' | 'start';
}
export class GroupedFormPropList<R = any> { export class GroupedFormPropList<R = any> {
public readonly items: GroupedFormPropItem[] = []; public readonly items: GroupedFormPropItem[] = [];
addItem(item: FormProp<R>) { addItem(item: FormProp<R>) {
@ -72,6 +77,7 @@ export class FormProp<R = any> extends Prop<R> {
readonly group?: FormPropGroup | undefined; readonly group?: FormPropGroup | undefined;
readonly displayTextResolver?: PropDisplayTextResolver<R>; readonly displayTextResolver?: PropDisplayTextResolver<R>;
readonly formText?: string; readonly formText?: string;
readonly tooltip?: FormPropTooltip;
constructor(options: FormPropOptions<R>) { constructor(options: FormPropOptions<R>) {
super( super(
@ -84,10 +90,12 @@ export class FormProp<R = any> extends Prop<R> {
options.template, options.template,
options.className, options.className,
options.formText, options.formText,
options.tooltip,
); );
this.group = options.group; this.group = options.group;
this.className = options.className; this.className = options.className;
this.formText = options.formText; this.formText = options.formText;
this.tooltip = options.tooltip;
this.asyncValidators = options.asyncValidators || (_ => []); this.asyncValidators = options.asyncValidators || (_ => []);
this.validators = options.validators || (_ => []); this.validators = options.validators || (_ => []);
this.disabled = options.disabled || (_ => false); this.disabled = options.disabled || (_ => false);
@ -135,6 +143,7 @@ export type FormPropOptions<R = any> = O.Optional<
| 'id' | 'id'
| 'displayTextResolver' | 'displayTextResolver'
| 'formText' | 'formText'
| 'tooltip'
>; >;
export type CreateFormPropDefaults<R = any> = Record<string, FormProp<R>[]>; export type CreateFormPropDefaults<R = any> = Record<string, FormProp<R>[]>;

2
npm/ng-packs/packages/components/extensible/src/lib/models/props.ts

@ -2,6 +2,7 @@ import { LinkedList } from '@abp/utils';
import { InjectFlags, InjectionToken, InjectOptions, Type } from '@angular/core'; import { InjectFlags, InjectionToken, InjectOptions, Type } from '@angular/core';
import { O } from 'ts-toolbelt'; import { O } from 'ts-toolbelt';
import { ePropType } from '../enums/props.enum'; import { ePropType } from '../enums/props.enum';
import { FormPropTooltip } from './form-props';
export abstract class PropList<R = any, A = Prop<R>> extends LinkedList<A> {} export abstract class PropList<R = any, A = Prop<R>> extends LinkedList<A> {}
@ -36,6 +37,7 @@ export abstract class Prop<R = any> {
public readonly template?: Type<any>, public readonly template?: Type<any>,
public readonly className?: string, public readonly className?: string,
public readonly formText?: string, public readonly formText?: string,
public readonly tooltip?: FormPropTooltip,
public readonly displayTextResolver?: PropDisplayTextResolver<R>, public readonly displayTextResolver?: PropDisplayTextResolver<R>,
) { ) {
this.displayName = this.displayName || this.name; this.displayName = this.displayName || this.name;

Loading…
Cancel
Save