@tcn/ui-table 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cell.css +1 -0
- package/dist/cell.module-WpHnQBVu.js +5 -0
- package/dist/cell.module-WpHnQBVu.js.map +1 -0
- package/dist/components/cells/data_cell.d.ts +3 -2
- package/dist/components/cells/data_cell.d.ts.map +1 -0
- package/dist/components/cells/data_cell.js +18 -10
- package/dist/components/cells/data_cell.js.map +1 -1
- package/dist/components/cells/footer_cell.d.ts +3 -2
- package/dist/components/cells/footer_cell.d.ts.map +1 -0
- package/dist/components/cells/footer_cell.js +18 -10
- package/dist/components/cells/footer_cell.js.map +1 -1
- package/dist/components/cells/header_cell.d.ts +3 -2
- package/dist/components/cells/header_cell.d.ts.map +1 -0
- package/dist/components/cells/header_cell.js +52 -18
- package/dist/components/cells/header_cell.js.map +1 -1
- package/dist/components/cells/sticky_row_data_cell.d.ts +3 -2
- package/dist/components/cells/sticky_row_data_cell.d.ts.map +1 -0
- package/dist/components/cells/sticky_row_data_cell.js +26 -11
- package/dist/components/cells/sticky_row_data_cell.js.map +1 -1
- package/dist/components/cells/sticky_row_fill_cell.d.ts +2 -2
- package/dist/components/cells/sticky_row_fill_cell.d.ts.map +1 -0
- package/dist/components/cells/sticky_row_fill_cell.js +15 -5
- package/dist/components/cells/sticky_row_fill_cell.js.map +1 -1
- package/dist/components/global_search.d.ts +2 -2
- package/dist/components/global_search.d.ts.map +1 -0
- package/dist/components/global_search.js +26 -9
- package/dist/components/global_search.js.map +1 -1
- package/dist/components/global_search_presenter.d.ts +2 -1
- package/dist/components/global_search_presenter.d.ts.map +1 -0
- package/dist/components/global_search_presenter.js +20 -18
- package/dist/components/global_search_presenter.js.map +1 -1
- package/dist/components/table/table.d.ts +3 -2
- package/dist/components/table/table.d.ts.map +1 -0
- package/dist/components/table/table.js +140 -77
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/table/table_column.d.ts +1 -1
- package/dist/components/table/table_column.d.ts.map +1 -0
- package/dist/components/table/table_column.js +6 -5
- package/dist/components/table/table_column.js.map +1 -1
- package/dist/components/table/table_presenter.d.ts +3 -2
- package/dist/components/table/table_presenter.d.ts.map +1 -0
- package/dist/components/table/table_presenter.js +45 -62
- package/dist/components/table/table_presenter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/date_field_filter.d.ts +2 -2
- package/dist/components/table_filter_panel/field_filters/date_field_filter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/date_field_filter.js +59 -33
- package/dist/components/table_filter_panel/field_filters/date_field_filter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.d.ts +4 -3
- package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.js +57 -91
- package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/field_filter_props.d.ts +1 -0
- package/dist/components/table_filter_panel/field_filters/field_filter_props.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/field_filter_strategy.d.ts +1 -0
- package/dist/components/table_filter_panel/field_filters/field_filter_strategy.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/mulit_select_field_filter.d.ts +3 -3
- package/dist/components/table_filter_panel/field_filters/mulit_select_field_filter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/mulit_select_field_filter.js +52 -29
- package/dist/components/table_filter_panel/field_filters/mulit_select_field_filter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.d.ts +3 -2
- package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.js +53 -70
- package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/number_field_filter.d.ts +3 -3
- package/dist/components/table_filter_panel/field_filters/number_field_filter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/number_field_filter.js +47 -23
- package/dist/components/table_filter_panel/field_filters/number_field_filter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.d.ts +5 -4
- package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.js +53 -58
- package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter.d.ts +2 -2
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter.js +61 -31
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.d.ts +4 -3
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.js +57 -91
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/select_field_filter.d.ts +3 -3
- package/dist/components/table_filter_panel/field_filters/select_field_filter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/select_field_filter.js +49 -24
- package/dist/components/table_filter_panel/field_filters/select_field_filter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.d.ts +3 -2
- package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.js +49 -53
- package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/string_field_filter.d.ts +3 -3
- package/dist/components/table_filter_panel/field_filters/string_field_filter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/string_field_filter.js +62 -33
- package/dist/components/table_filter_panel/field_filters/string_field_filter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.d.ts +5 -4
- package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.js +54 -59
- package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.js.map +1 -1
- package/dist/components/table_filter_panel/field_filters/use_field_filter_strategy.d.ts +2 -1
- package/dist/components/table_filter_panel/field_filters/use_field_filter_strategy.d.ts.map +1 -0
- package/dist/components/table_filter_panel/field_filters/use_field_filter_strategy.js +13 -19
- package/dist/components/table_filter_panel/field_filters/use_field_filter_strategy.js.map +1 -1
- package/dist/components/table_filter_panel/table_filter_panel.d.ts +5 -4
- package/dist/components/table_filter_panel/table_filter_panel.d.ts.map +1 -0
- package/dist/components/table_filter_panel/table_filter_panel.js +15 -11
- package/dist/components/table_filter_panel/table_filter_panel.js.map +1 -1
- package/dist/components/table_filter_panel/table_filter_panel_presenter.d.ts +2 -2
- package/dist/components/table_filter_panel/table_filter_panel_presenter.d.ts.map +1 -0
- package/dist/components/table_filter_panel/table_filter_panel_presenter.js +45 -62
- package/dist/components/table_filter_panel/table_filter_panel_presenter.js.map +1 -1
- package/dist/components/table_filter_panel/types.d.ts +1 -0
- package/dist/components/table_filter_panel/types.d.ts.map +1 -0
- package/dist/components/table_filter_panel/types.js +5 -2
- package/dist/components/table_filter_panel/types.js.map +1 -1
- package/dist/components/table_pager.d.ts +2 -2
- package/dist/components/table_pager.d.ts.map +1 -0
- package/dist/components/table_pager.js +22 -20
- package/dist/components/table_pager.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -13
- package/dist/index.js.map +1 -1
- package/dist/table.css +1 -0
- package/dist/table_pager.css +1 -0
- package/package.json +61 -61
- package/src/__stories__/aip_table.stories.tsx +190 -0
- package/src/__stories__/auth_provider.tsx +14 -0
- package/src/__stories__/demo.stories.tsx +137 -0
- package/src/__stories__/sample_data.ts +1398 -0
- package/src/__stories__/table.stories.tsx +423 -0
- package/src/__tests__/sanity.test.ts +7 -0
- package/src/components/cells/data_cell.tsx +25 -0
- package/src/components/cells/footer_cell.tsx +25 -0
- package/src/components/cells/header_cell.tsx +77 -0
- package/src/components/cells/sticky_row_data_cell.tsx +31 -0
- package/src/components/cells/sticky_row_fill_cell.tsx +16 -0
- package/src/components/global_search.tsx +33 -0
- package/src/components/global_search_presenter.ts +24 -0
- package/{dist → src}/components/table/table.module.css +3 -2
- package/src/components/table/table.tsx +183 -0
- package/src/components/table/table_column.tsx +27 -0
- package/src/components/table/table_presenter.test.ts +161 -0
- package/src/components/table/table_presenter.ts +103 -0
- package/src/components/table_filter_panel/field_filters/date_field_filter.tsx +70 -0
- package/src/components/table_filter_panel/field_filters/date_field_filter_presenter.test.ts +583 -0
- package/src/components/table_filter_panel/field_filters/date_field_filter_presenter.ts +110 -0
- package/src/components/table_filter_panel/field_filters/field_filter_props.ts +5 -0
- package/src/components/table_filter_panel/field_filters/field_filter_strategy.ts +14 -0
- package/src/components/table_filter_panel/field_filters/mulit_select_field_filter.tsx +68 -0
- package/src/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.ts +444 -0
- package/src/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.ts +90 -0
- package/src/components/table_filter_panel/field_filters/number_field_filter.tsx +53 -0
- package/src/components/table_filter_panel/field_filters/number_field_filter_presenter.test.ts +431 -0
- package/src/components/table_filter_panel/field_filters/number_field_filter_presenter.ts +80 -0
- package/src/components/table_filter_panel/field_filters/number_range_field_filter.tsx +68 -0
- package/src/components/table_filter_panel/field_filters/number_range_field_filter_presenter.test.ts +582 -0
- package/src/components/table_filter_panel/field_filters/number_range_field_filter_presenter.ts +110 -0
- package/src/components/table_filter_panel/field_filters/select_field_filter.tsx +57 -0
- package/src/components/table_filter_panel/field_filters/select_field_filter_presenter.test.ts +365 -0
- package/src/components/table_filter_panel/field_filters/select_field_filter_presenter.ts +74 -0
- package/src/components/table_filter_panel/field_filters/string_field_filter.tsx +70 -0
- package/src/components/table_filter_panel/field_filters/string_field_filter_presenter.test.ts +296 -0
- package/src/components/table_filter_panel/field_filters/string_field_filter_presenter.ts +81 -0
- package/src/components/table_filter_panel/field_filters/use_field_filter_strategy.tsx +30 -0
- package/src/components/table_filter_panel/table_filter_panel.stories.tsx +46 -0
- package/src/components/table_filter_panel/table_filter_panel.tsx +26 -0
- package/src/components/table_filter_panel/table_filter_panel_presenter.ts +77 -0
- package/src/components/table_filter_panel/types.ts +3 -0
- package/src/components/table_pager.tsx +39 -0
- package/src/index.ts +16 -0
- package/tsconfig.json +36 -0
- package/types/file_types.d.ts +54 -0
- package/types/react_color.d.ts +61 -0
- package/dist/__stories__/aip_table.stories.d.ts +0 -5
- package/dist/__stories__/aip_table.stories.js +0 -96
- package/dist/__stories__/aip_table.stories.js.map +0 -1
- package/dist/__stories__/auth_provider.d.ts +0 -4
- package/dist/__stories__/auth_provider.js +0 -10
- package/dist/__stories__/auth_provider.js.map +0 -1
- package/dist/__stories__/demo.stories.d.ts +0 -6
- package/dist/__stories__/demo.stories.js +0 -94
- package/dist/__stories__/demo.stories.js.map +0 -1
- package/dist/__stories__/sample_data.d.ts +0 -36
- package/dist/__stories__/sample_data.js +0 -1385
- package/dist/__stories__/sample_data.js.map +0 -1
- package/dist/__stories__/table.stories.d.ts +0 -12
- package/dist/__stories__/table.stories.js +0 -272
- package/dist/__stories__/table.stories.js.map +0 -1
- package/dist/components/table/table_presenter.test.d.ts +0 -1
- package/dist/components/table/table_presenter.test.js +0 -125
- package/dist/components/table/table_presenter.test.js.map +0 -1
- package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.test.d.ts +0 -1
- package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.test.js +0 -434
- package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.test.js.map +0 -1
- package/dist/components/table_filter_panel/field_filters/field_filter_props.js +0 -2
- package/dist/components/table_filter_panel/field_filters/field_filter_props.js.map +0 -1
- package/dist/components/table_filter_panel/field_filters/field_filter_strategy.js +0 -2
- package/dist/components/table_filter_panel/field_filters/field_filter_strategy.js.map +0 -1
- package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.d.ts +0 -1
- package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.js +0 -332
- package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.js.map +0 -1
- package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.test.d.ts +0 -1
- package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.test.js +0 -347
- package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.test.js.map +0 -1
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.test.d.ts +0 -1
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.test.js +0 -452
- package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.test.js.map +0 -1
- package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.test.d.ts +0 -1
- package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.test.js +0 -285
- package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.test.js.map +0 -1
- package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.test.d.ts +0 -1
- package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.test.js +0 -232
- package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.test.js.map +0 -1
- package/dist/components/table_filter_panel/table_filter_panel.stories.d.ts +0 -6
- package/dist/components/table_filter_panel/table_filter_panel.stories.js +0 -25
- package/dist/components/table_filter_panel/table_filter_panel.stories.js.map +0 -1
- /package/{dist → src}/__stories__/table.module.css +0 -0
- /package/{dist → src}/components/cells/cell.module.css +0 -0
- /package/{dist → src}/components/table_pager.module.css +0 -0
package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number_range_field_filter_presenter.js","
|
|
1
|
+
{"version":3,"file":"number_range_field_filter_presenter.js","sources":["../../../../src/components/table_filter_panel/field_filters/number_range_field_filter_presenter.ts"],"sourcesContent":["import { Signal } from '@tcn/state';\nimport { Node } from 'clarity-pattern-parser';\nimport { FieldFilterRegistry, FieldFilterStrategy } from './field_filter_strategy.js';\n\nexport class NumberRangeFieldFilterPresenter implements FieldFilterStrategy {\n private _fieldName: string;\n private _fieldFilterRegistry: FieldFilterRegistry | null = null;\n private _minValue = new Signal<number | null>(null);\n private _maxValue = new Signal<number | null>(null);\n private _onChangeHandlers = new Set<() => void>();\n\n private _broadcasts = {\n minValue: this._minValue.broadcast,\n maxValue: this._maxValue.broadcast,\n };\n\n constructor(fieldName: string) {\n this._fieldName = fieldName;\n }\n\n get broadcasts() {\n return this._broadcasts;\n }\n\n getFilterString() {\n const minValue = this._minValue.get();\n const maxValue = this._maxValue.get();\n if (minValue !== null && maxValue !== null) {\n return `(${this._fieldName} >= ${minValue} AND ${this._fieldName} <= ${maxValue})`;\n } else if (minValue !== null) {\n return `${this._fieldName} >= ${minValue}`;\n } else if (maxValue !== null) {\n return `${this._fieldName} <= ${maxValue}`;\n }\n return '';\n }\n\n onChange(handler: () => void) {\n this._onChangeHandlers.add(handler);\n return () => {\n this._onChangeHandlers.delete(handler);\n };\n }\n\n setMinValue(minValue: number | null) {\n this._minValue.set(minValue);\n this._onChangeHandlers.forEach(handler => handler());\n }\n\n setMaxValue(maxValue: number | null) {\n this._maxValue.set(maxValue);\n this._onChangeHandlers.forEach(handler => handler());\n }\n\n setFieldRegistry(fieldRegistry: FieldFilterRegistry) {\n this._fieldFilterRegistry = fieldRegistry;\n fieldRegistry.registerFieldFilter(this._fieldName, this);\n }\n\n setFilterState(filterAst: Node) {\n const fieldNodes = filterAst.findAll(\n (n: Node) => n.name === 'plain-field' && n.value === this._fieldName\n );\n\n if (fieldNodes.length === 0) {\n return;\n }\n\n if (fieldNodes.length === 1) {\n const operatorNode = fieldNodes[0].parent?.children[1];\n const valueNode = fieldNodes[0].parent?.children[2];\n if (operatorNode?.value === '>=' && valueNode != null) {\n this.setMinValue(Number(valueNode?.value));\n } else if (operatorNode?.value === '<=' && valueNode != null) {\n this.setMaxValue(Number(valueNode?.value));\n }\n return;\n }\n\n if (fieldNodes.length === 2) {\n const operatorOneNode = fieldNodes[0].parent?.children[1];\n const operatorTwoNode = fieldNodes[1].parent?.children[1];\n const valueOneNode = fieldNodes[0].parent?.children[2];\n const valueTwoNode = fieldNodes[1].parent?.children[2];\n if (\n operatorOneNode?.value === '>=' &&\n operatorTwoNode?.value === '<=' &&\n valueOneNode != null &&\n valueTwoNode != null\n ) {\n this.setMinValue(Number(valueOneNode?.value));\n this.setMaxValue(Number(valueTwoNode?.value));\n } else if (\n operatorOneNode?.value === '<=' &&\n operatorTwoNode?.value === '>=' &&\n valueOneNode != null &&\n valueTwoNode != null\n ) {\n this.setMaxValue(Number(valueOneNode?.value));\n this.setMinValue(Number(valueTwoNode?.value));\n }\n }\n }\n\n dispose() {\n this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName);\n this._fieldFilterRegistry = null;\n this._onChangeHandlers.clear();\n }\n}\n"],"names":["NumberRangeFieldFilterPresenter","Signal","fieldName","minValue","maxValue","handler","fieldRegistry","filterAst","fieldNodes","n","operatorNode","valueNode","operatorOneNode","operatorTwoNode","valueOneNode","valueTwoNode"],"mappings":";AAIO,MAAMA,EAA+D;AAAA,EAClE;AAAA,EACA,uBAAmD;AAAA,EACnD,YAAY,IAAIC,EAAsB,IAAI;AAAA,EAC1C,YAAY,IAAIA,EAAsB,IAAI;AAAA,EAC1C,wCAAwB,IAAA;AAAA,EAExB,cAAc;AAAA,IACpB,UAAU,KAAK,UAAU;AAAA,IACzB,UAAU,KAAK,UAAU;AAAA,EAAA;AAAA,EAG3B,YAAYC,GAAmB;AAC7B,SAAK,aAAaA;AAAA,EACpB;AAAA,EAEA,IAAI,aAAa;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,kBAAkB;AAChB,UAAMC,IAAW,KAAK,UAAU,IAAA,GAC1BC,IAAW,KAAK,UAAU,IAAA;AAChC,WAAID,MAAa,QAAQC,MAAa,OAC7B,IAAI,KAAK,UAAU,OAAOD,CAAQ,QAAQ,KAAK,UAAU,OAAOC,CAAQ,MACtED,MAAa,OACf,GAAG,KAAK,UAAU,OAAOA,CAAQ,KAC/BC,MAAa,OACf,GAAG,KAAK,UAAU,OAAOA,CAAQ,KAEnC;AAAA,EACT;AAAA,EAEA,SAASC,GAAqB;AAC5B,gBAAK,kBAAkB,IAAIA,CAAO,GAC3B,MAAM;AACX,WAAK,kBAAkB,OAAOA,CAAO;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,YAAYF,GAAyB;AACnC,SAAK,UAAU,IAAIA,CAAQ,GAC3B,KAAK,kBAAkB,QAAQ,CAAAE,MAAWA,EAAA,CAAS;AAAA,EACrD;AAAA,EAEA,YAAYD,GAAyB;AACnC,SAAK,UAAU,IAAIA,CAAQ,GAC3B,KAAK,kBAAkB,QAAQ,CAAAC,MAAWA,EAAA,CAAS;AAAA,EACrD;AAAA,EAEA,iBAAiBC,GAAoC;AACnD,SAAK,uBAAuBA,GAC5BA,EAAc,oBAAoB,KAAK,YAAY,IAAI;AAAA,EACzD;AAAA,EAEA,eAAeC,GAAiB;AAC9B,UAAMC,IAAaD,EAAU;AAAA,MAC3B,CAACE,MAAYA,EAAE,SAAS,iBAAiBA,EAAE,UAAU,KAAK;AAAA,IAAA;AAG5D,QAAID,EAAW,WAAW,GAI1B;AAAA,UAAIA,EAAW,WAAW,GAAG;AAC3B,cAAME,IAAeF,EAAW,CAAC,EAAE,QAAQ,SAAS,CAAC,GAC/CG,IAAYH,EAAW,CAAC,EAAE,QAAQ,SAAS,CAAC;AAClD,QAAIE,GAAc,UAAU,QAAQC,KAAa,OAC/C,KAAK,YAAY,OAAOA,GAAW,KAAK,CAAC,IAChCD,GAAc,UAAU,QAAQC,KAAa,QACtD,KAAK,YAAY,OAAOA,GAAW,KAAK,CAAC;AAE3C;AAAA,MACF;AAEA,UAAIH,EAAW,WAAW,GAAG;AAC3B,cAAMI,IAAkBJ,EAAW,CAAC,EAAE,QAAQ,SAAS,CAAC,GAClDK,IAAkBL,EAAW,CAAC,EAAE,QAAQ,SAAS,CAAC,GAClDM,IAAeN,EAAW,CAAC,EAAE,QAAQ,SAAS,CAAC,GAC/CO,IAAeP,EAAW,CAAC,EAAE,QAAQ,SAAS,CAAC;AACrD,QACEI,GAAiB,UAAU,QAC3BC,GAAiB,UAAU,QAC3BC,KAAgB,QAChBC,KAAgB,QAEhB,KAAK,YAAY,OAAOD,GAAc,KAAK,CAAC,GAC5C,KAAK,YAAY,OAAOC,GAAc,KAAK,CAAC,KAE5CH,GAAiB,UAAU,QAC3BC,GAAiB,UAAU,QAC3BC,KAAgB,QAChBC,KAAgB,SAEhB,KAAK,YAAY,OAAOD,GAAc,KAAK,CAAC,GAC5C,KAAK,YAAY,OAAOC,GAAc,KAAK,CAAC;AAAA,MAEhD;AAAA;AAAA,EACF;AAAA,EAEA,UAAU;AACR,SAAK,sBAAsB,sBAAsB,KAAK,UAAU,GAChE,KAAK,uBAAuB,MAC5B,KAAK,kBAAkB,MAAA;AAAA,EACzB;AACF;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { FieldFilterProps } from "./field_filter_props.js";
|
|
1
|
+
import { FieldFilterProps } from './field_filter_props.js';
|
|
3
2
|
export type SelectFieldFilterProps = FieldFilterProps & {
|
|
4
3
|
options: {
|
|
5
4
|
label: string;
|
|
6
5
|
value: string | boolean | number;
|
|
7
6
|
}[];
|
|
8
7
|
};
|
|
9
|
-
export declare function SelectFieldFilter({ fieldName, label, options }: SelectFieldFilterProps):
|
|
8
|
+
export declare function SelectFieldFilter({ fieldName, label, options }: SelectFieldFilterProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=select_field_filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select_field_filter.d.ts","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/select_field_filter.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAI3D,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG;IACtD,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;KAAE,EAAE,CAAC;CAChE,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,sBAAsB,2CAwCtF"}
|
|
@@ -1,25 +1,50 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { CrossCircleIcon } from
|
|
3
|
-
import { useSignalValue } from
|
|
4
|
-
import { Button } from
|
|
5
|
-
import {
|
|
6
|
-
import { Box, HStack
|
|
7
|
-
import { Title } from
|
|
8
|
-
import { SelectFieldFilterPresenter } from "./select_field_filter_presenter.js";
|
|
9
|
-
import { useFieldFilterStrategy } from "./use_field_filter_strategy.js";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
import { jsxs as i, jsx as l } from "react/jsx-runtime";
|
|
2
|
+
import { CrossCircleIcon as d } from "@tcn/icons/cross_circle_icon.js";
|
|
3
|
+
import { useSignalValue as s } from "@tcn/state";
|
|
4
|
+
import { Button as f } from "@tcn/ui/actions";
|
|
5
|
+
import { Select as h, Option as p } from "@tcn/ui/inputs";
|
|
6
|
+
import { VStack as b, Box as v, HStack as S } from "@tcn/ui/stacks";
|
|
7
|
+
import { Title as x } from "@tcn/ui/typography";
|
|
8
|
+
import { SelectFieldFilterPresenter as F } from "./select_field_filter_presenter.js";
|
|
9
|
+
import { useFieldFilterStrategy as g } from "./use_field_filter_strategy.js";
|
|
10
|
+
function I({ fieldName: n, label: o, options: r }) {
|
|
11
|
+
const t = g(F, n), a = s(t.broadcasts.value), c = r.find((e) => e.value === a)?.label ?? "";
|
|
12
|
+
return /* @__PURE__ */ i(b, { gap: "4px", children: [
|
|
13
|
+
/* @__PURE__ */ l(v, { width: "flex", children: /* @__PURE__ */ l(x, { size: "md", children: o }) }),
|
|
14
|
+
/* @__PURE__ */ i(S, { children: [
|
|
15
|
+
/* @__PURE__ */ l(
|
|
16
|
+
h,
|
|
17
|
+
{
|
|
18
|
+
value: c,
|
|
19
|
+
onChange: (e) => {
|
|
20
|
+
const m = r.find((u) => u.label === e)?.value;
|
|
21
|
+
t.setValue(m ?? null);
|
|
22
|
+
},
|
|
23
|
+
width: "flex",
|
|
24
|
+
children: r.map((e) => /* @__PURE__ */ l(
|
|
25
|
+
p,
|
|
26
|
+
{
|
|
27
|
+
value: e.label,
|
|
28
|
+
label: e.label,
|
|
29
|
+
children: e.label
|
|
30
|
+
},
|
|
31
|
+
e.value.toString()
|
|
32
|
+
))
|
|
33
|
+
}
|
|
34
|
+
),
|
|
35
|
+
/* @__PURE__ */ l(
|
|
36
|
+
f,
|
|
37
|
+
{
|
|
38
|
+
onClick: () => t.setValue(null),
|
|
39
|
+
hierarchy: "tertiary",
|
|
40
|
+
disabled: a == null,
|
|
41
|
+
children: /* @__PURE__ */ l(d, {})
|
|
42
|
+
}
|
|
43
|
+
)
|
|
44
|
+
] })
|
|
45
|
+
] });
|
|
24
46
|
}
|
|
25
|
-
|
|
47
|
+
export {
|
|
48
|
+
I as SelectFieldFilter
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=select_field_filter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select_field_filter.js","
|
|
1
|
+
{"version":3,"file":"select_field_filter.js","sources":["../../../../src/components/table_filter_panel/field_filters/select_field_filter.tsx"],"sourcesContent":["import React from 'react';\n\nimport { CrossCircleIcon } from '@tcn/icons/cross_circle_icon.js';\nimport { useSignalValue } from '@tcn/state';\nimport { Button } from '@tcn/ui/actions';\nimport { Option, Select } from '@tcn/ui/inputs';\nimport { Box, HStack, VStack } from '@tcn/ui/stacks';\nimport { Title } from '@tcn/ui/typography';\nimport { FieldFilterProps } from './field_filter_props.js';\nimport { SelectFieldFilterPresenter } from './select_field_filter_presenter.js';\nimport { useFieldFilterStrategy } from './use_field_filter_strategy.js';\n\nexport type SelectFieldFilterProps = FieldFilterProps & {\n options: { label: string; value: string | boolean | number }[];\n};\n\nexport function SelectFieldFilter({ fieldName, label, options }: SelectFieldFilterProps) {\n const presenter = useFieldFilterStrategy(SelectFieldFilterPresenter, fieldName);\n\n const value = useSignalValue(presenter.broadcasts.value);\n const valueLabel = options.find(option => option.value === value)?.label ?? '';\n\n return (\n <VStack gap=\"4px\">\n <Box width=\"flex\">\n <Title size=\"md\">{label}</Title>\n </Box>\n <HStack>\n <Select\n value={valueLabel}\n onChange={value => {\n const realValue = options.find(option => option.label === value)?.value;\n presenter.setValue(realValue ?? null);\n }}\n width=\"flex\"\n >\n {options.map(option => (\n <Option\n key={option.value.toString()}\n value={option.label}\n label={option.label}\n >\n {option.label}\n </Option>\n ))}\n </Select>\n <Button\n onClick={() => presenter.setValue(null)}\n hierarchy=\"tertiary\"\n disabled={value == null}\n >\n <CrossCircleIcon />\n </Button>\n </HStack>\n </VStack>\n );\n}\n"],"names":["SelectFieldFilter","fieldName","label","options","presenter","useFieldFilterStrategy","SelectFieldFilterPresenter","value","useSignalValue","valueLabel","option","jsxs","VStack","jsx","Box","Title","HStack","Select","realValue","Option","Button","CrossCircleIcon"],"mappings":";;;;;;;;;AAgBO,SAASA,EAAkB,EAAE,WAAAC,GAAW,OAAAC,GAAO,SAAAC,KAAmC;AACvF,QAAMC,IAAYC,EAAuBC,GAA4BL,CAAS,GAExEM,IAAQC,EAAeJ,EAAU,WAAW,KAAK,GACjDK,IAAaN,EAAQ,KAAK,CAAAO,MAAUA,EAAO,UAAUH,CAAK,GAAG,SAAS;AAE5E,SACE,gBAAAI,EAACC,GAAA,EAAO,KAAI,OACV,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAI,OAAM,QACT,UAAA,gBAAAD,EAACE,KAAM,MAAK,MAAM,aAAM,EAAA,CAC1B;AAAA,sBACCC,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAH;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,OAAOR;AAAA,UACP,UAAU,CAAAF,MAAS;AACjB,kBAAMW,IAAYf,EAAQ,KAAK,OAAUO,EAAO,UAAUH,CAAK,GAAG;AAClE,YAAAH,EAAU,SAASc,KAAa,IAAI;AAAA,UACtC;AAAA,UACA,OAAM;AAAA,UAEL,UAAAf,EAAQ,IAAI,CAAAO,MACX,gBAAAG;AAAA,YAACM;AAAA,YAAA;AAAA,cAEC,OAAOT,EAAO;AAAA,cACd,OAAOA,EAAO;AAAA,cAEb,UAAAA,EAAO;AAAA,YAAA;AAAA,YAJHA,EAAO,MAAM,SAAA;AAAA,UAAS,CAM9B;AAAA,QAAA;AAAA,MAAA;AAAA,MAEH,gBAAAG;AAAA,QAACO;AAAA,QAAA;AAAA,UACC,SAAS,MAAMhB,EAAU,SAAS,IAAI;AAAA,UACtC,WAAU;AAAA,UACV,UAAUG,KAAS;AAAA,UAEnB,4BAACc,GAAA,CAAA,CAAgB;AAAA,QAAA;AAAA,MAAA;AAAA,IACnB,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Node } from 'clarity-pattern-parser';
|
|
2
|
-
import { FieldFilterRegistry, FieldFilterStrategy } from
|
|
2
|
+
import { FieldFilterRegistry, FieldFilterStrategy } from './field_filter_strategy.js';
|
|
3
3
|
export declare class SelectFieldFilterPresenter implements FieldFilterStrategy {
|
|
4
4
|
private _fieldName;
|
|
5
5
|
private _value;
|
|
@@ -8,7 +8,7 @@ export declare class SelectFieldFilterPresenter implements FieldFilterStrategy {
|
|
|
8
8
|
private _broadcasts;
|
|
9
9
|
constructor(fieldName: string);
|
|
10
10
|
get broadcasts(): {
|
|
11
|
-
value: import(
|
|
11
|
+
value: import('@tcn/state').IBroadcast<string | number | boolean | null>;
|
|
12
12
|
};
|
|
13
13
|
setValue(value: string | boolean | number | null): void;
|
|
14
14
|
onChange(handler: () => void): () => void;
|
|
@@ -17,3 +17,4 @@ export declare class SelectFieldFilterPresenter implements FieldFilterStrategy {
|
|
|
17
17
|
setFilterState(filterAst: Node): void;
|
|
18
18
|
dispose(): void;
|
|
19
19
|
}
|
|
20
|
+
//# sourceMappingURL=select_field_filter_presenter.d.ts.map
|
package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select_field_filter_presenter.d.ts","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/select_field_filter_presenter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtF,qBAAa,0BAA2B,YAAW,mBAAmB;IACpE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAsD;IACpE,OAAO,CAAC,oBAAoB,CAAoC;IAChE,OAAO,CAAC,iBAAiB,CAAyB;IAElD,OAAO,CAAC,WAAW,CAEjB;gBAEU,SAAS,EAAE,MAAM;IAI7B,IAAI,UAAU;;MAEb;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI;IAKhD,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI;IAO5B,gBAAgB,CAAC,aAAa,EAAE,mBAAmB;IAKnD,eAAe;IAWf,cAAc,CAAC,SAAS,EAAE,IAAI;IAmB9B,OAAO;CAIR"}
|
|
@@ -1,55 +1,51 @@
|
|
|
1
|
-
import { Signal } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { Signal as a } from "@tcn/state";
|
|
2
|
+
class u {
|
|
3
|
+
_fieldName;
|
|
4
|
+
_value = new a(null);
|
|
5
|
+
_fieldFilterRegistry = null;
|
|
6
|
+
_onChangeHandlers = /* @__PURE__ */ new Set();
|
|
7
|
+
_broadcasts = {
|
|
8
|
+
value: this._value.broadcast
|
|
9
|
+
};
|
|
10
|
+
constructor(e) {
|
|
11
|
+
this._fieldName = e;
|
|
12
|
+
}
|
|
13
|
+
get broadcasts() {
|
|
14
|
+
return this._broadcasts;
|
|
15
|
+
}
|
|
16
|
+
setValue(e) {
|
|
17
|
+
this._value.set(e), this._onChangeHandlers.forEach((l) => l());
|
|
18
|
+
}
|
|
19
|
+
onChange(e) {
|
|
20
|
+
return this._onChangeHandlers.add(e), () => {
|
|
21
|
+
this._onChangeHandlers.delete(e);
|
|
9
22
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const wrappedValue = typeof this._value.get() === 'string'
|
|
35
|
-
? `"${this._value.get()}"`
|
|
36
|
-
: this._value.get();
|
|
37
|
-
return `${this._fieldName} = ${wrappedValue}`;
|
|
38
|
-
}
|
|
39
|
-
setFilterState(filterAst) {
|
|
40
|
-
const fieldNodes = filterAst.findAll(n => n.name === 'plain-field' && n.value === this._fieldName);
|
|
41
|
-
const fieldNode = fieldNodes.filter(n => n.parent !== null && n.parent.name === 'infix-expression')[0];
|
|
42
|
-
if (fieldNode == null) {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
const parent = fieldNode.parent;
|
|
46
|
-
const valueNode = parent.children[2];
|
|
47
|
-
const value = valueNode.value;
|
|
48
|
-
this._value.set(value.slice(1, -1));
|
|
49
|
-
}
|
|
50
|
-
dispose() {
|
|
51
|
-
this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName);
|
|
52
|
-
this._onChangeHandlers.clear();
|
|
53
|
-
}
|
|
23
|
+
}
|
|
24
|
+
setFieldRegistry(e) {
|
|
25
|
+
this._fieldFilterRegistry = e, e.registerFieldFilter(this._fieldName, this);
|
|
26
|
+
}
|
|
27
|
+
getFilterString() {
|
|
28
|
+
if (this._value.get() === null)
|
|
29
|
+
return "";
|
|
30
|
+
const e = typeof this._value.get() == "string" ? `"${this._value.get()}"` : this._value.get();
|
|
31
|
+
return `${this._fieldName} = ${e}`;
|
|
32
|
+
}
|
|
33
|
+
setFilterState(e) {
|
|
34
|
+
const i = e.findAll(
|
|
35
|
+
(t) => t.name === "plain-field" && t.value === this._fieldName
|
|
36
|
+
).filter(
|
|
37
|
+
(t) => t.parent !== null && t.parent.name === "infix-expression"
|
|
38
|
+
)[0];
|
|
39
|
+
if (i == null)
|
|
40
|
+
return;
|
|
41
|
+
const s = i.parent.children[2].value;
|
|
42
|
+
this._value.set(s.slice(1, -1));
|
|
43
|
+
}
|
|
44
|
+
dispose() {
|
|
45
|
+
this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName), this._onChangeHandlers.clear();
|
|
46
|
+
}
|
|
54
47
|
}
|
|
55
|
-
|
|
48
|
+
export {
|
|
49
|
+
u as SelectFieldFilterPresenter
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=select_field_filter_presenter.js.map
|
package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select_field_filter_presenter.js","
|
|
1
|
+
{"version":3,"file":"select_field_filter_presenter.js","sources":["../../../../src/components/table_filter_panel/field_filters/select_field_filter_presenter.ts"],"sourcesContent":["import { Signal } from '@tcn/state';\nimport { Node } from 'clarity-pattern-parser';\nimport { FieldFilterRegistry, FieldFilterStrategy } from './field_filter_strategy.js';\n\nexport class SelectFieldFilterPresenter implements FieldFilterStrategy {\n private _fieldName: string;\n private _value = new Signal<string | boolean | number | null>(null);\n private _fieldFilterRegistry: FieldFilterRegistry | null = null;\n private _onChangeHandlers = new Set<() => void>();\n\n private _broadcasts = {\n value: this._value.broadcast,\n };\n\n constructor(fieldName: string) {\n this._fieldName = fieldName;\n }\n\n get broadcasts() {\n return this._broadcasts;\n }\n\n setValue(value: string | boolean | number | null) {\n this._value.set(value);\n this._onChangeHandlers.forEach(handler => handler());\n }\n\n onChange(handler: () => void) {\n this._onChangeHandlers.add(handler);\n return () => {\n this._onChangeHandlers.delete(handler);\n };\n }\n\n setFieldRegistry(fieldRegistry: FieldFilterRegistry) {\n this._fieldFilterRegistry = fieldRegistry;\n fieldRegistry.registerFieldFilter(this._fieldName, this);\n }\n\n getFilterString() {\n if (this._value.get() === null) {\n return '';\n }\n const wrappedValue =\n typeof this._value.get() === 'string'\n ? `\"${this._value.get()}\"`\n : this._value.get();\n return `${this._fieldName} = ${wrappedValue}`;\n }\n\n setFilterState(filterAst: Node) {\n const fieldNodes = filterAst.findAll(\n (n: Node) => n.name === 'plain-field' && n.value === this._fieldName\n );\n\n const fieldNode = fieldNodes.filter(\n (n: Node) => n.parent !== null && n.parent.name === 'infix-expression'\n )[0];\n\n if (fieldNode == null) {\n return;\n }\n\n const parent = fieldNode.parent as Node;\n const valueNode = parent.children[2] as Node;\n const value = valueNode.value as string;\n this._value.set(value.slice(1, -1));\n }\n\n dispose() {\n this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName);\n this._onChangeHandlers.clear();\n }\n}\n"],"names":["SelectFieldFilterPresenter","Signal","fieldName","value","handler","fieldRegistry","wrappedValue","filterAst","fieldNode","n"],"mappings":";AAIO,MAAMA,EAA0D;AAAA,EAC7D;AAAA,EACA,SAAS,IAAIC,EAAyC,IAAI;AAAA,EAC1D,uBAAmD;AAAA,EACnD,wCAAwB,IAAA;AAAA,EAExB,cAAc;AAAA,IACpB,OAAO,KAAK,OAAO;AAAA,EAAA;AAAA,EAGrB,YAAYC,GAAmB;AAC7B,SAAK,aAAaA;AAAA,EACpB;AAAA,EAEA,IAAI,aAAa;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,SAASC,GAAyC;AAChD,SAAK,OAAO,IAAIA,CAAK,GACrB,KAAK,kBAAkB,QAAQ,CAAAC,MAAWA,EAAA,CAAS;AAAA,EACrD;AAAA,EAEA,SAASA,GAAqB;AAC5B,gBAAK,kBAAkB,IAAIA,CAAO,GAC3B,MAAM;AACX,WAAK,kBAAkB,OAAOA,CAAO;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,iBAAiBC,GAAoC;AACnD,SAAK,uBAAuBA,GAC5BA,EAAc,oBAAoB,KAAK,YAAY,IAAI;AAAA,EACzD;AAAA,EAEA,kBAAkB;AAChB,QAAI,KAAK,OAAO,IAAA,MAAU;AACxB,aAAO;AAET,UAAMC,IACJ,OAAO,KAAK,OAAO,SAAU,WACzB,IAAI,KAAK,OAAO,KAAK,MACrB,KAAK,OAAO,IAAA;AAClB,WAAO,GAAG,KAAK,UAAU,MAAMA,CAAY;AAAA,EAC7C;AAAA,EAEA,eAAeC,GAAiB;AAK9B,UAAMC,IAJaD,EAAU;AAAA,MAC3B,CAACE,MAAYA,EAAE,SAAS,iBAAiBA,EAAE,UAAU,KAAK;AAAA,IAAA,EAG/B;AAAA,MAC3B,CAACA,MAAYA,EAAE,WAAW,QAAQA,EAAE,OAAO,SAAS;AAAA,IAAA,EACpD,CAAC;AAEH,QAAID,KAAa;AACf;AAKF,UAAML,IAFSK,EAAU,OACA,SAAS,CAAC,EACX;AACxB,SAAK,OAAO,IAAIL,EAAM,MAAM,GAAG,EAAE,CAAC;AAAA,EACpC;AAAA,EAEA,UAAU;AACR,SAAK,sBAAsB,sBAAsB,KAAK,UAAU,GAChE,KAAK,kBAAkB,MAAA;AAAA,EACzB;AACF;"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { FieldFilterProps } from './field_filter_props.js';
|
|
2
|
+
export declare function StringFieldFilter({ fieldName, label, operators }: FieldFilterProps): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
//# sourceMappingURL=string_field_filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string_field_filter.d.ts","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/string_field_filter.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAkB3D,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,gBAAgB,2CA4ClF"}
|
|
@@ -1,35 +1,64 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import { StringFieldFilterPresenter } from "./string_field_filter_presenter.js";
|
|
9
|
-
import { useFieldFilterStrategy } from "./use_field_filter_strategy.js";
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
import { jsxs as i, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { CrossCircleIcon as m } from "@tcn/icons/cross_circle_icon.js";
|
|
3
|
+
import { useSignalValue as l } from "@tcn/state";
|
|
4
|
+
import { Button as d } from "@tcn/ui/actions";
|
|
5
|
+
import { Select as h, Option as u, Input as f } from "@tcn/ui/inputs";
|
|
6
|
+
import { VStack as x, Box as b, HStack as S } from "@tcn/ui/stacks";
|
|
7
|
+
import { Title as g } from "@tcn/ui/typography";
|
|
8
|
+
import { StringFieldFilterPresenter as v } from "./string_field_filter_presenter.js";
|
|
9
|
+
import { useFieldFilterStrategy as F } from "./use_field_filter_strategy.js";
|
|
10
|
+
const y = ["is", "isNot", "has"], C = {
|
|
11
|
+
is: "=",
|
|
12
|
+
isNot: "!=",
|
|
13
|
+
has: ":"
|
|
14
|
+
}, s = {
|
|
15
|
+
is: "is",
|
|
16
|
+
isNot: "is not",
|
|
17
|
+
has: "has"
|
|
15
18
|
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
19
|
+
function L({ fieldName: a, label: n, operators: c }) {
|
|
20
|
+
const r = F(v, a), o = l(r.broadcasts.value), p = l(r.broadcasts.operator);
|
|
21
|
+
return /* @__PURE__ */ i(x, { gap: "4px", children: [
|
|
22
|
+
/* @__PURE__ */ t(b, { width: "flex", children: /* @__PURE__ */ t(g, { size: "md", children: n }) }),
|
|
23
|
+
/* @__PURE__ */ i(S, { width: "flex", children: [
|
|
24
|
+
/* @__PURE__ */ t(
|
|
25
|
+
h,
|
|
26
|
+
{
|
|
27
|
+
value: p,
|
|
28
|
+
onChange: (e) => r.setOperator(e),
|
|
29
|
+
width: "65px",
|
|
30
|
+
children: (c || y).map((e) => /* @__PURE__ */ t(
|
|
31
|
+
u,
|
|
32
|
+
{
|
|
33
|
+
value: C[e],
|
|
34
|
+
label: s[e],
|
|
35
|
+
children: s[e]
|
|
36
|
+
},
|
|
37
|
+
e
|
|
38
|
+
))
|
|
39
|
+
}
|
|
40
|
+
),
|
|
41
|
+
/* @__PURE__ */ t(
|
|
42
|
+
f,
|
|
43
|
+
{
|
|
44
|
+
type: "text",
|
|
45
|
+
value: o ?? "",
|
|
46
|
+
onChange: (e) => r.setValue(e)
|
|
47
|
+
}
|
|
48
|
+
),
|
|
49
|
+
/* @__PURE__ */ t(
|
|
50
|
+
d,
|
|
51
|
+
{
|
|
52
|
+
onClick: () => r.setValue(null),
|
|
53
|
+
hierarchy: "tertiary",
|
|
54
|
+
disabled: o == null,
|
|
55
|
+
children: /* @__PURE__ */ t(m, {})
|
|
56
|
+
}
|
|
57
|
+
)
|
|
58
|
+
] })
|
|
59
|
+
] });
|
|
34
60
|
}
|
|
35
|
-
|
|
61
|
+
export {
|
|
62
|
+
L as StringFieldFilter
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=string_field_filter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string_field_filter.js","
|
|
1
|
+
{"version":3,"file":"string_field_filter.js","sources":["../../../../src/components/table_filter_panel/field_filters/string_field_filter.tsx"],"sourcesContent":["import { CrossCircleIcon } from '@tcn/icons/cross_circle_icon.js';\nimport { useSignalValue } from '@tcn/state';\nimport { Button } from '@tcn/ui/actions';\nimport { Input, Option, Select } from '@tcn/ui/inputs';\nimport { Box, HStack, VStack } from '@tcn/ui/stacks';\nimport { Title } from '@tcn/ui/typography';\nimport React from 'react';\nimport { FieldFilterProps } from './field_filter_props.js';\nimport { StringFieldFilterPresenter } from './string_field_filter_presenter.js';\nimport { ComparisonOperator } from '../types.js';\n\nimport { useFieldFilterStrategy } from './use_field_filter_strategy.js';\n\nconst allOperators: ('is' | 'isNot' | 'has')[] = ['is', 'isNot', 'has'];\nconst operatorSymbols: Record<'is' | 'isNot' | 'has', string> = {\n is: '=',\n isNot: '!=',\n has: ':',\n};\nconst operatorLabels: Record<'is' | 'isNot' | 'has', string> = {\n is: 'is',\n isNot: 'is not',\n has: 'has',\n};\n\nexport function StringFieldFilter({ fieldName, label, operators }: FieldFilterProps) {\n const presenter = useFieldFilterStrategy(StringFieldFilterPresenter, fieldName);\n\n const value = useSignalValue(presenter.broadcasts.value);\n const operator = useSignalValue(presenter.broadcasts.operator);\n\n const availableOperators = operators || allOperators;\n\n return (\n <VStack gap=\"4px\">\n <Box width=\"flex\">\n <Title size=\"md\">{label}</Title>\n </Box>\n <HStack width=\"flex\">\n <Select\n value={operator}\n onChange={value => presenter.setOperator(value as ComparisonOperator)}\n width=\"65px\"\n >\n {availableOperators.map(operator => (\n <Option\n key={operator}\n value={operatorSymbols[operator]}\n label={operatorLabels[operator]}\n >\n {operatorLabels[operator]}\n </Option>\n ))}\n </Select>\n <Input\n type=\"text\"\n value={value ?? ''}\n onChange={value => presenter.setValue(value)}\n />\n <Button\n onClick={() => presenter.setValue(null)}\n hierarchy=\"tertiary\"\n disabled={value == null}\n >\n <CrossCircleIcon />\n </Button>\n </HStack>\n </VStack>\n );\n}\n"],"names":["allOperators","operatorSymbols","operatorLabels","StringFieldFilter","fieldName","label","operators","presenter","useFieldFilterStrategy","StringFieldFilterPresenter","value","useSignalValue","operator","jsxs","VStack","jsx","Box","Title","HStack","Select","Option","Input","Button","CrossCircleIcon"],"mappings":";;;;;;;;;AAaA,MAAMA,IAA2C,CAAC,MAAM,SAAS,KAAK,GAChEC,IAA0D;AAAA,EAC9D,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,KAAK;AACP,GACMC,IAAyD;AAAA,EAC7D,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,KAAK;AACP;AAEO,SAASC,EAAkB,EAAE,WAAAC,GAAW,OAAAC,GAAO,WAAAC,KAA+B;AACnF,QAAMC,IAAYC,EAAuBC,GAA4BL,CAAS,GAExEM,IAAQC,EAAeJ,EAAU,WAAW,KAAK,GACjDK,IAAWD,EAAeJ,EAAU,WAAW,QAAQ;AAI7D,SACE,gBAAAM,EAACC,GAAA,EAAO,KAAI,OACV,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAI,OAAM,QACT,UAAA,gBAAAD,EAACE,KAAM,MAAK,MAAM,aAAM,EAAA,CAC1B;AAAA,IACA,gBAAAJ,EAACK,GAAA,EAAO,OAAM,QACZ,UAAA;AAAA,MAAA,gBAAAH;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,OAAOP;AAAA,UACP,UAAU,CAAAF,MAASH,EAAU,YAAYG,CAA2B;AAAA,UACpE,OAAM;AAAA,UAEL,WAbkBJ,KAAaN,GAaZ,IAAI,CAAAY,MACtB,gBAAAG;AAAA,YAACK;AAAA,YAAA;AAAA,cAEC,OAAOnB,EAAgBW,CAAQ;AAAA,cAC/B,OAAOV,EAAeU,CAAQ;AAAA,cAE7B,YAAeA,CAAQ;AAAA,YAAA;AAAA,YAJnBA;AAAAA,UAAA,CAMR;AAAA,QAAA;AAAA,MAAA;AAAA,MAEH,gBAAAG;AAAA,QAACM;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,OAAOX,KAAS;AAAA,UAChB,UAAU,CAAAA,MAASH,EAAU,SAASG,CAAK;AAAA,QAAA;AAAA,MAAA;AAAA,MAE7C,gBAAAK;AAAA,QAACO;AAAA,QAAA;AAAA,UACC,SAAS,MAAMf,EAAU,SAAS,IAAI;AAAA,UACtC,WAAU;AAAA,UACV,UAAUG,KAAS;AAAA,UAEnB,4BAACa,GAAA,CAAA,CAAgB;AAAA,QAAA;AAAA,MAAA;AAAA,IACnB,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Node } from 'clarity-pattern-parser';
|
|
2
|
-
import { FieldFilterRegistry, FieldFilterStrategy } from
|
|
3
|
-
import { ComparisonOperator } from
|
|
2
|
+
import { FieldFilterRegistry, FieldFilterStrategy } from './field_filter_strategy.js';
|
|
3
|
+
import { ComparisonOperator } from '../types.js';
|
|
4
4
|
export declare class StringFieldFilterPresenter implements FieldFilterStrategy {
|
|
5
5
|
private _fieldName;
|
|
6
6
|
private _value;
|
|
@@ -10,8 +10,8 @@ export declare class StringFieldFilterPresenter implements FieldFilterStrategy {
|
|
|
10
10
|
private _broadcasts;
|
|
11
11
|
constructor(fieldName: string);
|
|
12
12
|
get broadcasts(): {
|
|
13
|
-
value: import(
|
|
14
|
-
operator: import(
|
|
13
|
+
value: import('@tcn/state').IBroadcast<string | null>;
|
|
14
|
+
operator: import('@tcn/state').IBroadcast<ComparisonOperator>;
|
|
15
15
|
};
|
|
16
16
|
onChange(handler: () => void): () => void;
|
|
17
17
|
setFieldRegistry(fieldRegistry: FieldFilterRegistry): void;
|
|
@@ -21,3 +21,4 @@ export declare class StringFieldFilterPresenter implements FieldFilterStrategy {
|
|
|
21
21
|
setFilterState(filterAst: Node): void;
|
|
22
22
|
dispose(): void;
|
|
23
23
|
}
|
|
24
|
+
//# sourceMappingURL=string_field_filter_presenter.d.ts.map
|
package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string_field_filter_presenter.d.ts","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/string_field_filter_presenter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,qBAAa,0BAA2B,YAAW,mBAAmB;IACpE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,SAAS,CAAuC;IACxD,OAAO,CAAC,oBAAoB,CAAoC;IAChE,OAAO,CAAC,iBAAiB,CAAyB;IAElD,OAAO,CAAC,WAAW,CAGjB;gBAEU,SAAS,EAAE,MAAM;IAI7B,IAAI,UAAU;;;MAEb;IAED,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI;IAO5B,gBAAgB,CAAC,aAAa,EAAE,mBAAmB;IAKnD,eAAe;IAOf,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7B,WAAW,CAAC,QAAQ,EAAE,kBAAkB;IAKxC,cAAc,CAAC,SAAS,EAAE,IAAI;IAqB9B,OAAO;CAIR"}
|
|
@@ -1,61 +1,56 @@
|
|
|
1
|
-
import { Signal } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { Signal as i } from "@tcn/state";
|
|
2
|
+
class u {
|
|
3
|
+
_fieldName;
|
|
4
|
+
_value = new i(null);
|
|
5
|
+
_operator = new i(":");
|
|
6
|
+
_fieldFilterRegistry = null;
|
|
7
|
+
_onChangeHandlers = /* @__PURE__ */ new Set();
|
|
8
|
+
_broadcasts = {
|
|
9
|
+
value: this._value.broadcast,
|
|
10
|
+
operator: this._operator.broadcast
|
|
11
|
+
};
|
|
12
|
+
constructor(e) {
|
|
13
|
+
this._fieldName = e;
|
|
14
|
+
}
|
|
15
|
+
get broadcasts() {
|
|
16
|
+
return this._broadcasts;
|
|
17
|
+
}
|
|
18
|
+
onChange(e) {
|
|
19
|
+
return this._onChangeHandlers.add(e), () => {
|
|
20
|
+
this._onChangeHandlers.delete(e);
|
|
11
21
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
setFilterState(filterAst) {
|
|
44
|
-
const fieldNodes = filterAst.findAll(n => n.name === 'plain-field' && n.value === this._fieldName);
|
|
45
|
-
const fieldNode = fieldNodes.filter(n => n.parent !== null && n.parent.name === 'infix-expression')[0];
|
|
46
|
-
if (fieldNode == null) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
const parent = fieldNode.parent;
|
|
50
|
-
const operatorNode = parent.children[1];
|
|
51
|
-
const valueNode = parent.children[2];
|
|
52
|
-
this._operator.set(operatorNode.value);
|
|
53
|
-
const value = valueNode.value;
|
|
54
|
-
this._value.set(value.slice(1, -1));
|
|
55
|
-
}
|
|
56
|
-
dispose() {
|
|
57
|
-
this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName);
|
|
58
|
-
this._onChangeHandlers.clear();
|
|
59
|
-
}
|
|
22
|
+
}
|
|
23
|
+
setFieldRegistry(e) {
|
|
24
|
+
this._fieldFilterRegistry = e, e.registerFieldFilter(this._fieldName, this);
|
|
25
|
+
}
|
|
26
|
+
getFilterString() {
|
|
27
|
+
return this._value.get() === null ? "" : `${this._fieldName} ${this._operator.get()} "${this._value.get()}"`;
|
|
28
|
+
}
|
|
29
|
+
setValue(e) {
|
|
30
|
+
const t = e?.replace(/"/g, '\\"') ?? null;
|
|
31
|
+
this._value.set(t === "" ? null : t), this._onChangeHandlers.forEach((l) => l());
|
|
32
|
+
}
|
|
33
|
+
setOperator(e) {
|
|
34
|
+
this._operator.set(e), this._onChangeHandlers.forEach((t) => t());
|
|
35
|
+
}
|
|
36
|
+
setFilterState(e) {
|
|
37
|
+
const l = e.findAll(
|
|
38
|
+
(r) => r.name === "plain-field" && r.value === this._fieldName
|
|
39
|
+
).filter(
|
|
40
|
+
(r) => r.parent !== null && r.parent.name === "infix-expression"
|
|
41
|
+
)[0];
|
|
42
|
+
if (l == null)
|
|
43
|
+
return;
|
|
44
|
+
const s = l.parent, a = s.children[1], n = s.children[2];
|
|
45
|
+
this._operator.set(a.value);
|
|
46
|
+
const o = n.value;
|
|
47
|
+
this._value.set(o.slice(1, -1));
|
|
48
|
+
}
|
|
49
|
+
dispose() {
|
|
50
|
+
this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName), this._onChangeHandlers.clear();
|
|
51
|
+
}
|
|
60
52
|
}
|
|
61
|
-
|
|
53
|
+
export {
|
|
54
|
+
u as StringFieldFilterPresenter
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=string_field_filter_presenter.js.map
|