Giter Site home page Giter Site logo

ng-matero / extensions Goto Github PK

View Code? Open in Web Editor NEW
385.0 11.0 48.0 56.21 MB

Angular Material Extensions Library.

Home Page: https://ng-matero.github.io/extensions/

License: MIT License

JavaScript 0.48% TypeScript 64.09% HTML 15.43% SCSS 19.97% Shell 0.02%
angular angular-material angular-components ng-matero color-picker ngx-color ngx-color-picker material-color-picker ng-select typeahead

extensions's Introduction

Ng-Matero Extensions

CodeFactor npm GitHub Release Date license Gitter

The Ng-Matero Extensions is an extended component library for Angular Material.

Documentation

Check out the demos and APIs.

Installation

At first, you should install the Angular Material and setup it. Learn more about the setup.

Install the Extensions library:

$ npm install @ng-matero/extensions --save

Setup

Import the modules you need, e.g. data-grid and select.

import { MtxGridModule } from '@ng-matero/extensions/grid';
import { MtxSelectModule } from '@ng-matero/extensions/select';

@NgModule({
  ...
  imports: [MtxGridModule, MtxSelectModule, ...],
  ...
})
export class YourAppModule {
}

Theming

After import modules, you must define a theme. More about theming.

@use '@ng-matero/extensions' as mtx;

@include mtx.all-component-themes($theme);

The @use-based Sass API is only available in the version 12.0.0 or above.

Development

$ git clone [email protected]:ng-matero/extensions.git
$ cd extensions
$ yarn
$ yarn run start

Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

License

MIT

extensions's People

Contributors

128keaton avatar damingerdai avatar dawnsouther avatar dependabot[bot] avatar jellebruisten avatar joaobrlt avatar johonunu avatar magoarcano avatar matthieuriegler-eaton avatar mlribes avatar nzbin avatar panakour avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

extensions's Issues

Data Grid Refactor Roadmap

  • expandable row
  • row selectable
  • multiple row selectable
  • cell selectable
  • multiple cell selectable
  • column hiding option
  • column moving option
  • column pinning option
  • column filter option
  • column resizable
  • toolbar template
  • header template
  • header group
  • footer template
  • no result
  • sidebar template
  • tool panel
  • sortable on frontend
  • sort properties
  • row selected items default
  • row selection formatter(disabled & hideCheckbox)
  • column type parameters
  • i18n
  • virtual scroll

Disabled button in mtx-grid

I have column with file option and type button, as shown below:

image

How to disabled button?

Please help me?
Thanks a lot.

自定义grid-column-menu排版,selectionChange不会刷新列

<div class="row"> 
    <div class="col-2 text-right">
      <mtx-grid-column-menu
        [columns]="data_grid.columnMenuData"
        [buttonText]="data_grid.columnMenuButtonText"
        [buttonType]="data_grid.columnMenuButtonType"
        [buttonColor]="data_grid.columnMenuButtonColor"
        [buttonClass]="data_grid.columnMenuButtonClass"
        [buttonIcon]="data_grid.columnMenuButtonIcon"
        [selectable]="data_grid.columnHideable"
        [selectedType]="data_grid.columnHidingChecked"
        [sortable]="data_grid.columnMovable"
        (selectionChange)="data_grid._handleColumnHidingChange($event)"
        (sortChange)="data_grid._handleColumnMovingChange($event)">
      </mtx-grid-column-menu>
    </div>
  </div>
  <div class="row">
    <div class="col-12">
      <mtx-grid #data_grid [data]="dataSource"
                [showColumnMenuButton]="true"
                [multiSelectable]="true"
                [rowSelectable]="true"
                [showToolbar]="false"
                [columnMenuButtonIcon]="&#39;ballot&#39;"
                [rowHover]="true"
                [showPaginator]="false"
                [rowStriped]="true"
                columnMenuButtonText="{{'button_action.columns_shown'|translate}}"
                noResultText="{{'button_action_message.no_result'|translate}}"
                (rowSelectionChange)="selectEvent($event)"
                [columns]="columns">
      </mtx-grid>
    </div>
  </div>

Bug: mtx-grid. Data in table is not updated automatically

if I have the following column definitions:

columns = [
    { header: 'name', field: 'name'},
    { header: 'calories', field: 'calories', formatter: (data: any) => data.calories},
    { header: 'fat', field: 'fat', cellTemplate: this.fatTpl },
    { header: 'carbs', field: 'carbs'},
    { header: 'protein', field: 'protein'},
  ]

