diff --git a/src/App.jsx b/src/App.jsx index af6dd1b..9337a45 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -12,6 +12,7 @@ import GroupedRowInnerRendererComponentExample from "./groupedRowInnerRendererEx import FilterComponentExample from "./filterComponentExample/FilterComponentExample"; import MasterDetailExample from "./masterDetailExample/MasterDetailExample"; import SimpleReduxExample from "./simpleReduxExample/SimpleReduxExample"; +import SimpleGridExample from "./floatingFilter/SimpleGridExample"; class App extends Component { constructor(props) { @@ -48,6 +49,7 @@ class App extends Component {
  • this.setExample("full-width")}>Full Width Renderer Example
  • this.setExample("group-row")}>Grouped Row Inner Renderer Example
  • this.setExample("filter")}>Filters Component Example
  • +
  • this.setExample("floating-filter")}>Floating Filters
  • this.setExample("master-detail")}>Master Detail Example
  • this.setExample("simple-redux")}>Simple Redux Example
  • ) @@ -82,6 +84,9 @@ class App extends Component { case 'simple-redux': example = ; break; + case 'floating-filter': + example = ; + break; default: example = ; } diff --git a/src/floatingFilter/SimpleGridExample.jsx b/src/floatingFilter/SimpleGridExample.jsx new file mode 100644 index 0000000..1e2b707 --- /dev/null +++ b/src/floatingFilter/SimpleGridExample.jsx @@ -0,0 +1,60 @@ +import React, {Component} from "react"; +import {AgGridReact} from "ag-grid-react"; +import FloatingFilter from "./floatingFilter"; + +export default class extends Component { + constructor(props) { + super(props); + + this.state = { + columnDefs: this.createColumnDefs(), + rowData: this.createRowData() + } + } + + onGridReady(params) { + this.gridApi = params.api; + this.columnApi = params.columnApi; + + this.gridApi.sizeColumnsToFit(); + } + + createColumnDefs() { + return [ + {headerName: "Make", field: "make", floatingFilterComponentFramework: FloatingFilter, filter:'set'}, + {headerName: "Model", field: "model"}, + {headerName: "Price", field: "price"} + ]; + } + + createRowData() { + return [ + {make: "Toyota", model: "Celica", price: 35000}, + {make: "Ford", model: "Mondeo", price: 32000}, + {make: "Porsche", model: "Boxter", price: 72000} + ]; + } + + render() { + let containerStyle = { + height: 115, + width: 500 + }; + + return ( +
    +

    Simple ag-Grid React Example

    + + +
    + ) + } +}; diff --git a/src/floatingFilter/floatingFilter.jsx b/src/floatingFilter/floatingFilter.jsx new file mode 100644 index 0000000..79538c7 --- /dev/null +++ b/src/floatingFilter/floatingFilter.jsx @@ -0,0 +1,39 @@ +import React, {Component} from "react"; +import ReactDOM from "react-dom"; + +export default class FloatingFilter extends Component { + constructor(props) { + super(); + this.state = { + parentModel: null + } + } + + onParentModelChanged(parentModel){ + this.setState ({ + parentModel: parentModel + }) + } + + remove(item){ + this.props.onFloatingFilterChanged({ + model:this.state.parentModel.filter(it=>it != item) + }); + } + + render() { + if (!this.state.parentModel) return null; + + let that = this; + let options = this.state.parentModel.map ((item, i)=>{ + let that = this; + let removeMeListener = ()=>{ + this.remove(item) + } + let removeMeElement = [x]; + return {item}{removeMeElement}; + }); + + return
    {options}
    ; + } +} \ No newline at end of file