@osdk/react-components 0.2.0-beta.15 → 0.2.0-beta.17
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/CHANGELOG.md +27 -0
- package/README.md +5 -3
- package/build/browser/base-components/action-button/ActionButton.module.css +0 -4
- package/build/browser/base-components/checkbox/Checkbox.module.css +0 -4
- package/build/browser/base-components/dialog/Dialog.module.css +0 -8
- package/build/browser/base-components/draggable-list/DraggableList.js +4 -2
- package/build/browser/base-components/draggable-list/DraggableList.js.map +1 -1
- package/build/browser/base-components/draggable-list/DraggableList.module.css +0 -8
- package/build/browser/base-components/tooltip/Tooltip.js +91 -0
- package/build/browser/base-components/tooltip/Tooltip.js.map +1 -0
- package/build/browser/base-components/tooltip/Tooltip.module.css +70 -0
- package/build/browser/base-components/tooltip/Tooltip.module.css.js +11 -0
- package/build/browser/base-components/tooltip/index.js +18 -0
- package/build/browser/base-components/tooltip/index.js.map +1 -0
- package/build/browser/filter-list/FilterInput.js +132 -0
- package/build/browser/filter-list/FilterInput.js.map +1 -0
- package/build/browser/filter-list/FilterList.js +91 -0
- package/build/browser/filter-list/FilterList.js.map +1 -0
- package/build/browser/filter-list/FilterListApi.js.map +1 -1
- package/build/browser/filter-list/FilterListItemApi.js.map +1 -1
- package/build/browser/filter-list/base/{FilterList.js → BaseFilterList.js} +30 -31
- package/build/browser/filter-list/base/BaseFilterList.js.map +1 -0
- package/build/browser/filter-list/base/BaseFilterListApi.js +2 -0
- package/build/browser/filter-list/base/BaseFilterListApi.js.map +1 -0
- package/build/browser/filter-list/base/FilterIcons.js +63 -0
- package/build/browser/filter-list/base/FilterIcons.js.map +1 -0
- package/build/browser/filter-list/base/FilterList.module.css +22 -1
- package/build/browser/filter-list/base/FilterList.module.css.js +2 -0
- package/build/browser/filter-list/base/FilterListContent.js +21 -20
- package/build/browser/filter-list/base/FilterListContent.js.map +1 -1
- package/build/browser/filter-list/base/FilterListHeader.js +8 -3
- package/build/browser/filter-list/base/FilterListHeader.js.map +1 -1
- package/build/browser/filter-list/base/FilterListHeader.module.css +25 -1
- package/build/browser/filter-list/base/FilterListHeader.module.css.js +3 -0
- package/build/browser/filter-list/base/FilterListItem.js +36 -17
- package/build/browser/filter-list/base/FilterListItem.js.map +1 -1
- package/build/browser/filter-list/base/FilterListItem.module.css +58 -2
- package/build/browser/filter-list/base/FilterListItem.module.css.js +2 -0
- package/build/browser/filter-list/base/SortableFilterListItem.js +6 -6
- package/build/browser/filter-list/base/SortableFilterListItem.js.map +1 -1
- package/build/browser/filter-list/base/index.js +1 -2
- package/build/browser/filter-list/base/index.js.map +1 -1
- package/build/browser/filter-list/base/inputs/CheckboxListInput.js +34 -15
- package/build/browser/filter-list/base/inputs/CheckboxListInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/CheckboxListInput.module.css +13 -0
- package/build/browser/filter-list/base/inputs/CheckboxListInput.module.css.js +2 -1
- package/build/browser/filter-list/base/inputs/DateRangeInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/ListogramInput.js +17 -21
- package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/ListogramInput.module.css +25 -19
- package/build/browser/filter-list/base/inputs/MultiDateInput.module.css +6 -4
- package/build/browser/filter-list/base/inputs/MultiSelectInput.js +7 -14
- package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css +4 -1
- package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css.js +1 -1
- package/build/browser/filter-list/base/inputs/NullValueWrapper.js +4 -23
- package/build/browser/filter-list/base/inputs/NullValueWrapper.js.map +1 -1
- package/build/browser/filter-list/base/inputs/NullValueWrapper.module.css +3 -2
- package/build/browser/filter-list/base/inputs/NumberRangeInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/RangeInput.js +2 -32
- package/build/browser/filter-list/base/inputs/RangeInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/RangeInput.module.css +16 -14
- package/build/browser/filter-list/base/inputs/SingleDateInput.module.css +2 -1
- package/build/browser/filter-list/base/inputs/SingleSelectInput.js +6 -13
- package/build/browser/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/TextTagsInput.js +6 -14
- package/build/browser/filter-list/base/inputs/TextTagsInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/TimelineInput.js +2 -2
- package/build/browser/filter-list/base/inputs/TimelineInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/TimelineInput.module.css +14 -12
- package/build/browser/filter-list/base/inputs/shared.module.css +5 -4
- package/build/browser/filter-list/hooks/useFilterListState.js +29 -9
- package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -1
- package/build/browser/filter-list/hooks/usePropertyAggregation.js.map +1 -1
- package/build/browser/filter-list/inputs/CheckboxListFilterInput.js +56 -0
- package/build/browser/filter-list/inputs/CheckboxListFilterInput.js.map +1 -0
- package/build/browser/filter-list/inputs/ContainsTextFilterInput.js +38 -0
- package/build/browser/filter-list/inputs/ContainsTextFilterInput.js.map +1 -0
- package/build/browser/filter-list/inputs/DateRangeFilterInput.js +105 -0
- package/build/browser/filter-list/inputs/DateRangeFilterInput.js.map +1 -0
- package/build/browser/filter-list/inputs/LinkedPropertyInput.js +508 -0
- package/build/browser/filter-list/inputs/LinkedPropertyInput.js.map +1 -0
- package/build/browser/filter-list/inputs/ListogramFilterInput.js +62 -0
- package/build/browser/filter-list/inputs/ListogramFilterInput.js.map +1 -0
- package/build/browser/filter-list/inputs/MultiDateFilterInput.js +38 -0
- package/build/browser/filter-list/inputs/MultiDateFilterInput.js.map +1 -0
- package/build/browser/filter-list/inputs/MultiSelectFilterInput.js +55 -0
- package/build/browser/filter-list/inputs/MultiSelectFilterInput.js.map +1 -0
- package/build/browser/filter-list/inputs/NumberRangeFilterInput.js +105 -0
- package/build/browser/filter-list/inputs/NumberRangeFilterInput.js.map +1 -0
- package/build/browser/filter-list/inputs/PropertyFilterInput.js +129 -0
- package/build/browser/filter-list/inputs/PropertyFilterInput.js.map +1 -0
- package/build/browser/filter-list/inputs/SingleDateFilterInput.js +38 -0
- package/build/browser/filter-list/inputs/SingleDateFilterInput.js.map +1 -0
- package/build/browser/filter-list/inputs/SingleSelectFilterInput.js +55 -0
- package/build/browser/filter-list/inputs/SingleSelectFilterInput.js.map +1 -0
- package/build/browser/filter-list/inputs/TextTagsFilterInput.js +54 -0
- package/build/browser/filter-list/inputs/TextTagsFilterInput.js.map +1 -0
- package/build/browser/filter-list/inputs/TimelineFilterInput.js +49 -0
- package/build/browser/filter-list/inputs/TimelineFilterInput.js.map +1 -0
- package/build/browser/filter-list/inputs/ToggleFilterInput.js +36 -0
- package/build/browser/filter-list/inputs/ToggleFilterInput.js.map +1 -0
- package/build/browser/filter-list/types/AggregationTypes.js +2 -0
- package/build/browser/filter-list/types/AggregationTypes.js.map +1 -0
- package/build/browser/filter-list/types/LinkedFilterTypes.js.map +1 -1
- package/build/browser/filter-list/types/index.js +0 -2
- package/build/browser/filter-list/types/index.js.map +1 -1
- package/build/browser/filter-list/utils/filterStateSerialization.js +42 -0
- package/build/browser/filter-list/utils/filterStateSerialization.js.map +1 -0
- package/build/browser/filter-list/utils/filterStateToWhereClause.js +36 -13
- package/build/browser/filter-list/utils/filterStateToWhereClause.js.map +1 -1
- package/build/browser/filter-list/utils/filterValues.js +26 -0
- package/build/browser/filter-list/utils/filterValues.js.map +1 -1
- package/build/browser/object-table/ColumnConfigDialog.module.css +0 -9
- package/build/browser/object-table/DefaultCellRenderer.js +6 -1
- package/build/browser/object-table/DefaultCellRenderer.js.map +1 -1
- package/build/browser/object-table/EditableCell.js +76 -9
- package/build/browser/object-table/EditableCell.js.map +1 -1
- package/build/browser/object-table/EditableCell.module.css +47 -8
- package/build/browser/object-table/EditableCell.module.css.js +5 -1
- package/build/browser/object-table/MultiColumnSortDialog.js +4 -1
- package/build/browser/object-table/MultiColumnSortDialog.js.map +1 -1
- package/build/browser/object-table/MultiColumnSortDialog.module.css +0 -4
- package/build/browser/object-table/ObjectTable.js +4 -1
- package/build/browser/object-table/ObjectTable.js.map +1 -1
- package/build/browser/object-table/ObjectTableApi.js.map +1 -1
- package/build/browser/object-table/SelectionCells.js +1 -0
- package/build/browser/object-table/SelectionCells.js.map +1 -1
- package/build/browser/object-table/Table.js +2 -2
- package/build/browser/object-table/Table.js.map +1 -1
- package/build/browser/object-table/TableBody.js +1 -1
- package/build/browser/object-table/TableBody.js.map +1 -1
- package/build/browser/object-table/TableEditContainer.js +27 -16
- package/build/browser/object-table/TableEditContainer.js.map +1 -1
- package/build/browser/object-table/TableEditContainer.module.css +27 -0
- package/build/browser/object-table/TableEditContainer.module.css.js +5 -1
- package/build/browser/object-table/TableHeaderWithPopover.module.css +0 -12
- package/build/browser/object-table/TableRow.js +2 -2
- package/build/browser/object-table/TableRow.js.map +1 -1
- package/build/browser/object-table/hooks/useColumnDefs.js +2 -1
- package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
- package/build/browser/object-table/hooks/useEditableTable.js +21 -2
- package/build/browser/object-table/hooks/useEditableTable.js.map +1 -1
- package/build/browser/object-table/utils/types.js.map +1 -1
- package/build/browser/public/experimental.js +4 -1
- package/build/browser/public/experimental.js.map +1 -1
- package/build/browser/shared/ErrorBoundary.module.css +14 -14
- package/build/browser/styles.css +354 -132
- package/build/cjs/public/experimental.cjs +2955 -2165
- package/build/cjs/public/experimental.cjs.map +1 -1
- package/build/cjs/public/experimental.css +669 -496
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/cjs/public/experimental.d.cts +80 -6
- package/build/esm/base-components/action-button/ActionButton.module.css +0 -4
- package/build/esm/base-components/checkbox/Checkbox.module.css +0 -4
- package/build/esm/base-components/dialog/Dialog.module.css +0 -8
- package/build/esm/base-components/draggable-list/DraggableList.js +4 -2
- package/build/esm/base-components/draggable-list/DraggableList.js.map +1 -1
- package/build/esm/base-components/draggable-list/DraggableList.module.css +0 -8
- package/build/esm/base-components/tooltip/Tooltip.js +91 -0
- package/build/esm/base-components/tooltip/Tooltip.js.map +1 -0
- package/build/esm/base-components/tooltip/Tooltip.module.css +70 -0
- package/build/esm/base-components/tooltip/index.js +18 -0
- package/build/esm/base-components/tooltip/index.js.map +1 -0
- package/build/esm/filter-list/FilterInput.js +132 -0
- package/build/esm/filter-list/FilterInput.js.map +1 -0
- package/build/esm/filter-list/FilterList.js +91 -0
- package/build/esm/filter-list/FilterList.js.map +1 -0
- package/build/esm/filter-list/FilterListApi.js.map +1 -1
- package/build/esm/filter-list/FilterListItemApi.js.map +1 -1
- package/build/esm/filter-list/base/{FilterList.js → BaseFilterList.js} +30 -31
- package/build/esm/filter-list/base/BaseFilterList.js.map +1 -0
- package/build/esm/filter-list/base/BaseFilterListApi.js +2 -0
- package/build/esm/filter-list/base/BaseFilterListApi.js.map +1 -0
- package/build/esm/filter-list/base/FilterIcons.js +63 -0
- package/build/esm/filter-list/base/FilterIcons.js.map +1 -0
- package/build/esm/filter-list/base/FilterList.module.css +22 -1
- package/build/esm/filter-list/base/FilterListContent.js +21 -20
- package/build/esm/filter-list/base/FilterListContent.js.map +1 -1
- package/build/esm/filter-list/base/FilterListHeader.js +8 -3
- package/build/esm/filter-list/base/FilterListHeader.js.map +1 -1
- package/build/esm/filter-list/base/FilterListHeader.module.css +25 -1
- package/build/esm/filter-list/base/FilterListItem.js +36 -17
- package/build/esm/filter-list/base/FilterListItem.js.map +1 -1
- package/build/esm/filter-list/base/FilterListItem.module.css +58 -2
- package/build/esm/filter-list/base/SortableFilterListItem.js +6 -6
- package/build/esm/filter-list/base/SortableFilterListItem.js.map +1 -1
- package/build/esm/filter-list/base/index.js +1 -2
- package/build/esm/filter-list/base/index.js.map +1 -1
- package/build/esm/filter-list/base/inputs/CheckboxListInput.js +34 -15
- package/build/esm/filter-list/base/inputs/CheckboxListInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/CheckboxListInput.module.css +13 -0
- package/build/esm/filter-list/base/inputs/DateRangeInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/ListogramInput.js +17 -21
- package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/ListogramInput.module.css +25 -19
- package/build/esm/filter-list/base/inputs/MultiDateInput.module.css +6 -4
- package/build/esm/filter-list/base/inputs/MultiSelectInput.js +7 -14
- package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/MultiSelectInput.module.css +4 -1
- package/build/esm/filter-list/base/inputs/NullValueWrapper.js +4 -23
- package/build/esm/filter-list/base/inputs/NullValueWrapper.js.map +1 -1
- package/build/esm/filter-list/base/inputs/NullValueWrapper.module.css +3 -2
- package/build/esm/filter-list/base/inputs/NumberRangeInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/RangeInput.js +2 -32
- package/build/esm/filter-list/base/inputs/RangeInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/RangeInput.module.css +16 -14
- package/build/esm/filter-list/base/inputs/SingleDateInput.module.css +2 -1
- package/build/esm/filter-list/base/inputs/SingleSelectInput.js +6 -13
- package/build/esm/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/TextTagsInput.js +6 -14
- package/build/esm/filter-list/base/inputs/TextTagsInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/TimelineInput.js +2 -2
- package/build/esm/filter-list/base/inputs/TimelineInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/TimelineInput.module.css +14 -12
- package/build/esm/filter-list/base/inputs/shared.module.css +5 -4
- package/build/esm/filter-list/hooks/useFilterListState.js +29 -9
- package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -1
- package/build/esm/filter-list/hooks/usePropertyAggregation.js.map +1 -1
- package/build/esm/filter-list/inputs/CheckboxListFilterInput.js +56 -0
- package/build/esm/filter-list/inputs/CheckboxListFilterInput.js.map +1 -0
- package/build/esm/filter-list/inputs/ContainsTextFilterInput.js +38 -0
- package/build/esm/filter-list/inputs/ContainsTextFilterInput.js.map +1 -0
- package/build/esm/filter-list/inputs/DateRangeFilterInput.js +105 -0
- package/build/esm/filter-list/inputs/DateRangeFilterInput.js.map +1 -0
- package/build/esm/filter-list/inputs/LinkedPropertyInput.js +508 -0
- package/build/esm/filter-list/inputs/LinkedPropertyInput.js.map +1 -0
- package/build/esm/filter-list/inputs/ListogramFilterInput.js +62 -0
- package/build/esm/filter-list/inputs/ListogramFilterInput.js.map +1 -0
- package/build/esm/filter-list/inputs/MultiDateFilterInput.js +38 -0
- package/build/esm/filter-list/inputs/MultiDateFilterInput.js.map +1 -0
- package/build/esm/filter-list/inputs/MultiSelectFilterInput.js +55 -0
- package/build/esm/filter-list/inputs/MultiSelectFilterInput.js.map +1 -0
- package/build/esm/filter-list/inputs/NumberRangeFilterInput.js +105 -0
- package/build/esm/filter-list/inputs/NumberRangeFilterInput.js.map +1 -0
- package/build/esm/filter-list/inputs/PropertyFilterInput.js +129 -0
- package/build/esm/filter-list/inputs/PropertyFilterInput.js.map +1 -0
- package/build/esm/filter-list/inputs/SingleDateFilterInput.js +38 -0
- package/build/esm/filter-list/inputs/SingleDateFilterInput.js.map +1 -0
- package/build/esm/filter-list/inputs/SingleSelectFilterInput.js +55 -0
- package/build/esm/filter-list/inputs/SingleSelectFilterInput.js.map +1 -0
- package/build/esm/filter-list/inputs/TextTagsFilterInput.js +54 -0
- package/build/esm/filter-list/inputs/TextTagsFilterInput.js.map +1 -0
- package/build/esm/filter-list/inputs/TimelineFilterInput.js +49 -0
- package/build/esm/filter-list/inputs/TimelineFilterInput.js.map +1 -0
- package/build/esm/filter-list/inputs/ToggleFilterInput.js +36 -0
- package/build/esm/filter-list/inputs/ToggleFilterInput.js.map +1 -0
- package/build/esm/filter-list/types/AggregationTypes.js +2 -0
- package/build/esm/filter-list/types/AggregationTypes.js.map +1 -0
- package/build/esm/filter-list/types/LinkedFilterTypes.js.map +1 -1
- package/build/esm/filter-list/types/index.js +0 -2
- package/build/esm/filter-list/types/index.js.map +1 -1
- package/build/esm/filter-list/utils/filterStateSerialization.js +42 -0
- package/build/esm/filter-list/utils/filterStateSerialization.js.map +1 -0
- package/build/esm/filter-list/utils/filterStateToWhereClause.js +36 -13
- package/build/esm/filter-list/utils/filterStateToWhereClause.js.map +1 -1
- package/build/esm/filter-list/utils/filterValues.js +26 -0
- package/build/esm/filter-list/utils/filterValues.js.map +1 -1
- package/build/esm/object-table/ColumnConfigDialog.module.css +0 -9
- package/build/esm/object-table/DefaultCellRenderer.js +6 -1
- package/build/esm/object-table/DefaultCellRenderer.js.map +1 -1
- package/build/esm/object-table/EditableCell.js +76 -9
- package/build/esm/object-table/EditableCell.js.map +1 -1
- package/build/esm/object-table/EditableCell.module.css +47 -8
- package/build/esm/object-table/MultiColumnSortDialog.js +4 -1
- package/build/esm/object-table/MultiColumnSortDialog.js.map +1 -1
- package/build/esm/object-table/MultiColumnSortDialog.module.css +0 -4
- package/build/esm/object-table/ObjectTable.js +4 -1
- package/build/esm/object-table/ObjectTable.js.map +1 -1
- package/build/esm/object-table/ObjectTableApi.js.map +1 -1
- package/build/esm/object-table/SelectionCells.js +1 -0
- package/build/esm/object-table/SelectionCells.js.map +1 -1
- package/build/esm/object-table/Table.js +2 -2
- package/build/esm/object-table/Table.js.map +1 -1
- package/build/esm/object-table/TableBody.js +1 -1
- package/build/esm/object-table/TableBody.js.map +1 -1
- package/build/esm/object-table/TableEditContainer.js +27 -16
- package/build/esm/object-table/TableEditContainer.js.map +1 -1
- package/build/esm/object-table/TableEditContainer.module.css +27 -0
- package/build/esm/object-table/TableHeaderWithPopover.module.css +0 -12
- package/build/esm/object-table/TableRow.js +2 -2
- package/build/esm/object-table/TableRow.js.map +1 -1
- package/build/esm/object-table/hooks/useColumnDefs.js +2 -1
- package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
- package/build/esm/object-table/hooks/useEditableTable.js +21 -2
- package/build/esm/object-table/hooks/useEditableTable.js.map +1 -1
- package/build/esm/object-table/utils/types.js.map +1 -1
- package/build/esm/public/experimental.js +4 -1
- package/build/esm/public/experimental.js.map +1 -1
- package/build/esm/shared/ErrorBoundary.module.css +14 -14
- package/build/types/base-components/tooltip/Tooltip.d.ts +31 -0
- package/build/types/base-components/tooltip/Tooltip.d.ts.map +1 -0
- package/build/types/base-components/tooltip/index.d.ts +1 -0
- package/build/types/base-components/tooltip/index.d.ts.map +1 -0
- package/build/types/filter-list/{base/FilterInput.d.ts → FilterInput.d.ts} +2 -2
- package/build/types/filter-list/FilterInput.d.ts.map +1 -0
- package/build/types/filter-list/{base/FilterList.d.ts → FilterList.d.ts} +1 -1
- package/build/types/filter-list/FilterList.d.ts.map +1 -0
- package/build/types/filter-list/FilterListApi.d.ts +14 -0
- package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
- package/build/types/filter-list/FilterListItemApi.d.ts +13 -0
- package/build/types/filter-list/FilterListItemApi.d.ts.map +1 -1
- package/build/types/filter-list/base/BaseFilterList.d.ts +3 -0
- package/build/types/filter-list/base/BaseFilterList.d.ts.map +1 -0
- package/build/types/filter-list/base/BaseFilterListApi.d.ts +29 -0
- package/build/types/filter-list/base/BaseFilterListApi.d.ts.map +1 -0
- package/build/types/filter-list/base/FilterIcons.d.ts +4 -0
- package/build/types/filter-list/base/FilterIcons.d.ts.map +1 -0
- package/build/types/filter-list/base/FilterListContent.d.ts +8 -8
- package/build/types/filter-list/base/FilterListContent.d.ts.map +1 -1
- package/build/types/filter-list/base/FilterListHeader.d.ts.map +1 -1
- package/build/types/filter-list/base/FilterListItem.d.ts +7 -8
- package/build/types/filter-list/base/FilterListItem.d.ts.map +1 -1
- package/build/types/filter-list/base/SortableFilterListItem.d.ts +7 -8
- package/build/types/filter-list/base/SortableFilterListItem.d.ts.map +1 -1
- package/build/types/filter-list/base/index.d.ts +2 -2
- package/build/types/filter-list/base/index.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts +7 -13
- package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/DateRangeInput.d.ts +7 -12
- package/build/types/filter-list/base/inputs/DateRangeInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/ListogramInput.d.ts +10 -13
- package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts +7 -13
- package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts +5 -11
- package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts +7 -12
- package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/RangeInput.d.ts +7 -14
- package/build/types/filter-list/base/inputs/RangeInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts +7 -13
- package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/TextTagsInput.d.ts +7 -13
- package/build/types/filter-list/base/inputs/TextTagsInput.d.ts.map +1 -1
- package/build/types/filter-list/hooks/useFilterListState.d.ts +1 -0
- package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -1
- package/build/types/filter-list/hooks/usePropertyAggregation.d.ts +2 -5
- package/build/types/filter-list/hooks/usePropertyAggregation.d.ts.map +1 -1
- package/build/types/filter-list/inputs/CheckboxListFilterInput.d.ts +14 -0
- package/build/types/filter-list/inputs/CheckboxListFilterInput.d.ts.map +1 -0
- package/build/types/filter-list/inputs/ContainsTextFilterInput.d.ts +10 -0
- package/build/types/filter-list/inputs/ContainsTextFilterInput.d.ts.map +1 -0
- package/build/types/filter-list/inputs/DateRangeFilterInput.d.ts +12 -0
- package/build/types/filter-list/inputs/DateRangeFilterInput.d.ts.map +1 -0
- package/build/types/filter-list/{base/inputs → inputs}/LinkedPropertyInput.d.ts +2 -2
- package/build/types/filter-list/inputs/LinkedPropertyInput.d.ts.map +1 -0
- package/build/types/filter-list/inputs/ListogramFilterInput.d.ts +16 -0
- package/build/types/filter-list/inputs/ListogramFilterInput.d.ts.map +1 -0
- package/build/types/filter-list/inputs/MultiDateFilterInput.d.ts +9 -0
- package/build/types/filter-list/inputs/MultiDateFilterInput.d.ts.map +1 -0
- package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts +13 -0
- package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts.map +1 -0
- package/build/types/filter-list/inputs/NumberRangeFilterInput.d.ts +12 -0
- package/build/types/filter-list/inputs/NumberRangeFilterInput.d.ts.map +1 -0
- package/build/types/filter-list/inputs/PropertyFilterInput.d.ts +17 -0
- package/build/types/filter-list/inputs/PropertyFilterInput.d.ts.map +1 -0
- package/build/types/filter-list/inputs/SingleDateFilterInput.d.ts +9 -0
- package/build/types/filter-list/inputs/SingleDateFilterInput.d.ts.map +1 -0
- package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts +13 -0
- package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts.map +1 -0
- package/build/types/filter-list/inputs/TextTagsFilterInput.d.ts +13 -0
- package/build/types/filter-list/inputs/TextTagsFilterInput.d.ts.map +1 -0
- package/build/types/filter-list/inputs/TimelineFilterInput.d.ts +9 -0
- package/build/types/filter-list/inputs/TimelineFilterInput.d.ts.map +1 -0
- package/build/types/filter-list/inputs/ToggleFilterInput.d.ts +9 -0
- package/build/types/filter-list/inputs/ToggleFilterInput.d.ts.map +1 -0
- package/build/types/filter-list/types/AggregationTypes.d.ts +5 -0
- package/build/types/filter-list/types/AggregationTypes.d.ts.map +1 -0
- package/build/types/filter-list/types/LinkedFilterTypes.d.ts +0 -19
- package/build/types/filter-list/types/LinkedFilterTypes.d.ts.map +1 -1
- package/build/types/filter-list/types/index.d.ts +0 -2
- package/build/types/filter-list/types/index.d.ts.map +1 -1
- package/build/types/filter-list/utils/filterStateSerialization.d.ts +3 -0
- package/build/types/filter-list/utils/filterStateSerialization.d.ts.map +1 -0
- package/build/types/filter-list/utils/filterStateToWhereClause.d.ts +1 -1
- package/build/types/filter-list/utils/filterStateToWhereClause.d.ts.map +1 -1
- package/build/types/filter-list/utils/filterValues.d.ts +2 -0
- package/build/types/filter-list/utils/filterValues.d.ts.map +1 -1
- package/build/types/object-table/EditableCell.d.ts +8 -2
- package/build/types/object-table/EditableCell.d.ts.map +1 -1
- package/build/types/object-table/ObjectTableApi.d.ts +7 -0
- package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
- package/build/types/object-table/Table.d.ts +4 -0
- package/build/types/object-table/Table.d.ts.map +1 -1
- package/build/types/object-table/TableEditContainer.d.ts +1 -1
- package/build/types/object-table/TableEditContainer.d.ts.map +1 -1
- package/build/types/object-table/TableRow.d.ts +2 -2
- package/build/types/object-table/TableRow.d.ts.map +1 -1
- package/build/types/object-table/hooks/useEditableTable.d.ts.map +1 -1
- package/build/types/object-table/utils/types.d.ts +7 -4
- package/build/types/object-table/utils/types.d.ts.map +1 -1
- package/build/types/public/experimental.d.ts +4 -1
- package/build/types/public/experimental.d.ts.map +1 -1
- package/package.json +5 -5
- package/build/browser/filter-list/base/FilterInput.js +0 -542
- package/build/browser/filter-list/base/FilterInput.js.map +0 -1
- package/build/browser/filter-list/base/FilterList.js.map +0 -1
- package/build/browser/filter-list/base/inputs/LinkedPropertyInput.js +0 -237
- package/build/browser/filter-list/base/inputs/LinkedPropertyInput.js.map +0 -1
- package/build/browser/filter-list/types/AddFilterMenuTypes.js +0 -2
- package/build/browser/filter-list/types/AddFilterMenuTypes.js.map +0 -1
- package/build/browser/filter-list/types/FilterPanelTypes.js +0 -2
- package/build/browser/filter-list/types/FilterPanelTypes.js.map +0 -1
- package/build/esm/filter-list/base/FilterInput.js +0 -542
- package/build/esm/filter-list/base/FilterInput.js.map +0 -1
- package/build/esm/filter-list/base/FilterList.js.map +0 -1
- package/build/esm/filter-list/base/inputs/LinkedPropertyInput.js +0 -237
- package/build/esm/filter-list/base/inputs/LinkedPropertyInput.js.map +0 -1
- package/build/esm/filter-list/types/AddFilterMenuTypes.js +0 -2
- package/build/esm/filter-list/types/AddFilterMenuTypes.js.map +0 -1
- package/build/esm/filter-list/types/FilterPanelTypes.js +0 -2
- package/build/esm/filter-list/types/FilterPanelTypes.js.map +0 -1
- package/build/types/filter-list/base/FilterInput.d.ts.map +0 -1
- package/build/types/filter-list/base/FilterList.d.ts.map +0 -1
- package/build/types/filter-list/base/inputs/LinkedPropertyInput.d.ts.map +0 -1
- package/build/types/filter-list/types/AddFilterMenuTypes.d.ts +0 -56
- package/build/types/filter-list/types/AddFilterMenuTypes.d.ts.map +0 -1
- package/build/types/filter-list/types/FilterPanelTypes.d.ts +0 -18
- package/build/types/filter-list/types/FilterPanelTypes.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterListContent.js","names":["closestCenter","DndContext","DragOverlay","KeyboardSensor","PointerSensor","useSensor","useSensors","arrayMove","SortableContext","sortableKeyboardCoordinates","verticalListSortingStrategy","classnames","React","useCallback","useEffect","useMemo","useState","getFilterKey","getFilterLabel","styles","FilterListItem","SortableFilterListItem","restrictToVerticalAxis","transform","x","POINTER_ACTIVATION_CONSTRAINT","distance","MODIFIERS","FilterListContent","objectType","objectSet","filterDefinitions","filterStates","onFilterStateChanged","whereClause","enableSorting","className","style","internalOrder","setInternalOrder","activeId","setActiveId","renderDefinitions","sortableIds","map","def","pointerSensor","activationConstraint","keyboardSensor","coordinateGetter","sensors","activeIndex","indexOf","String","activeDefinition","undefined","activeFilterKey","handleDragStart","event","active","id","handleDragEnd","over","oldIndex","newIndex","handleDragCancel","announcements","onDragStart","idx","label","onDragOver","overIdx","length","onDragEnd","onDragCancel","createElement","content","collisionDetection","modifiers","accessibility","items","strategy","definition","index","filterKey","state","get","key","filterState","dropAnimation","dragOverlay"],"sources":["FilterListContent.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n Announcements,\n DragEndEvent,\n DragStartEvent,\n Modifier,\n UniqueIdentifier,\n} from \"@dnd-kit/core\";\nimport {\n closestCenter,\n DndContext,\n DragOverlay,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport type { ObjectSet, ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { FilterDefinitionUnion } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { getFilterKey } from \"../utils/getFilterKey.js\";\nimport { getFilterLabel } from \"../utils/getFilterLabel.js\";\nimport styles from \"./FilterListContent.module.css\";\nimport { FilterListItem } from \"./FilterListItem.js\";\nimport { SortableFilterListItem } from \"./SortableFilterListItem.js\";\n\nconst restrictToVerticalAxis: Modifier = ({ transform }) => ({\n ...transform,\n x: 0,\n});\n\nconst POINTER_ACTIVATION_CONSTRAINT = { distance: 8 } as const;\nconst MODIFIERS: Modifier[] = [restrictToVerticalAxis];\n\ninterface FilterListContentProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n filterDefinitions?: Array<FilterDefinitionUnion<Q>>;\n filterStates: Map<string, FilterState>;\n onFilterStateChanged: (\n filterKey: string,\n state: FilterState,\n ) => void;\n whereClause: WhereClause<Q>;\n enableSorting?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport function FilterListContent<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n filterDefinitions,\n filterStates,\n onFilterStateChanged,\n whereClause,\n enableSorting,\n className,\n style,\n}: FilterListContentProps<Q>): React.ReactElement {\n const [internalOrder, setInternalOrder] = useState<\n Array<FilterDefinitionUnion<Q>>\n >(() => filterDefinitions ?? []);\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n\n useEffect(() => {\n if (filterDefinitions) {\n setInternalOrder(filterDefinitions);\n }\n }, [filterDefinitions]);\n\n const renderDefinitions = enableSorting ? internalOrder : filterDefinitions;\n\n const sortableIds = useMemo(\n () =>\n enableSorting\n ? internalOrder.map((def) => getFilterKey(def))\n : [],\n [enableSorting, internalOrder],\n );\n\n const pointerSensor = useSensor(PointerSensor, {\n activationConstraint: POINTER_ACTIVATION_CONSTRAINT,\n });\n const keyboardSensor = useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n });\n const sensors = useSensors(pointerSensor, keyboardSensor);\n\n const activeIndex = activeId != null\n ? sortableIds.indexOf(String(activeId))\n : -1;\n const activeDefinition = activeIndex >= 0\n ? internalOrder[activeIndex]\n : undefined;\n\n const activeFilterKey = useMemo(\n () => activeDefinition ? getFilterKey(activeDefinition) : undefined,\n [activeDefinition],\n );\n\n const handleDragStart = useCallback((event: DragStartEvent) => {\n setActiveId(event.active.id);\n }, []);\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n setActiveId(null);\n const { active, over } = event;\n if (!over || active.id === over.id) {\n return;\n }\n const oldIndex = sortableIds.indexOf(String(active.id));\n const newIndex = sortableIds.indexOf(String(over.id));\n if (oldIndex !== -1 && newIndex !== -1) {\n setInternalOrder(arrayMove(internalOrder, oldIndex, newIndex));\n }\n },\n [internalOrder, sortableIds],\n );\n\n const handleDragCancel = useCallback(() => {\n setActiveId(null);\n }, []);\n\n const announcements = useMemo<Announcements>(\n () => ({\n onDragStart({ active }) {\n const idx = sortableIds.indexOf(String(active.id));\n const def = idx >= 0 ? internalOrder[idx] : undefined;\n const label = def ? getFilterLabel(def) : \"filter\";\n return `Picked up ${label} filter`;\n },\n onDragOver({ over }) {\n if (!over) {\n return \"Not over a droppable area\";\n }\n const overIdx = sortableIds.indexOf(String(over.id));\n return `Moved to position ${overIdx + 1} of ${sortableIds.length}`;\n },\n onDragEnd({ active, over }) {\n const idx = sortableIds.indexOf(String(active.id));\n const def = idx >= 0 ? internalOrder[idx] : undefined;\n const label = def ? getFilterLabel(def) : \"filter\";\n if (over && active.id !== over.id) {\n const overIdx = sortableIds.indexOf(String(over.id));\n return `Dropped ${label} filter at position ${overIdx + 1}`;\n }\n return `Dropped ${label} filter back in its original position`;\n },\n onDragCancel({ active }) {\n const idx = sortableIds.indexOf(String(active.id));\n const def = idx >= 0 ? internalOrder[idx] : undefined;\n const label = def ? getFilterLabel(def) : \"filter\";\n return `Cancelled dragging ${label} filter`;\n },\n }),\n [internalOrder, sortableIds],\n );\n\n if (!renderDefinitions || renderDefinitions.length === 0) {\n return (\n <div\n className={classnames(styles.content, className)}\n style={style}\n data-empty=\"true\"\n />\n );\n }\n\n if (enableSorting) {\n return (\n <div\n className={classnames(styles.content, className)}\n style={style}\n >\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n modifiers={MODIFIERS}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n accessibility={{ announcements }}\n >\n <SortableContext\n items={sortableIds}\n strategy={verticalListSortingStrategy}\n >\n {internalOrder.map((definition, index) => {\n const id = sortableIds[index];\n const filterKey = getFilterKey(definition);\n const state = filterStates.get(filterKey);\n\n return (\n <SortableFilterListItem\n key={id}\n id={id}\n objectType={objectType}\n objectSet={objectSet}\n definition={definition}\n filterKey={filterKey}\n filterState={state}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n />\n );\n })}\n </SortableContext>\n\n <DragOverlay\n dropAnimation={null}\n className={styles.dragOverlay}\n >\n {activeDefinition && activeFilterKey && (\n <FilterListItem\n objectType={objectType}\n objectSet={objectSet}\n definition={activeDefinition}\n filterKey={activeFilterKey}\n filterState={filterStates.get(activeFilterKey)}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n />\n )}\n </DragOverlay>\n </DndContext>\n </div>\n );\n }\n\n return (\n <div\n className={classnames(styles.content, className)}\n style={style}\n >\n {renderDefinitions.map((definition) => {\n const filterKey = getFilterKey(definition);\n const state = filterStates.get(filterKey);\n\n return (\n <FilterListItem\n key={filterKey}\n objectType={objectType}\n objectSet={objectSet}\n definition={definition}\n filterKey={filterKey}\n filterState={state}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n />\n );\n })}\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,SACEA,aAAa,EACbC,UAAU,EACVC,WAAW,EACXC,cAAc,EACdC,aAAa,EACbC,SAAS,EACTC,UAAU,QACL,eAAe;AACtB,SACEC,SAAS,EACTC,eAAe,EACfC,2BAA2B,EAC3BC,2BAA2B,QACtB,mBAAmB;AAE1B,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AAGxE,SAASC,YAAY,QAAQ,0BAA0B;AACvD,SAASC,cAAc,QAAQ,4BAA4B;AAC3D,OAAOC,MAAM,MAAM,gCAAgC;AACnD,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,sBAAsB,QAAQ,6BAA6B;AAEpE,MAAMC,sBAAgC,GAAGA,CAAC;EAAEC;AAAU,CAAC,MAAM;EAC3D,GAAGA,SAAS;EACZC,CAAC,EAAE;AACL,CAAC,CAAC;AAEF,MAAMC,6BAA6B,GAAG;EAAEC,QAAQ,EAAE;AAAE,CAAU;AAC9D,MAAMC,SAAqB,GAAG,CAACL,sBAAsB,CAAC;AAiBtD,OAAO,SAASM,iBAAiBA,CAAiC;EAChEC,UAAU;EACVC,SAAS;EACTC,iBAAiB;EACjBC,YAAY;EACZC,oBAAoB;EACpBC,WAAW;EACXC,aAAa;EACbC,SAAS;EACTC;AACyB,CAAC,EAAsB;EAChD,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGvB,QAAQ,CAEhD,MAAMe,iBAAiB,IAAI,EAAE,CAAC;EAChC,MAAM,CAACS,QAAQ,EAAEC,WAAW,CAAC,GAAGzB,QAAQ,CAA0B,IAAI,CAAC;EAEvEF,SAAS,CAAC,MAAM;IACd,IAAIiB,iBAAiB,EAAE;MACrBQ,gBAAgB,CAACR,iBAAiB,CAAC;IACrC;EACF,CAAC,EAAE,CAACA,iBAAiB,CAAC,CAAC;EAEvB,MAAMW,iBAAiB,GAAGP,aAAa,GAAGG,aAAa,GAAGP,iBAAiB;EAE3E,MAAMY,WAAW,GAAG5B,OAAO,CACzB,MACEoB,aAAa,GACTG,aAAa,CAACM,GAAG,CAAEC,GAAG,IAAK5B,YAAY,CAAC4B,GAAG,CAAC,CAAC,GAC7C,EAAE,EACR,CAACV,aAAa,EAAEG,aAAa,CAC/B,CAAC;EAED,MAAMQ,aAAa,GAAGzC,SAAS,CAACD,aAAa,EAAE;IAC7C2C,oBAAoB,EAAEtB;EACxB,CAAC,CAAC;EACF,MAAMuB,cAAc,GAAG3C,SAAS,CAACF,cAAc,EAAE;IAC/C8C,gBAAgB,EAAExC;EACpB,CAAC,CAAC;EACF,MAAMyC,OAAO,GAAG5C,UAAU,CAACwC,aAAa,EAAEE,cAAc,CAAC;EAEzD,MAAMG,WAAW,GAAGX,QAAQ,IAAI,IAAI,GAChCG,WAAW,CAACS,OAAO,CAACC,MAAM,CAACb,QAAQ,CAAC,CAAC,GACrC,CAAC,CAAC;EACN,MAAMc,gBAAgB,GAAGH,WAAW,IAAI,CAAC,GACrCb,aAAa,CAACa,WAAW,CAAC,GAC1BI,SAAS;EAEb,MAAMC,eAAe,GAAGzC,OAAO,CAC7B,MAAMuC,gBAAgB,GAAGrC,YAAY,CAACqC,gBAAgB,CAAC,GAAGC,SAAS,EACnE,CAACD,gBAAgB,CACnB,CAAC;EAED,MAAMG,eAAe,GAAG5C,WAAW,CAAE6C,KAAqB,IAAK;IAC7DjB,WAAW,CAACiB,KAAK,CAACC,MAAM,CAACC,EAAE,CAAC;EAC9B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,aAAa,GAAGhD,WAAW,CAC9B6C,KAAmB,IAAK;IACvBjB,WAAW,CAAC,IAAI,CAAC;IACjB,MAAM;MAAEkB,MAAM;MAAEG;IAAK,CAAC,GAAGJ,KAAK;IAC9B,IAAI,CAACI,IAAI,IAAIH,MAAM,CAACC,EAAE,KAAKE,IAAI,CAACF,EAAE,EAAE;MAClC;IACF;IACA,MAAMG,QAAQ,GAAGpB,WAAW,CAACS,OAAO,CAACC,MAAM,CAACM,MAAM,CAACC,EAAE,CAAC,CAAC;IACvD,MAAMI,QAAQ,GAAGrB,WAAW,CAACS,OAAO,CAACC,MAAM,CAACS,IAAI,CAACF,EAAE,CAAC,CAAC;IACrD,IAAIG,QAAQ,KAAK,CAAC,CAAC,IAAIC,QAAQ,KAAK,CAAC,CAAC,EAAE;MACtCzB,gBAAgB,CAAChC,SAAS,CAAC+B,aAAa,EAAEyB,QAAQ,EAAEC,QAAQ,CAAC,CAAC;IAChE;EACF,CAAC,EACD,CAAC1B,aAAa,EAAEK,WAAW,CAC7B,CAAC;EAED,MAAMsB,gBAAgB,GAAGpD,WAAW,CAAC,MAAM;IACzC4B,WAAW,CAAC,IAAI,CAAC;EACnB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMyB,aAAa,GAAGnD,OAAO,CAC3B,OAAO;IACLoD,WAAWA,CAAC;MAAER;IAAO,CAAC,EAAE;MACtB,MAAMS,GAAG,GAAGzB,WAAW,CAACS,OAAO,CAACC,MAAM,CAACM,MAAM,CAACC,EAAE,CAAC,CAAC;MAClD,MAAMf,GAAG,GAAGuB,GAAG,IAAI,CAAC,GAAG9B,aAAa,CAAC8B,GAAG,CAAC,GAAGb,SAAS;MACrD,MAAMc,KAAK,GAAGxB,GAAG,GAAG3B,cAAc,CAAC2B,GAAG,CAAC,GAAG,QAAQ;MAClD,OAAO,aAAawB,KAAK,SAAS;IACpC,CAAC;IACDC,UAAUA,CAAC;MAAER;IAAK,CAAC,EAAE;MACnB,IAAI,CAACA,IAAI,EAAE;QACT,OAAO,2BAA2B;MACpC;MACA,MAAMS,OAAO,GAAG5B,WAAW,CAACS,OAAO,CAACC,MAAM,CAACS,IAAI,CAACF,EAAE,CAAC,CAAC;MACpD,OAAO,qBAAqBW,OAAO,GAAG,CAAC,OAAO5B,WAAW,CAAC6B,MAAM,EAAE;IACpE,CAAC;IACDC,SAASA,CAAC;MAAEd,MAAM;MAAEG;IAAK,CAAC,EAAE;MAC1B,MAAMM,GAAG,GAAGzB,WAAW,CAACS,OAAO,CAACC,MAAM,CAACM,MAAM,CAACC,EAAE,CAAC,CAAC;MAClD,MAAMf,GAAG,GAAGuB,GAAG,IAAI,CAAC,GAAG9B,aAAa,CAAC8B,GAAG,CAAC,GAAGb,SAAS;MACrD,MAAMc,KAAK,GAAGxB,GAAG,GAAG3B,cAAc,CAAC2B,GAAG,CAAC,GAAG,QAAQ;MAClD,IAAIiB,IAAI,IAAIH,MAAM,CAACC,EAAE,KAAKE,IAAI,CAACF,EAAE,EAAE;QACjC,MAAMW,OAAO,GAAG5B,WAAW,CAACS,OAAO,CAACC,MAAM,CAACS,IAAI,CAACF,EAAE,CAAC,CAAC;QACpD,OAAO,WAAWS,KAAK,uBAAuBE,OAAO,GAAG,CAAC,EAAE;MAC7D;MACA,OAAO,WAAWF,KAAK,uCAAuC;IAChE,CAAC;IACDK,YAAYA,CAAC;MAAEf;IAAO,CAAC,EAAE;MACvB,MAAMS,GAAG,GAAGzB,WAAW,CAACS,OAAO,CAACC,MAAM,CAACM,MAAM,CAACC,EAAE,CAAC,CAAC;MAClD,MAAMf,GAAG,GAAGuB,GAAG,IAAI,CAAC,GAAG9B,aAAa,CAAC8B,GAAG,CAAC,GAAGb,SAAS;MACrD,MAAMc,KAAK,GAAGxB,GAAG,GAAG3B,cAAc,CAAC2B,GAAG,CAAC,GAAG,QAAQ;MAClD,OAAO,sBAAsBwB,KAAK,SAAS;IAC7C;EACF,CAAC,CAAC,EACF,CAAC/B,aAAa,EAAEK,WAAW,CAC7B,CAAC;EAED,IAAI,CAACD,iBAAiB,IAAIA,iBAAiB,CAAC8B,MAAM,KAAK,CAAC,EAAE;IACxD,oBACE5D,KAAA,CAAA+D,aAAA;MACEvC,SAAS,EAAEzB,UAAU,CAACQ,MAAM,CAACyD,OAAO,EAAExC,SAAS,CAAE;MACjDC,KAAK,EAAEA,KAAM;MACb,cAAW;IAAM,CAClB,CAAC;EAEN;EAEA,IAAIF,aAAa,EAAE;IACjB,oBACEvB,KAAA,CAAA+D,aAAA;MACEvC,SAAS,EAAEzB,UAAU,CAACQ,MAAM,CAACyD,OAAO,EAAExC,SAAS,CAAE;MACjDC,KAAK,EAAEA;IAAM,gBAEbzB,KAAA,CAAA+D,aAAA,CAAC1E,UAAU;MACTiD,OAAO,EAAEA,OAAQ;MACjB2B,kBAAkB,EAAE7E,aAAc;MAClC8E,SAAS,EAAEnD,SAAU;MACrBwC,WAAW,EAAEV,eAAgB;MAC7BgB,SAAS,EAAEZ,aAAc;MACzBa,YAAY,EAAET,gBAAiB;MAC/Bc,aAAa,EAAE;QAAEb;MAAc;IAAE,gBAEjCtD,KAAA,CAAA+D,aAAA,CAACnE,eAAe;MACdwE,KAAK,EAAErC,WAAY;MACnBsC,QAAQ,EAAEvE;IAA4B,GAErC4B,aAAa,CAACM,GAAG,CAAC,CAACsC,UAAU,EAAEC,KAAK,KAAK;MACxC,MAAMvB,EAAE,GAAGjB,WAAW,CAACwC,KAAK,CAAC;MAC7B,MAAMC,SAAS,GAAGnE,YAAY,CAACiE,UAAU,CAAC;MAC1C,MAAMG,KAAK,GAAGrD,YAAY,CAACsD,GAAG,CAACF,SAAS,CAAC;MAEzC,oBACExE,KAAA,CAAA+D,aAAA,CAACtD,sBAAsB;QACrBkE,GAAG,EAAE3B,EAAG;QACRA,EAAE,EAAEA,EAAG;QACP/B,UAAU,EAAEA,UAAW;QACvBC,SAAS,EAAEA,SAAU;QACrBoD,UAAU,EAAEA,UAAW;QACvBE,SAAS,EAAEA,SAAU;QACrBI,WAAW,EAAEH,KAAM;QACnBpD,oBAAoB,EAAEA,oBAAqB;QAC3CC,WAAW,EAAEA;MAAY,CAC1B,CAAC;IAEN,CAAC,CACc,CAAC,eAElBtB,KAAA,CAAA+D,aAAA,CAACzE,WAAW;MACVuF,aAAa,EAAE,IAAK;MACpBrD,SAAS,EAAEjB,MAAM,CAACuE;IAAY,GAE7BpC,gBAAgB,IAAIE,eAAe,iBAClC5C,KAAA,CAAA+D,aAAA,CAACvD,cAAc;MACbS,UAAU,EAAEA,UAAW;MACvBC,SAAS,EAAEA,SAAU;MACrBoD,UAAU,EAAE5B,gBAAiB;MAC7B8B,SAAS,EAAE5B,eAAgB;MAC3BgC,WAAW,EAAExD,YAAY,CAACsD,GAAG,CAAC9B,eAAe,CAAE;MAC/CvB,oBAAoB,EAAEA,oBAAqB;MAC3CC,WAAW,EAAEA;IAAY,CAC1B,CAEQ,CACH,CACT,CAAC;EAEV;EAEA,oBACEtB,KAAA,CAAA+D,aAAA;IACEvC,SAAS,EAAEzB,UAAU,CAACQ,MAAM,CAACyD,OAAO,EAAExC,SAAS,CAAE;IACjDC,KAAK,EAAEA;EAAM,GAEZK,iBAAiB,CAACE,GAAG,CAAEsC,UAAU,IAAK;IACrC,MAAME,SAAS,GAAGnE,YAAY,CAACiE,UAAU,CAAC;IAC1C,MAAMG,KAAK,GAAGrD,YAAY,CAACsD,GAAG,CAACF,SAAS,CAAC;IAEzC,oBACExE,KAAA,CAAA+D,aAAA,CAACvD,cAAc;MACbmE,GAAG,EAAEH,SAAU;MACfvD,UAAU,EAAEA,UAAW;MACvBC,SAAS,EAAEA,SAAU;MACrBoD,UAAU,EAAEA,UAAW;MACvBE,SAAS,EAAEA,SAAU;MACrBI,WAAW,EAAEH,KAAM;MACnBpD,oBAAoB,EAAEA,oBAAqB;MAC3CC,WAAW,EAAEA;IAAY,CAC1B,CAAC;EAEN,CAAC,CACE,CAAC;AAEV","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FilterListContent.js","names":["closestCenter","DndContext","DragOverlay","KeyboardSensor","PointerSensor","useSensor","useSensors","arrayMove","SortableContext","sortableKeyboardCoordinates","verticalListSortingStrategy","classnames","React","useCallback","useEffect","useMemo","useState","styles","FilterListItem","SortableFilterListItem","restrictToVerticalAxis","transform","x","POINTER_ACTIVATION_CONSTRAINT","distance","MODIFIERS","FilterListContent","filterDefinitions","filterStates","onFilterStateChanged","onFilterRemoved","renderInput","getFilterKey","getFilterLabel","enableSorting","className","style","internalOrder","setInternalOrder","activeId","setActiveId","renderDefinitions","sortableIds","map","def","pointerSensor","activationConstraint","keyboardSensor","coordinateGetter","sensors","activeIndex","indexOf","String","activeDefinition","undefined","activeFilterKey","handleDragStart","event","active","id","handleDragEnd","over","oldIndex","newIndex","handleDragCancel","announcements","onDragStart","idx","label","onDragOver","overIdx","length","onDragEnd","onDragCancel","accessibility","createElement","content","collisionDetection","modifiers","items","strategy","definition","index","filterKey","state","get","key","filterState","dropAnimation","dragOverlay"],"sources":["FilterListContent.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n Announcements,\n DragEndEvent,\n DragStartEvent,\n Modifier,\n UniqueIdentifier,\n} from \"@dnd-kit/core\";\nimport {\n closestCenter,\n DndContext,\n DragOverlay,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport type { RenderFilterInput } from \"./BaseFilterListApi.js\";\nimport styles from \"./FilterListContent.module.css\";\nimport { FilterListItem } from \"./FilterListItem.js\";\nimport { SortableFilterListItem } from \"./SortableFilterListItem.js\";\n\nconst restrictToVerticalAxis: Modifier = ({ transform }) => ({\n ...transform,\n x: 0,\n});\n\nconst POINTER_ACTIVATION_CONSTRAINT = { distance: 8 } as const;\nconst MODIFIERS: Modifier[] = [restrictToVerticalAxis];\n\ninterface FilterListContentProps<D> {\n filterDefinitions?: Array<D>;\n filterStates: Map<string, FilterState>;\n onFilterStateChanged: (\n filterKey: string,\n state: FilterState,\n ) => void;\n onFilterRemoved?: (filterKey: string) => void;\n renderInput: RenderFilterInput<D>;\n getFilterKey: (definition: D) => string;\n getFilterLabel: (definition: D) => string;\n enableSorting?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport function FilterListContent<D>({\n filterDefinitions,\n filterStates,\n onFilterStateChanged,\n onFilterRemoved,\n renderInput,\n getFilterKey,\n getFilterLabel,\n enableSorting,\n className,\n style,\n}: FilterListContentProps<D>): React.ReactElement {\n const [internalOrder, setInternalOrder] = useState<Array<D>>(\n () => filterDefinitions ?? [],\n );\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n\n useEffect(() => {\n if (filterDefinitions) {\n setInternalOrder(filterDefinitions);\n }\n }, [filterDefinitions]);\n\n const renderDefinitions = enableSorting ? internalOrder : filterDefinitions;\n\n const sortableIds = useMemo(\n () =>\n enableSorting\n ? internalOrder.map((def) => getFilterKey(def))\n : [],\n [enableSorting, internalOrder, getFilterKey],\n );\n\n const pointerSensor = useSensor(PointerSensor, {\n activationConstraint: POINTER_ACTIVATION_CONSTRAINT,\n });\n const keyboardSensor = useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n });\n const sensors = useSensors(pointerSensor, keyboardSensor);\n\n const activeIndex = activeId != null\n ? sortableIds.indexOf(String(activeId))\n : -1;\n const activeDefinition = activeIndex >= 0\n ? internalOrder[activeIndex]\n : undefined;\n\n const activeFilterKey = useMemo(\n () => activeDefinition ? getFilterKey(activeDefinition) : undefined,\n [activeDefinition, getFilterKey],\n );\n\n const handleDragStart = useCallback((event: DragStartEvent) => {\n setActiveId(event.active.id);\n }, []);\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n setActiveId(null);\n const { active, over } = event;\n if (!over || active.id === over.id) {\n return;\n }\n const oldIndex = sortableIds.indexOf(String(active.id));\n const newIndex = sortableIds.indexOf(String(over.id));\n if (oldIndex !== -1 && newIndex !== -1) {\n setInternalOrder(arrayMove(internalOrder, oldIndex, newIndex));\n }\n },\n [internalOrder, sortableIds],\n );\n\n const handleDragCancel = useCallback(() => {\n setActiveId(null);\n }, []);\n\n const announcements = useMemo<Announcements>(\n () => ({\n onDragStart({ active }) {\n const idx = sortableIds.indexOf(String(active.id));\n const def = idx >= 0 ? internalOrder[idx] : undefined;\n const label = def ? getFilterLabel(def) : \"filter\";\n return `Picked up ${label} filter`;\n },\n onDragOver({ over }) {\n if (!over) {\n return \"Not over a droppable area\";\n }\n const overIdx = sortableIds.indexOf(String(over.id));\n return `Moved to position ${overIdx + 1} of ${sortableIds.length}`;\n },\n onDragEnd({ active, over }) {\n const idx = sortableIds.indexOf(String(active.id));\n const def = idx >= 0 ? internalOrder[idx] : undefined;\n const label = def ? getFilterLabel(def) : \"filter\";\n if (over && active.id !== over.id) {\n const overIdx = sortableIds.indexOf(String(over.id));\n return `Dropped ${label} filter at position ${overIdx + 1}`;\n }\n return `Dropped ${label} filter back in its original position`;\n },\n onDragCancel({ active }) {\n const idx = sortableIds.indexOf(String(active.id));\n const def = idx >= 0 ? internalOrder[idx] : undefined;\n const label = def ? getFilterLabel(def) : \"filter\";\n return `Cancelled dragging ${label} filter`;\n },\n }),\n [internalOrder, sortableIds, getFilterLabel],\n );\n\n const accessibility = useMemo(\n () => ({ announcements }),\n [announcements],\n );\n\n if (!renderDefinitions || renderDefinitions.length === 0) {\n return (\n <div\n className={classnames(styles.content, className)}\n style={style}\n data-empty=\"true\"\n />\n );\n }\n\n if (enableSorting) {\n return (\n <div\n className={classnames(styles.content, className)}\n style={style}\n >\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n modifiers={MODIFIERS}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n accessibility={accessibility}\n >\n <SortableContext\n items={sortableIds}\n strategy={verticalListSortingStrategy}\n >\n {internalOrder.map((definition, index) => {\n const id = sortableIds[index];\n const filterKey = getFilterKey(definition);\n const label = getFilterLabel(definition);\n const state = filterStates.get(filterKey);\n\n return (\n <SortableFilterListItem\n key={id}\n id={id}\n definition={definition}\n filterKey={filterKey}\n label={label}\n filterState={state}\n onFilterStateChanged={onFilterStateChanged}\n onFilterRemoved={onFilterRemoved}\n renderInput={renderInput}\n />\n );\n })}\n </SortableContext>\n\n <DragOverlay\n dropAnimation={null}\n className={styles.dragOverlay}\n >\n {activeDefinition && activeFilterKey && (\n <FilterListItem\n definition={activeDefinition}\n filterKey={activeFilterKey}\n label={getFilterLabel(activeDefinition)}\n filterState={filterStates.get(activeFilterKey)}\n onFilterStateChanged={onFilterStateChanged}\n onFilterRemoved={onFilterRemoved}\n renderInput={renderInput}\n />\n )}\n </DragOverlay>\n </DndContext>\n </div>\n );\n }\n\n return (\n <div\n className={classnames(styles.content, className)}\n style={style}\n >\n {renderDefinitions.map((definition) => {\n const filterKey = getFilterKey(definition);\n const state = filterStates.get(filterKey);\n\n return (\n <FilterListItem\n key={filterKey}\n definition={definition}\n filterKey={filterKey}\n label={getFilterLabel(definition)}\n filterState={state}\n onFilterStateChanged={onFilterStateChanged}\n onFilterRemoved={onFilterRemoved}\n renderInput={renderInput}\n />\n );\n })}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import { Button } from "@base-ui/react/button";
|
|
18
|
+
import classnames from "classnames";
|
|
18
19
|
import React, { memo, useCallback } from "react";
|
|
19
20
|
import styles from "./FilterListHeader.module.css";
|
|
20
21
|
function FilterListHeaderInner({
|
|
@@ -38,9 +39,13 @@ function FilterListHeaderInner({
|
|
|
38
39
|
"aria-expanded": !collapsed,
|
|
39
40
|
"aria-label": collapsed ? "Expand filters" : "Collapse filters"
|
|
40
41
|
}, /*#__PURE__*/React.createElement("span", {
|
|
41
|
-
className: styles.collapseIcon,
|
|
42
|
+
className: classnames(styles.collapseIcon, collapsed && styles.collapsed)
|
|
43
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
44
|
+
className: styles.headerContentWrapper,
|
|
42
45
|
"data-collapsed": collapsed
|
|
43
|
-
}
|
|
46
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
47
|
+
className: styles.headerContentInner
|
|
48
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
44
49
|
className: styles.titleContainer
|
|
45
50
|
}, titleIcon && /*#__PURE__*/React.createElement("span", {
|
|
46
51
|
className: styles.titleIcon
|
|
@@ -52,7 +57,7 @@ function FilterListHeaderInner({
|
|
|
52
57
|
className: styles.resetButton,
|
|
53
58
|
onClick: onReset,
|
|
54
59
|
disabled: activeFilterCount === 0
|
|
55
|
-
}, "Reset")));
|
|
60
|
+
}, "Reset"))));
|
|
56
61
|
}
|
|
57
62
|
export const FilterListHeader = /*#__PURE__*/memo(FilterListHeaderInner);
|
|
58
63
|
//# sourceMappingURL=FilterListHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterListHeader.js","names":["Button","React","memo","useCallback","styles","FilterListHeaderInner","title","titleIcon","collapsed","onCollapsedChange","showResetButton","onReset","showActiveFilterCount","activeFilterCount","handleCollapseClick","createElement","className","header","collapseButton","onClick","collapseIcon","
|
|
1
|
+
{"version":3,"file":"FilterListHeader.js","names":["Button","classnames","React","memo","useCallback","styles","FilterListHeaderInner","title","titleIcon","collapsed","onCollapsedChange","showResetButton","onReset","showActiveFilterCount","activeFilterCount","handleCollapseClick","createElement","className","header","collapseButton","onClick","collapseIcon","headerContentWrapper","headerContentInner","titleContainer","activeCount","resetButton","disabled","FilterListHeader"],"sources":["FilterListHeader.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport classnames from \"classnames\";\nimport React, { memo, type ReactNode, useCallback } from \"react\";\nimport styles from \"./FilterListHeader.module.css\";\n\ninterface FilterListHeaderProps {\n title?: string;\n titleIcon?: ReactNode;\n collapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n showResetButton?: boolean;\n onReset?: () => void;\n showActiveFilterCount?: boolean;\n activeFilterCount?: number;\n}\n\nfunction FilterListHeaderInner({\n title,\n titleIcon,\n collapsed = false,\n onCollapsedChange,\n showResetButton,\n onReset,\n showActiveFilterCount,\n activeFilterCount = 0,\n}: FilterListHeaderProps): React.ReactElement {\n const showCollapseButton = onCollapsedChange != null;\n\n const handleCollapseClick = useCallback(() => {\n onCollapsedChange?.(!collapsed);\n }, [onCollapsedChange, collapsed]);\n\n return (\n <div className={styles.header}>\n {showCollapseButton && (\n <Button\n className={styles.collapseButton}\n onClick={handleCollapseClick}\n aria-expanded={!collapsed}\n aria-label={collapsed ? \"Expand filters\" : \"Collapse filters\"}\n >\n <span\n className={classnames(\n styles.collapseIcon,\n collapsed && styles.collapsed,\n )}\n />\n </Button>\n )}\n\n <div\n className={styles.headerContentWrapper}\n data-collapsed={collapsed}\n >\n <div className={styles.headerContentInner}>\n <div className={styles.titleContainer}>\n {titleIcon && (\n <span className={styles.titleIcon}>\n {titleIcon}\n </span>\n )}\n {title && (\n <span className={styles.title}>\n {title}\n </span>\n )}\n {showActiveFilterCount && activeFilterCount > 0 && (\n <span className={styles.activeCount}>\n ({activeFilterCount})\n </span>\n )}\n </div>\n\n {showResetButton && (\n <Button\n className={styles.resetButton}\n onClick={onReset}\n disabled={activeFilterCount === 0}\n >\n Reset\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nexport const FilterListHeader: React.MemoExoticComponent<\n typeof FilterListHeaderInner\n> = memo(FilterListHeaderInner);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,MAAM,QAAQ,uBAAuB;AAC9C,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAAIC,IAAI,EAAkBC,WAAW,QAAQ,OAAO;AAChE,OAAOC,MAAM,MAAM,+BAA+B;AAalD,SAASC,qBAAqBA,CAAC;EAC7BC,KAAK;EACLC,SAAS;EACTC,SAAS,GAAG,KAAK;EACjBC,iBAAiB;EACjBC,eAAe;EACfC,OAAO;EACPC,qBAAqB;EACrBC,iBAAiB,GAAG;AACC,CAAC,EAAsB;EAG5C,MAAMC,mBAAmB,GAAGX,WAAW,CAAC,MAAM;IAC5CM,iBAAiB,GAAG,CAACD,SAAS,CAAC;EACjC,CAAC,EAAE,CAACC,iBAAiB,EAAED,SAAS,CAAC,CAAC;EAElC,oBACEP,KAAA,CAAAc,aAAA;IAAKC,SAAS,EAAEZ,MAAM,CAACa;EAAO,GAPLR,iBAAiB,IAAI,IAAI,iBAS9CR,KAAA,CAAAc,aAAA,CAAChB,MAAM;IACLiB,SAAS,EAAEZ,MAAM,CAACc,cAAe;IACjCC,OAAO,EAAEL,mBAAoB;IAC7B,iBAAe,CAACN,SAAU;IAC1B,cAAYA,SAAS,GAAG,gBAAgB,GAAG;EAAmB,gBAE9DP,KAAA,CAAAc,aAAA;IACEC,SAAS,EAAEhB,UAAU,CACnBI,MAAM,CAACgB,YAAY,EACnBZ,SAAS,IAAIJ,MAAM,CAACI,SACtB;EAAE,CACH,CACK,CACT,eAEDP,KAAA,CAAAc,aAAA;IACEC,SAAS,EAAEZ,MAAM,CAACiB,oBAAqB;IACvC,kBAAgBb;EAAU,gBAE1BP,KAAA,CAAAc,aAAA;IAAKC,SAAS,EAAEZ,MAAM,CAACkB;EAAmB,gBACxCrB,KAAA,CAAAc,aAAA;IAAKC,SAAS,EAAEZ,MAAM,CAACmB;EAAe,GACnChB,SAAS,iBACRN,KAAA,CAAAc,aAAA;IAAMC,SAAS,EAAEZ,MAAM,CAACG;EAAU,GAC/BA,SACG,CACP,EACAD,KAAK,iBACJL,KAAA,CAAAc,aAAA;IAAMC,SAAS,EAAEZ,MAAM,CAACE;EAAM,GAC3BA,KACG,CACP,EACAM,qBAAqB,IAAIC,iBAAiB,GAAG,CAAC,iBAC7CZ,KAAA,CAAAc,aAAA;IAAMC,SAAS,EAAEZ,MAAM,CAACoB;EAAY,GAAC,GAClC,EAACX,iBAAiB,EAAC,GAChB,CAEL,CAAC,EAELH,eAAe,iBACdT,KAAA,CAAAc,aAAA,CAAChB,MAAM;IACLiB,SAAS,EAAEZ,MAAM,CAACqB,WAAY;IAC9BN,OAAO,EAAER,OAAQ;IACjBe,QAAQ,EAAEb,iBAAiB,KAAK;EAAE,GACnC,OAEO,CAEP,CACF,CACF,CAAC;AAEV;AAEA,OAAO,MAAMc,gBAEZ,gBAAGzB,IAAI,CAACG,qBAAqB,CAAC","ignoreList":[]}
|
|
@@ -92,10 +92,34 @@
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
.
|
|
95
|
+
.collapsed {
|
|
96
96
|
transform: rotate(-135deg);
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
+
.headerContentWrapper {
|
|
100
|
+
display: grid;
|
|
101
|
+
grid-template-columns: 1fr;
|
|
102
|
+
overflow: hidden;
|
|
103
|
+
transition: grid-template-columns var(--osdk-filter-list-collapse-transition);
|
|
104
|
+
|
|
105
|
+
@media (prefers-reduced-motion: reduce) {
|
|
106
|
+
transition: none;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.headerContentWrapper[data-collapsed="true"] {
|
|
111
|
+
grid-template-columns: 0fr;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.headerContentInner {
|
|
115
|
+
display: flex;
|
|
116
|
+
align-items: center;
|
|
117
|
+
justify-content: space-between;
|
|
118
|
+
flex: 1;
|
|
119
|
+
overflow: hidden;
|
|
120
|
+
min-width: 0;
|
|
121
|
+
}
|
|
122
|
+
|
|
99
123
|
.resetButton {
|
|
100
124
|
font-family: var(--osdk-filter-header-font-family);
|
|
101
125
|
font-size: var(--osdk-filter-header-reset-font-size);
|
|
@@ -15,53 +15,72 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
+
import { Button } from "@base-ui/react/button";
|
|
18
19
|
import classnames from "classnames";
|
|
19
20
|
import React, { memo, useCallback } from "react";
|
|
20
21
|
import { ErrorBoundary } from "../../shared/ErrorBoundary.js";
|
|
21
|
-
import {
|
|
22
|
+
import { supportsExcluding } from "../utils/filterValues.js";
|
|
22
23
|
import { DragHandleIcon } from "./DragHandleIcon.js";
|
|
23
|
-
import {
|
|
24
|
+
import { ExcludeIcon, IncludeIcon, RemoveIcon } from "./FilterIcons.js";
|
|
24
25
|
import styles from "./FilterListItem.module.css";
|
|
25
26
|
function FilterListItemInner({
|
|
26
|
-
objectType,
|
|
27
|
-
objectSet,
|
|
28
27
|
definition,
|
|
29
28
|
filterKey,
|
|
29
|
+
label,
|
|
30
30
|
filterState,
|
|
31
31
|
onFilterStateChanged,
|
|
32
|
-
|
|
32
|
+
onFilterRemoved,
|
|
33
|
+
renderInput,
|
|
33
34
|
dragHandleAttributes,
|
|
34
35
|
dragHandleListeners,
|
|
35
36
|
className,
|
|
36
37
|
style
|
|
37
38
|
}) {
|
|
38
|
-
const label = getFilterLabel(definition);
|
|
39
39
|
const handleFilterStateChanged = useCallback(newState => {
|
|
40
40
|
onFilterStateChanged(filterKey, newState);
|
|
41
41
|
}, [filterKey, onFilterStateChanged]);
|
|
42
|
+
const handleToggleExclude = useCallback(() => {
|
|
43
|
+
if (filterState) {
|
|
44
|
+
onFilterStateChanged(filterKey, {
|
|
45
|
+
...filterState,
|
|
46
|
+
isExcluding: !filterState.isExcluding
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}, [filterKey, filterState, onFilterStateChanged]);
|
|
50
|
+
const handleRemove = useCallback(() => {
|
|
51
|
+
onFilterRemoved?.(filterKey);
|
|
52
|
+
}, [filterKey, onFilterRemoved]);
|
|
53
|
+
const isExcluding = filterState?.isExcluding ?? false;
|
|
54
|
+
const showExcludeToggle = supportsExcluding(filterState);
|
|
42
55
|
return /*#__PURE__*/React.createElement("div", {
|
|
43
56
|
className: classnames(styles.filterItem, className),
|
|
44
57
|
style: style,
|
|
45
|
-
"data-
|
|
58
|
+
"data-excluding": isExcluding || undefined
|
|
46
59
|
}, /*#__PURE__*/React.createElement("div", {
|
|
47
60
|
className: styles.itemHeader
|
|
48
|
-
}, dragHandleAttributes && /*#__PURE__*/React.createElement(
|
|
49
|
-
type: "button",
|
|
61
|
+
}, dragHandleAttributes && /*#__PURE__*/React.createElement(Button, _extends({
|
|
50
62
|
className: styles.dragHandle,
|
|
51
63
|
"aria-label": `Reorder ${label}`
|
|
52
64
|
}, dragHandleAttributes, dragHandleListeners), /*#__PURE__*/React.createElement(DragHandleIcon, null)), /*#__PURE__*/React.createElement("span", {
|
|
53
65
|
className: styles.itemLabel
|
|
54
|
-
}, label)
|
|
66
|
+
}, label), showExcludeToggle && /*#__PURE__*/React.createElement(Button, {
|
|
67
|
+
className: styles.excludeToggle,
|
|
68
|
+
onClick: handleToggleExclude,
|
|
69
|
+
"aria-pressed": isExcluding,
|
|
70
|
+
"aria-label": isExcluding ? "Switch to include mode" : "Switch to exclude mode"
|
|
71
|
+
}, isExcluding ? /*#__PURE__*/React.createElement(ExcludeIcon, null) : /*#__PURE__*/React.createElement(IncludeIcon, null)), onFilterRemoved && /*#__PURE__*/React.createElement(Button, {
|
|
72
|
+
className: styles.removeButton,
|
|
73
|
+
onClick: handleRemove,
|
|
74
|
+
"aria-label": `Remove ${label} filter`
|
|
75
|
+
}, /*#__PURE__*/React.createElement(RemoveIcon, null))), /*#__PURE__*/React.createElement("div", {
|
|
55
76
|
className: styles.itemContent
|
|
56
77
|
}, /*#__PURE__*/React.createElement(ErrorBoundary, {
|
|
57
78
|
errorMessage: "Error loading filter"
|
|
58
|
-
},
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
onFilterStateChanged: handleFilterStateChanged,
|
|
64
|
-
whereClause: whereClause
|
|
79
|
+
}, renderInput({
|
|
80
|
+
definition,
|
|
81
|
+
filterKey,
|
|
82
|
+
filterState,
|
|
83
|
+
onFilterStateChanged: handleFilterStateChanged
|
|
65
84
|
}))));
|
|
66
85
|
}
|
|
67
86
|
export const FilterListItem = /*#__PURE__*/memo(FilterListItemInner);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterListItem.js","names":["classnames","React","memo","useCallback","ErrorBoundary","
|
|
1
|
+
{"version":3,"file":"FilterListItem.js","names":["Button","classnames","React","memo","useCallback","ErrorBoundary","supportsExcluding","DragHandleIcon","ExcludeIcon","IncludeIcon","RemoveIcon","styles","FilterListItemInner","definition","filterKey","label","filterState","onFilterStateChanged","onFilterRemoved","renderInput","dragHandleAttributes","dragHandleListeners","className","style","handleFilterStateChanged","newState","handleToggleExclude","isExcluding","handleRemove","showExcludeToggle","createElement","filterItem","undefined","itemHeader","_extends","dragHandle","itemLabel","excludeToggle","onClick","removeButton","itemContent","errorMessage","FilterListItem"],"sources":["FilterListItem.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport type {\n DraggableAttributes,\n DraggableSyntheticListeners,\n} from \"@dnd-kit/core\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback } from \"react\";\nimport { ErrorBoundary } from \"../../shared/ErrorBoundary.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { supportsExcluding } from \"../utils/filterValues.js\";\nimport type { RenderFilterInput } from \"./BaseFilterListApi.js\";\nimport { DragHandleIcon } from \"./DragHandleIcon.js\";\nimport { ExcludeIcon, IncludeIcon, RemoveIcon } from \"./FilterIcons.js\";\nimport styles from \"./FilterListItem.module.css\";\n\ninterface FilterListItemProps<D> {\n definition: D;\n filterKey: string;\n label: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (\n filterKey: string,\n state: FilterState,\n ) => void;\n onFilterRemoved?: (filterKey: string) => void;\n renderInput: RenderFilterInput<D>;\n dragHandleAttributes?: DraggableAttributes;\n dragHandleListeners?: DraggableSyntheticListeners;\n className?: string;\n style?: React.CSSProperties;\n}\n\nfunction FilterListItemInner<D>({\n definition,\n filterKey,\n label,\n filterState,\n onFilterStateChanged,\n onFilterRemoved,\n renderInput,\n dragHandleAttributes,\n dragHandleListeners,\n className,\n style,\n}: FilterListItemProps<D>): React.ReactElement {\n const handleFilterStateChanged = useCallback(\n (newState: FilterState) => {\n onFilterStateChanged(filterKey, newState);\n },\n [filterKey, onFilterStateChanged],\n );\n\n const handleToggleExclude = useCallback(\n () => {\n if (filterState) {\n onFilterStateChanged(filterKey, {\n ...filterState,\n isExcluding: !filterState.isExcluding,\n });\n }\n },\n [filterKey, filterState, onFilterStateChanged],\n );\n\n const handleRemove = useCallback(\n () => {\n onFilterRemoved?.(filterKey);\n },\n [filterKey, onFilterRemoved],\n );\n\n const isExcluding = filterState?.isExcluding ?? false;\n const showExcludeToggle = supportsExcluding(filterState);\n\n return (\n <div\n className={classnames(styles.filterItem, className)}\n style={style}\n data-excluding={isExcluding || undefined}\n >\n <div className={styles.itemHeader}>\n {dragHandleAttributes && (\n <Button\n className={styles.dragHandle}\n aria-label={`Reorder ${label}`}\n {...dragHandleAttributes}\n {...dragHandleListeners}\n >\n <DragHandleIcon />\n </Button>\n )}\n <span className={styles.itemLabel}>{label}</span>\n {showExcludeToggle && (\n <Button\n className={styles.excludeToggle}\n onClick={handleToggleExclude}\n aria-pressed={isExcluding}\n aria-label={isExcluding\n ? \"Switch to include mode\"\n : \"Switch to exclude mode\"}\n >\n {isExcluding ? <ExcludeIcon /> : <IncludeIcon />}\n </Button>\n )}\n {onFilterRemoved && (\n <Button\n className={styles.removeButton}\n onClick={handleRemove}\n aria-label={`Remove ${label} filter`}\n >\n <RemoveIcon />\n </Button>\n )}\n </div>\n\n <div className={styles.itemContent}>\n <ErrorBoundary errorMessage=\"Error loading filter\">\n {renderInput({\n definition,\n filterKey,\n filterState,\n onFilterStateChanged: handleFilterStateChanged,\n })}\n </ErrorBoundary>\n </div>\n </div>\n );\n}\n\nexport const FilterListItem = memo(\n FilterListItemInner,\n) as typeof FilterListItemInner;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
.itemLabel {
|
|
29
|
+
flex: 1;
|
|
29
30
|
font-family: var(--osdk-filter-item-label-font-family);
|
|
30
31
|
font-size: var(--osdk-filter-item-label-font-size);
|
|
31
32
|
font-weight: var(--osdk-filter-item-label-font-weight);
|
|
@@ -60,11 +61,66 @@
|
|
|
60
61
|
}
|
|
61
62
|
|
|
62
63
|
&:focus-visible {
|
|
63
|
-
outline:
|
|
64
|
-
outline-offset:
|
|
64
|
+
outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-item-drag-handle-focus-outline-color);
|
|
65
|
+
outline-offset: var(--osdk-filter-input-focus-outline-offset);
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
68
|
|
|
69
|
+
.excludeToggle {
|
|
70
|
+
display: flex;
|
|
71
|
+
align-items: center;
|
|
72
|
+
justify-content: center;
|
|
73
|
+
padding: var(--osdk-filter-item-exclude-toggle-padding);
|
|
74
|
+
margin-left: auto;
|
|
75
|
+
border: none;
|
|
76
|
+
background: transparent;
|
|
77
|
+
cursor: pointer;
|
|
78
|
+
border-radius: var(--osdk-filter-item-exclude-toggle-border-radius);
|
|
79
|
+
color: var(--osdk-filter-item-exclude-toggle-color);
|
|
80
|
+
|
|
81
|
+
&:hover {
|
|
82
|
+
color: var(--osdk-filter-item-exclude-toggle-color-hover);
|
|
83
|
+
background: var(--osdk-filter-item-exclude-toggle-bg-hover);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
&:focus-visible {
|
|
87
|
+
outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);
|
|
88
|
+
outline-offset: var(--osdk-filter-input-focus-outline-offset);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.excludeToggle[aria-pressed="true"] {
|
|
93
|
+
color: var(--osdk-filter-item-exclude-toggle-color-active);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.removeButton {
|
|
97
|
+
display: flex;
|
|
98
|
+
align-items: center;
|
|
99
|
+
justify-content: center;
|
|
100
|
+
padding: var(--osdk-filter-item-exclude-toggle-padding);
|
|
101
|
+
margin-left: var(--osdk-surface-spacing);
|
|
102
|
+
border: none;
|
|
103
|
+
background: transparent;
|
|
104
|
+
cursor: pointer;
|
|
105
|
+
border-radius: var(--osdk-filter-item-exclude-toggle-border-radius);
|
|
106
|
+
color: var(--osdk-filter-item-exclude-toggle-color);
|
|
107
|
+
|
|
108
|
+
&:hover {
|
|
109
|
+
color: var(--osdk-filter-item-exclude-toggle-color-hover);
|
|
110
|
+
background: var(--osdk-filter-item-exclude-toggle-bg-hover);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
&:focus-visible {
|
|
114
|
+
outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);
|
|
115
|
+
outline-offset: var(--osdk-filter-input-focus-outline-offset);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.filterItem[data-excluding] {
|
|
120
|
+
border-left: var(--osdk-filter-item-exclude-border-width) solid var(--osdk-filter-item-exclude-border-color);
|
|
121
|
+
padding-left: var(--osdk-filter-item-gap);
|
|
122
|
+
}
|
|
123
|
+
|
|
68
124
|
.dragging {
|
|
69
125
|
opacity: var(--osdk-filter-item-dragging-opacity);
|
|
70
126
|
}
|
|
@@ -22,13 +22,13 @@ import { FilterListItem } from "./FilterListItem.js";
|
|
|
22
22
|
import styles from "./FilterListItem.module.css";
|
|
23
23
|
export function SortableFilterListItem({
|
|
24
24
|
id,
|
|
25
|
-
objectType,
|
|
26
|
-
objectSet,
|
|
27
25
|
definition,
|
|
28
26
|
filterKey,
|
|
27
|
+
label,
|
|
29
28
|
filterState,
|
|
30
29
|
onFilterStateChanged,
|
|
31
|
-
|
|
30
|
+
onFilterRemoved,
|
|
31
|
+
renderInput
|
|
32
32
|
}) {
|
|
33
33
|
const {
|
|
34
34
|
attributes,
|
|
@@ -49,13 +49,13 @@ export function SortableFilterListItem({
|
|
|
49
49
|
style: style,
|
|
50
50
|
className: classnames(isDragging && styles.dragging)
|
|
51
51
|
}, /*#__PURE__*/React.createElement(FilterListItem, {
|
|
52
|
-
objectType: objectType,
|
|
53
|
-
objectSet: objectSet,
|
|
54
52
|
definition: definition,
|
|
55
53
|
filterKey: filterKey,
|
|
54
|
+
label: label,
|
|
56
55
|
filterState: filterState,
|
|
57
56
|
onFilterStateChanged: onFilterStateChanged,
|
|
58
|
-
|
|
57
|
+
onFilterRemoved: onFilterRemoved,
|
|
58
|
+
renderInput: renderInput,
|
|
59
59
|
dragHandleAttributes: attributes,
|
|
60
60
|
dragHandleListeners: listeners
|
|
61
61
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortableFilterListItem.js","names":["useSortable","CSS","classnames","React","useMemo","FilterListItem","styles","SortableFilterListItem","id","
|
|
1
|
+
{"version":3,"file":"SortableFilterListItem.js","names":["useSortable","CSS","classnames","React","useMemo","FilterListItem","styles","SortableFilterListItem","id","definition","filterKey","label","filterState","onFilterStateChanged","onFilterRemoved","renderInput","attributes","listeners","setNodeRef","transform","transition","isDragging","style","Transform","toString","undefined","createElement","ref","className","dragging","dragHandleAttributes","dragHandleListeners"],"sources":["SortableFilterListItem.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport classnames from \"classnames\";\nimport React, { useMemo } from \"react\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport type { RenderFilterInput } from \"./BaseFilterListApi.js\";\nimport { FilterListItem } from \"./FilterListItem.js\";\nimport styles from \"./FilterListItem.module.css\";\n\ninterface SortableFilterListItemProps<D> {\n id: string;\n definition: D;\n filterKey: string;\n label: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (\n filterKey: string,\n state: FilterState,\n ) => void;\n onFilterRemoved?: (filterKey: string) => void;\n renderInput: RenderFilterInput<D>;\n}\n\nexport function SortableFilterListItem<D>({\n id,\n definition,\n filterKey,\n label,\n filterState,\n onFilterStateChanged,\n onFilterRemoved,\n renderInput,\n}: SortableFilterListItemProps<D>): React.ReactElement {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id });\n\n const style = useMemo<React.CSSProperties>(() => ({\n transform: CSS.Transform.toString(transform),\n transition: transition ?? undefined,\n }), [transform, transition]);\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={classnames(isDragging && styles.dragging)}\n >\n <FilterListItem\n definition={definition}\n filterKey={filterKey}\n label={label}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n onFilterRemoved={onFilterRemoved}\n renderInput={renderInput}\n dragHandleAttributes={attributes}\n dragHandleListeners={listeners}\n />\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,GAAG,QAAQ,oBAAoB;AACxC,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAAIC,OAAO,QAAQ,OAAO;AAGtC,SAASC,cAAc,QAAQ,qBAAqB;AACpD,OAAOC,MAAM,MAAM,6BAA6B;AAgBhD,OAAO,SAASC,sBAAsBA,CAAI;EACxCC,EAAE;EACFC,UAAU;EACVC,SAAS;EACTC,KAAK;EACLC,WAAW;EACXC,oBAAoB;EACpBC,eAAe;EACfC;AAC8B,CAAC,EAAsB;EACrD,MAAM;IACJC,UAAU;IACVC,SAAS;IACTC,UAAU;IACVC,SAAS;IACTC,UAAU;IACVC;EACF,CAAC,GAAGrB,WAAW,CAAC;IAAEQ;EAAG,CAAC,CAAC;EAEvB,MAAMc,KAAK,GAAGlB,OAAO,CAAsB,OAAO;IAChDe,SAAS,EAAElB,GAAG,CAACsB,SAAS,CAACC,QAAQ,CAACL,SAAS,CAAC;IAC5CC,UAAU,EAAEA,UAAU,IAAIK;EAC5B,CAAC,CAAC,EAAE,CAACN,SAAS,EAAEC,UAAU,CAAC,CAAC;EAE5B,oBACEjB,KAAA,CAAAuB,aAAA;IACEC,GAAG,EAAET,UAAW;IAChBI,KAAK,EAAEA,KAAM;IACbM,SAAS,EAAE1B,UAAU,CAACmB,UAAU,IAAIf,MAAM,CAACuB,QAAQ;EAAE,gBAErD1B,KAAA,CAAAuB,aAAA,CAACrB,cAAc;IACbI,UAAU,EAAEA,UAAW;IACvBC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbC,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3CC,eAAe,EAAEA,eAAgB;IACjCC,WAAW,EAAEA,WAAY;IACzBe,oBAAoB,EAAEd,UAAW;IACjCe,mBAAmB,EAAEd;EAAU,CAChC,CACE,CAAC;AAEV","ignoreList":[]}
|
|
@@ -14,8 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
export {
|
|
18
|
-
export { FilterList } from "./FilterList.js";
|
|
17
|
+
export { BaseFilterList } from "./BaseFilterList.js";
|
|
19
18
|
export { FilterListContent } from "./FilterListContent.js";
|
|
20
19
|
export { FilterListHeader } from "./FilterListHeader.js";
|
|
21
20
|
export { FilterListItem } from "./FilterListItem.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["BaseFilterList","FilterListContent","FilterListHeader","FilterListItem"],"sources":["index.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport { BaseFilterList } from \"./BaseFilterList.js\";\nexport type {\n BaseFilterListProps,\n RenderFilterInput,\n} from \"./BaseFilterListApi.js\";\nexport { FilterListContent } from \"./FilterListContent.js\";\nexport { FilterListHeader } from \"./FilterListHeader.js\";\nexport { FilterListItem } from \"./FilterListItem.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,qBAAqB;AAKpD,SAASC,iBAAiB,QAAQ,wBAAwB;AAC1D,SAASC,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,cAAc,QAAQ,qBAAqB","ignoreList":[]}
|
|
@@ -17,26 +17,19 @@
|
|
|
17
17
|
import classnames from "classnames";
|
|
18
18
|
import React, { memo, useCallback, useMemo } from "react";
|
|
19
19
|
import { Checkbox } from "../../../base-components/checkbox/Checkbox.js";
|
|
20
|
-
import { usePropertyAggregation } from "../../hooks/usePropertyAggregation.js";
|
|
21
20
|
import styles from "./CheckboxListInput.module.css";
|
|
22
21
|
import sharedStyles from "./shared.module.css";
|
|
23
22
|
function CheckboxListInputInner({
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
values,
|
|
24
|
+
isLoading,
|
|
25
|
+
error,
|
|
26
26
|
selectedValues,
|
|
27
27
|
onChange,
|
|
28
|
-
|
|
28
|
+
colorMap,
|
|
29
29
|
className,
|
|
30
30
|
style
|
|
31
31
|
}) {
|
|
32
|
-
const
|
|
33
|
-
data,
|
|
34
|
-
isLoading,
|
|
35
|
-
error
|
|
36
|
-
} = usePropertyAggregation(objectType, propertyKey, {
|
|
37
|
-
where: whereClause
|
|
38
|
-
});
|
|
39
|
-
const values = useMemo(() => data.map(item => item.value), [data]);
|
|
32
|
+
const displayValues = useMemo(() => values.map(item => item.value), [values]);
|
|
40
33
|
const selectedSet = useMemo(() => new Set(selectedValues), [selectedValues]);
|
|
41
34
|
const toggleValue = useCallback(value => {
|
|
42
35
|
if (selectedSet.has(value)) {
|
|
@@ -45,18 +38,39 @@ function CheckboxListInputInner({
|
|
|
45
38
|
onChange([...selectedValues, value]);
|
|
46
39
|
}
|
|
47
40
|
}, [selectedValues, selectedSet, onChange]);
|
|
41
|
+
const allSelected = useMemo(() => displayValues.length > 0 && displayValues.every(v => selectedSet.has(v)), [displayValues, selectedSet]);
|
|
42
|
+
const areSomeValuesSelected = useMemo(() => !allSelected && selectedValues.some(v => selectedSet.has(v)), [allSelected, selectedValues, selectedSet]);
|
|
43
|
+
const handleSelectAll = useCallback(() => {
|
|
44
|
+
if (allSelected) {
|
|
45
|
+
onChange([]);
|
|
46
|
+
} else {
|
|
47
|
+
onChange([...displayValues]);
|
|
48
|
+
}
|
|
49
|
+
}, [allSelected, displayValues, onChange]);
|
|
48
50
|
return /*#__PURE__*/React.createElement("div", {
|
|
49
51
|
className: classnames(styles.checkboxList, className),
|
|
50
52
|
style: style,
|
|
51
53
|
"data-loading": isLoading
|
|
52
54
|
}, error && /*#__PURE__*/React.createElement("div", {
|
|
53
55
|
className: sharedStyles.errorMessage
|
|
54
|
-
}, "Error loading values: ", error.message), !error &&
|
|
56
|
+
}, "Error loading values: ", error.message), !error && displayValues.length === 0 && /*#__PURE__*/React.createElement("div", {
|
|
55
57
|
className: sharedStyles.emptyMessage
|
|
56
|
-
}, isLoading ? "Loading values..." : "No values available"), (
|
|
58
|
+
}, isLoading ? "Loading values..." : "No values available"), (displayValues.length > 0 || isLoading) && /*#__PURE__*/React.createElement(React.Fragment, null, isLoading && /*#__PURE__*/React.createElement("div", {
|
|
57
59
|
className: sharedStyles.loadingMessage
|
|
58
|
-
}, "Updating..."),
|
|
60
|
+
}, "Updating..."), /*#__PURE__*/React.createElement("div", {
|
|
61
|
+
className: styles.checkboxRow,
|
|
62
|
+
"data-select-all": true
|
|
63
|
+
}, /*#__PURE__*/React.createElement("label", {
|
|
64
|
+
className: styles.checkboxLabel
|
|
65
|
+
}, /*#__PURE__*/React.createElement(Checkbox, {
|
|
66
|
+
checked: allSelected,
|
|
67
|
+
indeterminate: areSomeValuesSelected,
|
|
68
|
+
onCheckedChange: handleSelectAll
|
|
69
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
70
|
+
className: styles.valueText
|
|
71
|
+
}, "Select all"))), displayValues.map(value => {
|
|
59
72
|
const isSelected = selectedSet.has(value);
|
|
73
|
+
const color = colorMap?.[value];
|
|
60
74
|
return /*#__PURE__*/React.createElement("div", {
|
|
61
75
|
key: value,
|
|
62
76
|
className: styles.checkboxRow,
|
|
@@ -66,6 +80,11 @@ function CheckboxListInputInner({
|
|
|
66
80
|
}, /*#__PURE__*/React.createElement(Checkbox, {
|
|
67
81
|
checked: isSelected,
|
|
68
82
|
onCheckedChange: () => toggleValue(value)
|
|
83
|
+
}), color && /*#__PURE__*/React.createElement("span", {
|
|
84
|
+
className: styles.colorDot,
|
|
85
|
+
style: {
|
|
86
|
+
backgroundColor: color
|
|
87
|
+
}
|
|
69
88
|
}), /*#__PURE__*/React.createElement("span", {
|
|
70
89
|
className: styles.valueText
|
|
71
90
|
}, value)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxListInput.js","names":["classnames","React","memo","useCallback","useMemo","Checkbox","
|
|
1
|
+
{"version":3,"file":"CheckboxListInput.js","names":["classnames","React","memo","useCallback","useMemo","Checkbox","styles","sharedStyles","CheckboxListInputInner","values","isLoading","error","selectedValues","onChange","colorMap","className","style","displayValues","map","item","value","selectedSet","Set","toggleValue","has","filter","v","allSelected","length","every","areSomeValuesSelected","some","handleSelectAll","createElement","checkboxList","errorMessage","message","emptyMessage","Fragment","loadingMessage","checkboxRow","checkboxLabel","checked","indeterminate","onCheckedChange","valueText","isSelected","color","key","colorDot","backgroundColor","CheckboxListInput"],"sources":["CheckboxListInput.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { Checkbox } from \"../../../base-components/checkbox/Checkbox.js\";\nimport type { PropertyAggregationValue } from \"../../types/AggregationTypes.js\";\nimport styles from \"./CheckboxListInput.module.css\";\nimport sharedStyles from \"./shared.module.css\";\n\ninterface CheckboxListInputProps {\n values: PropertyAggregationValue[];\n isLoading: boolean;\n error: Error | null;\n selectedValues: string[];\n onChange: (selectedValues: string[]) => void;\n colorMap?: Record<string, string>;\n className?: string;\n style?: React.CSSProperties;\n}\n\nfunction CheckboxListInputInner({\n values,\n isLoading,\n error,\n selectedValues,\n onChange,\n colorMap,\n className,\n style,\n}: CheckboxListInputProps): React.ReactElement {\n const displayValues = useMemo(\n () => values.map((item) => item.value),\n [values],\n );\n\n const selectedSet = useMemo(\n () => new Set(selectedValues),\n [selectedValues],\n );\n\n const toggleValue = useCallback(\n (value: string) => {\n if (selectedSet.has(value)) {\n onChange(selectedValues.filter((v) => v !== value));\n } else {\n onChange([...selectedValues, value]);\n }\n },\n [selectedValues, selectedSet, onChange],\n );\n\n const allSelected = useMemo(\n () =>\n displayValues.length > 0\n && displayValues.every((v) => selectedSet.has(v)),\n [displayValues, selectedSet],\n );\n const areSomeValuesSelected = useMemo(\n () => !allSelected && selectedValues.some((v) => selectedSet.has(v)),\n [allSelected, selectedValues, selectedSet],\n );\n\n const handleSelectAll = useCallback(\n () => {\n if (allSelected) {\n onChange([]);\n } else {\n onChange([...displayValues]);\n }\n },\n [allSelected, displayValues, onChange],\n );\n\n return (\n <div\n className={classnames(styles.checkboxList, className)}\n style={style}\n data-loading={isLoading}\n >\n {error && (\n <div className={sharedStyles.errorMessage}>\n Error loading values: {error.message}\n </div>\n )}\n\n {!error && displayValues.length === 0 && (\n <div className={sharedStyles.emptyMessage}>\n {isLoading ? \"Loading values...\" : \"No values available\"}\n </div>\n )}\n\n {(displayValues.length > 0 || isLoading) && (\n <>\n {isLoading && (\n <div className={sharedStyles.loadingMessage}>\n Updating...\n </div>\n )}\n <div\n className={styles.checkboxRow}\n data-select-all\n >\n <label className={styles.checkboxLabel}>\n <Checkbox\n checked={allSelected}\n indeterminate={areSomeValuesSelected}\n onCheckedChange={handleSelectAll}\n />\n <span className={styles.valueText}>Select all</span>\n </label>\n </div>\n {displayValues.map((value) => {\n const isSelected = selectedSet.has(value);\n const color = colorMap?.[value];\n\n return (\n <div\n key={value}\n className={styles.checkboxRow}\n data-selected={isSelected}\n >\n <label className={styles.checkboxLabel}>\n <Checkbox\n checked={isSelected}\n onCheckedChange={() => toggleValue(value)}\n />\n {color && (\n <span\n className={styles.colorDot}\n style={{ backgroundColor: color }}\n />\n )}\n <span className={styles.valueText}>\n {value}\n </span>\n </label>\n </div>\n );\n })}\n </>\n )}\n </div>\n );\n}\n\nexport const CheckboxListInput = memo(\n CheckboxListInputInner,\n) as typeof CheckboxListInputInner;\n"],"mappings":"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","ignoreList":[]}
|