'name', 'carbs' and 'protein' are not updated when their values changes. Only works with a formatter ('calories') or a template ('fat')

I created a stackblitz (edited an example from angular material library)
https://stackblitz.com/angular/jrkyyjvxqql?file=src%2Fapp%2Fsort-overview-example.ts

There you can see that pressing the 'add' button updated calories values in the original table but not in mtx-grid

Features for mtx-grid

Some features that exist in material table is missing from mtx-grid like:

  • Footer row
  • Sticky Rows and Columns
  • Multiple header columns (look at the bellow picture using native angular material table):

image

Issue with disable check in mtx-grid

Hi @nzbin
In mtx-grid, i set properties rowSelectable , then there are 2 cases that happened:

Case 1:
When disabled checked row, same as the picture below:
image
=> I change checked all, at row checked disabled can still be change it was disabled:
image

Case 2:
How to disable checked all when all checked in row was disabled?

closeOnSelect not working inside mat-form-field

Currently can be easily demonstrated by the first example on https://ng-matero.github.io/extensions/components/select/overview

With mtx-select inside mat-form-field, it does not close when you select an item with a mouse click. This behavior does not appear to be affected by [closeOnSelect]="true", etc.

It does appear to do the right thing if you select with the keyboard (e.g. the return key).

It appears to work fine when used without a mat-form-field.

ng-select label does not float if value is 0

Repro steps:
In the list of items for combobox, let one element have value 0. Then select that element and click outside combobox to make it loose focus.

If value === 1:
image

if value === 0:
image

mtx-grid columns width bug

image
Hi, in last days I noticed a bug in my project using mtx-grid. It's like columns' width calculation fails.
Moreover the same bug is happening in the live demo at
https://ng-matero.github.io/extensions/components/data-grid/overview
I attach a snap from the demo.

My '@ng-matero/extensions' version is '9.9.0' and I had the same version when the app was working fine.

It looks like a problem with an involved dependency version, but it's only my assumption.

Any idea?

Tks

Choose focus button in Dialog

Hi!

Is it possible to implement a way to choose the button that is focussed/active on the dialog?

Something like:

buttons: [
  {
    type: '',
    text: 'Cancel',
    onClick: () => {cancel()}
  },
  {
    type: 'primary',
    text: 'Delete',
    focus: true,
    onClick: () => {delete()},
  },
]

Currently the first button is always focussed/active, it would be great if there was a way to choose.

Kees-Jan

call a function from MtxGridColumn

I have a column which is a link. want to add a click event in that.
format: (data: any) => { return <a (click)="callfunction()" >${data.Status} </a>; }
tried this, but the function is not getting called. What am I doing wrong?

I also tried keeping it a button. It worked but the text was not displayed. Is Icon mandatory in Grid button. can't we keep text only? The text should change dynamically as shown in the format. Is that possible?

 {
      title: 'Status',
      index: 'Status',
      type: 'button',
      fixed: 'left',
      width: 'auto',
      sort: true,
      checked: true,
      disabled: false,
      buttons: [
        {
          icon:null,
          text:'abc',
          tooltip: 'Edit Template Attribute',
          type: 'link',
          click: ()=>{alert("hi")},
        }]
      // format: (data: any) => { return `<a (click)="onGoToPage2()">${data.Status} </a>`; }
    }.

Thanks in advance

grid 是否目前不支持数据懒加载?

您好,因为我看extensions/data-grid/grid.component.ts中有直接绑定

 this.dataSource.paginator = this.paginator;

因为我对angular-material paginator的测试结果显示,绑定在一起之后paginator的length好像会被datasource的data.length覆盖。虽@Input() length = 0目前没有效果。
所以想问暂时mat-grid还是无法支持自输入length属性吗?

Data Grid Custom Toolbar

Great work.
I have a question, is it possible to add custom items on Data Grid Toolbar?
I want to add a 'Add Button' and a 'Search Textbox'

Or better put 'Columns Shown' button outside 'mtx-grid' component?

Bug: mtx-grid. Data is not updated when push item from array

When adding items to the array it does not update the mtx-grid data table.

** I saw topic # 19, but it didn't work for me **

package.json:

