@platforma-sdk/ui-vue 1.45.36 → 1.45.42
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 +45 -45
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +16 -0
- package/dist/components/BlockLayout.vue2.js +3 -3
- package/dist/components/BlockLayout.vue2.js.map +1 -1
- package/dist/components/BlockLoader.vue.js.map +1 -1
- package/dist/components/LoaderPage.vue.js +2 -2
- package/dist/components/LoaderPage.vue.js.map +1 -1
- package/dist/components/NotFound.vue.js +3 -3
- package/dist/components/NotFound.vue.js.map +1 -1
- package/dist/components/PlAdvancedFilter/OperandButton.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js +73 -73
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/SingleFilter.vue2.js +100 -100
- package/dist/components/PlAdvancedFilter/SingleFilter.vue2.js.map +1 -1
- package/dist/components/PlAgCellFile/PlAgCellFile.vue.js.map +1 -1
- package/dist/components/PlAgCellProgress/PlAgCellProgress.vue.js.map +1 -1
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js +6 -6
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js.map +1 -1
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js.map +1 -1
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js.map +1 -1
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js +22 -22
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js.map +1 -1
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js +3 -3
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +50 -50
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +1 -1
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js +35 -35
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js.map +1 -1
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +15 -15
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +1 -1
- package/dist/components/PlAgRowNumHeader.vue.js +13 -13
- package/dist/components/PlAgRowNumHeader.vue.js.map +1 -1
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js +16 -16
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js.map +1 -1
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js +6 -6
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/DynamicForm.vue2.js +57 -57
- package/dist/components/PlAnnotations/components/DynamicForm.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +6 -6
- 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/PlAnnotations/components/PlAnnotationsModal.vue2.js.map +1 -1
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js +7 -7
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js.map +1 -1
- package/dist/components/PlBtnExportArchive/Item.vue2.js +23 -23
- package/dist/components/PlBtnExportArchive/Item.vue2.js.map +1 -1
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js.map +1 -1
- package/dist/components/PlBtnExportArchive/Summary.vue2.js +22 -22
- package/dist/components/PlBtnExportArchive/Summary.vue2.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableAddFilterV2.vue.js +9 -9
- package/dist/components/PlTableFilters/PlTableAddFilterV2.vue.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableFilterEntryV2.vue.js +3 -3
- package/dist/components/PlTableFilters/PlTableFilterEntryV2.vue.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js +9 -9
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js.map +1 -1
- package/dist/components/ValueOrErrorsComponent.vue.js.map +1 -1
- package/dist/plugins/Monetization/EndOfPeriod.vue2.js +9 -9
- package/dist/plugins/Monetization/EndOfPeriod.vue2.js.map +1 -1
- package/dist/plugins/Monetization/LimitCard.vue2.js +40 -40
- package/dist/plugins/Monetization/LimitCard.vue2.js.map +1 -1
- package/dist/plugins/Monetization/MonetizationSidebar.vue.js +3 -3
- package/dist/plugins/Monetization/MonetizationSidebar.vue.js.map +1 -1
- package/dist/plugins/Monetization/RunStatus.vue2.js +12 -12
- package/dist/plugins/Monetization/RunStatus.vue2.js.map +1 -1
- package/dist/plugins/Monetization/UserCabinetCard.vue2.js +22 -22
- package/dist/plugins/Monetization/UserCabinetCard.vue2.js.map +1 -1
- package/package.json +8 -8
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { prettyBytes as
|
|
3
|
-
const
|
|
1
|
+
import { defineComponent as u, createElementBlock as n, openBlock as m, normalizeClass as s, createElementVNode as l, createTextVNode as d, createCommentVNode as y, toDisplayString as a, unref as r } from "vue";
|
|
2
|
+
import { prettyBytes as o } from "../../lib/util/helpers/dist/prettyBytes.js";
|
|
3
|
+
const k = /* @__PURE__ */ u({
|
|
4
4
|
__name: "Summary",
|
|
5
5
|
props: {
|
|
6
6
|
item: {}
|
|
7
7
|
},
|
|
8
8
|
emits: ["cancel"],
|
|
9
|
-
setup(
|
|
10
|
-
return (
|
|
11
|
-
class: s(
|
|
9
|
+
setup(e, { emit: c }) {
|
|
10
|
+
return (t, i) => (m(), n("div", {
|
|
11
|
+
class: s(t.$style.summary)
|
|
12
12
|
}, [
|
|
13
|
-
|
|
14
|
-
class: s(
|
|
13
|
+
l("div", {
|
|
14
|
+
class: s(t.$style.name)
|
|
15
15
|
}, [
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
d(a(e.item.fileName), 1),
|
|
17
|
+
y("", !0)
|
|
18
18
|
], 2),
|
|
19
|
-
e.item.status === "in-progress" ? (
|
|
19
|
+
e.item.status === "in-progress" ? (m(), n("div", {
|
|
20
20
|
key: 0,
|
|
21
|
-
class: s(
|
|
21
|
+
class: s(t.$style.details)
|
|
22
22
|
}, [
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
], 2)) : e.item.status === "completed" ? (
|
|
23
|
+
l("span", null, a(r(o)(e.item.current, {})), 1),
|
|
24
|
+
i[1] || (i[1] = l("span", null, "/", -1)),
|
|
25
|
+
l("span", null, a(r(o)(e.item.size, {})), 1)
|
|
26
|
+
], 2)) : e.item.status === "completed" ? (m(), n("div", {
|
|
27
27
|
key: 1,
|
|
28
|
-
class: s(
|
|
28
|
+
class: s(t.$style.details)
|
|
29
29
|
}, [
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
], 2)) : (
|
|
30
|
+
i[2] || (i[2] = d(" Done ", -1)),
|
|
31
|
+
l("span", null, a(r(o)(e.item.size, {})), 1)
|
|
32
|
+
], 2)) : (m(), n("div", {
|
|
33
33
|
key: 2,
|
|
34
|
-
class: s(
|
|
34
|
+
class: s(t.$style.details)
|
|
35
35
|
}, " Pending ", 2))
|
|
36
36
|
], 2));
|
|
37
37
|
}
|
|
38
38
|
});
|
|
39
39
|
export {
|
|
40
|
-
|
|
40
|
+
k as default
|
|
41
41
|
};
|
|
42
42
|
//# sourceMappingURL=Summary.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Summary.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Summary.vue2.js","sources":["../../../src/components/PlBtnExportArchive/Summary.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ExportItem } from './types';\nimport { prettyBytes } from '@milaboratories/helpers';\n\ndefineProps<{\n item: ExportItem;\n}>();\n\nconst emit = defineEmits<{\n (e: 'cancel'): void;\n}>();\n</script>\n\n<template>\n <div\n :class=\"$style.summary\"\n >\n <div :class=\"$style.name\">{{ item.fileName }}<span v-if=\"false\" @click.stop=\"emit('cancel')\">[TODO: Cancel]</span></div>\n <div v-if=\"item.status === 'in-progress'\" :class=\"$style.details\">\n <span>{{ prettyBytes(item.current, {}) }}</span>\n <span>/</span>\n <span>{{ prettyBytes(item.size, {}) }}</span>\n </div>\n <div v-else-if=\"item.status === 'completed'\" :class=\"$style.details\">\n Done <span>{{ prettyBytes(item.size, {}) }}</span>\n </div>\n <div v-else :class=\"$style.details\">\n Pending\n </div>\n </div>\n</template>\n\n<style module>\n.summary {\n display: flex;\n flex-direction: column;\n margin-bottom: 8px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n padding-bottom: 8px;\n --name-font-size: 14px;\n --details-font-size: 12px;\n}\n\n.name {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--name-font-size);\n font-weight: 600;\n}\n.details {\n font-size: var(--details-font-size);\n font-weight: 400;\n color: rgba(255, 255, 255, 0.6);\n}\n</style>\n"],"names":["_createElementBlock","_normalizeClass","$style","_createElementVNode","_createTextVNode","_toDisplayString","__props","_unref","prettyBytes","_cache"],"mappings":";;;;;;;;;2BAcEA,EAeM,OAAA;AAAA,MAdH,OAAKC,EAAEC,EAAAA,OAAO,OAAO;AAAA,IAAA;MAEtBC,EAAwH,OAAA;AAAA,QAAlH,OAAKF,EAAEC,EAAAA,OAAO,IAAI;AAAA,MAAA;QAAKE,EAAAC,EAAAC,EAAA,KAAK,QAAQ,GAAA,CAAA;AAAA;;MAC/BA,EAAA,KAAK,WAAM,sBAAtBN,EAIM,OAAA;AAAA;QAJqC,OAAKC,EAAEC,EAAAA,OAAO,OAAO;AAAA,MAAA;QAC9DC,EAAgD,QAAA,MAAAE,EAAvCE,EAAAC,CAAA,EAAYF,EAAA,KAAK,SAAO,EAAA,CAAA,GAAA,CAAA;AAAA,QACjCG,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAN,EAAc,cAAR,KAAC,EAAA;AAAA,QACPA,EAA6C,QAAA,MAAAE,EAApCE,EAAAC,CAAA,EAAYF,EAAA,KAAK,MAAI,CAAA,CAAA,CAAA,GAAA,CAAA;AAAA,MAAA,SAEhBA,EAAA,KAAK,WAAM,oBAA3BN,EAEM,OAAA;AAAA;QAFwC,OAAKC,EAAEC,EAAAA,OAAO,OAAO;AAAA,MAAA;0BAAE,UAC9D,EAAA;AAAA,QAAAC,EAA6C,QAAA,MAAAE,EAApCE,EAAAC,CAAA,EAAYF,EAAA,KAAK,MAAI,CAAA,CAAA,CAAA,GAAA,CAAA;AAAA,MAAA,eAErCN,EAEM,OAAA;AAAA;QAFO,OAAKC,EAAEC,EAAAA,OAAO,OAAO;AAAA,MAAA,GAAE,aAEpC,CAAA;AAAA,IAAA;;;"}
|
|
@@ -47,26 +47,26 @@ const E = { class: "d-flex flex-column gap-24" }, T = {
|
|
|
47
47
|
"onUpdate:modelValue": e[2] || (e[2] = (a) => d.value = a),
|
|
48
48
|
"close-on-outside-click": !1
|
|
49
49
|
}, {
|
|
50
|
-
title: u(() => e[3] || (e[3] = [
|
|
51
|
-
m("Add Filter")
|
|
52
|
-
])),
|
|
50
|
+
title: u(() => [...e[3] || (e[3] = [
|
|
51
|
+
m("Add Filter", -1)
|
|
52
|
+
])]),
|
|
53
53
|
actions: u(() => [
|
|
54
54
|
s(r(A), {
|
|
55
55
|
disabled: !l.value,
|
|
56
56
|
onClick: F
|
|
57
57
|
}, {
|
|
58
|
-
default: u(() => e[4] || (e[4] = [
|
|
59
|
-
m("Add Filter")
|
|
60
|
-
])),
|
|
58
|
+
default: u(() => [...e[4] || (e[4] = [
|
|
59
|
+
m("Add Filter", -1)
|
|
60
|
+
])]),
|
|
61
61
|
_: 1
|
|
62
62
|
}, 8, ["disabled"]),
|
|
63
63
|
s(r(U), {
|
|
64
64
|
"justify-center": !1,
|
|
65
65
|
onClick: p
|
|
66
66
|
}, {
|
|
67
|
-
default: u(() => e[5] || (e[5] = [
|
|
68
|
-
m("Cancel")
|
|
69
|
-
])),
|
|
67
|
+
default: u(() => [...e[5] || (e[5] = [
|
|
68
|
+
m("Cancel", -1)
|
|
69
|
+
])]),
|
|
70
70
|
_: 1
|
|
71
71
|
})
|
|
72
72
|
]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlTableAddFilterV2.vue.js","sources":["../../../src/components/PlTableFilters/PlTableAddFilterV2.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n deepClone,\n} from '@milaboratories/helpers';\nimport {\n PlBtnGhost,\n PlBtnPrimary,\n PlDropdown,\n PlSlideModal,\n type ListOption,\n} from '@milaboratories/uikit';\nimport {\n computed,\n ref,\n watch,\n} from 'vue';\nimport {\n type PlDataTableFilterStateInternal,\n} from './types';\nimport {\n getFilterDefault,\n} from './filters_logic';\nimport PlTableFilterEntryV2 from './PlTableFilterEntryV2.vue';\n\nconst show = defineModel<boolean>({ required: true });\nconst props = defineProps<{\n filters: Readonly<PlDataTableFilterStateInternal[]>;\n setFilter(idx: number, filter: PlDataTableFilterStateInternal): void;\n}>();\n\nconst filterOptions = computed<ListOption<number>[]>(() => {\n return props.filters\n .map((s, i) => {\n return {\n value: i,\n text: s.label,\n };\n })\n .filter((o) => props.filters[o.value].filter === null);\n});\n\nconst newFilterIdx = ref<number>();\nconst newFilter = ref<PlDataTableFilterStateInternal | null>(null);\nwatch(\n () => newFilterIdx.value,\n (newFilterIdx) => {\n if (newFilterIdx === undefined) {\n newFilter.value = null;\n } else {\n const filterClone = deepClone(props.filters[newFilterIdx]);\n if (!filterClone.filter) {\n filterClone.filter = {\n value: filterClone.defaultFilter ?? getFilterDefault(filterClone.options[0].value),\n disabled: false,\n open: true,\n };\n }\n newFilter.value = filterClone;\n }\n },\n);\nconst discardFilter = () => {\n newFilterIdx.value = undefined;\n show.value = false;\n};\nconst applyFilter = () => {\n if (newFilterIdx.value !== undefined && newFilter.value) {\n props.setFilter(newFilterIdx.value, newFilter.value);\n }\n discardFilter();\n};\n</script>\n\n<template>\n <PlSlideModal v-model=\"show\" :close-on-outside-click=\"false\">\n <template #title>Add Filter</template>\n <div class=\"d-flex flex-column gap-24\">\n <PlDropdown\n v-model=\"newFilterIdx\"\n :options=\"filterOptions\"\n label=\"Column\"\n placeholder=\"Choose...\"\n />\n <div\n v-if=\"newFilterIdx === undefined\"\n class=\"text-subtitle-m\"\n style=\"color: var(--txt-mask)\"\n >\n Choose a column to view and adjust its options\n </div>\n <PlTableFilterEntryV2\n v-if=\"newFilter\"\n v-model=\"newFilter\"\n />\n </div>\n <template #actions>\n <PlBtnPrimary :disabled=\"!newFilter\" @click=\"applyFilter\">Add Filter</PlBtnPrimary>\n <PlBtnGhost :justify-center=\"false\" @click=\"discardFilter\">Cancel</PlBtnGhost>\n </template>\n </PlSlideModal>\n</template>\n"],"names":["show","_useModel","__props","props","filterOptions","computed","s","i","newFilterIdx","ref","newFilter","watch","filterClone","deepClone","getFilterDefault","discardFilter","applyFilter"],"mappings":";;;;;;;;;;;;;;;;;;;;AAwBA,UAAMA,IAAOC,EAAoBC,GAAA,YAAmB,GAC9CC,IAAQD,GAKRE,IAAgBC,EAA+B,MAC5CF,EAAM,QACV,IAAI,CAACG,GAAGC,OACA;AAAA,MACL,OAAOA;AAAA,MACP,MAAMD,EAAE;AAAA,IAAA,EAEX,EACA,OAAO,CAAC,MAAMH,EAAM,QAAQ,EAAE,KAAK,EAAE,WAAW,IAAI,CACxD,GAEKK,IAAeC,EAAA,GACfC,IAAYD,EAA2C,IAAI;AACjE,IAAAE;AAAA,MACE,MAAMH,EAAa;AAAA,MACnB,CAACA,MAAiB;AAChB,YAAIA,MAAiB;AACnB,UAAAE,EAAU,QAAQ;AAAA,aACb;AACL,gBAAME,IAAcC,EAAUV,EAAM,QAAQK,CAAY,CAAC;AACzD,UAAKI,EAAY,WACfA,EAAY,SAAS;AAAA,YACnB,OAAOA,EAAY,iBAAiBE,EAAiBF,EAAY,QAAQ,CAAC,EAAE,KAAK;AAAA,YACjF,UAAU;AAAA,YACV,MAAM;AAAA,UAAA,IAGVF,EAAU,QAAQE;AAAA,QACpB;AAAA,MACF;AAAA,IAAA;AAEF,UAAMG,IAAgB,MAAM;AAC1B,MAAAP,EAAa,QAAQ,QACrBR,EAAK,QAAQ;AAAA,IACf,GACMgB,IAAc,MAAM;AACxB,MAAIR,EAAa,UAAU,UAAaE,EAAU,SAChDP,EAAM,UAAUK,EAAa,OAAOE,EAAU,KAAK,GAErDK,EAAA;AAAA,IACF
|
|
1
|
+
{"version":3,"file":"PlTableAddFilterV2.vue.js","sources":["../../../src/components/PlTableFilters/PlTableAddFilterV2.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n deepClone,\n} from '@milaboratories/helpers';\nimport {\n PlBtnGhost,\n PlBtnPrimary,\n PlDropdown,\n PlSlideModal,\n type ListOption,\n} from '@milaboratories/uikit';\nimport {\n computed,\n ref,\n watch,\n} from 'vue';\nimport {\n type PlDataTableFilterStateInternal,\n} from './types';\nimport {\n getFilterDefault,\n} from './filters_logic';\nimport PlTableFilterEntryV2 from './PlTableFilterEntryV2.vue';\n\nconst show = defineModel<boolean>({ required: true });\nconst props = defineProps<{\n filters: Readonly<PlDataTableFilterStateInternal[]>;\n setFilter(idx: number, filter: PlDataTableFilterStateInternal): void;\n}>();\n\nconst filterOptions = computed<ListOption<number>[]>(() => {\n return props.filters\n .map((s, i) => {\n return {\n value: i,\n text: s.label,\n };\n })\n .filter((o) => props.filters[o.value].filter === null);\n});\n\nconst newFilterIdx = ref<number>();\nconst newFilter = ref<PlDataTableFilterStateInternal | null>(null);\nwatch(\n () => newFilterIdx.value,\n (newFilterIdx) => {\n if (newFilterIdx === undefined) {\n newFilter.value = null;\n } else {\n const filterClone = deepClone(props.filters[newFilterIdx]);\n if (!filterClone.filter) {\n filterClone.filter = {\n value: filterClone.defaultFilter ?? getFilterDefault(filterClone.options[0].value),\n disabled: false,\n open: true,\n };\n }\n newFilter.value = filterClone;\n }\n },\n);\nconst discardFilter = () => {\n newFilterIdx.value = undefined;\n show.value = false;\n};\nconst applyFilter = () => {\n if (newFilterIdx.value !== undefined && newFilter.value) {\n props.setFilter(newFilterIdx.value, newFilter.value);\n }\n discardFilter();\n};\n</script>\n\n<template>\n <PlSlideModal v-model=\"show\" :close-on-outside-click=\"false\">\n <template #title>Add Filter</template>\n <div class=\"d-flex flex-column gap-24\">\n <PlDropdown\n v-model=\"newFilterIdx\"\n :options=\"filterOptions\"\n label=\"Column\"\n placeholder=\"Choose...\"\n />\n <div\n v-if=\"newFilterIdx === undefined\"\n class=\"text-subtitle-m\"\n style=\"color: var(--txt-mask)\"\n >\n Choose a column to view and adjust its options\n </div>\n <PlTableFilterEntryV2\n v-if=\"newFilter\"\n v-model=\"newFilter\"\n />\n </div>\n <template #actions>\n <PlBtnPrimary :disabled=\"!newFilter\" @click=\"applyFilter\">Add Filter</PlBtnPrimary>\n <PlBtnGhost :justify-center=\"false\" @click=\"discardFilter\">Cancel</PlBtnGhost>\n </template>\n </PlSlideModal>\n</template>\n"],"names":["show","_useModel","__props","props","filterOptions","computed","s","i","newFilterIdx","ref","newFilter","watch","filterClone","deepClone","getFilterDefault","discardFilter","applyFilter","_createBlock","_unref","PlSlideModal","$event","_cache","_createVNode","PlBtnPrimary","PlBtnGhost","_createElementVNode","_hoisted_1","PlDropdown","_createElementBlock","_hoisted_2","PlTableFilterEntryV2"],"mappings":";;;;;;;;;;;;;;;;;;;;AAwBA,UAAMA,IAAOC,EAAoBC,GAAA,YAAmB,GAC9CC,IAAQD,GAKRE,IAAgBC,EAA+B,MAC5CF,EAAM,QACV,IAAI,CAACG,GAAGC,OACA;AAAA,MACL,OAAOA;AAAA,MACP,MAAMD,EAAE;AAAA,IAAA,EAEX,EACA,OAAO,CAAC,MAAMH,EAAM,QAAQ,EAAE,KAAK,EAAE,WAAW,IAAI,CACxD,GAEKK,IAAeC,EAAA,GACfC,IAAYD,EAA2C,IAAI;AACjE,IAAAE;AAAA,MACE,MAAMH,EAAa;AAAA,MACnB,CAACA,MAAiB;AAChB,YAAIA,MAAiB;AACnB,UAAAE,EAAU,QAAQ;AAAA,aACb;AACL,gBAAME,IAAcC,EAAUV,EAAM,QAAQK,CAAY,CAAC;AACzD,UAAKI,EAAY,WACfA,EAAY,SAAS;AAAA,YACnB,OAAOA,EAAY,iBAAiBE,EAAiBF,EAAY,QAAQ,CAAC,EAAE,KAAK;AAAA,YACjF,UAAU;AAAA,YACV,MAAM;AAAA,UAAA,IAGVF,EAAU,QAAQE;AAAA,QACpB;AAAA,MACF;AAAA,IAAA;AAEF,UAAMG,IAAgB,MAAM;AAC1B,MAAAP,EAAa,QAAQ,QACrBR,EAAK,QAAQ;AAAA,IACf,GACMgB,IAAc,MAAM;AACxB,MAAIR,EAAa,UAAU,UAAaE,EAAU,SAChDP,EAAM,UAAUK,EAAa,OAAOE,EAAU,KAAK,GAErDK,EAAA;AAAA,IACF;2BAIEE,EAyBeC,EAAAC,CAAA,GAAA;AAAA,kBAzBQnB,EAAA;AAAA,oDAAAA,EAAI,QAAAoB;AAAA,MAAG,0BAAwB;AAAA,IAAA;MACzC,SAAM,MAAU,CAAA,GAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,UAAV,cAAU,EAAA;AAAA,MAAA;MAoBhB,WACT,MAAmF;AAAA,QAAnFC,EAAmFJ,EAAAK,CAAA,GAAA;AAAA,UAApE,WAAWb,EAAA;AAAA,UAAY,SAAOM;AAAA,QAAA;qBAAa,MAAU,CAAA,GAAAK,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,cAAV,cAAU,EAAA;AAAA,UAAA;;;QACpEC,EAA8EJ,EAAAM,CAAA,GAAA;AAAA,UAAjE,kBAAgB;AAAA,UAAQ,SAAOT;AAAA,QAAA;qBAAe,MAAM,CAAA,GAAAM,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,cAAN,UAAM,EAAA;AAAA,UAAA;;;;iBArBnE,MAkBM;AAAA,QAlBNI,EAkBM,OAlBNC,GAkBM;AAAA,UAjBJJ,EAKEJ,EAAAS,CAAA,GAAA;AAAA,wBAJSnB,EAAA;AAAA,0DAAAA,EAAY,QAAAY;AAAA,YACpB,SAAShB,EAAA;AAAA,YACV,OAAM;AAAA,YACN,aAAY;AAAA,UAAA;UAGNI,EAAA,UAAiB,eADzBoB,EAMM,OANNC,GAIC,kDAED;UAEQnB,EAAA,cADRO,EAGEa,GAAA;AAAA;wBADSpB,EAAA;AAAA,0DAAAA,EAAS,QAAAU;AAAA,UAAA;;;;;;;"}
|
|
@@ -127,9 +127,9 @@ const O = {
|
|
|
127
127
|
icon: "reverse",
|
|
128
128
|
onClick: a[13] || (a[13] = (l) => e.value.filter.value = e.value.defaultFilter)
|
|
129
129
|
}, {
|
|
130
|
-
default: U(() => a[14] || (a[14] = [
|
|
131
|
-
k(" Revert Settings to Default ")
|
|
132
|
-
])),
|
|
130
|
+
default: U(() => [...a[14] || (a[14] = [
|
|
131
|
+
k(" Revert Settings to Default ", -1)
|
|
132
|
+
])]),
|
|
133
133
|
_: 1
|
|
134
134
|
}, 8, ["disabled"])
|
|
135
135
|
])) : d("", !0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlTableFilterEntryV2.vue.js","sources":["../../../src/components/PlTableFilters/PlTableFilterEntryV2.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n PlDropdown,\n PlTextField,\n PlToggleSwitch,\n Slider,\n PlBtnGhost,\n} from '@milaboratories/uikit';\nimport { isJsonEqual } from '@milaboratories/helpers';\nimport {\n changeFilter,\n parseNumber,\n parseString,\n parseRegex,\n makeWildcardOptions,\n isFilterDiscrete,\n getFilterDefault,\n} from './filters_logic';\nimport type { PlDataTableFilterStateInternal } from './types';\nimport { watchEffect } from 'vue';\n\nconst entry = defineModel<PlDataTableFilterStateInternal>({ required: true });\nwatchEffect(() => {\n if (!entry.value.filter) {\n entry.value.filter = {\n value: getFilterDefault(entry.value.options[0].value),\n disabled: false,\n open: true,\n };\n }\n});\n</script>\n\n<template>\n <div v-if=\"entry.filter\" class=\"d-flex flex-column gap-24\">\n <PlDropdown\n :model-value=\"entry.filter.value.type\"\n :options=\"entry.options\"\n :disabled=\"entry.filter.disabled\"\n label=\"Predicate\"\n @update:model-value=\"(type) => (entry.filter!.value = changeFilter(entry.filter!.value, type!, entry.discreteOptions))\"\n />\n\n <template v-if=\"entry.discreteOptions.length > 0 && isFilterDiscrete(entry.filter.value)\">\n <PlDropdown\n v-model=\"entry.filter.value.reference\"\n :options=\"entry.discreteOptions\"\n />\n </template>\n <template v-else>\n <template\n v-if=\"\n entry.filter.value.type === 'number_equals' ||\n entry.filter.value.type === 'number_notEquals' ||\n entry.filter.value.type === 'number_lessThan' ||\n entry.filter.value.type === 'number_lessThanOrEqualTo' ||\n entry.filter.value.type === 'number_greaterThan' ||\n entry.filter.value.type === 'number_greaterThanOrEqualTo'\n \"\n >\n <PlTextField\n v-model=\"entry.filter.value.reference\"\n :disabled=\"entry.filter.disabled\"\n :parse=\"(value: string): number => parseNumber(entry.spec, value)\"\n label=\"Reference value\"\n />\n </template>\n\n <template\n v-if=\"\n entry.filter.value.type === 'number_between'\n \"\n >\n <PlTextField\n v-model=\"entry.filter.value.lowerBound\"\n :disabled=\"entry.filter.disabled\"\n :parse=\"(value: string): number => parseNumber(entry.spec, value)\"\n label=\"Lower bound\"\n />\n <PlToggleSwitch\n v-model=\"entry.filter.value.includeLowerBound\"\n :disabled=\"entry.filter.disabled\"\n label=\"Include lower bound\"\n />\n <PlTextField\n v-model=\"entry.filter.value.upperBound\"\n :disabled=\"entry.filter.disabled\"\n :parse=\"(value: string): number => parseNumber(entry.spec, value)\"\n label=\"Upper bound\"\n />\n <PlToggleSwitch\n v-model=\"entry.filter.value.includeUpperBound\"\n :disabled=\"entry.filter.disabled\"\n label=\"Include upper bound\"\n />\n </template>\n\n <template\n v-if=\"\n entry.filter.value.type === 'string_equals' ||\n entry.filter.value.type === 'string_notEquals' ||\n entry.filter.value.type === 'string_contains' ||\n entry.filter.value.type === 'string_doesNotContain'\n \"\n >\n <PlTextField\n v-model=\"entry.filter.value.reference\"\n :disabled=\"entry.filter.disabled\"\n :parse=\"(value: string): string => parseString(entry.spec, value)\"\n label=\"Reference value\"\n />\n </template>\n\n <template\n v-if=\"\n entry.filter.value.type === 'string_matches' ||\n entry.filter.value.type === 'string_doesNotMatch'\n \"\n >\n <PlTextField\n v-model=\"entry.filter.value.reference\"\n :disabled=\"entry.filter.disabled\"\n :parse=\"parseRegex\"\n label=\"Reference value\"\n />\n </template>\n\n <template\n v-if=\"\n entry.filter.value.type === 'string_containsFuzzyMatch'\n \"\n >\n <PlTextField\n v-model=\"entry.filter.value.reference\"\n :disabled=\"entry.filter.disabled\"\n :parse=\"(value: string): string => parseString(entry.spec, value)\"\n label=\"Reference value\"\n />\n <Slider\n v-model=\"entry.filter.value.maxEdits\"\n :max=\"5\"\n :disabled=\"entry.filter.disabled\"\n breakpoints label=\"Maximum nuber of substitutions and indels\"\n />\n <PlToggleSwitch\n v-model=\"entry.filter.value.substitutionsOnly\"\n :disabled=\"entry.filter.disabled\"\n label=\"Substitutions only\"\n />\n <PlDropdown\n v-model=\"entry.filter.value.wildcard\"\n :disabled=\"entry.filter.disabled\"\n :options=\"makeWildcardOptions(entry.spec, entry.filter.value.reference)\"\n clearable\n label=\"Wildcard symbol\"\n />\n </template>\n </template>\n\n <div v-if=\"entry.defaultFilter\" class=\"d-flex justify-center\">\n <PlBtnGhost\n :disabled=\"entry.filter.disabled || isJsonEqual(entry.filter.value, entry.defaultFilter)\"\n icon=\"reverse\"\n @click=\"entry.filter.value = entry.defaultFilter\"\n >\n Revert Settings to Default\n </PlBtnGhost>\n </div>\n </div>\n</template>\n"],"names":["entry","_useModel","__props","watchEffect","getFilterDefault"],"mappings":";;;;;;;;;;;;;;;;;;AAqBA,UAAMA,IAAQC,EAA2CC,GAAA,YAAmB;AAC5E,WAAAC,EAAY,MAAM;AAChB,MAAKH,EAAM,MAAM,WACfA,EAAM,MAAM,SAAS;AAAA,QACnB,OAAOI,EAAiBJ,EAAM,MAAM,QAAQ,CAAC,EAAE,KAAK;AAAA,QACpD,UAAU;AAAA,QACV,MAAM;AAAA,MAAA;AAAA,IAGZ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"PlTableFilterEntryV2.vue.js","sources":["../../../src/components/PlTableFilters/PlTableFilterEntryV2.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n PlDropdown,\n PlTextField,\n PlToggleSwitch,\n Slider,\n PlBtnGhost,\n} from '@milaboratories/uikit';\nimport { isJsonEqual } from '@milaboratories/helpers';\nimport {\n changeFilter,\n parseNumber,\n parseString,\n parseRegex,\n makeWildcardOptions,\n isFilterDiscrete,\n getFilterDefault,\n} from './filters_logic';\nimport type { PlDataTableFilterStateInternal } from './types';\nimport { watchEffect } from 'vue';\n\nconst entry = defineModel<PlDataTableFilterStateInternal>({ required: true });\nwatchEffect(() => {\n if (!entry.value.filter) {\n entry.value.filter = {\n value: getFilterDefault(entry.value.options[0].value),\n disabled: false,\n open: true,\n };\n }\n});\n</script>\n\n<template>\n <div v-if=\"entry.filter\" class=\"d-flex flex-column gap-24\">\n <PlDropdown\n :model-value=\"entry.filter.value.type\"\n :options=\"entry.options\"\n :disabled=\"entry.filter.disabled\"\n label=\"Predicate\"\n @update:model-value=\"(type) => (entry.filter!.value = changeFilter(entry.filter!.value, type!, entry.discreteOptions))\"\n />\n\n <template v-if=\"entry.discreteOptions.length > 0 && isFilterDiscrete(entry.filter.value)\">\n <PlDropdown\n v-model=\"entry.filter.value.reference\"\n :options=\"entry.discreteOptions\"\n />\n </template>\n <template v-else>\n <template\n v-if=\"\n entry.filter.value.type === 'number_equals' ||\n entry.filter.value.type === 'number_notEquals' ||\n entry.filter.value.type === 'number_lessThan' ||\n entry.filter.value.type === 'number_lessThanOrEqualTo' ||\n entry.filter.value.type === 'number_greaterThan' ||\n entry.filter.value.type === 'number_greaterThanOrEqualTo'\n \"\n >\n <PlTextField\n v-model=\"entry.filter.value.reference\"\n :disabled=\"entry.filter.disabled\"\n :parse=\"(value: string): number => parseNumber(entry.spec, value)\"\n label=\"Reference value\"\n />\n </template>\n\n <template\n v-if=\"\n entry.filter.value.type === 'number_between'\n \"\n >\n <PlTextField\n v-model=\"entry.filter.value.lowerBound\"\n :disabled=\"entry.filter.disabled\"\n :parse=\"(value: string): number => parseNumber(entry.spec, value)\"\n label=\"Lower bound\"\n />\n <PlToggleSwitch\n v-model=\"entry.filter.value.includeLowerBound\"\n :disabled=\"entry.filter.disabled\"\n label=\"Include lower bound\"\n />\n <PlTextField\n v-model=\"entry.filter.value.upperBound\"\n :disabled=\"entry.filter.disabled\"\n :parse=\"(value: string): number => parseNumber(entry.spec, value)\"\n label=\"Upper bound\"\n />\n <PlToggleSwitch\n v-model=\"entry.filter.value.includeUpperBound\"\n :disabled=\"entry.filter.disabled\"\n label=\"Include upper bound\"\n />\n </template>\n\n <template\n v-if=\"\n entry.filter.value.type === 'string_equals' ||\n entry.filter.value.type === 'string_notEquals' ||\n entry.filter.value.type === 'string_contains' ||\n entry.filter.value.type === 'string_doesNotContain'\n \"\n >\n <PlTextField\n v-model=\"entry.filter.value.reference\"\n :disabled=\"entry.filter.disabled\"\n :parse=\"(value: string): string => parseString(entry.spec, value)\"\n label=\"Reference value\"\n />\n </template>\n\n <template\n v-if=\"\n entry.filter.value.type === 'string_matches' ||\n entry.filter.value.type === 'string_doesNotMatch'\n \"\n >\n <PlTextField\n v-model=\"entry.filter.value.reference\"\n :disabled=\"entry.filter.disabled\"\n :parse=\"parseRegex\"\n label=\"Reference value\"\n />\n </template>\n\n <template\n v-if=\"\n entry.filter.value.type === 'string_containsFuzzyMatch'\n \"\n >\n <PlTextField\n v-model=\"entry.filter.value.reference\"\n :disabled=\"entry.filter.disabled\"\n :parse=\"(value: string): string => parseString(entry.spec, value)\"\n label=\"Reference value\"\n />\n <Slider\n v-model=\"entry.filter.value.maxEdits\"\n :max=\"5\"\n :disabled=\"entry.filter.disabled\"\n breakpoints label=\"Maximum nuber of substitutions and indels\"\n />\n <PlToggleSwitch\n v-model=\"entry.filter.value.substitutionsOnly\"\n :disabled=\"entry.filter.disabled\"\n label=\"Substitutions only\"\n />\n <PlDropdown\n v-model=\"entry.filter.value.wildcard\"\n :disabled=\"entry.filter.disabled\"\n :options=\"makeWildcardOptions(entry.spec, entry.filter.value.reference)\"\n clearable\n label=\"Wildcard symbol\"\n />\n </template>\n </template>\n\n <div v-if=\"entry.defaultFilter\" class=\"d-flex justify-center\">\n <PlBtnGhost\n :disabled=\"entry.filter.disabled || isJsonEqual(entry.filter.value, entry.defaultFilter)\"\n icon=\"reverse\"\n @click=\"entry.filter.value = entry.defaultFilter\"\n >\n Revert Settings to Default\n </PlBtnGhost>\n </div>\n </div>\n</template>\n"],"names":["entry","_useModel","__props","watchEffect","getFilterDefault","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","PlDropdown","_cache","type","changeFilter","isFilterDiscrete","_createBlock","$event","_Fragment","PlTextField","value","parseNumber","PlToggleSwitch","parseString","parseRegex","Slider","makeWildcardOptions","_hoisted_2","PlBtnGhost","isJsonEqual"],"mappings":"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"}
|
|
@@ -55,9 +55,9 @@ const le = ["disabled"], te = { key: 1 }, ue = /* @__PURE__ */ D({
|
|
|
55
55
|
icon: N.value ? "filter-on" : "filter",
|
|
56
56
|
onClick: t[0] || (t[0] = $((l) => c.value = !0, ["stop"]))
|
|
57
57
|
}, {
|
|
58
|
-
default: d(() => t[5] || (t[5] = [
|
|
59
|
-
p(" Filters ")
|
|
60
|
-
])),
|
|
58
|
+
default: d(() => [...t[5] || (t[5] = [
|
|
59
|
+
p(" Filters ", -1)
|
|
60
|
+
])]),
|
|
61
61
|
_: 1
|
|
62
62
|
}, 8, ["icon"])
|
|
63
63
|
], 8, ["to"])) : V("", !0),
|
|
@@ -66,9 +66,9 @@ const le = ["disabled"], te = { key: 1 }, ue = /* @__PURE__ */ D({
|
|
|
66
66
|
"onUpdate:modelValue": t[3] || (t[3] = (l) => c.value = l),
|
|
67
67
|
"close-on-outside-click": !1
|
|
68
68
|
}, {
|
|
69
|
-
title: d(() => t[6] || (t[6] = [
|
|
70
|
-
p("Manage Filters")
|
|
71
|
-
])),
|
|
69
|
+
title: d(() => [...t[6] || (t[6] = [
|
|
70
|
+
p("Manage Filters", -1)
|
|
71
|
+
])]),
|
|
72
72
|
default: d(() => [
|
|
73
73
|
k("div", {
|
|
74
74
|
ref_key: "filterManager",
|
|
@@ -127,9 +127,9 @@ const le = ["disabled"], te = { key: 1 }, ue = /* @__PURE__ */ D({
|
|
|
127
127
|
disabled: !x.value,
|
|
128
128
|
onClick: $(z, ["stop"])
|
|
129
129
|
}, {
|
|
130
|
-
default: d(() => t[7] || (t[7] = [
|
|
131
|
-
p(" Reset to defaults ")
|
|
132
|
-
])),
|
|
130
|
+
default: d(() => [...t[7] || (t[7] = [
|
|
131
|
+
p(" Reset to defaults ", -1)
|
|
132
|
+
])]),
|
|
133
133
|
_: 1
|
|
134
134
|
}, 8, ["disabled"])
|
|
135
135
|
], 2)) : V("", !0),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlTableFiltersV2.vue2.js","sources":["../../../src/components/PlTableFilters/PlTableFiltersV2.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport {\n type PlDataTableFilterState,\n canonicalizeJson,\n type PTableColumnId,\n} from '@platforma-sdk/model';\nimport type {\n PlDataTableFiltersSettings,\n} from './types';\nimport {\n computed,\n onBeforeUnmount,\n onMounted,\n ref,\n toRefs,\n watch,\n} from 'vue';\nimport {\n PlBtnGhost,\n PlSlideModal,\n PlBtnSecondary,\n PlMaskIcon16,\n PlElementList,\n usePlBlockPageTitleTeleportTarget,\n} from '@milaboratories/uikit';\nimport { useFilters } from './filters-state';\nimport PlTableAddFilterV2 from './PlTableAddFilterV2.vue';\nimport PlTableFilterEntryV2 from './PlTableFilterEntryV2.vue';\nimport { isJsonEqual } from '@milaboratories/helpers';\n\nconst state = defineModel<PlDataTableFilterState[]>({\n default: [],\n});\nconst props = defineProps<{\n settings: Readonly<PlDataTableFiltersSettings>;\n}>();\nconst { settings } = toRefs(props);\n\nconst filters = useFilters(settings, state);\n\nconst filtersOn = computed<boolean>(() => filters.value.some((s) => s.filter && !s.filter.disabled));\n\nconst mounted = ref(false);\nonMounted(() => {\n mounted.value = true;\n});\nconst teleportTarget = usePlBlockPageTitleTeleportTarget('PlTableFiltersV2');\n\nconst showManager = ref(false);\n\nconst scrollIsActive = ref(false);\nconst filterManager = ref<HTMLElement>();\nlet observer: ResizeObserver;\nonMounted(() => {\n observer = new ResizeObserver(() => {\n const parent = filterManager.value?.parentElement;\n if (!parent) return;\n scrollIsActive.value = parent.scrollHeight > parent.clientHeight || parent.scrollWidth > parent.clientWidth;\n });\n if (filterManager.value && filterManager.value.parentElement) {\n observer.observe(filterManager.value!.parentElement);\n }\n});\n\nwatch(filterManager, (newElement, oldElement) => {\n if (oldElement?.parentElement) {\n observer.unobserve(oldElement.parentElement);\n }\n if (newElement?.parentElement) {\n observer.observe(newElement.parentElement);\n }\n});\n\nonBeforeUnmount(() => {\n if (observer !== undefined) {\n observer.disconnect();\n }\n});\n\nconst canAddFilter = computed<boolean>(() => filters.value.some((s) => !s.filter));\nconst showAddFilter = ref(false);\n\nconst canResetToDefaults = computed<boolean>(() => {\n return filters.value\n .some((s) => (!s.defaultFilter && s.filter) || (s.defaultFilter\n && (s.filter?.disabled === true || !isJsonEqual(s.filter?.value, s.defaultFilter))));\n});\nconst resetToDefaults = () => {\n filters.value.forEach((s) => {\n if (s.defaultFilter) {\n s.filter = {\n value: s.defaultFilter,\n disabled: false,\n open: false,\n };\n } else {\n s.filter = null;\n }\n });\n};\n\nconst items = computed(() => filters.value.filter((s) => s.filter !== null));\n</script>\n\n<template>\n <Teleport v-if=\"mounted && teleportTarget\" :to=\"teleportTarget\">\n <PlBtnGhost :icon=\"filtersOn ? 'filter-on' : 'filter'\" @click.stop=\"showManager = true\">\n Filters\n </PlBtnGhost>\n </Teleport>\n\n <PlSlideModal v-model=\"showManager\" :close-on-outside-click=\"false\">\n <template #title>Manage Filters</template>\n\n <div ref=\"filterManager\" :class=\"$style['filter-manager']\">\n <PlElementList\n v-model:items=\"items\"\n :on-expand=\"(item) => {\n if (item.filter) {\n item.filter.open = !item.filter.open;\n }\n }\"\n :is-expanded=\"(item) => item.filter?.open ?? false\"\n :on-toggle=\"(item) => {\n if (item.filter) {\n item.filter.disabled = !item.filter.disabled;\n }\n }\"\n :is-toggled=\"(item) => item.filter?.disabled ?? false\"\n :on-remove=\"(item) => {\n if (item.filter) {\n item.filter = null;\n }\n }\"\n :get-item-key=\"(item) => canonicalizeJson<PTableColumnId>(item.id)\"\n disable-dragging\n >\n <template #item-title=\"{ item }\">\n {{ item.label }}\n </template>\n <template #item-content=\"{ index }\">\n <PlTableFilterEntryV2 v-model=\"filters.value[index]\" />\n </template>\n </PlElementList>\n\n <div\n v-if=\"filters.value.length\"\n :class=\"$style['add-action-wrapper']\"\n >\n <button\n :disabled=\"!canAddFilter\"\n :class=\"$style['add-btn']\"\n @click=\"showAddFilter = true\"\n >\n <PlMaskIcon16 name=\"add\" />\n <div :class=\"$style['add-btn-title']\">Add Filter</div>\n </button>\n\n <PlBtnSecondary\n :disabled=\"!canResetToDefaults\"\n @click.stop=\"resetToDefaults\"\n >\n Reset to defaults\n </PlBtnSecondary>\n </div>\n\n <div v-if=\"!filters.value.length\">No filters applicable</div>\n </div>\n </PlSlideModal>\n\n <PlTableAddFilterV2\n v-model=\"showAddFilter\"\n :filters=\"filters.value\"\n :set-filter=\"(idx, filter) => filters.value[idx] = filter\"\n />\n</template>\n\n<style lang=\"scss\" module>\n.filter-manager {\n --expand-icon-rotation: rotate(0deg);\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.add-action-wrapper {\n position: sticky;\n bottom: -16px;\n background-color: var(--bg-elevated-01);\n transition: all .15s ease-in-out;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.add-btn {\n height: 40px;\n background-color: var(--bg-elevated-01);\n display: flex;\n align-items: center;\n gap: 8px;\n padding-left: 12px;\n padding-right: 12px;\n border-radius: 6px;\n border: 1px dashed var(--border-color-div-grey);\n line-height: 0;\n cursor: pointer;\n text-align: left;\n}\n\n.add-btn:disabled {\n --icon-color: var(--dis-01);\n cursor: auto;\n}\n\n.add-btn:not([disabled]):hover {\n border-radius: 6px;\n border: 1px dashed var(--border-color-focus, #49CC49);\n background: rgba(99, 224, 36, 0.12);\n}\n\n.add-btn-title {\n flex-grow: 1;\n font-weight: 600;\n}\n\n.expand-icon {\n transition: all .15s ease-in-out;\n transform: var(--expand-icon-rotation);\n line-height: 0;\n cursor: pointer;\n}\n\n.toggle,\n.delete {\n line-height: 0;\n cursor: pointer;\n display: none;\n}\n\n.toggle .mask-24,\n.delete .mask-24 {\n --icon-color: var(--ic-02);\n}\n\n.toggle:hover .mask-24 {\n --icon-color: var(--ic-01);\n}\n\n.delete:hover .mask-24 {\n --icon-color: var(--ic-01);\n}\n\n.filter:hover .toggle,\n.filter:hover .delete {\n display: block;\n}\n\n.filter {\n border-radius: 6px;\n border: 1px solid var(--border-color-div-grey);\n background-color: var(--bg-base-light);\n transition: background-color .15s ease-in-out;\n overflow: auto;\n}\n\n.filter.disabled .expand-icon,\n.filter.disabled .title {\n opacity: 0.3;\n}\n\n.filter:hover {\n background-color: var(--bg-elevated-01);\n}\n\n.filter:global(.open) {\n background-color: var(--bg-elevated-01);\n --expand-icon-rotation: rotate(90deg);\n}\n</style>\n"],"names":["state","_useModel","props","__props","settings","toRefs","filters","useFilters","filtersOn","computed","s","mounted","ref","onMounted","teleportTarget","usePlBlockPageTitleTeleportTarget","showManager","scrollIsActive","filterManager","observer","parent","_a","watch","newElement","oldElement","onBeforeUnmount","canAddFilter","showAddFilter","canResetToDefaults","isJsonEqual","_b","resetToDefaults","items"],"mappings":";;;;;;;;;;;;;;;;;;;AA8BA,UAAMA,IAAQC,iBAEb,GACKC,IAAQC,GAGR,EAAE,UAAAC,EAAA,IAAaC,EAAOH,CAAK,GAE3BI,IAAUC,EAAWH,GAAUJ,CAAK,GAEpCQ,IAAYC,EAAkB,MAAMH,EAAQ,MAAM,KAAK,CAACI,MAAMA,EAAE,UAAU,CAACA,EAAE,OAAO,QAAQ,CAAC,GAE7FC,IAAUC,EAAI,EAAK;AACzB,IAAAC,EAAU,MAAM;AACd,MAAAF,EAAQ,QAAQ;AAAA,IAClB,CAAC;AACD,UAAMG,IAAiBC,EAAkC,kBAAkB,GAErEC,IAAcJ,EAAI,EAAK,GAEvBK,IAAiBL,EAAI,EAAK,GAC1BM,IAAgBN,EAAA;AACtB,QAAIO;AACJ,IAAAN,EAAU,MAAM;AACd,MAAAM,IAAW,IAAI,eAAe,MAAM;;AAClC,cAAMC,KAASC,IAAAH,EAAc,UAAd,gBAAAG,EAAqB;AACpC,QAAKD,MACLH,EAAe,QAAQG,EAAO,eAAeA,EAAO,gBAAgBA,EAAO,cAAcA,EAAO;AAAA,MAClG,CAAC,GACGF,EAAc,SAASA,EAAc,MAAM,iBAC7CC,EAAS,QAAQD,EAAc,MAAO,aAAa;AAAA,IAEvD,CAAC,GAEDI,EAAMJ,GAAe,CAACK,GAAYC,MAAe;AAC/C,MAAIA,KAAA,QAAAA,EAAY,iBACdL,EAAS,UAAUK,EAAW,aAAa,GAEzCD,KAAA,QAAAA,EAAY,iBACdJ,EAAS,QAAQI,EAAW,aAAa;AAAA,IAE7C,CAAC,GAEDE,EAAgB,MAAM;AACpB,MAAIN,MAAa,UACfA,EAAS,WAAA;AAAA,IAEb,CAAC;AAED,UAAMO,IAAejB,EAAkB,MAAMH,EAAQ,MAAM,KAAK,CAACI,MAAM,CAACA,EAAE,MAAM,CAAC,GAC3EiB,IAAgBf,EAAI,EAAK,GAEzBgB,IAAqBnB,EAAkB,MACpCH,EAAQ,MACZ,KAAK,CAACI;;AAAO,cAACA,EAAE,iBAAiBA,EAAE,UAAYA,EAAE,oBAC5CW,IAAAX,EAAE,WAAF,gBAAAW,EAAU,cAAa,MAAQ,CAACQ,IAAYC,IAAApB,EAAE,WAAF,gBAAAoB,EAAU,OAAOpB,EAAE,aAAa;AAAA,KAAG,CACxF,GACKqB,IAAkB,MAAM;AAC5B,MAAAzB,EAAQ,MAAM,QAAQ,CAACI,MAAM;AAC3B,QAAIA,EAAE,gBACJA,EAAE,SAAS;AAAA,UACT,OAAOA,EAAE;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,QAAA,IAGRA,EAAE,SAAS;AAAA,MAEf,CAAC;AAAA,IACH,GAEMsB,IAAQvB,EAAS,MAAMH,EAAQ,MAAM,OAAO,CAACI,MAAMA,EAAE,WAAW,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"PlTableFiltersV2.vue2.js","sources":["../../../src/components/PlTableFilters/PlTableFiltersV2.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport {\n type PlDataTableFilterState,\n canonicalizeJson,\n type PTableColumnId,\n} from '@platforma-sdk/model';\nimport type {\n PlDataTableFiltersSettings,\n} from './types';\nimport {\n computed,\n onBeforeUnmount,\n onMounted,\n ref,\n toRefs,\n watch,\n} from 'vue';\nimport {\n PlBtnGhost,\n PlSlideModal,\n PlBtnSecondary,\n PlMaskIcon16,\n PlElementList,\n usePlBlockPageTitleTeleportTarget,\n} from '@milaboratories/uikit';\nimport { useFilters } from './filters-state';\nimport PlTableAddFilterV2 from './PlTableAddFilterV2.vue';\nimport PlTableFilterEntryV2 from './PlTableFilterEntryV2.vue';\nimport { isJsonEqual } from '@milaboratories/helpers';\n\nconst state = defineModel<PlDataTableFilterState[]>({\n default: [],\n});\nconst props = defineProps<{\n settings: Readonly<PlDataTableFiltersSettings>;\n}>();\nconst { settings } = toRefs(props);\n\nconst filters = useFilters(settings, state);\n\nconst filtersOn = computed<boolean>(() => filters.value.some((s) => s.filter && !s.filter.disabled));\n\nconst mounted = ref(false);\nonMounted(() => {\n mounted.value = true;\n});\nconst teleportTarget = usePlBlockPageTitleTeleportTarget('PlTableFiltersV2');\n\nconst showManager = ref(false);\n\nconst scrollIsActive = ref(false);\nconst filterManager = ref<HTMLElement>();\nlet observer: ResizeObserver;\nonMounted(() => {\n observer = new ResizeObserver(() => {\n const parent = filterManager.value?.parentElement;\n if (!parent) return;\n scrollIsActive.value = parent.scrollHeight > parent.clientHeight || parent.scrollWidth > parent.clientWidth;\n });\n if (filterManager.value && filterManager.value.parentElement) {\n observer.observe(filterManager.value!.parentElement);\n }\n});\n\nwatch(filterManager, (newElement, oldElement) => {\n if (oldElement?.parentElement) {\n observer.unobserve(oldElement.parentElement);\n }\n if (newElement?.parentElement) {\n observer.observe(newElement.parentElement);\n }\n});\n\nonBeforeUnmount(() => {\n if (observer !== undefined) {\n observer.disconnect();\n }\n});\n\nconst canAddFilter = computed<boolean>(() => filters.value.some((s) => !s.filter));\nconst showAddFilter = ref(false);\n\nconst canResetToDefaults = computed<boolean>(() => {\n return filters.value\n .some((s) => (!s.defaultFilter && s.filter) || (s.defaultFilter\n && (s.filter?.disabled === true || !isJsonEqual(s.filter?.value, s.defaultFilter))));\n});\nconst resetToDefaults = () => {\n filters.value.forEach((s) => {\n if (s.defaultFilter) {\n s.filter = {\n value: s.defaultFilter,\n disabled: false,\n open: false,\n };\n } else {\n s.filter = null;\n }\n });\n};\n\nconst items = computed(() => filters.value.filter((s) => s.filter !== null));\n</script>\n\n<template>\n <Teleport v-if=\"mounted && teleportTarget\" :to=\"teleportTarget\">\n <PlBtnGhost :icon=\"filtersOn ? 'filter-on' : 'filter'\" @click.stop=\"showManager = true\">\n Filters\n </PlBtnGhost>\n </Teleport>\n\n <PlSlideModal v-model=\"showManager\" :close-on-outside-click=\"false\">\n <template #title>Manage Filters</template>\n\n <div ref=\"filterManager\" :class=\"$style['filter-manager']\">\n <PlElementList\n v-model:items=\"items\"\n :on-expand=\"(item) => {\n if (item.filter) {\n item.filter.open = !item.filter.open;\n }\n }\"\n :is-expanded=\"(item) => item.filter?.open ?? false\"\n :on-toggle=\"(item) => {\n if (item.filter) {\n item.filter.disabled = !item.filter.disabled;\n }\n }\"\n :is-toggled=\"(item) => item.filter?.disabled ?? false\"\n :on-remove=\"(item) => {\n if (item.filter) {\n item.filter = null;\n }\n }\"\n :get-item-key=\"(item) => canonicalizeJson<PTableColumnId>(item.id)\"\n disable-dragging\n >\n <template #item-title=\"{ item }\">\n {{ item.label }}\n </template>\n <template #item-content=\"{ index }\">\n <PlTableFilterEntryV2 v-model=\"filters.value[index]\" />\n </template>\n </PlElementList>\n\n <div\n v-if=\"filters.value.length\"\n :class=\"$style['add-action-wrapper']\"\n >\n <button\n :disabled=\"!canAddFilter\"\n :class=\"$style['add-btn']\"\n @click=\"showAddFilter = true\"\n >\n <PlMaskIcon16 name=\"add\" />\n <div :class=\"$style['add-btn-title']\">Add Filter</div>\n </button>\n\n <PlBtnSecondary\n :disabled=\"!canResetToDefaults\"\n @click.stop=\"resetToDefaults\"\n >\n Reset to defaults\n </PlBtnSecondary>\n </div>\n\n <div v-if=\"!filters.value.length\">No filters applicable</div>\n </div>\n </PlSlideModal>\n\n <PlTableAddFilterV2\n v-model=\"showAddFilter\"\n :filters=\"filters.value\"\n :set-filter=\"(idx, filter) => filters.value[idx] = filter\"\n />\n</template>\n\n<style lang=\"scss\" module>\n.filter-manager {\n --expand-icon-rotation: rotate(0deg);\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.add-action-wrapper {\n position: sticky;\n bottom: -16px;\n background-color: var(--bg-elevated-01);\n transition: all .15s ease-in-out;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.add-btn {\n height: 40px;\n background-color: var(--bg-elevated-01);\n display: flex;\n align-items: center;\n gap: 8px;\n padding-left: 12px;\n padding-right: 12px;\n border-radius: 6px;\n border: 1px dashed var(--border-color-div-grey);\n line-height: 0;\n cursor: pointer;\n text-align: left;\n}\n\n.add-btn:disabled {\n --icon-color: var(--dis-01);\n cursor: auto;\n}\n\n.add-btn:not([disabled]):hover {\n border-radius: 6px;\n border: 1px dashed var(--border-color-focus, #49CC49);\n background: rgba(99, 224, 36, 0.12);\n}\n\n.add-btn-title {\n flex-grow: 1;\n font-weight: 600;\n}\n\n.expand-icon {\n transition: all .15s ease-in-out;\n transform: var(--expand-icon-rotation);\n line-height: 0;\n cursor: pointer;\n}\n\n.toggle,\n.delete {\n line-height: 0;\n cursor: pointer;\n display: none;\n}\n\n.toggle .mask-24,\n.delete .mask-24 {\n --icon-color: var(--ic-02);\n}\n\n.toggle:hover .mask-24 {\n --icon-color: var(--ic-01);\n}\n\n.delete:hover .mask-24 {\n --icon-color: var(--ic-01);\n}\n\n.filter:hover .toggle,\n.filter:hover .delete {\n display: block;\n}\n\n.filter {\n border-radius: 6px;\n border: 1px solid var(--border-color-div-grey);\n background-color: var(--bg-base-light);\n transition: background-color .15s ease-in-out;\n overflow: auto;\n}\n\n.filter.disabled .expand-icon,\n.filter.disabled .title {\n opacity: 0.3;\n}\n\n.filter:hover {\n background-color: var(--bg-elevated-01);\n}\n\n.filter:global(.open) {\n background-color: var(--bg-elevated-01);\n --expand-icon-rotation: rotate(90deg);\n}\n</style>\n"],"names":["state","_useModel","props","__props","settings","toRefs","filters","useFilters","filtersOn","computed","s","mounted","ref","onMounted","teleportTarget","usePlBlockPageTitleTeleportTarget","showManager","scrollIsActive","filterManager","observer","parent","_a","watch","newElement","oldElement","onBeforeUnmount","canAddFilter","showAddFilter","canResetToDefaults","isJsonEqual","_b","resetToDefaults","items","_unref","_createBlock","_Teleport","_createVNode","PlBtnGhost","_cache","PlSlideModal","$event","_createElementVNode","$style","PlElementList","item","_withCtx","_createTextVNode","_toDisplayString","index","PlTableFilterEntryV2","_createElementBlock","PlMaskIcon16","PlBtnSecondary","_openBlock","PlTableAddFilterV2","idx","filter"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValueOrErrorsComponent.vue.js","sources":["../../src/components/ValueOrErrorsComponent.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T\">\nimport { computed } from 'vue';\nimport type { ValueOrErrors } from '@platforma-sdk/model';\n\nconst props = defineProps<{\n valueOrError: ValueOrErrors<T> | undefined;\n}>();\n\nconst value = computed(() => (props.valueOrError && props.valueOrError.ok ? props.valueOrError.value : undefined));\n\nconst error = computed(() => (props.valueOrError && !props.valueOrError.ok ? props.valueOrError.errors : undefined));\n\nconst isUnresolved = computed(() => value.value === undefined && error.value === undefined);\n\ndefineSlots<{\n default(props: { value: T }): void;\n}>();\n</script>\n\n<template>\n <div>\n <slot v-if=\"value !== undefined\" name=\"default\" v-bind=\"{ value }\" />\n <div v-if=\"error\" class=\"alert-error\">\n {{ error }}\n </div>\n <div v-if=\"isUnresolved\">Unresolved</div>\n </div>\n</template>\n"],"names":["props","__props","value","computed","error","isUnresolved"],"mappings":";;;;;;;;;;AAIA,UAAMA,IAAQC,GAIRC,IAAQC,EAAS,MAAOH,EAAM,gBAAgBA,EAAM,aAAa,KAAKA,EAAM,aAAa,QAAQ,MAAU,GAE3GI,IAAQD,EAAS,MAAOH,EAAM,gBAAgB,CAACA,EAAM,aAAa,KAAKA,EAAM,aAAa,SAAS,MAAU,GAE7GK,IAAeF,EAAS,MAAMD,EAAM,UAAU,UAAaE,EAAM,UAAU,MAAS
|
|
1
|
+
{"version":3,"file":"ValueOrErrorsComponent.vue.js","sources":["../../src/components/ValueOrErrorsComponent.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T\">\nimport { computed } from 'vue';\nimport type { ValueOrErrors } from '@platforma-sdk/model';\n\nconst props = defineProps<{\n valueOrError: ValueOrErrors<T> | undefined;\n}>();\n\nconst value = computed(() => (props.valueOrError && props.valueOrError.ok ? props.valueOrError.value : undefined));\n\nconst error = computed(() => (props.valueOrError && !props.valueOrError.ok ? props.valueOrError.errors : undefined));\n\nconst isUnresolved = computed(() => value.value === undefined && error.value === undefined);\n\ndefineSlots<{\n default(props: { value: T }): void;\n}>();\n</script>\n\n<template>\n <div>\n <slot v-if=\"value !== undefined\" name=\"default\" v-bind=\"{ value }\" />\n <div v-if=\"error\" class=\"alert-error\">\n {{ error }}\n </div>\n <div v-if=\"isUnresolved\">Unresolved</div>\n </div>\n</template>\n"],"names":["props","__props","value","computed","error","isUnresolved","_createElementBlock","_renderSlot","_ctx","_hoisted_1","_toDisplayString","_openBlock"],"mappings":";;;;;;;;;;AAIA,UAAMA,IAAQC,GAIRC,IAAQC,EAAS,MAAOH,EAAM,gBAAgBA,EAAM,aAAa,KAAKA,EAAM,aAAa,QAAQ,MAAU,GAE3GI,IAAQD,EAAS,MAAOH,EAAM,gBAAgB,CAACA,EAAM,aAAa,KAAKA,EAAM,aAAa,SAAS,MAAU,GAE7GK,IAAeF,EAAS,MAAMD,EAAM,UAAU,UAAaE,EAAM,UAAU,MAAS;2BAQxFE,EAMM,OAAA,MAAA;AAAA,MALQJ,EAAA,UAAU,SAAtBK,EAAqEC,8CAAXN,EAAA,MAAA,CAAK,CAAA,CAAA;MACpDE,EAAA,cAAXE,EAEM,OAFNG,GAEMC,EADDN,EAAA,KAAK,GAAA,CAAA;MAECC,EAAA,SAAXM,EAAA,GAAAL,EAAyC,UAAhB,YAAU;;;;"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
const u = /* @__PURE__ */
|
|
1
|
+
import { defineComponent as l, createElementBlock as d, openBlock as p, normalizeClass as c, createElementVNode as n, toDisplayString as f } from "vue";
|
|
2
|
+
const u = /* @__PURE__ */ l({
|
|
3
3
|
__name: "EndOfPeriod",
|
|
4
4
|
props: {
|
|
5
5
|
endOfPeriod: {}
|
|
6
6
|
},
|
|
7
|
-
setup(
|
|
8
|
-
const
|
|
7
|
+
setup(o) {
|
|
8
|
+
const r = (e) => {
|
|
9
9
|
if (!e) return "N/A";
|
|
10
|
-
const t = new Date(e),
|
|
11
|
-
return `${
|
|
10
|
+
const t = new Date(e), a = t.getDate().toString().padStart(2, "0"), s = (t.getMonth() + 1).toString().padStart(2, "0"), i = t.getFullYear();
|
|
11
|
+
return `${a}.${s}.${i}`;
|
|
12
12
|
};
|
|
13
|
-
return (e, t) => (
|
|
14
|
-
class:
|
|
13
|
+
return (e, t) => (p(), d("div", {
|
|
14
|
+
class: c(e.$style.container)
|
|
15
15
|
}, [
|
|
16
16
|
t[0] || (t[0] = n("span", null, "End of period", -1)),
|
|
17
|
-
n("span", null,
|
|
17
|
+
n("span", null, f(r(o.endOfPeriod)), 1)
|
|
18
18
|
], 2));
|
|
19
19
|
}
|
|
20
20
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EndOfPeriod.vue2.js","sources":["../../../src/plugins/Monetization/EndOfPeriod.vue"],"sourcesContent":["<script setup lang=\"ts\">\ndefineProps<{\n endOfPeriod: string | null;\n}>();\n\nconst formateStringDate = (date: string | null) => {\n if (!date) return 'N/A';\n const dateObj = new Date(date);\n const day = dateObj.getDate().toString().padStart(2, '0');\n const month = (dateObj.getMonth() + 1).toString().padStart(2, '0'); // Month is 0-indexed\n const year = dateObj.getFullYear();\n return `${day}.${month}.${year}`;\n};\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <span>End of period</span>\n <span>{{ formateStringDate(endOfPeriod) }}</span>\n </div>\n</template>\n\n<style module>\n.container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n background-color: #F7F8FA;\n border-radius: 6px;\n min-height: 40px;\n padding: 0 12px 0 12px;\n color: var(--txt-01);\n font-size: 14px;\n font-weight: 500;\n border: 1px solid var(--border-color-div-grey);\n span:first-child {\n overflow: hidden;\n font-weight: 600;\n }\n}\n</style>\n"],"names":["formateStringDate","date","dateObj","day","month","year"],"mappings":";;;;;;;AAKA,UAAMA,IAAoB,CAACC,MAAwB;AACjD,UAAI,CAACA,EAAM,QAAO;AAClB,YAAMC,IAAU,IAAI,KAAKD,CAAI,GACvBE,IAAMD,EAAQ,QAAA,EAAU,WAAW,SAAS,GAAG,GAAG,GAClDE,KAASF,EAAQ,SAAA,IAAa,GAAG,WAAW,SAAS,GAAG,GAAG,GAC3DG,IAAOH,EAAQ,YAAA;AACrB,aAAO,GAAGC,CAAG,IAAIC,CAAK,IAAIC,CAAI;AAAA,IAChC
|
|
1
|
+
{"version":3,"file":"EndOfPeriod.vue2.js","sources":["../../../src/plugins/Monetization/EndOfPeriod.vue"],"sourcesContent":["<script setup lang=\"ts\">\ndefineProps<{\n endOfPeriod: string | null;\n}>();\n\nconst formateStringDate = (date: string | null) => {\n if (!date) return 'N/A';\n const dateObj = new Date(date);\n const day = dateObj.getDate().toString().padStart(2, '0');\n const month = (dateObj.getMonth() + 1).toString().padStart(2, '0'); // Month is 0-indexed\n const year = dateObj.getFullYear();\n return `${day}.${month}.${year}`;\n};\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <span>End of period</span>\n <span>{{ formateStringDate(endOfPeriod) }}</span>\n </div>\n</template>\n\n<style module>\n.container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n background-color: #F7F8FA;\n border-radius: 6px;\n min-height: 40px;\n padding: 0 12px 0 12px;\n color: var(--txt-01);\n font-size: 14px;\n font-weight: 500;\n border: 1px solid var(--border-color-div-grey);\n span:first-child {\n overflow: hidden;\n font-weight: 600;\n }\n}\n</style>\n"],"names":["formateStringDate","date","dateObj","day","month","year","_createElementBlock","_normalizeClass","$style","_cache","_createElementVNode","_toDisplayString","__props"],"mappings":";;;;;;;AAKA,UAAMA,IAAoB,CAACC,MAAwB;AACjD,UAAI,CAACA,EAAM,QAAO;AAClB,YAAMC,IAAU,IAAI,KAAKD,CAAI,GACvBE,IAAMD,EAAQ,QAAA,EAAU,WAAW,SAAS,GAAG,GAAG,GAClDE,KAASF,EAAQ,SAAA,IAAa,GAAG,WAAW,SAAS,GAAG,GAAG,GAC3DG,IAAOH,EAAQ,YAAA;AACrB,aAAO,GAAGC,CAAG,IAAIC,CAAK,IAAIC,CAAI;AAAA,IAChC;2BAIEC,EAGM,OAAA;AAAA,MAHA,OAAKC,EAAEC,EAAAA,OAAO,SAAS;AAAA,IAAA;MAC3BC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAC,EAA0B,cAApB,iBAAa,EAAA;AAAA,MACnBA,EAAiD,QAAA,MAAAC,EAAxCX,EAAkBY,EAAA,WAAW,CAAA,GAAA,CAAA;AAAA,IAAA;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent as w, computed as
|
|
1
|
+
import { defineComponent as w, computed as o, createElementBlock as r, openBlock as i, normalizeClass as a, createElementVNode as n, toDisplayString as d, createTextVNode as f, createCommentVNode as m, normalizeStyle as $ } from "vue";
|
|
2
2
|
const F = { key: 0 }, N = { key: 1 }, A = { key: 0 }, C = { key: 1 }, T = /* @__PURE__ */ w({
|
|
3
3
|
__name: "LimitCard",
|
|
4
4
|
props: {
|
|
@@ -9,70 +9,70 @@ const F = { key: 0 }, N = { key: 1 }, A = { key: 0 }, C = { key: 1 }, T = /* @__
|
|
|
9
9
|
available: {},
|
|
10
10
|
unit: {}
|
|
11
11
|
},
|
|
12
|
-
setup(
|
|
13
|
-
const l =
|
|
14
|
-
return (e,
|
|
15
|
-
class:
|
|
12
|
+
setup(s) {
|
|
13
|
+
const l = s, u = o(() => l.available === null ? null : l.available + l.toSpend + l.used), y = o(() => l.available === null ? !1 : l.available < 0), c = o(() => l.available === null ? null : l.available + l.toSpend), p = (e) => Math.max(0, Math.min(100, e)), g = o(() => u.value === null || u.value === 0 || y.value ? 0 : p(l.toSpend / u.value * 100)), S = o(() => u.value === null || u.value === 0 ? 0 : p(l.used / u.value * 100)), k = o(() => l.available === null || u.value === null || u.value === 0 ? 100 : y.value ? 0 : p(l.available / u.value * 100)), B = o(() => l.type === "unique_launches" ? "Runs Limits" : l.type === "volume_limit" ? "Volume Limits" : l.label), L = (e) => (e / 1024 / 1024 / 1024).toFixed(2) + " GB", v = (e) => l.type === "volume_limit" ? L(e) : e, b = (e) => Number(e.toFixed(2)) > 0;
|
|
14
|
+
return (e, t) => (i(), r("div", {
|
|
15
|
+
class: a(e.$style.container)
|
|
16
16
|
}, [
|
|
17
17
|
n("span", {
|
|
18
|
-
class:
|
|
19
|
-
},
|
|
18
|
+
class: a(e.$style.label)
|
|
19
|
+
}, d(B.value), 3),
|
|
20
20
|
n("div", {
|
|
21
|
-
class:
|
|
21
|
+
class: a(e.$style.content)
|
|
22
22
|
}, [
|
|
23
23
|
n("div", {
|
|
24
|
-
class:
|
|
24
|
+
class: a(e.$style.contentAvailable)
|
|
25
25
|
}, [
|
|
26
26
|
n("div", null, [
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
n("strong", null,
|
|
31
|
-
|
|
32
|
-
])) : (
|
|
27
|
+
t[0] || (t[0] = f(" Available: ", -1)),
|
|
28
|
+
t[1] || (t[1] = n("div", { style: { flex: "1" } }, null, -1)),
|
|
29
|
+
c.value !== null ? (i(), r("span", F, [
|
|
30
|
+
n("strong", null, d(v(c.value)), 1),
|
|
31
|
+
f(" / " + d(v(s.available + s.toSpend + s.used)), 1)
|
|
32
|
+
])) : (i(), r("span", N, "Unlimited"))
|
|
33
33
|
]),
|
|
34
34
|
n("div", {
|
|
35
|
-
class:
|
|
35
|
+
class: a([e.$style.afterRun, { [e.$style.exceeded]: y.value }])
|
|
36
36
|
}, [
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
y.value ? (i(), r("span", A, "Too many files selected")) : m("", !0),
|
|
38
|
+
t[2] || (t[2] = n("span", { style: { flex: "1" } }, null, -1)),
|
|
39
|
+
t[3] || (t[3] = n("span", null, "After run:", -1)),
|
|
40
|
+
s.available !== null ? (i(), r("span", C, d(v(s.available)) + " / " + d(v(s.available + s.toSpend + s.used)), 1)) : m("", !0)
|
|
41
41
|
], 2),
|
|
42
42
|
n("div", {
|
|
43
|
-
class:
|
|
43
|
+
class: a([e.$style.progressBar, { [e.$style.exceeded]: y.value }])
|
|
44
44
|
}, [
|
|
45
|
-
|
|
45
|
+
b(k.value) ? (i(), r("span", {
|
|
46
46
|
key: 0,
|
|
47
|
-
class:
|
|
48
|
-
style:
|
|
49
|
-
}, null, 6)) :
|
|
50
|
-
|
|
47
|
+
class: a(e.$style.progressBarAvailable),
|
|
48
|
+
style: $({ width: `${k.value.toFixed(2)}%` })
|
|
49
|
+
}, null, 6)) : m("", !0),
|
|
50
|
+
b(g.value) ? (i(), r("span", {
|
|
51
51
|
key: 1,
|
|
52
|
-
class:
|
|
53
|
-
style:
|
|
54
|
-
}, null, 6)) :
|
|
55
|
-
|
|
52
|
+
class: a(e.$style.progressBarToSpend),
|
|
53
|
+
style: $({ width: `${g.value.toFixed(2)}%` })
|
|
54
|
+
}, null, 6)) : m("", !0),
|
|
55
|
+
b(S.value) ? (i(), r("span", {
|
|
56
56
|
key: 2,
|
|
57
|
-
class:
|
|
58
|
-
style:
|
|
59
|
-
}, null, 6)) :
|
|
57
|
+
class: a(e.$style.progressBarUsed),
|
|
58
|
+
style: $({ width: `${S.value.toFixed(2)}%` })
|
|
59
|
+
}, null, 6)) : m("", !0)
|
|
60
60
|
], 2)
|
|
61
61
|
], 2),
|
|
62
62
|
n("div", {
|
|
63
|
-
class:
|
|
63
|
+
class: a(e.$style.legends)
|
|
64
64
|
}, [
|
|
65
65
|
n("div", {
|
|
66
|
-
class:
|
|
66
|
+
class: a(e.$style.toSpendLegend)
|
|
67
67
|
}, [
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
t[4] || (t[4] = n("span", null, null, -1)),
|
|
69
|
+
f(" To spend: " + d(v(s.toSpend)), 1)
|
|
70
70
|
], 2),
|
|
71
71
|
n("div", {
|
|
72
|
-
class:
|
|
72
|
+
class: a(e.$style.usedLegend)
|
|
73
73
|
}, [
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
t[5] || (t[5] = n("span", null, null, -1)),
|
|
75
|
+
f(" Used: " + d(v(s.used)), 1)
|
|
76
76
|
], 2)
|
|
77
77
|
], 2)
|
|
78
78
|
], 2)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LimitCard.vue2.js","sources":["../../../src/plugins/Monetization/LimitCard.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nconst props = defineProps<{\n type: 'unique_launches' | 'volume_limit';\n label: string;\n used: number;\n toSpend: number;\n available: number | null; // If available is null it means Unlimited\n unit?: string;\n}>();\n\nconst total = computed(() => {\n if (props.available === null) return null;\n return props.available + props.toSpend + props.used;\n});\n\nconst exceeded = computed(() => {\n if (props.available === null) return false;\n return props.available < 0;\n});\n\nconst availableNow = computed(() => {\n if (props.available === null) return null;\n return props.available + props.toSpend;\n});\n\nconst clampPercentage = (n: number) => Math.max(0, Math.min(100, n));\n\nconst toSpendPercentage = computed(() => {\n if (total.value === null) return 0;\n if (total.value === 0) return 0;\n if (exceeded.value) return 0;\n return clampPercentage((props.toSpend / total.value) * 100);\n});\n\nconst usedPercentage = computed(() => {\n if (total.value === null) return 0;\n if (total.value === 0) return 0;\n return clampPercentage((props.used / total.value) * 100);\n});\n\nconst availablePercentage = computed(() => {\n if (props.available === null) return 100;\n if (total.value === null) return 100;\n if (total.value === 0) return 100;\n if (exceeded.value) return 0;\n return clampPercentage(props.available / total.value * 100);\n});\n\nconst computedLabel = computed(() => {\n if (props.type === 'unique_launches') return 'Runs Limits';\n if (props.type === 'volume_limit') return 'Volume Limits';\n return props.label;\n});\n\nconst toGB = (v: number) => {\n return (v / 1024 / 1024 / 1024).toFixed(2) + ' GB';\n};\n\nconst formatUnit = (v: number) => {\n if (props.type === 'volume_limit') return toGB(v);\n return v;\n};\n\nconst showBar = (n: number) => {\n return Number(n.toFixed(2)) > 0;\n};\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <span :class=\"$style.label\">{{ computedLabel }}</span>\n <div :class=\"$style.content\">\n <div :class=\"$style.contentAvailable\">\n <div>\n Available:\n <div style=\"flex: 1\" />\n <span v-if=\"availableNow !== null\"><strong>{{ formatUnit(availableNow) }}</strong> / {{ formatUnit(available! + toSpend + used) }}</span>\n <span v-else>Unlimited</span>\n </div>\n <div :class=\"[$style.afterRun, { [$style.exceeded]: exceeded }]\">\n <span v-if=\"exceeded\">Too many files selected</span>\n <span style=\"flex: 1\" />\n <span>After run:</span>\n <span v-if=\"available !== null\">{{ formatUnit(available) }} / {{ formatUnit(available + toSpend + used) }}</span>\n </div>\n <div :class=\"[$style.progressBar, { [$style.exceeded]: exceeded }]\">\n <span v-if=\"showBar(availablePercentage)\" :class=\"$style.progressBarAvailable\" :style=\"{ width: `${availablePercentage.toFixed(2)}%` }\" />\n <span v-if=\"showBar(toSpendPercentage)\" :class=\"$style.progressBarToSpend\" :style=\"{ width: `${toSpendPercentage.toFixed(2)}%` }\" />\n <span v-if=\"showBar(usedPercentage)\" :class=\"$style.progressBarUsed\" :style=\"{ width: `${usedPercentage.toFixed(2)}%` }\" />\n </div>\n </div>\n <div :class=\"$style.legends\">\n <div :class=\"$style.toSpendLegend\">\n <span/>\n To spend: {{ formatUnit(toSpend) }}\n </div>\n <div :class=\"$style.usedLegend\">\n <span/>\n Used: {{ formatUnit(used) }}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style module>\n.container {\n display: flex;\n flex-direction: column;\n background-color: var(--bg-base-light);\n border-radius: 6px;\n padding: 10px 12px 16px 12px;\n color: var(--txt-01);\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n border: 1px solid var(--border-color-div-grey);\n}\n\n.label {\n display: block;\n min-height: 36px;\n margin-bottom: 8px;\n color: var(--txt-01);\n font-size: 14px;\n font-weight: 600;\n line-height: 20px; /* 142.857% */\n}\n\n.content {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.contentAvailable {\n display: flex;\n flex-direction: column;\n gap: 6px;\n > div {\n display: flex;\n align-items: flex-start;\n }\n >div:first-child {\n gap: 8px;\n strong {\n font-size: 28px;\n font-weight: 500;\n line-height: 36px; /* 128.571% */\n letter-spacing: -0.56px;\n }\n }\n}\n\n.afterRun {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 4px;\n font-size: 12px;\n font-style: normal;\n font-weight: 500;\n line-height: 16px;\n color: var(--txt-03);\n &.exceeded {\n color: var(--txt-error);\n }\n}\n\n.progressBar {\n width: 100%;\n height: 12px;\n background-color: #E0E0E0;\n display: flex;\n align-items: center;\n border: 1px solid var(--border-color-default);\n > span {\n display: block;\n height: 100%;\n outline: 1px solid var(--border-color-default);\n }\n &.exceeded {\n opacity: 0.2;\n }\n}\n\n.progressBarAvailable {\n background: linear-gradient(270deg, #A1E59C 0%, #D0F5B0 98.81%);\n}\n\n.progressBarUsed {\n background-color: #FFCECC;\n}\n\n.progressBarToSpend {\n background-color: #FAF5AA;\n}\n\n.legends {\n display: flex;\n justify-content: space-between;\n gap: 8px;\n\n span {\n display: block;\n border-radius: 1px;\n border: 1px solid var(--border-color-default);\n width: 12px;\n height: 12px;\n }\n}\n\n.usedLegend {\n display: flex;\n align-items: center;\n gap: 8px;\n span {\n background: #FFCECC;\n }\n}\n\n.toSpendLegend {\n display: flex;\n align-items: center;\n gap: 8px;\n span {\n background: #FAF5AA;\n }\n}\n</style>\n"],"names":["props","__props","total","computed","exceeded","availableNow","clampPercentage","n","toSpendPercentage","usedPercentage","availablePercentage","computedLabel","toGB","v","formatUnit","showBar"],"mappings":";;;;;;;;;;;;AAGA,UAAMA,IAAQC,GASRC,IAAQC,EAAS,MACjBH,EAAM,cAAc,OAAa,OAC9BA,EAAM,YAAYA,EAAM,UAAUA,EAAM,IAChD,GAEKI,IAAWD,EAAS,MACpBH,EAAM,cAAc,OAAa,KAC9BA,EAAM,YAAY,CAC1B,GAEKK,IAAeF,EAAS,MACxBH,EAAM,cAAc,OAAa,OAC9BA,EAAM,YAAYA,EAAM,OAChC,GAEKM,IAAkB,CAACC,MAAc,KAAK,IAAI,GAAG,KAAK,IAAI,KAAKA,CAAC,CAAC,GAE7DC,IAAoBL,EAAS,MAC7BD,EAAM,UAAU,QAChBA,EAAM,UAAU,KAChBE,EAAS,QAAc,IACpBE,EAAiBN,EAAM,UAAUE,EAAM,QAAS,GAAG,CAC3D,GAEKO,IAAiBN,EAAS,MAC1BD,EAAM,UAAU,QAChBA,EAAM,UAAU,IAAU,IACvBI,EAAiBN,EAAM,OAAOE,EAAM,QAAS,GAAG,CACxD,GAEKQ,IAAsBP,EAAS,MAC/BH,EAAM,cAAc,QACpBE,EAAM,UAAU,QAChBA,EAAM,UAAU,IAAU,MAC1BE,EAAS,QAAc,IACpBE,EAAgBN,EAAM,YAAYE,EAAM,QAAQ,GAAG,CAC3D,GAEKS,IAAgBR,EAAS,MACzBH,EAAM,SAAS,oBAA0B,gBACzCA,EAAM,SAAS,iBAAuB,kBACnCA,EAAM,KACd,GAEKY,IAAO,CAACC,OACJA,IAAI,OAAO,OAAO,MAAM,QAAQ,CAAC,IAAI,OAGzCC,IAAa,CAACD,MACdb,EAAM,SAAS,iBAAuBY,EAAKC,CAAC,IACzCA,GAGHE,IAAU,CAACR,MACR,OAAOA,EAAE,QAAQ,CAAC,CAAC,IAAI
|
|
1
|
+
{"version":3,"file":"LimitCard.vue2.js","sources":["../../../src/plugins/Monetization/LimitCard.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nconst props = defineProps<{\n type: 'unique_launches' | 'volume_limit';\n label: string;\n used: number;\n toSpend: number;\n available: number | null; // If available is null it means Unlimited\n unit?: string;\n}>();\n\nconst total = computed(() => {\n if (props.available === null) return null;\n return props.available + props.toSpend + props.used;\n});\n\nconst exceeded = computed(() => {\n if (props.available === null) return false;\n return props.available < 0;\n});\n\nconst availableNow = computed(() => {\n if (props.available === null) return null;\n return props.available + props.toSpend;\n});\n\nconst clampPercentage = (n: number) => Math.max(0, Math.min(100, n));\n\nconst toSpendPercentage = computed(() => {\n if (total.value === null) return 0;\n if (total.value === 0) return 0;\n if (exceeded.value) return 0;\n return clampPercentage((props.toSpend / total.value) * 100);\n});\n\nconst usedPercentage = computed(() => {\n if (total.value === null) return 0;\n if (total.value === 0) return 0;\n return clampPercentage((props.used / total.value) * 100);\n});\n\nconst availablePercentage = computed(() => {\n if (props.available === null) return 100;\n if (total.value === null) return 100;\n if (total.value === 0) return 100;\n if (exceeded.value) return 0;\n return clampPercentage(props.available / total.value * 100);\n});\n\nconst computedLabel = computed(() => {\n if (props.type === 'unique_launches') return 'Runs Limits';\n if (props.type === 'volume_limit') return 'Volume Limits';\n return props.label;\n});\n\nconst toGB = (v: number) => {\n return (v / 1024 / 1024 / 1024).toFixed(2) + ' GB';\n};\n\nconst formatUnit = (v: number) => {\n if (props.type === 'volume_limit') return toGB(v);\n return v;\n};\n\nconst showBar = (n: number) => {\n return Number(n.toFixed(2)) > 0;\n};\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <span :class=\"$style.label\">{{ computedLabel }}</span>\n <div :class=\"$style.content\">\n <div :class=\"$style.contentAvailable\">\n <div>\n Available:\n <div style=\"flex: 1\" />\n <span v-if=\"availableNow !== null\"><strong>{{ formatUnit(availableNow) }}</strong> / {{ formatUnit(available! + toSpend + used) }}</span>\n <span v-else>Unlimited</span>\n </div>\n <div :class=\"[$style.afterRun, { [$style.exceeded]: exceeded }]\">\n <span v-if=\"exceeded\">Too many files selected</span>\n <span style=\"flex: 1\" />\n <span>After run:</span>\n <span v-if=\"available !== null\">{{ formatUnit(available) }} / {{ formatUnit(available + toSpend + used) }}</span>\n </div>\n <div :class=\"[$style.progressBar, { [$style.exceeded]: exceeded }]\">\n <span v-if=\"showBar(availablePercentage)\" :class=\"$style.progressBarAvailable\" :style=\"{ width: `${availablePercentage.toFixed(2)}%` }\" />\n <span v-if=\"showBar(toSpendPercentage)\" :class=\"$style.progressBarToSpend\" :style=\"{ width: `${toSpendPercentage.toFixed(2)}%` }\" />\n <span v-if=\"showBar(usedPercentage)\" :class=\"$style.progressBarUsed\" :style=\"{ width: `${usedPercentage.toFixed(2)}%` }\" />\n </div>\n </div>\n <div :class=\"$style.legends\">\n <div :class=\"$style.toSpendLegend\">\n <span/>\n To spend: {{ formatUnit(toSpend) }}\n </div>\n <div :class=\"$style.usedLegend\">\n <span/>\n Used: {{ formatUnit(used) }}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style module>\n.container {\n display: flex;\n flex-direction: column;\n background-color: var(--bg-base-light);\n border-radius: 6px;\n padding: 10px 12px 16px 12px;\n color: var(--txt-01);\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n border: 1px solid var(--border-color-div-grey);\n}\n\n.label {\n display: block;\n min-height: 36px;\n margin-bottom: 8px;\n color: var(--txt-01);\n font-size: 14px;\n font-weight: 600;\n line-height: 20px; /* 142.857% */\n}\n\n.content {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.contentAvailable {\n display: flex;\n flex-direction: column;\n gap: 6px;\n > div {\n display: flex;\n align-items: flex-start;\n }\n >div:first-child {\n gap: 8px;\n strong {\n font-size: 28px;\n font-weight: 500;\n line-height: 36px; /* 128.571% */\n letter-spacing: -0.56px;\n }\n }\n}\n\n.afterRun {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 4px;\n font-size: 12px;\n font-style: normal;\n font-weight: 500;\n line-height: 16px;\n color: var(--txt-03);\n &.exceeded {\n color: var(--txt-error);\n }\n}\n\n.progressBar {\n width: 100%;\n height: 12px;\n background-color: #E0E0E0;\n display: flex;\n align-items: center;\n border: 1px solid var(--border-color-default);\n > span {\n display: block;\n height: 100%;\n outline: 1px solid var(--border-color-default);\n }\n &.exceeded {\n opacity: 0.2;\n }\n}\n\n.progressBarAvailable {\n background: linear-gradient(270deg, #A1E59C 0%, #D0F5B0 98.81%);\n}\n\n.progressBarUsed {\n background-color: #FFCECC;\n}\n\n.progressBarToSpend {\n background-color: #FAF5AA;\n}\n\n.legends {\n display: flex;\n justify-content: space-between;\n gap: 8px;\n\n span {\n display: block;\n border-radius: 1px;\n border: 1px solid var(--border-color-default);\n width: 12px;\n height: 12px;\n }\n}\n\n.usedLegend {\n display: flex;\n align-items: center;\n gap: 8px;\n span {\n background: #FFCECC;\n }\n}\n\n.toSpendLegend {\n display: flex;\n align-items: center;\n gap: 8px;\n span {\n background: #FAF5AA;\n }\n}\n</style>\n"],"names":["props","__props","total","computed","exceeded","availableNow","clampPercentage","n","toSpendPercentage","usedPercentage","availablePercentage","computedLabel","toGB","v","formatUnit","showBar","_createElementBlock","_normalizeClass","$style","_createElementVNode","_hoisted_1","_toDisplayString","_createTextVNode","_openBlock","_cache","_hoisted_4","_normalizeStyle"],"mappings":"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"}
|
|
@@ -54,11 +54,11 @@ const oe = /* @__PURE__ */ T({
|
|
|
54
54
|
modelValue: p.value,
|
|
55
55
|
"onUpdate:modelValue": r[0] || (r[0] = (t) => p.value = t)
|
|
56
56
|
}, {
|
|
57
|
-
title: i(() => r[2] || (r[2] = [
|
|
57
|
+
title: i(() => [...r[2] || (r[2] = [
|
|
58
58
|
N("div", { class: "flex items-center gap-2" }, [
|
|
59
59
|
N("span", null, "Subscription")
|
|
60
60
|
], -1)
|
|
61
|
-
])),
|
|
61
|
+
])]),
|
|
62
62
|
default: i(() => [
|
|
63
63
|
d(e(O), {
|
|
64
64
|
label: "Product",
|
|
@@ -124,7 +124,7 @@ const oe = /* @__PURE__ */ T({
|
|
|
124
124
|
d(e(A), { name: z.value }, null, 8, ["name"])
|
|
125
125
|
]),
|
|
126
126
|
default: i(() => [
|
|
127
|
-
r[3] || (r[3] = x(" Subscription "))
|
|
127
|
+
r[3] || (r[3] = x(" Subscription ", -1))
|
|
128
128
|
]),
|
|
129
129
|
_: 1
|
|
130
130
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MonetizationSidebar.vue.js","sources":["../../../src/plugins/Monetization/MonetizationSidebar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed } from 'vue';\nimport { PlSlideModal, PlBtnGhost, PlDropdown, PlAlert, PlIcon24, PlBtnSecondary } from '@milaboratories/uikit';\nimport { useButtonTarget } from './useButtonTarget';\nimport { useInfo } from './useInfo';\nimport UserCabinetCard from './UserCabinetCard.vue';\nimport RunStatus from './RunStatus.vue';\nimport LimitCard from './LimitCard.vue';\nimport EndOfPeriod from './EndOfPeriod.vue';\n\nconst isOpen = ref(false);\n\nconst {\n result,\n error,\n hasMonetization,\n canRun,\n status,\n customerEmail,\n endOfBillingPeriod,\n limits,\n refresh,\n isLoading,\n} = useInfo();\n\nconst teleportTarget = useButtonTarget(hasMonetization);\n\nconst productName = computed(() => result.value?.productName);\n\nconst userCabinetUrl = computed(() => {\n if (!result.value) return undefined;\n\n const u = new URL(`https://scientist.platforma.bio/product/${result.value.productKey}`);\n\n if (customerEmail.value) {\n u.searchParams.set('email', customerEmail.value);\n }\n\n return u.toString();\n});\n\nconst options = computed(() => {\n if (!result.value) return [];\n\n return [\n {\n label: result.value.productName,\n value: result.value.productName,\n },\n ];\n});\n\nconst statusText = computed(() => {\n switch (status.value) {\n case 'active':\n return '';\n case 'limits_exceeded':\n return 'Usage limits exceeded for the current billing period.';\n case 'payment_required':\n return 'Payment required to continue using the service.';\n case 'select-tariff':\n return 'Select a subscription plan in the Scientist Cabinet.';\n case 'inactive':\n return 'Not found billing period.';\n default:\n return '';\n }\n});\n\nconst btnIcon = computed(() => {\n if (canRun.value) return 'monetization-on';\n return 'monetization-off';\n});\n</script>\n\n<template>\n <PlSlideModal v-if=\"hasMonetization\" v-model=\"isOpen\">\n <template #title>\n <div class=\"flex items-center gap-2\">\n <span>Subscription</span>\n </div>\n </template>\n <PlDropdown label=\"Product\" readonly :model-value=\"productName\" :options=\"options\" />\n <RunStatus :can-run=\"canRun\" :is-loading=\"isLoading\" :status-text=\"statusText\">\n <PlBtnSecondary\n title=\"Refresh status\"\n round\n size=\"small\"\n style=\"margin-left: auto;\"\n icon=\"loading\"\n :loading=\"isLoading\"\n @click=\"refresh\"\n />\n </RunStatus>\n <PlAlert v-if=\"error\" type=\"error\">\n {{ error }}\n </PlAlert>\n <UserCabinetCard v-if=\"userCabinetUrl\" :email=\"customerEmail\" :user-cabinet-url=\"userCabinetUrl\" />\n <EndOfPeriod v-if=\"endOfBillingPeriod\" :end-of-period=\"endOfBillingPeriod\" />\n <template v-if=\"limits\">\n <LimitCard\n v-for=\"limit in limits\"\n :key=\"limit.type\"\n :type=\"limit.type\"\n :label=\"limit.type\"\n :used=\"limit.used\"\n :to-spend=\"limit.toSpend\"\n :available=\"limit.available\"\n />\n </template>\n </PlSlideModal>\n <!-- Teleport to the title slot -->\n <Teleport v-if=\"hasMonetization && teleportTarget\" :to=\"teleportTarget\">\n <PlBtnGhost @click.stop=\"isOpen = true\">\n Subscription\n <template #append>\n <PlIcon24 :name=\"btnIcon\" />\n </template>\n </PlBtnGhost>\n </Teleport>\n</template>\n"],"names":["isOpen","ref","result","error","hasMonetization","canRun","status","customerEmail","endOfBillingPeriod","limits","refresh","isLoading","useInfo","teleportTarget","useButtonTarget","productName","computed","_a","userCabinetUrl","u","options","statusText","btnIcon"],"mappings":";;;;;;;;;;;AAUA,UAAMA,IAASC,EAAI,EAAK,GAElB;AAAA,MACJ,QAAAC;AAAA,MACA,OAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,QAAAC;AAAA,MACA,QAAAC;AAAA,MACA,eAAAC;AAAA,MACA,oBAAAC;AAAA,MACA,QAAAC;AAAA,MACA,SAAAC;AAAA,MACA,WAAAC;AAAA,IAAA,IACEC,EAAA,GAEEC,IAAiBC,EAAgBV,CAAe,GAEhDW,IAAcC,EAAS,MAAA;;AAAM,cAAAC,IAAAf,EAAO,UAAP,gBAAAe,EAAc;AAAA,KAAW,GAEtDC,IAAiBF,EAAS,MAAM;AACpC,UAAI,CAACd,EAAO,MAAO;AAEnB,YAAMiB,IAAI,IAAI,IAAI,2CAA2CjB,EAAO,MAAM,UAAU,EAAE;AAEtF,aAAIK,EAAc,SAChBY,EAAE,aAAa,IAAI,SAASZ,EAAc,KAAK,GAG1CY,EAAE,SAAA;AAAA,IACX,CAAC,GAEKC,IAAUJ,EAAS,MAClBd,EAAO,QAEL;AAAA,MACL;AAAA,QACE,OAAOA,EAAO,MAAM;AAAA,QACpB,OAAOA,EAAO,MAAM;AAAA,MAAA;AAAA,IACtB,IANwB,CAAA,CAQ3B,GAEKmB,IAAaL,EAAS,MAAM;AAChC,cAAQV,EAAO,OAAA;AAAA,QACb,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT;AACE,iBAAO;AAAA,MAAA;AAAA,IAEb,CAAC,GAEKgB,IAAUN,EAAS,MACnBX,EAAO,QAAc,oBAClB,kBACR
|
|
1
|
+
{"version":3,"file":"MonetizationSidebar.vue.js","sources":["../../../src/plugins/Monetization/MonetizationSidebar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed } from 'vue';\nimport { PlSlideModal, PlBtnGhost, PlDropdown, PlAlert, PlIcon24, PlBtnSecondary } from '@milaboratories/uikit';\nimport { useButtonTarget } from './useButtonTarget';\nimport { useInfo } from './useInfo';\nimport UserCabinetCard from './UserCabinetCard.vue';\nimport RunStatus from './RunStatus.vue';\nimport LimitCard from './LimitCard.vue';\nimport EndOfPeriod from './EndOfPeriod.vue';\n\nconst isOpen = ref(false);\n\nconst {\n result,\n error,\n hasMonetization,\n canRun,\n status,\n customerEmail,\n endOfBillingPeriod,\n limits,\n refresh,\n isLoading,\n} = useInfo();\n\nconst teleportTarget = useButtonTarget(hasMonetization);\n\nconst productName = computed(() => result.value?.productName);\n\nconst userCabinetUrl = computed(() => {\n if (!result.value) return undefined;\n\n const u = new URL(`https://scientist.platforma.bio/product/${result.value.productKey}`);\n\n if (customerEmail.value) {\n u.searchParams.set('email', customerEmail.value);\n }\n\n return u.toString();\n});\n\nconst options = computed(() => {\n if (!result.value) return [];\n\n return [\n {\n label: result.value.productName,\n value: result.value.productName,\n },\n ];\n});\n\nconst statusText = computed(() => {\n switch (status.value) {\n case 'active':\n return '';\n case 'limits_exceeded':\n return 'Usage limits exceeded for the current billing period.';\n case 'payment_required':\n return 'Payment required to continue using the service.';\n case 'select-tariff':\n return 'Select a subscription plan in the Scientist Cabinet.';\n case 'inactive':\n return 'Not found billing period.';\n default:\n return '';\n }\n});\n\nconst btnIcon = computed(() => {\n if (canRun.value) return 'monetization-on';\n return 'monetization-off';\n});\n</script>\n\n<template>\n <PlSlideModal v-if=\"hasMonetization\" v-model=\"isOpen\">\n <template #title>\n <div class=\"flex items-center gap-2\">\n <span>Subscription</span>\n </div>\n </template>\n <PlDropdown label=\"Product\" readonly :model-value=\"productName\" :options=\"options\" />\n <RunStatus :can-run=\"canRun\" :is-loading=\"isLoading\" :status-text=\"statusText\">\n <PlBtnSecondary\n title=\"Refresh status\"\n round\n size=\"small\"\n style=\"margin-left: auto;\"\n icon=\"loading\"\n :loading=\"isLoading\"\n @click=\"refresh\"\n />\n </RunStatus>\n <PlAlert v-if=\"error\" type=\"error\">\n {{ error }}\n </PlAlert>\n <UserCabinetCard v-if=\"userCabinetUrl\" :email=\"customerEmail\" :user-cabinet-url=\"userCabinetUrl\" />\n <EndOfPeriod v-if=\"endOfBillingPeriod\" :end-of-period=\"endOfBillingPeriod\" />\n <template v-if=\"limits\">\n <LimitCard\n v-for=\"limit in limits\"\n :key=\"limit.type\"\n :type=\"limit.type\"\n :label=\"limit.type\"\n :used=\"limit.used\"\n :to-spend=\"limit.toSpend\"\n :available=\"limit.available\"\n />\n </template>\n </PlSlideModal>\n <!-- Teleport to the title slot -->\n <Teleport v-if=\"hasMonetization && teleportTarget\" :to=\"teleportTarget\">\n <PlBtnGhost @click.stop=\"isOpen = true\">\n Subscription\n <template #append>\n <PlIcon24 :name=\"btnIcon\" />\n </template>\n </PlBtnGhost>\n </Teleport>\n</template>\n"],"names":["isOpen","ref","result","error","hasMonetization","canRun","status","customerEmail","endOfBillingPeriod","limits","refresh","isLoading","useInfo","teleportTarget","useButtonTarget","productName","computed","_a","userCabinetUrl","u","options","statusText","btnIcon","_unref","_createBlock","PlSlideModal","$event","_cache","_createElementVNode","_createVNode","PlDropdown","RunStatus","PlBtnSecondary","PlAlert","UserCabinetCard","EndOfPeriod","_createElementBlock","_Fragment","_renderList","limit","LimitCard","_Teleport","PlBtnGhost","PlIcon24"],"mappings":"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"}
|