@platforma-sdk/ui-vue 1.54.1 → 1.54.7
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/.turbo/turbo-build.log +142 -195
- package/.turbo/turbo-formatter$colon$check.log +2 -2
- package/.turbo/turbo-linter$colon$check.log +2 -2
- package/.turbo/turbo-types$colon$check.log +1 -1
- package/CHANGELOG.md +9 -0
- package/dist/AgGridVue/useAgGridOptions.js +2 -3
- package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
- package/dist/components/PlAdvancedFilter/constants.d.ts +1 -1
- package/dist/components/PlAdvancedFilter/index.d.ts +2 -2
- package/dist/components/PlAdvancedFilter/index.d.ts.map +1 -1
- package/dist/components/PlAdvancedFilter/index.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +135 -146
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +7 -8
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-state-v2.d.ts +3 -2
- package/dist/components/PlAgDataTable/sources/table-state-v2.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-state-v2.js +93 -96
- package/dist/components/PlAgDataTable/sources/table-state-v2.js.map +1 -1
- package/dist/components/PlAgDataTable/types.d.ts +3 -44
- package/dist/components/PlAgDataTable/types.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/types.js +26 -42
- package/dist/components/PlAgDataTable/types.js.map +1 -1
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +9 -10
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +1 -1
- package/dist/components/PlAgRowNumHeader.vue.js +8 -9
- package/dist/components/PlAgRowNumHeader.vue.js.map +1 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.vue.d.ts.map +1 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +76 -74
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue.d.ts +7 -9
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue.d.ts.map +1 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js +82 -132
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue3.js +4 -17
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue3.js.map +1 -1
- package/dist/components/PlTableFilters/index.d.ts +0 -1
- package/dist/components/PlTableFilters/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +6 -6
- package/src/components/PlAdvancedFilter/index.ts +1 -1
- package/src/components/PlAgDataTable/PlAgDataTableV2.vue +3 -22
- package/src/components/PlAgDataTable/sources/table-state-v2.ts +66 -59
- package/src/components/PlAgDataTable/types.ts +15 -78
- package/src/components/PlAnnotations/components/FilterSidebar.vue +3 -6
- package/src/components/PlTableFilters/PlTableFiltersV2.vue +100 -232
- package/src/components/PlTableFilters/index.ts +0 -1
- package/dist/_virtual/index.js +0 -6
- package/dist/_virtual/index.js.map +0 -1
- package/dist/_virtual/re.js +0 -5
- package/dist/_virtual/re.js.map +0 -1
- package/dist/components/PlTableFilters/PlTableAddFilterV2.vue.d.ts +0 -15
- package/dist/components/PlTableFilters/PlTableAddFilterV2.vue.d.ts.map +0 -1
- package/dist/components/PlTableFilters/PlTableAddFilterV2.vue.js +0 -97
- package/dist/components/PlTableFilters/PlTableAddFilterV2.vue.js.map +0 -1
- package/dist/components/PlTableFilters/PlTableAddFilterV2.vue2.js +0 -5
- package/dist/components/PlTableFilters/PlTableAddFilterV2.vue2.js.map +0 -1
- package/dist/components/PlTableFilters/PlTableFilterEntryV2.vue.d.ts +0 -11
- package/dist/components/PlTableFilters/PlTableFilterEntryV2.vue.d.ts.map +0 -1
- package/dist/components/PlTableFilters/PlTableFilterEntryV2.vue.js +0 -142
- package/dist/components/PlTableFilters/PlTableFilterEntryV2.vue.js.map +0 -1
- package/dist/components/PlTableFilters/PlTableFilterEntryV2.vue2.js +0 -5
- package/dist/components/PlTableFilters/PlTableFilterEntryV2.vue2.js.map +0 -1
- package/dist/components/PlTableFilters/filters-state.d.ts +0 -7
- package/dist/components/PlTableFilters/filters-state.d.ts.map +0 -1
- package/dist/components/PlTableFilters/filters-state.js +0 -79
- package/dist/components/PlTableFilters/filters-state.js.map +0 -1
- package/dist/components/PlTableFilters/filters_logic.d.ts +0 -24
- package/dist/components/PlTableFilters/filters_logic.d.ts.map +0 -1
- package/dist/components/PlTableFilters/filters_logic.js +0 -348
- package/dist/components/PlTableFilters/filters_logic.js.map +0 -1
- package/dist/components/PlTableFilters/types.d.ts +0 -26
- package/dist/components/PlTableFilters/types.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/classes/comparator.js +0 -57
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/classes/comparator.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/classes/range.js +0 -149
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/classes/range.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/classes/semver.js +0 -170
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/classes/semver.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/clean.js +0 -15
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/clean.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/cmp.js +0 -40
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/cmp.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/coerce.js +0 -34
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/coerce.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare-build.js +0 -15
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare-build.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare-loose.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare-loose.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/diff.js +0 -25
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/diff.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/eq.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/eq.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/gt.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/gt.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/gte.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/gte.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/inc.js +0 -22
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/inc.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/lt.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/lt.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/lte.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/lte.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/major.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/major.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/minor.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/minor.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/neq.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/neq.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/parse.js +0 -22
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/parse.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/patch.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/patch.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/prerelease.js +0 -15
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/prerelease.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/rcompare.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/rcompare.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/rsort.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/rsort.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/satisfies.js +0 -19
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/satisfies.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/sort.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/sort.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/valid.js +0 -15
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/valid.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/index.js +0 -98
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/index.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/constants.js +0 -29
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/constants.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/debug.js +0 -9
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/debug.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/identifiers.js +0 -17
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/identifiers.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/lrucache.js +0 -33
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/lrucache.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/parse-options.js +0 -11
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/parse-options.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/re.js +0 -33
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/re.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/gtr.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/gtr.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/intersects.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/intersects.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/ltr.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/ltr.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/max-satisfying.js +0 -23
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/max-satisfying.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/min-satisfying.js +0 -23
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/min-satisfying.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/min-version.js +0 -43
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/min-version.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/outside.js +0 -45
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/outside.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/simplify.js +0 -25
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/simplify.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/subset.js +0 -95
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/subset.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/to-comparators.js +0 -12
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/to-comparators.js.map +0 -1
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/valid.js +0 -18
- package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/valid.js.map +0 -1
- package/src/components/PlTableFilters/PlTableAddFilterV2.vue +0 -84
- package/src/components/PlTableFilters/PlTableFilterEntryV2.vue +0 -157
- package/src/components/PlTableFilters/filters-state.ts +0 -152
- package/src/components/PlTableFilters/filters_logic.ts +0 -444
- package/src/components/PlTableFilters/types.ts +0 -32
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { __require as m } from "../classes/range.js";
|
|
2
|
-
var r, o;
|
|
3
|
-
function u() {
|
|
4
|
-
if (o) return r;
|
|
5
|
-
o = 1;
|
|
6
|
-
const a = m();
|
|
7
|
-
return r = (e, t) => new a(e, t).set.map((s) => s.map((i) => i.value).join(" ").trim().split(" ")), r;
|
|
8
|
-
}
|
|
9
|
-
export {
|
|
10
|
-
u as __require
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=to-comparators.js.map
|
package/dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/to-comparators.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"to-comparators.js","sources":["../../../../../../../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/to-comparators.js"],"sourcesContent":["'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n"],"names":["Range","require$$0","toComparators_1","range","options","comp","c"],"mappings":";;;;;AAEA,QAAMA,IAAQC,EAAA;AAOd,SAAAC,IAJsB,CAACC,GAAOC,MAC5B,IAAIJ,EAAMG,GAAOC,CAAO,EAAE,IACvB,IAAI,CAAAC,MAAQA,EAAK,IAAI,CAAAC,MAAKA,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,KAAI,EAAG,MAAM,GAAG,CAAC;;","x_google_ignoreList":[0]}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { __require as t } from "../classes/range.js";
|
|
2
|
-
var r, e;
|
|
3
|
-
function o() {
|
|
4
|
-
if (e) return r;
|
|
5
|
-
e = 1;
|
|
6
|
-
const a = t();
|
|
7
|
-
return r = (n, i) => {
|
|
8
|
-
try {
|
|
9
|
-
return new a(n, i).range || "*";
|
|
10
|
-
} catch {
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
}, r;
|
|
14
|
-
}
|
|
15
|
-
export {
|
|
16
|
-
o as __require
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=valid.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"valid.js","sources":["../../../../../../../../../node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/valid.js"],"sourcesContent":["'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n"],"names":["Range","require$$0","valid","range","options"],"mappings":";;;;;AAEA,QAAMA,IAAQC,EAAA;AAUd,SAAAC,IATmB,CAACC,GAAOC,MAAY;AACrC,QAAI;AAGF,aAAO,IAAIJ,EAAMG,GAAOC,CAAO,EAAE,SAAS;AAAA,IAC9C,QAAe;AACX,aAAO;AAAA,IACX;AAAA,EACA;;","x_google_ignoreList":[0]}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import { deepClone } from "@milaboratories/helpers";
|
|
3
|
-
import {
|
|
4
|
-
PlBtnGhost,
|
|
5
|
-
PlBtnPrimary,
|
|
6
|
-
PlDropdown,
|
|
7
|
-
PlSlideModal,
|
|
8
|
-
type ListOption,
|
|
9
|
-
} from "@milaboratories/uikit";
|
|
10
|
-
import { computed, ref, watch } from "vue";
|
|
11
|
-
import { type PlDataTableFilterStateInternal } from "./types";
|
|
12
|
-
import { getFilterDefault } from "./filters_logic";
|
|
13
|
-
import PlTableFilterEntryV2 from "./PlTableFilterEntryV2.vue";
|
|
14
|
-
|
|
15
|
-
const show = defineModel<boolean>({ required: true });
|
|
16
|
-
const props = defineProps<{
|
|
17
|
-
filters: Readonly<PlDataTableFilterStateInternal[]>;
|
|
18
|
-
setFilter(idx: number, filter: PlDataTableFilterStateInternal): void;
|
|
19
|
-
}>();
|
|
20
|
-
|
|
21
|
-
const filterOptions = computed<ListOption<number>[]>(() => {
|
|
22
|
-
return props.filters
|
|
23
|
-
.map((s, i) => {
|
|
24
|
-
return {
|
|
25
|
-
value: i,
|
|
26
|
-
text: s.label,
|
|
27
|
-
};
|
|
28
|
-
})
|
|
29
|
-
.filter((o) => props.filters[o.value].filter === null);
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
const newFilterIdx = ref<number>();
|
|
33
|
-
const newFilter = ref<PlDataTableFilterStateInternal | null>(null);
|
|
34
|
-
watch(
|
|
35
|
-
() => newFilterIdx.value,
|
|
36
|
-
(newFilterIdx) => {
|
|
37
|
-
if (newFilterIdx === undefined) {
|
|
38
|
-
newFilter.value = null;
|
|
39
|
-
} else {
|
|
40
|
-
const filterClone = deepClone(props.filters[newFilterIdx]);
|
|
41
|
-
if (!filterClone.filter) {
|
|
42
|
-
filterClone.filter = {
|
|
43
|
-
value: filterClone.defaultFilter ?? getFilterDefault(filterClone.options[0].value),
|
|
44
|
-
disabled: false,
|
|
45
|
-
open: true,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
newFilter.value = filterClone;
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
);
|
|
52
|
-
const discardFilter = () => {
|
|
53
|
-
newFilterIdx.value = undefined;
|
|
54
|
-
show.value = false;
|
|
55
|
-
};
|
|
56
|
-
const applyFilter = () => {
|
|
57
|
-
if (newFilterIdx.value !== undefined && newFilter.value) {
|
|
58
|
-
props.setFilter(newFilterIdx.value, newFilter.value);
|
|
59
|
-
}
|
|
60
|
-
discardFilter();
|
|
61
|
-
};
|
|
62
|
-
</script>
|
|
63
|
-
|
|
64
|
-
<template>
|
|
65
|
-
<PlSlideModal v-model="show" :close-on-outside-click="false">
|
|
66
|
-
<template #title>Add Filter</template>
|
|
67
|
-
<div class="d-flex flex-column gap-24">
|
|
68
|
-
<PlDropdown
|
|
69
|
-
v-model="newFilterIdx"
|
|
70
|
-
:options="filterOptions"
|
|
71
|
-
label="Column"
|
|
72
|
-
placeholder="Choose..."
|
|
73
|
-
/>
|
|
74
|
-
<div v-if="newFilterIdx === undefined" class="text-subtitle-m" style="color: var(--txt-mask)">
|
|
75
|
-
Choose a column to view and adjust its options
|
|
76
|
-
</div>
|
|
77
|
-
<PlTableFilterEntryV2 v-if="newFilter" v-model="newFilter" />
|
|
78
|
-
</div>
|
|
79
|
-
<template #actions>
|
|
80
|
-
<PlBtnPrimary :disabled="!newFilter" @click="applyFilter">Add Filter</PlBtnPrimary>
|
|
81
|
-
<PlBtnGhost :justify-center="false" @click="discardFilter">Cancel</PlBtnGhost>
|
|
82
|
-
</template>
|
|
83
|
-
</PlSlideModal>
|
|
84
|
-
</template>
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import { PlDropdown, PlTextField, PlToggleSwitch, Slider, PlBtnGhost } from "@milaboratories/uikit";
|
|
3
|
-
import { isJsonEqual } from "@milaboratories/helpers";
|
|
4
|
-
import {
|
|
5
|
-
changeFilter,
|
|
6
|
-
parseNumber,
|
|
7
|
-
parseString,
|
|
8
|
-
parseRegex,
|
|
9
|
-
makeWildcardOptions,
|
|
10
|
-
isFilterDiscrete,
|
|
11
|
-
getFilterDefault,
|
|
12
|
-
} from "./filters_logic";
|
|
13
|
-
import type { PlDataTableFilterStateInternal } from "./types";
|
|
14
|
-
import { watchEffect } from "vue";
|
|
15
|
-
|
|
16
|
-
const entry = defineModel<PlDataTableFilterStateInternal>({ required: true });
|
|
17
|
-
watchEffect(() => {
|
|
18
|
-
if (!entry.value.filter) {
|
|
19
|
-
entry.value.filter = {
|
|
20
|
-
value: getFilterDefault(entry.value.options[0].value),
|
|
21
|
-
disabled: false,
|
|
22
|
-
open: true,
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
</script>
|
|
27
|
-
|
|
28
|
-
<template>
|
|
29
|
-
<div v-if="entry.filter" class="d-flex flex-column gap-24">
|
|
30
|
-
<PlDropdown
|
|
31
|
-
:model-value="entry.filter.value.type"
|
|
32
|
-
:options="entry.options"
|
|
33
|
-
:disabled="entry.filter.disabled"
|
|
34
|
-
label="Predicate"
|
|
35
|
-
@update:model-value="
|
|
36
|
-
(type) =>
|
|
37
|
-
(entry.filter!.value = changeFilter(entry.filter!.value, type!, entry.discreteOptions))
|
|
38
|
-
"
|
|
39
|
-
/>
|
|
40
|
-
|
|
41
|
-
<template v-if="entry.discreteOptions.length > 0 && isFilterDiscrete(entry.filter.value)">
|
|
42
|
-
<PlDropdown v-model="entry.filter.value.reference" :options="entry.discreteOptions" />
|
|
43
|
-
</template>
|
|
44
|
-
<template v-else>
|
|
45
|
-
<template
|
|
46
|
-
v-if="
|
|
47
|
-
entry.filter.value.type === 'number_equals' ||
|
|
48
|
-
entry.filter.value.type === 'number_notEquals' ||
|
|
49
|
-
entry.filter.value.type === 'number_lessThan' ||
|
|
50
|
-
entry.filter.value.type === 'number_lessThanOrEqualTo' ||
|
|
51
|
-
entry.filter.value.type === 'number_greaterThan' ||
|
|
52
|
-
entry.filter.value.type === 'number_greaterThanOrEqualTo'
|
|
53
|
-
"
|
|
54
|
-
>
|
|
55
|
-
<PlTextField
|
|
56
|
-
v-model="entry.filter.value.reference"
|
|
57
|
-
:disabled="entry.filter.disabled"
|
|
58
|
-
:parse="(value: string): number => parseNumber(entry.spec, value)"
|
|
59
|
-
label="Reference value"
|
|
60
|
-
/>
|
|
61
|
-
</template>
|
|
62
|
-
|
|
63
|
-
<template v-if="entry.filter.value.type === 'number_between'">
|
|
64
|
-
<PlTextField
|
|
65
|
-
v-model="entry.filter.value.lowerBound"
|
|
66
|
-
:disabled="entry.filter.disabled"
|
|
67
|
-
:parse="(value: string): number => parseNumber(entry.spec, value)"
|
|
68
|
-
label="Lower bound"
|
|
69
|
-
/>
|
|
70
|
-
<PlToggleSwitch
|
|
71
|
-
v-model="entry.filter.value.includeLowerBound"
|
|
72
|
-
:disabled="entry.filter.disabled"
|
|
73
|
-
label="Include lower bound"
|
|
74
|
-
/>
|
|
75
|
-
<PlTextField
|
|
76
|
-
v-model="entry.filter.value.upperBound"
|
|
77
|
-
:disabled="entry.filter.disabled"
|
|
78
|
-
:parse="(value: string): number => parseNumber(entry.spec, value)"
|
|
79
|
-
label="Upper bound"
|
|
80
|
-
/>
|
|
81
|
-
<PlToggleSwitch
|
|
82
|
-
v-model="entry.filter.value.includeUpperBound"
|
|
83
|
-
:disabled="entry.filter.disabled"
|
|
84
|
-
label="Include upper bound"
|
|
85
|
-
/>
|
|
86
|
-
</template>
|
|
87
|
-
|
|
88
|
-
<template
|
|
89
|
-
v-if="
|
|
90
|
-
entry.filter.value.type === 'string_equals' ||
|
|
91
|
-
entry.filter.value.type === 'string_notEquals' ||
|
|
92
|
-
entry.filter.value.type === 'string_contains' ||
|
|
93
|
-
entry.filter.value.type === 'string_doesNotContain'
|
|
94
|
-
"
|
|
95
|
-
>
|
|
96
|
-
<PlTextField
|
|
97
|
-
v-model="entry.filter.value.reference"
|
|
98
|
-
:disabled="entry.filter.disabled"
|
|
99
|
-
:parse="(value: string): string => parseString(entry.spec, value)"
|
|
100
|
-
label="Reference value"
|
|
101
|
-
/>
|
|
102
|
-
</template>
|
|
103
|
-
|
|
104
|
-
<template
|
|
105
|
-
v-if="
|
|
106
|
-
entry.filter.value.type === 'string_matches' ||
|
|
107
|
-
entry.filter.value.type === 'string_doesNotMatch'
|
|
108
|
-
"
|
|
109
|
-
>
|
|
110
|
-
<PlTextField
|
|
111
|
-
v-model="entry.filter.value.reference"
|
|
112
|
-
:disabled="entry.filter.disabled"
|
|
113
|
-
:parse="parseRegex"
|
|
114
|
-
label="Reference value"
|
|
115
|
-
/>
|
|
116
|
-
</template>
|
|
117
|
-
|
|
118
|
-
<template v-if="entry.filter.value.type === 'string_containsFuzzyMatch'">
|
|
119
|
-
<PlTextField
|
|
120
|
-
v-model="entry.filter.value.reference"
|
|
121
|
-
:disabled="entry.filter.disabled"
|
|
122
|
-
:parse="(value: string): string => parseString(entry.spec, value)"
|
|
123
|
-
label="Reference value"
|
|
124
|
-
/>
|
|
125
|
-
<Slider
|
|
126
|
-
v-model="entry.filter.value.maxEdits"
|
|
127
|
-
:max="5"
|
|
128
|
-
:disabled="entry.filter.disabled"
|
|
129
|
-
breakpoints
|
|
130
|
-
label="Maximum nuber of substitutions and indels"
|
|
131
|
-
/>
|
|
132
|
-
<PlToggleSwitch
|
|
133
|
-
v-model="entry.filter.value.substitutionsOnly"
|
|
134
|
-
:disabled="entry.filter.disabled"
|
|
135
|
-
label="Substitutions only"
|
|
136
|
-
/>
|
|
137
|
-
<PlDropdown
|
|
138
|
-
v-model="entry.filter.value.wildcard"
|
|
139
|
-
:disabled="entry.filter.disabled"
|
|
140
|
-
:options="makeWildcardOptions(entry.spec, entry.filter.value.reference)"
|
|
141
|
-
clearable
|
|
142
|
-
label="Wildcard symbol"
|
|
143
|
-
/>
|
|
144
|
-
</template>
|
|
145
|
-
</template>
|
|
146
|
-
|
|
147
|
-
<div v-if="entry.defaultFilter" class="d-flex justify-center">
|
|
148
|
-
<PlBtnGhost
|
|
149
|
-
:disabled="entry.filter.disabled || isJsonEqual(entry.filter.value, entry.defaultFilter)"
|
|
150
|
-
icon="reverse"
|
|
151
|
-
@click="entry.filter.value = entry.defaultFilter"
|
|
152
|
-
>
|
|
153
|
-
Revert Settings to Default
|
|
154
|
-
</PlBtnGhost>
|
|
155
|
-
</div>
|
|
156
|
-
</div>
|
|
157
|
-
</template>
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import type { Reactive, Ref } from "vue";
|
|
2
|
-
import { reactive, ref, watch } from "vue";
|
|
3
|
-
import type { PlDataTableFiltersSettings, PlDataTableFilterStateInternal } from "./types";
|
|
4
|
-
import {
|
|
5
|
-
canonicalizeJson,
|
|
6
|
-
getPTableColumnId,
|
|
7
|
-
type CanonicalizedJson,
|
|
8
|
-
type PTableColumnId,
|
|
9
|
-
type PlDataTableFilterState,
|
|
10
|
-
} from "@platforma-sdk/model";
|
|
11
|
-
import { isJsonEqual } from "@milaboratories/helpers";
|
|
12
|
-
import {
|
|
13
|
-
getFilterOptions,
|
|
14
|
-
makeDiscreteOptions,
|
|
15
|
-
isFilterValid,
|
|
16
|
-
getColumnName,
|
|
17
|
-
isAlphabetic,
|
|
18
|
-
} from "./filters_logic";
|
|
19
|
-
|
|
20
|
-
export function useFilters(
|
|
21
|
-
settings: Ref<PlDataTableFiltersSettings>,
|
|
22
|
-
state: Ref<PlDataTableFilterState[]>,
|
|
23
|
-
): Reactive<{
|
|
24
|
-
value: PlDataTableFilterStateInternal[];
|
|
25
|
-
}> {
|
|
26
|
-
// Watcher instead of computed to preserve open state of filters locally
|
|
27
|
-
const defaultStateMap = ref<
|
|
28
|
-
Map<CanonicalizedJson<PTableColumnId>, PlDataTableFilterStateInternal>
|
|
29
|
-
>(new Map());
|
|
30
|
-
const filters = reactive<{
|
|
31
|
-
value: PlDataTableFilterStateInternal[];
|
|
32
|
-
}>({
|
|
33
|
-
value: [],
|
|
34
|
-
});
|
|
35
|
-
watch(
|
|
36
|
-
() => settings.value,
|
|
37
|
-
({ columns, config: configFn, cachedState }) => {
|
|
38
|
-
// Comptute default states for columns
|
|
39
|
-
const defaultStateMapValue = (defaultStateMap.value = new Map(
|
|
40
|
-
columns
|
|
41
|
-
.map((c, i) => {
|
|
42
|
-
try {
|
|
43
|
-
const id = getPTableColumnId(c);
|
|
44
|
-
const config = configFn(c);
|
|
45
|
-
const options = config.options
|
|
46
|
-
? getFilterOptions(c).filter((o) => config.options!.includes(o.value))
|
|
47
|
-
: getFilterOptions(c);
|
|
48
|
-
if (options.length === 0) return null;
|
|
49
|
-
const discreteOptions = makeDiscreteOptions(c);
|
|
50
|
-
const defaultFilter =
|
|
51
|
-
config.default && isFilterValid(config.default, options, discreteOptions)
|
|
52
|
-
? config.default
|
|
53
|
-
: null;
|
|
54
|
-
const filter = defaultFilter
|
|
55
|
-
? {
|
|
56
|
-
value: defaultFilter,
|
|
57
|
-
disabled: false,
|
|
58
|
-
open: false,
|
|
59
|
-
}
|
|
60
|
-
: null;
|
|
61
|
-
const state: PlDataTableFilterStateInternal = {
|
|
62
|
-
id,
|
|
63
|
-
spec: c,
|
|
64
|
-
label: getColumnName(c, i),
|
|
65
|
-
alphabetic: isAlphabetic(c),
|
|
66
|
-
options,
|
|
67
|
-
discreteOptions,
|
|
68
|
-
defaultFilter,
|
|
69
|
-
filter,
|
|
70
|
-
};
|
|
71
|
-
return [canonicalizeJson<PTableColumnId>(id), state] as const;
|
|
72
|
-
} catch (err: unknown) {
|
|
73
|
-
console.error(`Filter creation for column ${c.id} has failed`, err);
|
|
74
|
-
return null;
|
|
75
|
-
}
|
|
76
|
-
})
|
|
77
|
-
.filter((e) => e !== null),
|
|
78
|
-
));
|
|
79
|
-
|
|
80
|
-
// Go through cached state, filter out states for not present columns, update state to match valid options
|
|
81
|
-
const stateMap = new Map<CanonicalizedJson<PTableColumnId>, PlDataTableFilterStateInternal>(
|
|
82
|
-
cachedState
|
|
83
|
-
.filter((s) => defaultStateMapValue.has(canonicalizeJson<PTableColumnId>(s.id)))
|
|
84
|
-
.map((s) => {
|
|
85
|
-
const defaultState = defaultStateMapValue.get(canonicalizeJson<PTableColumnId>(s.id))!;
|
|
86
|
-
const state = {
|
|
87
|
-
...defaultState,
|
|
88
|
-
filter:
|
|
89
|
-
s.filter &&
|
|
90
|
-
isFilterValid(s.filter.value, defaultState.options, defaultState.discreteOptions)
|
|
91
|
-
? {
|
|
92
|
-
...s.filter,
|
|
93
|
-
open:
|
|
94
|
-
filters.value.find((f) => isJsonEqual(f.id, s.id))?.filter?.open ?? false,
|
|
95
|
-
}
|
|
96
|
-
: null,
|
|
97
|
-
} satisfies PlDataTableFilterStateInternal;
|
|
98
|
-
return [canonicalizeJson<PTableColumnId>(s.id), state] as const;
|
|
99
|
-
}),
|
|
100
|
-
);
|
|
101
|
-
|
|
102
|
-
// Set default states for columns not present in cached state
|
|
103
|
-
for (const [idKey, state] of defaultStateMapValue) {
|
|
104
|
-
if (!stateMap.has(idKey)) {
|
|
105
|
-
stateMap.set(idKey, state);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// States with not null filters should go first, in order they were added, then follow null filters in alphabetic order
|
|
110
|
-
const states = stateMap
|
|
111
|
-
.values()
|
|
112
|
-
.filter((s) => s.filter)
|
|
113
|
-
.toArray();
|
|
114
|
-
const hiddenFilters = stateMap
|
|
115
|
-
.values()
|
|
116
|
-
.filter((s) => !s.filter)
|
|
117
|
-
.toArray();
|
|
118
|
-
states.push(...hiddenFilters.sort((a, b) => a.label.localeCompare(b.label)));
|
|
119
|
-
filters.value = states;
|
|
120
|
-
},
|
|
121
|
-
{ immediate: true },
|
|
122
|
-
);
|
|
123
|
-
|
|
124
|
-
// Persist state on change
|
|
125
|
-
watch(
|
|
126
|
-
() => filters.value,
|
|
127
|
-
(filters) => {
|
|
128
|
-
const cachedState = filters.map(
|
|
129
|
-
(f) =>
|
|
130
|
-
({
|
|
131
|
-
id: f.id,
|
|
132
|
-
alphabetic: f.alphabetic,
|
|
133
|
-
filter: f.filter
|
|
134
|
-
? {
|
|
135
|
-
value: f.filter.value,
|
|
136
|
-
disabled: f.filter.disabled,
|
|
137
|
-
}
|
|
138
|
-
: null,
|
|
139
|
-
}) satisfies PlDataTableFilterState,
|
|
140
|
-
);
|
|
141
|
-
if (cachedState.length > 0 && !isJsonEqual(cachedState, state.value)) {
|
|
142
|
-
state.value = cachedState;
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
immediate: true,
|
|
147
|
-
deep: true,
|
|
148
|
-
},
|
|
149
|
-
);
|
|
150
|
-
|
|
151
|
-
return filters;
|
|
152
|
-
}
|