{
  "name": "ng-matero",
  "version": "0.0.0-NOT-USED",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "test": "ng test",
    "e2e": "ng e2e",
    "build": "ng build",
    "build:prod": "ng build --prod",
    "build:release": "ng build --prod --baseHref=/ng-matero/",
    "build:schematics": "npm run copy:schematics && cd schematics && npm run build && cd .. && npm run build:starter",
    "build:starter": "gulp --gulpfile gulpfile.js",
    "copy:schematics": "npm run clean:schematics && cpr schematics dist/schematics",
    "clean:schematics": "rimraf dist/schematics",
    "lint": "npm run lint:ts && npm run lint:scss",
    "lint:ts": "tslint -p tsconfig.app.json -c tslint.json 'src/**/*.ts'",
    "lint:scss": "stylelint --syntax scss 'src/**/*.scss' --fix",
    "hmr": "ng serve --hmr -c hmr --disable-host-check",
    "deploy": "angular-cli-ghpages --no-silent --dir=dist/ng-matero",
    "release": "npm run build:release && npm run deploy",
    "publish": "npm run build:schematics && cd dist/schematics && npm publish",
    "postinstall": "ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "~10.0.8",
    "@angular/cdk": "^10.2.7",
    "@angular/common": "~10.0.8",
    "@angular/compiler": "~10.0.8",
    "@angular/core": "~10.0.8",
    "@angular/flex-layout": "^10.0.0-beta.32",
    "@angular/forms": "~10.0.8",
    "@angular/localize": "^10.0.8",
    "@angular/material": "~10.1.3",
    "@angular/material-moment-adapter": "^10.1.3",
    "@angular/platform-browser": "~10.0.8",
    "@angular/platform-browser-dynamic": "~10.0.8",
    "@angular/router": "~10.0.8",
    "@mat-datetimepicker/core": "^5.0.1",
    "@mat-datetimepicker/moment": "^5.0.1",
    "@ng-matero/extensions": "^10.5.1",
    "@ng-select/ng-select": "^5.0.0",
    "@ngx-formly/core": "^5.9.3",
    "@ngx-formly/material": "^5.9.3",
    "@ngx-translate/core": "^13.0.0",
    "@ngx-translate/http-loader": "^6.0.0",
    "apexcharts": "^3.20.0",
    "core-js": "^3.6.4",
    "crypto-js": "^3.3.0",
    "moment": "^2.27.0",
    "moment-timezone": "^0.5.31",
    "ngx-mask": "^10.0.1",
    "ngx-permissions": "^8.0.0",
    "ngx-progressbar": "^6.0.3",
    "ngx-toastr": "^13.0.0",
    "photoviewer": "^3.4.0",
    "rxjs": "~6.5.5",
    "screenfull": "^5.0.2",
    "tslib": "^2.0.0",
    "zone.js": "~0.10.3"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.1000.5",
    "@angular/cli": "~10.0.8",
    "@angular/compiler-cli": "~10.0.8",
    "@angular/language-service": "~10.0.8",
    "@angularclass/hmr": "^2.1.3",
    "@commitlint/cli": "^9.1.2",
    "@commitlint/config-conventional": "^9.1.1",
    "@types/jasmine": "~3.5.0",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "^12.11.1",
    "@types/parse5": "~5.0.2",
    "angular-cli-ghpages": "^0.6.2",
    "chalk": "^3.0.0",
    "codelyzer": "^6.0.0",
    "cpr": "^3.0.1",
    "del": "^5.1.0",
    "gulp": "^4.0.2",
    "gulp-each": "^0.5.0",
    "jasmine-core": "~3.5.0",
    "jasmine-spec-reporter": "~5.0.0",
    "karma": "~5.0.0",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage-istanbul-reporter": "~3.0.2",
    "karma-jasmine": "~3.3.0",
    "karma-jasmine-html-reporter": "^1.5.0",
    "lint-staged": "^10.2.11",
    "parse5": "~5.1.1",
    "prettier": "^2.0.5",
    "protractor": "~7.0.0",
    "rimraf": "^3.0.2",
    "stylelint": "^13.6.1",
    "stylelint-config-recommended-scss": "^4.2.0",
    "stylelint-config-standard": "^20.0.0",
    "stylelint-scss": "^3.18.0",
    "ts-node": "~8.3.0",
    "tslint": "~6.1.0",
    "typescript": "~3.9.7"
  }
}

HTML:

