use ag_grid_derive::FieldSetter;
use serde::Serialize;
use serde_with::skip_serializing_none;
use wasm_bindgen::prelude::*;
use crate::Filter;
#[wasm_bindgen]
extern "C" {
pub type ColumnApi;
}
#[skip_serializing_none]
#[derive(Serialize, FieldSetter)]
#[serde(rename_all = "camelCase")]
pub struct ColumnDef {
field: Option<String>,
col_id: Option<String>,
filter: Option<Filter>,
floating_filter: Option<bool>,
sortable: Option<bool>,
}
impl ColumnDef {
pub fn new() -> Self {
Default::default()
}
}
#[cfg(test)]
mod tests {
use serde_json::{json, to_value};
use super::*;
#[test]
fn test_serialize_column_def() {
let col = ColumnDef::new()
.field("make")
.col_id("col_id")
.sortable(true)
.filter(Filter::AgDateColumnFilter)
.floating_filter(false);
let expected = json!({
"field": "make",
"colId": "col_id",
"sortable": true,
"filter": "agDateColumnFilter",
"floatingFilter": false,
});
assert_eq!(to_value(col).unwrap(), expected);
}
}