<mtx-grid [data]="productsTable" [columns]="columns" [loading]="isLoading"
          [multiSelectable]="multiSelectable"
          [rowSelectable]="rowSelectable" [hideRowSelectionCheckbox]="hideRowSelectionCheckbox"
          [rowHover]="rowHover"
          [rowStriped]="rowStriped" [showToolbar]="showToolbar" [toolbarTitle]="'Data Grid Toolbar'"
          [columnHideable]="columnHideable" [columnMovable]="columnMovable"
          [expandable]="expandable"
          [expansionTemplate]="expansionTpl" [pageOnFront]="showPaginator"
          [showPaginator]="showPaginator"
          [pageSizeOptions]="[10,50,100]" [pageIndex]="0" [pageSize]="10"
          (sortChange)="changeSort($event)"
          (selectionChange)="changeSelect($event)">
</mtx-grid>
<ng-template #expansionTpl let-row>
    {{row.name}}
</ng-template>

TS:

import {FormBuilder, FormGroup} from '@angular/forms';
import {ChangeDetectorRef, Component, Inject, OnInit} from '@angular/core';
import {ProductService} from "../../../../services/registrations/product.service";
import {ToastrService} from "ngx-toastr";
import {distinctUntilChanged} from "rxjs/operators";
import {MtxGridColumn} from "@ng-matero/extensions";
import {Person, TablesDataService} from "../../data.service";
import {DeschargeService} from "../../../../services/moviment/descharge.service";
import {MtxDialog} from "@ng-matero/extensions/dialog";
import {MAT_DIALOG_DATA} from "@angular/material/dialog";

@Component({
  selector: 'app-table-kitchen-sink-edit',
  styleUrls: ['./edit.component.scss'],
  templateUrl: './edit.component.html',
  providers: [TablesDataService, ProductService, DeschargeService]
})

export class MovimentDeschargesEditComponent implements OnInit {

  reactiveForm: FormGroup;

  columns: MtxGridColumn[] = [
    {header: 'Código', field: 'id', sortable: true},
    {header: 'Descrição', field: 'description', width: "400px", sortable: true},
    {header: 'Quantidade', field: 'quantity'},
    {
      header: 'Opções',
      field: 'option',
      width: '180px',
      pinned: 'right',
      right: '0px',
      type: 'button',
      buttons: [
        {
          icon: 'remove_red_eye',
          tooltip: 'Visualizar',
          type: 'icon',
          click: record => this.view(record.id),
        },
        {
          icon: 'check',
          tooltip: 'Aprovar',
          type: 'icon',
          pop: true,
          popTitle: 'Aceitar Cadastro?',
          popOkText: 'Confirmar',
          popCloseText: 'Cancelar',
          click: record => this.edit(record, 'approved'),
        },
        {
          icon: 'cancel',
          tooltip: 'Rejeitar',
          color: 'warn',
          type: 'icon',
          pop: true,
          popTitle: 'Rejeitar Cadastro?',
          popOkText: 'Confirmar',
          popCloseText: 'Cancelar',
          click: record => this.edit(record, 'rejected'),
        },
      ],
    },
  ];

  isLoading = false;
  multiSelectable = false;
  rowSelectable = false;
  hideRowSelectionCheckbox = false;
  showToolbar = false;
  columnHideable = true;
  columnMovable = true;
  rowHover = true;
  rowStriped = true;
  showPaginator = true;
  expandable = false;

  products: any = []
  productsTable: any = [{
    "description": "HIGIENIZAÇAO CAIXA  6424",
    "id": 1,
    "quantity": "5"
  }]

  edit(a, b) {

  }

  view(a) {

  }

  changeSelect(e: any) {
    console.log(e);
  }

  changeSort(e: any) {
    console.log(e);
  }

  constructor(
    private fb: FormBuilder,
    private cdr: ChangeDetectorRef,
    @Inject(MAT_DIALOG_DATA) public data: any,
    private dataService: TablesDataService,
    private deschargeService: DeschargeService,
    private toastr: ToastrService,
    public dialog: MtxDialog
  ) {
    this.reactiveForm = this.fb.group({
      client: [null],
      dt_descharge: [null],
      product: [null],
      quantity: [null],
      status: ['Todos'],
    });
  }

  ngOnInit() {}

  addProduct() {
    this.productsTable.push({
      "description": "HIGIENIZAÇAO CAIXA  6424",
      "id": 1,
      "quantity": "5"
    })
  }
}

Performance improvements on mtx-grid

I use the same table data for both mtx-grid and native mat-table without pagination (they have fixed 200 rows of data).

In the native mat-table the data append in the table almost instantly but in the mtx-grid needs 4-5 seconds

Issue with the mtx-select input types

Hi there!

I found an issue with the mtx-select component. Indeed, the type of the inputs whose default value is null (searchFn, trackByFn, etc.) seems to be misinterpreted by TypeScript. For this reason, I am not able to assign any value to some of the inputs because TypeScript only accepts the null value. It seems to work on the ng-select component but I think that it's because the authors have declared (by chance) the variable types elsewhere in the code (unit tests, examples, etc.).

Nevertheless, I would like to thank you for your work on these amazing Angular Material extensions!

data grid translate

Hi,

How is the best pratice use ngx-translate for header columns and button title of show columns?

The header template works ok but in MtxGridColumn is field i18n. I define the translate in colums array

this.translate.get(['TEST.operation']).subscribe((res: any) => {
      var gridColumns: MtxGridColumn[] = [
        {field: 'create_at',header: res['TEST.operation']}, 

but are no change after change langue. I used

this.translate.onLangChange.subscribe((params: LangChangeEvent) => {
        this.fillGridColumns();

but columns not refresh.
Could you help me please.

Issue with mtx-select and search

Apparently there is an issue with the mtx-select component search functionality. When you type anything and select an option, the label is disappearing. It seems to happen only on mobile devices, and it can be seen on the library documentation website https://ng-matero.github.io/extensions/select.

I recorded my phone screen to show the issue being reproduced, as you can see below:

WhatsApp-Video-2020-09-02-at-151

Options to select multiple rows in the table

You have a build a example of basic table where there is an option to select multiple rows. Could you please tell me if there is any sort of callback which is getting fired when you mark the check box ?

Many thanks

V12 Roadmap

  • add new component datetimepicker
  • add new component range-slider
  • add new options to support 12 positions of popover
  • redesign colorpicker
  • add global config

Bug: Expandable rows error for asynchronic data

I'm using remote data. If I enable expandable rows I get this error in console:

core.js:6210 ERROR TypeError: Cannot read property 'forEach' of undefined
at MtxGridComponent.ngOnChanges (mtxGrid.js:1076)
at MtxGridComponent.wrapOnChangesHook_inPreviousChangesStorage (core.js:27085)
at callHook (core.js:4712)
at callHooks (core.js:4672)
at executeInitAndCheckHooks (core.js:4612)
at refreshView (core.js:11924)
at refreshDynamicEmbeddedViews (core.js:13283)
at refreshView (core.js:11929)
at refreshComponent (core.js:13358)
at refreshChildComponents (core.js:11635)

The error is because this.data is null in the next lines of grid.component.ts:

// We should copy each item of data for expansion data
    if (this.expandable) {
      this.expansionRowStates = []; // reset

      this.data.forEach(_ => {
        this.expansionRowStates.push({ expanded: false });
      });
    }

I think it happens because it executes that code before the data is ready. Is it ok to just add if this.data before this.data.forEach?

[mtx-select] Please provide more info about how this may be used

Screenshot 2020-06-22 at 19 01 13

Any help would be much appreciated!

  <mat-form-field>
    <mtx-select
      [items]="cities"
      bindLabel="name"
      bindValue="id"
      [multiple]="true"
      placeholder="Select reviewers"
      clearAllText="Clear"
      [formControl]="formGroup.controls.reviewerIds"
    >
    </mtx-select>
  </mat-form-field>

Scss error when including extensions/theming

Hi, I'm using angular 9.1.13 with angular material 9.2.4

I've set up this theme.scss file

@import '~@angular/material/theming';
@import '~@ng-matero/extensions/theming';

@import "palette";
@include mat-core();

$app-primary: mat-palette($md-primary);
$app-accent:  mat-palette($md-accent);

$app-warn: mat-palette($mat-red);

app-theme: mat-light-theme($app-primary, $app-accent, $app-warn);

@include angular-material-theme($app-theme);
@include material-extensions-theme($app-theme);
@include material-extensions-experimental-theme($app-theme);

When building I'm getting this error

ERROR in ./src/theme.scss (./node_modules/css-loader/dist/cjs.js??ref--14-1!./node_modules/postcss-loader/src??embedded!./node_modules/resolve-url-loader??ref--14-3!./node_modules/sass-loader/dist/cjs.js??ref--14-4!./src/theme.scss)
Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
SassError: Can't find stylesheet to import.
  ╷
3 │ @import '../../material/core/theming/check-duplicate-styles';
  │         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ╵
  node_modules/@angular/material-experimental/column-resize/_column-resize.scss 3:9  @import
  node_modules/@ng-matero/extensions/data-grid/_grid-theme.scss 2:9                  @import
  node_modules/@ng-matero/extensions/_theming.scss 4:9                               @import
  ..../src/theme.scss 2:9                                                                          root stylesheet

What am I doing wrong?

Thank you

Options button keep the focus after clicking - how to avoid the issue

When I use MtxGrid in a test project after I hit the "delete" button then it keeps the focus and it causes a problem because the user should click somewhere else to do the refresh

here is my code

columns: MtxGridColumn[] = [
  { header: 'id', field: 'id', hide: true },
  { header: 'Phone', field: 'clntPhone' },
  { header: 'Mobile', field: 'clntMobile' },
  {
    header: 'Option',
    field: 'option',
    width: '120px',
    pinned: 'right',
    right: '0px',
    type: 'button',
    buttons: [
      {
        icon: 'edit',
        tooltip: 'Edit',
        type: 'icon',   
        click: record => this.edit(record),
      },
      {
        icon: 'delete',
        tooltip: 'Delete',
        color: 'warn',
        type: 'icon',
        pop: true,
        popTitle: 'Would You like to delete?',
        click: record => this.delete(record),
      },
    ],
  },
];

delete(value: any) {

  this.mtxDialog.alert(`You have deleted ${value.id}!`);
  this.dbService.delete( value.id)
  .subscribe(() => {
         
         //---- For refresh data inside grid after delete 
           this.dataSourceMGX.splice(this.dataSourceMGX.findIndex(p => p.id ===  value.id), 1);
           this.dataSourceMGX = [...this.dataSourceMGX];          
       
      }, (error) => {   
      this.toastr.error(error.errorMessage);          
    });     
}`

Error1

so is there any way to force the button ( delete button) to lose the focus? or
do refresh data source after deleting?

thanks

add a null value into mtx-select

I'm added item into [items] with null value, then select it and click outside it became:

image
with mat-select, when select null value, it will back to normal
sorry for my bad English
please help me !

Merge row table in mtx-grid

I want merge multiple row in mtx-grid. Like the image below:

image

How to add properties rowspan in table in mtx-grid?

Please help me!

DataGrid Grouping

Hello,

i'm quite new to your framework but very excited. I searched a lot of time for a quite good datagrid which is not commercial. So i found yours, very good.

I've 1 questions about...

  • do you plan row grouping like one customer has many invoices and only display customer once and then only the invoices, perhaps with an aggregate sum etc.

Thanks in advance.

Sort in custom header

Hi, is there some way to use the built in sort features in a custom header template?

Tnks to all

translation or custom text for mtx-dialog confirm()

confirm() of MtxDialog has hardcoded 'OK' and 'CLOSE' for the onClose() and onOK() buttons.
The dialog is used in the custom buttons column of mtx-grid.
It would be nice if those texts can be translated with i18n or at least customized in the MtxGridColumnButton interface

关于 Data Grid 的 multiple 模式

“you can press ctrl/command + click or select checkboxs to choose multiple row.”

请问,是否存在一个属性,可以让我直接点击行来实现多选,目前的情况是,点击行会清除掉已选择的所有行,并单独选中点击行,这似乎不符合一般用户的操作习惯,是我的配置有错误么?

[rowSelectable]="true"
[rowSelected]="rowSelected"
[multiSelectable]="true"
[cellSelectable] = "false"

劳烦您给予解答,谢谢

Supply default theme

The startup guide mentions using the following import and includes to style components:

@import '~@ng-matero/extensions/theming';

@include material-extensions-theme($theme);
@include material-extensions-experimental-theme($theme);

However I am using a default Angular theme in my angular.json file as follows:

"styles": [
              "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css",
              "src/styles.sass"
            ],

How can I have the material extensions library use my default angular theme?
Merely importing @import '~@ng-matero/extensions/theming'; is not enough to style my select elements.

Add input [trackBy] to mtx-grid

Awesome library!

I have an array of complex objects as data for my table.
I think it would be great if I can use [trackBy] so I can track them by id.
I think the implementation would be just delivering that trackBy input to the mat-table component

請問一下如何獲取gird展開按鈕點擊事件和狀態?

目前就是我需要在每行點擊keyboard_arrow_right按鈕時獲取到指定欄位某一值,再去后臺查詢相關數據,然后把新查詢的結果顯示在展開的template中。

所以我想能否在expandable=true的時候,獲取到該展開合并的按鈕事件去觸發查詢和顯示,煩請指導,謝謝。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.