@platforma-sdk/ui-vue 1.37.7 → 1.37.10

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.
Files changed (83) hide show
  1. package/.turbo/turbo-build.log +868 -868
  2. package/.turbo/turbo-type-check.log +1 -1
  3. package/CHANGELOG.md +8 -0
  4. package/dist/lib/ui/uikit/dist/components/DataTable/BaseCellComponent.vue.js +2 -2
  5. package/dist/lib/ui/uikit/dist/components/DataTable/TdCell.vue.js +2 -2
  6. package/dist/lib/ui/uikit/dist/components/DataTable/composition/useResize.js +2 -2
  7. package/dist/lib/ui/uikit/dist/components/DataTable/composition/useTableColumns.js +6 -6
  8. package/dist/lib/ui/uikit/dist/components/DataTable/state.js +12 -12
  9. package/dist/lib/ui/uikit/dist/components/PlAutocomplete/PlAutocomplete.vue.js +12 -12
  10. package/dist/lib/ui/uikit/dist/components/PlBtnSplit/PlBtnSplit.vue.js +10 -10
  11. package/dist/lib/ui/uikit/dist/components/PlBtnSplit/PlBtnSplit.vue.js.map +1 -1
  12. package/dist/lib/ui/uikit/dist/components/PlElementList/PlElementList.vue.js +10 -0
  13. package/dist/lib/ui/uikit/dist/components/PlElementList/PlElementList.vue2.js +239 -0
  14. package/dist/lib/ui/uikit/dist/components/PlElementList/PlElementList.vue2.js.map +1 -0
  15. package/dist/lib/ui/uikit/dist/components/PlElementList/PlElementList.vue3.js +22 -0
  16. package/dist/{components → lib/ui/uikit/dist/components}/PlElementList/PlElementList.vue3.js.map +1 -1
  17. package/dist/lib/ui/uikit/dist/components/PlElementList/PlElementListItem.vue.js +10 -0
  18. package/dist/lib/ui/uikit/dist/components/PlElementList/PlElementListItem.vue2.js +106 -0
  19. package/dist/lib/ui/uikit/dist/components/PlElementList/PlElementListItem.vue2.js.map +1 -0
  20. package/dist/lib/ui/uikit/dist/components/PlElementList/PlElementListItem.vue3.js +48 -0
  21. package/dist/lib/ui/uikit/dist/components/PlElementList/PlElementListItem.vue3.js.map +1 -0
  22. package/dist/lib/ui/uikit/dist/components/PlElementList/utils.js +17 -0
  23. package/dist/lib/ui/uikit/dist/components/PlElementList/utils.js.map +1 -0
  24. package/dist/lib/ui/uikit/dist/components/PlErrorBoundary/PlErrorBoundary.vue.js +5 -5
  25. package/dist/lib/ui/uikit/dist/components/PlFileDialog/PlFileDialog.vue.js +14 -14
  26. package/dist/lib/ui/uikit/dist/components/PlFileDialog/Remote.vue.js +8 -8
  27. package/dist/lib/ui/uikit/dist/components/PlFileDialog/utils.js +9 -9
  28. package/dist/lib/ui/uikit/dist/components/PlLogView/PlLogView.vue.js +9 -9
  29. package/dist/lib/ui/uikit/dist/composition/useFormState.js +5 -5
  30. package/dist/lib/ui/uikit/dist/composition/useQuery.js +12 -12
  31. package/dist/lib/ui/uikit/dist/composition/useWatchFetch.js +4 -4
  32. package/dist/lib/ui/uikit/dist/index.js +81 -78
  33. package/dist/lib/ui/uikit/dist/index.js.map +1 -1
  34. package/dist/lib/ui/uikit/dist/lib/util/helpers/dist/index.js +156 -127
  35. package/dist/lib/ui/uikit/dist/lib/util/helpers/dist/index.js.map +1 -1
  36. package/dist/lib/ui/uikit/dist/node_modules/.pnpm/@vueuse_core@13.3.0_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/core/index.js +53 -43
  37. package/dist/lib/ui/uikit/dist/node_modules/.pnpm/@vueuse_core@13.3.0_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/core/index.js.map +1 -1
  38. package/dist/lib/ui/uikit/dist/node_modules/.pnpm/@vueuse_integrations@13.3.0_axios@1.8.1_focus-trap@7.6.0_sortablejs@1.15.6_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/integrations/useSortable.js +51 -0
  39. package/dist/lib/ui/uikit/dist/node_modules/.pnpm/@vueuse_integrations@13.3.0_axios@1.8.1_focus-trap@7.6.0_sortablejs@1.15.6_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/integrations/useSortable.js.map +1 -0
  40. package/dist/lib/ui/uikit/dist/node_modules/.pnpm/@vueuse_shared@13.3.0_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/shared/index.js +70 -62
  41. package/dist/lib/ui/uikit/dist/node_modules/.pnpm/@vueuse_shared@13.3.0_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/shared/index.js.map +1 -1
  42. package/dist/lib/ui/uikit/dist/node_modules/.pnpm/sortablejs@1.15.6/node_modules/sortablejs/modular/sortable.esm.js +1262 -0
  43. package/dist/lib/ui/uikit/dist/node_modules/.pnpm/sortablejs@1.15.6/node_modules/sortablejs/modular/sortable.esm.js.map +1 -0
  44. package/dist/lib/ui/uikit/dist/utils/DropdownOverlay/DropdownOverlay.vue.js +2 -2
  45. package/dist/lib/util/helpers/dist/index.js +43 -85
  46. package/dist/lib/util/helpers/dist/index.js.map +1 -1
  47. package/dist/lib.d.ts +0 -1
  48. package/dist/lib.d.ts.map +1 -1
  49. package/dist/lib.js +105 -105
  50. package/dist/node_modules/.pnpm/@vueuse_core@13.3.0_vue@3.5.13_typescript@5.5.4_/node_modules/@vueuse/core/index.js +30 -31
  51. package/dist/node_modules/.pnpm/@vueuse_core@13.3.0_vue@3.5.13_typescript@5.5.4_/node_modules/@vueuse/core/index.js.map +1 -1
  52. package/package.json +5 -5
  53. package/src/lib.ts +0 -2
  54. package/dist/components/PlElementList/PlElementList.vue.d.ts +0 -61
  55. package/dist/components/PlElementList/PlElementList.vue.d.ts.map +0 -1
  56. package/dist/components/PlElementList/PlElementList.vue.js +0 -10
  57. package/dist/components/PlElementList/PlElementList.vue2.js +0 -214
  58. package/dist/components/PlElementList/PlElementList.vue2.js.map +0 -1
  59. package/dist/components/PlElementList/PlElementList.vue3.js +0 -13
  60. package/dist/components/PlElementList/PlElementListItem.vue.d.ts +0 -55
  61. package/dist/components/PlElementList/PlElementListItem.vue.d.ts.map +0 -1
  62. package/dist/components/PlElementList/PlElementListItem.vue.js +0 -10
  63. package/dist/components/PlElementList/PlElementListItem.vue2.js +0 -103
  64. package/dist/components/PlElementList/PlElementListItem.vue2.js.map +0 -1
  65. package/dist/components/PlElementList/PlElementListItem.vue3.js +0 -37
  66. package/dist/components/PlElementList/PlElementListItem.vue3.js.map +0 -1
  67. package/dist/components/PlElementList/index.d.ts +0 -2
  68. package/dist/components/PlElementList/index.d.ts.map +0 -1
  69. package/dist/components/PlElementList/utils.d.ts +0 -3
  70. package/dist/components/PlElementList/utils.d.ts.map +0 -1
  71. package/dist/components/PlElementList/utils.js +0 -17
  72. package/dist/components/PlElementList/utils.js.map +0 -1
  73. package/dist/node_modules/.pnpm/@vueuse_integrations@13.3.0_axios@1.8.1_focus-trap@7.6.0_sortablejs@1.15.6_vue@3.5.13_typescript@5.5.4_/node_modules/@vueuse/integrations/useSortable.js +0 -51
  74. package/dist/node_modules/.pnpm/@vueuse_integrations@13.3.0_axios@1.8.1_focus-trap@7.6.0_sortablejs@1.15.6_vue@3.5.13_typescript@5.5.4_/node_modules/@vueuse/integrations/useSortable.js.map +0 -1
  75. package/dist/node_modules/.pnpm/sortablejs@1.15.6/node_modules/sortablejs/modular/sortable.esm.js +0 -1262
  76. package/dist/node_modules/.pnpm/sortablejs@1.15.6/node_modules/sortablejs/modular/sortable.esm.js.map +0 -1
  77. package/src/components/PlElementList/PlElementList.vue +0 -287
  78. package/src/components/PlElementList/PlElementListItem.vue +0 -222
  79. package/src/components/PlElementList/README.md +0 -123
  80. package/src/components/PlElementList/index.ts +0 -1
  81. package/src/components/PlElementList/utils.ts +0 -17
  82. /package/dist/{components → lib/ui/uikit/dist/components}/PlElementList/PlElementList.vue.js.map +0 -0
  83. /package/dist/{components → lib/ui/uikit/dist/components}/PlElementList/PlElementListItem.vue.js.map +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/ui-vue",
3
- "version": "1.37.7",
3
+ "version": "1.37.10",
4
4
  "type": "module",
5
5
  "main": "dist/lib.js",
6
6
  "styles": "dist/lib.js",
@@ -29,9 +29,9 @@
29
29
  "d3-format": "^3.1.0",
30
30
  "lodash": "^4.17.17",
31
31
  "zod": "~3.23.8",
32
+ "@milaboratories/uikit": "^2.2.93",
32
33
  "@milaboratories/biowasm-tools": "^1.1.0",
33
- "@platforma-sdk/model": "^1.37.2",
34
- "@milaboratories/uikit": "^2.2.92"
34
+ "@platforma-sdk/model": "^1.37.2"
35
35
  },
36
36
  "devDependencies": {
37
37
  "happy-dom": "^15.11.7",
@@ -45,9 +45,9 @@
45
45
  "vue-tsc": "^2.1.10",
46
46
  "yarpm": "^1.2.0",
47
47
  "@milaboratories/ts-configs": "1.0.4",
48
- "@milaboratories/eslint-config": "^1.0.4",
49
48
  "@milaboratories/helpers": "^1.6.15",
50
- "@milaboratories/build-configs": "1.0.4"
49
+ "@milaboratories/build-configs": "1.0.4",
50
+ "@milaboratories/eslint-config": "^1.0.4"
51
51
  },
52
52
  "scripts": {
53
53
  "test": "vitest run --passWithNoTests",
package/src/lib.ts CHANGED
@@ -29,8 +29,6 @@ export * from './components/PlTableFilters';
29
29
 
30
30
  export * from './components/PlMultiSequenceAlignment';
31
31
 
32
- export * from './components/PlElementList';
33
-
34
32
  export * from './defineApp';
35
33
 
36
34
  export * from './createModel';
@@ -1,61 +0,0 @@
1
- declare const _default: <T extends unknown = unknown, K extends number | string = string | number>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
2
- props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
3
- readonly "onUpdate:items"?: ((value: T[]) => any) | undefined;
4
- readonly "onUpdate:draggableItems"?: ((value: Set<T>) => any) | undefined;
5
- readonly "onUpdate:removableItems"?: ((value: Set<T>) => any) | undefined;
6
- readonly "onUpdate:pinnableItems"?: ((value: Set<T>) => any) | undefined;
7
- readonly "onUpdate:pinnedItems"?: ((value: Set<T>) => any) | undefined;
8
- readonly "onUpdate:toggableItems"?: ((value: Set<T>) => any) | undefined;
9
- readonly "onUpdate:toggledItems"?: ((value: Set<T>) => any) | undefined;
10
- } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, never>, "onUpdate:items" | "onUpdate:draggableItems" | "onUpdate:removableItems" | "onUpdate:pinnableItems" | "onUpdate:pinnedItems" | "onUpdate:toggableItems" | "onUpdate:toggledItems"> & ({
11
- items: T[];
12
- draggableItems?: Set<T>;
13
- removableItems?: Set<T>;
14
- pinnableItems?: Set<T>;
15
- pinnedItems?: Set<T>;
16
- toggableItems?: Set<T>;
17
- toggledItems?: Set<T>;
18
- } & {
19
- getItemKey: (item: T) => K;
20
- onSort?: (oldIndex: number, newIndex: number) => void | boolean;
21
- enableDragging?: boolean;
22
- onDragEnd?: (oldIndex: number, newIndex: number) => void | boolean;
23
- enableRemoving?: boolean;
24
- onRemove?: (item: T, index: number) => void | boolean;
25
- enableToggling?: boolean;
26
- onToggle?: (item: T, index: number) => void | boolean;
27
- enablePinning?: boolean;
28
- onPin?: (item: T, index: number) => void | boolean;
29
- }) & Partial<{}>> & import('vue').PublicProps;
30
- expose(exposed: import('vue').ShallowUnwrapRef<{}>): void;
31
- attrs: any;
32
- slots: Readonly<{
33
- "item-title": (props: {
34
- item: T;
35
- index: number;
36
- }) => unknown;
37
- "item-content"?: (props: {
38
- item: T;
39
- index: number;
40
- }) => unknown;
41
- }> & {
42
- "item-title": (props: {
43
- item: T;
44
- index: number;
45
- }) => unknown;
46
- "item-content"?: (props: {
47
- item: T;
48
- index: number;
49
- }) => unknown;
50
- };
51
- emit: ((evt: "update:items", value: T[]) => void) & ((evt: "update:draggableItems", value: Set<T>) => void) & ((evt: "update:removableItems", value: Set<T>) => void) & ((evt: "update:pinnableItems", value: Set<T>) => void) & ((evt: "update:pinnedItems", value: Set<T>) => void) & ((evt: "update:toggableItems", value: Set<T>) => void) & ((evt: "update:toggledItems", value: Set<T>) => void);
52
- }>) => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
53
- [key: string]: any;
54
- }> & {
55
- __ctx?: Awaited<typeof __VLS_setup>;
56
- };
57
- export default _default;
58
- type __VLS_PrettifyLocal<T> = {
59
- [K in keyof T]: T[K];
60
- } & {};
61
- //# sourceMappingURL=PlElementList.vue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlElementList.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlElementList/PlElementList.vue"],"names":[],"mappings":"yBAySiB,CAAC,SAAS,OAAO,YAAY,CAAC,SAAS,MAAM,GAAG,MAAM,iCACzD,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,cAClD,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,iBAC5F,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;WA8c1D,mBAAmB,CAAC;;;;;;;;;eApPnB,CAAC,EAAE;yBACO,GAAG,CAAC,CAAC,CAAC;yBACN,GAAG,CAAC,CAAC,CAAC;wBACP,GAAG,CAAC,CAAC,CAAC;sBACR,GAAG,CAAC,CAAC,CAAC;wBACJ,GAAG,CAAC,CAAC,CAAC;uBACP,GAAG,CAAC,CAAC,CAAC;;oBAnNP,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;iBACjB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;yBAE9C,OAAO;oBACZ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;yBAEjD,OAAO;mBACb,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;yBAEpC,OAAO;mBACb,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;wBAErC,OAAO;gBACf,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;oBAobwC,CAAC,4BAA2B;oBACzG,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI;WAClD,GAAG;;sBAraO,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO;yBAC3C,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO;;sBADjD,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO;yBAC3C,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO;;;;;;YAyavB,OAAO,CAAC,OAAO,WAAW,CAAC;;AAxdvE,wBAwd4E;AAS5E,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
@@ -1,10 +0,0 @@
1
- import s from "./PlElementList.vue2.js";
2
- import o from "./PlElementList.vue3.js";
3
- import t from "../../_virtual/_plugin-vue_export-helper.js";
4
- const e = {
5
- $style: o
6
- }, c = /* @__PURE__ */ t(s, [["__cssModules", e]]);
7
- export {
8
- c as default
9
- };
10
- //# sourceMappingURL=PlElementList.vue.js.map
@@ -1,214 +0,0 @@
1
- import { defineComponent as oe, mergeModels as se, useModel as f, useSlots as ie, computed as d, shallowRef as P, watch as re, createElementBlock as T, openBlock as v, normalizeClass as h, createElementVNode as ue, createCommentVNode as ge, Fragment as A, renderList as G, createBlock as J, createSlots as Q, withCtx as S, renderSlot as p } from "vue";
2
- import { shallowHash as W, isNil as D } from "../../lib/util/helpers/dist/index.js";
3
- import { useSortable as fe } from "../../node_modules/.pnpm/@vueuse_integrations@13.3.0_axios@1.8.1_focus-trap@7.6.0_sortablejs@1.15.6_vue@3.5.13_typescript@5.5.4_/node_modules/@vueuse/integrations/useSortable.js";
4
- import { optionalUpdateRef as c, moveElements as X } from "./utils.js";
5
- import Y from "./PlElementListItem.vue.js";
6
- const he = /* @__PURE__ */ oe({
7
- __name: "PlElementList",
8
- props: /* @__PURE__ */ se({
9
- getItemKey: {},
10
- onSort: { type: Function, default: void 0 },
11
- enableDragging: { type: Boolean, default: !0 },
12
- onDragEnd: { type: Function, default: void 0 },
13
- enableRemoving: { type: Boolean, default: void 0 },
14
- onRemove: { type: Function, default: void 0 },
15
- enableToggling: { type: Boolean, default: !0 },
16
- onToggle: { type: Function, default: void 0 },
17
- enablePinning: { type: Boolean, default: !0 },
18
- onPin: { type: Function, default: void 0 }
19
- }, {
20
- items: { required: !0 },
21
- itemsModifiers: {},
22
- draggableItems: {},
23
- draggableItemsModifiers: {},
24
- removableItems: {},
25
- removableItemsModifiers: {},
26
- pinnableItems: {},
27
- pinnableItemsModifiers: {},
28
- pinnedItems: {},
29
- pinnedItemsModifiers: {},
30
- toggableItems: {},
31
- toggableItemsModifiers: {},
32
- toggledItems: {},
33
- toggledItemsModifiers: {}
34
- }),
35
- emits: ["update:items", "update:draggableItems", "update:removableItems", "update:pinnableItems", "update:pinnedItems", "update:toggableItems", "update:toggledItems"],
36
- setup(r) {
37
- const u = f(r, "items"), Z = f(r, "draggableItems"), x = f(r, "removableItems"), _ = f(r, "pinnableItems"), i = f(r, "pinnedItems"), ee = f(r, "toggableItems"), g = f(r, "toggledItems"), l = r, k = ie(), b = d(() => u.value.filter(y)), ne = d(() => b.value.length > 0), R = d(() => u.value.filter((e) => !y(e))), C = d(() => R.value.length > 0), I = P(/* @__PURE__ */ new Set()), w = P(), $ = P(), E = P(), te = d((e) => {
38
- const n = W(...u.value);
39
- if (w.value === void 0) return e ?? n;
40
- const t = W(...w.value);
41
- return n === t ? e ?? n : e !== n ? n : t;
42
- });
43
- M(ne, $, b, () => 0), M(C, E, R, () => b.value.length);
44
- function M(e, n, t, o) {
45
- const a = fe(n, t, {
46
- handle: '[data-draggable="true"]',
47
- animation: 150,
48
- forceFallback: !0,
49
- scrollSensitivity: 80,
50
- forceAutoScrollFallback: !0,
51
- onUpdate: (s) => {
52
- var m;
53
- if (s.oldIndex == null || s.newIndex == null)
54
- throw new Error("Sortable event has no index");
55
- ((m = l.onDragEnd) == null ? void 0 : m.call(l, s.oldIndex, s.newIndex)) !== !1 && F(o() + s.oldIndex, o() + s.newIndex, !0);
56
- }
57
- });
58
- return re(e, (s) => s ? a.start() : a.stop()), a;
59
- }
60
- function F(e, n, t) {
61
- var a;
62
- if (e === n) return;
63
- t && (w.value = X(u.value.slice(), e, n)), ((a = l.onSort) == null ? void 0 : a.call(l, e, n)) === !1 || (X(u.value, e, n), c(u));
64
- }
65
- function B(e) {
66
- var n;
67
- return l.enableDragging === !1 ? !1 : ((n = Z.value) == null ? void 0 : n.has(e)) ?? !0;
68
- }
69
- function H(e) {
70
- var n;
71
- return l.enableToggling === !1 ? !1 : !D(g.value) && (((n = ee.value) == null ? void 0 : n.has(e)) ?? !0);
72
- }
73
- function K(e) {
74
- var n;
75
- return ((n = g.value) == null ? void 0 : n.has(e)) ?? !1;
76
- }
77
- function O(e) {
78
- var n;
79
- return l.enablePinning === !1 ? !1 : !D(i.value) && (((n = _.value) == null ? void 0 : n.has(e)) ?? !0);
80
- }
81
- function y(e) {
82
- var n;
83
- return ((n = i.value) == null ? void 0 : n.has(e)) ?? !1;
84
- }
85
- function z(e) {
86
- return I.value.has(e);
87
- }
88
- function L(e) {
89
- var n;
90
- return l.enableRemoving === !1 || ((n = x.value) == null ? void 0 : n.has(e)) === !1 ? !1 : l.enableRemoving === !0 || typeof l.onRemove == "function";
91
- }
92
- function N(e, n) {
93
- var o;
94
- if (((o = l.onToggle) == null ? void 0 : o.call(l, e, n)) === !1 || D(g.value)) return;
95
- const t = g.value;
96
- t.has(e) ? t.delete(e) : t.add(e), c(g);
97
- }
98
- function U(e, n) {
99
- var a;
100
- if (n === -1)
101
- throw new Error("Pinnable item not found");
102
- if (((a = l.onPin) == null ? void 0 : a.call(l, e, n)) === !1 || D(i.value)) return;
103
- const t = i.value, o = t.has(e);
104
- o ? t.delete(e) : t.add(e), c(i), F(n, t.size + (o ? 0 : -1), !1);
105
- }
106
- function V(e, n) {
107
- var t, o, a;
108
- ((t = l.onRemove) == null ? void 0 : t.call(l, e, n)) !== !1 && (u.value.splice(n, 1), c(u), (o = i.value) != null && o.has(e) && (i.value.delete(e), c(i)), (a = g.value) != null && a.has(e) && (g.value.delete(e), c(g)));
109
- }
110
- function j(e) {
111
- const n = I.value;
112
- n.has(e) ? n.delete(e) : n.add(e), c(I);
113
- }
114
- const q = (e) => `${te.value}-${l.getItemKey(e)}`, le = d(() => b.value.map(q)), ae = d(() => R.value.map(q));
115
- return (e, n) => (v(), T("div", {
116
- class: h(e.$style.root)
117
- }, [
118
- ue("div", {
119
- ref_key: "pinnedContainerRef",
120
- ref: $,
121
- class: h(e.$style.list)
122
- }, [
123
- (v(!0), T(A, null, G(b.value, (t, o) => (v(), J(Y, {
124
- key: le.value[o],
125
- class: h(e.$style.item),
126
- index: o,
127
- item: t,
128
- showDragHandle: l.enableDragging,
129
- isDraggable: B(t),
130
- isRemovable: L(t),
131
- isToggable: H(t),
132
- isToggled: K(t),
133
- isPinnable: O(t),
134
- isPinned: y(t),
135
- isOpened: z(t),
136
- onRemove: V,
137
- onToggle: N,
138
- onPin: U,
139
- onToggleContent: j
140
- }, Q({
141
- title: S(({ item: a, index: s }) => [
142
- p(e.$slots, "item-title", {
143
- index: s,
144
- item: a
145
- })
146
- ]),
147
- _: 2
148
- }, [
149
- k["item-content"] ? {
150
- name: "content",
151
- fn: S(({ item: a, index: s }) => [
152
- p(e.$slots, "item-content", {
153
- index: s,
154
- item: a
155
- })
156
- ]),
157
- key: "0"
158
- } : void 0
159
- ]), 1032, ["class", "index", "item", "showDragHandle", "isDraggable", "isRemovable", "isToggable", "isToggled", "isPinnable", "isPinned", "isOpened"]))), 128))
160
- ], 2),
161
- C.value ? (v(), T("div", {
162
- key: 0,
163
- ref_key: "unpinnedContainerRef",
164
- ref: E,
165
- class: h(e.$style.list)
166
- }, [
167
- (v(!0), T(A, null, G(R.value, (t, o) => {
168
- var a;
169
- return v(), J(Y, {
170
- key: ae.value[o],
171
- class: h(e.$style.item),
172
- index: o + (((a = i.value) == null ? void 0 : a.size) ?? 0),
173
- item: t,
174
- showDragHandle: l.enableDragging,
175
- isDraggable: B(t),
176
- isRemovable: L(t),
177
- isToggable: H(t),
178
- isToggled: K(t),
179
- isPinnable: O(t),
180
- isPinned: y(t),
181
- isOpened: z(t),
182
- onRemove: V,
183
- onToggle: N,
184
- onPin: U,
185
- onToggleContent: j
186
- }, Q({
187
- title: S(({ item: s, index: m }) => [
188
- p(e.$slots, "item-title", {
189
- index: m,
190
- item: s
191
- })
192
- ]),
193
- _: 2
194
- }, [
195
- k["item-content"] ? {
196
- name: "content",
197
- fn: S(({ item: s, index: m }) => [
198
- p(e.$slots, "item-content", {
199
- index: m,
200
- item: s
201
- })
202
- ]),
203
- key: "0"
204
- } : void 0
205
- ]), 1032, ["class", "index", "item", "showDragHandle", "isDraggable", "isRemovable", "isToggable", "isToggled", "isPinnable", "isPinned", "isOpened"]);
206
- }), 128))
207
- ], 2)) : ge("", !0)
208
- ], 2));
209
- }
210
- });
211
- export {
212
- he as default
213
- };
214
- //# sourceMappingURL=PlElementList.vue2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlElementList.vue2.js","sources":["../../../src/components/PlElementList/PlElementList.vue"],"sourcesContent":["<script generic=\"T extends unknown = unknown, K extends number | string = number | string\" lang=\"ts\" setup>\nimport type { ShallowRef } from 'vue';\nimport { computed, shallowRef, watch } from 'vue';\nimport { isNil, shallowHash } from '@milaboratories/helpers';\nimport { useSortable } from '@vueuse/integrations/useSortable';\nimport { type SortableEvent } from 'sortablejs';\nimport { moveElements, optionalUpdateRef } from './utils.ts';\nimport PlElementListItem from './PlElementListItem.vue';\n\nconst itemsRef = defineModel<T[]>('items', { required: true });\nconst draggableSetRef = defineModel<Set<T>>('draggableItems');\nconst removableSetRef = defineModel<Set<T>>('removableItems');\n\nconst pinnableSetRef = defineModel<Set<T>>('pinnableItems');\nconst pinnedSetRef = defineModel<Set<T>>('pinnedItems');\n\nconst toggableSetRef = defineModel<Set<T>>('toggableItems');\nconst toggledSetRef = defineModel<Set<T>>('toggledItems');\n\nconst props = withDefaults(\n defineProps<{\n getItemKey: (item: T) => K;\n onSort?: (oldIndex: number, newIndex: number) => void | boolean;\n\n enableDragging?: boolean;\n onDragEnd?: (oldIndex: number, newIndex: number) => void | boolean;\n\n enableRemoving?: boolean;\n onRemove?: (item: T, index: number) => void | boolean;\n\n enableToggling?: boolean;\n onToggle?: (item: T, index: number) => void | boolean;\n\n enablePinning?: boolean;\n onPin?: (item: T, index: number) => void | boolean;\n }>(), {\n enableDragging: true,\n enableRemoving: undefined,\n enableToggling: true,\n enablePinning: true,\n onSort: undefined,\n onDragEnd: undefined,\n onRemove: undefined,\n onToggle: undefined,\n onPin: undefined,\n },\n);\n\nconst slots = defineSlots<{\n ['item-title']: (props: { item: T; index: number }) => unknown;\n ['item-content']?: (props: { item: T; index: number }) => unknown;\n}>();\n\nconst pinnedItemsRef = computed(() => itemsRef.value.filter(isPinned));\nconst hasPinnedItems = computed(() => pinnedItemsRef.value.length > 0);\n\nconst unpinnedItemsRef = computed(() => itemsRef.value.filter((item) => !isPinned(item)));\nconst hasUnpinnedItems = computed(() => unpinnedItemsRef.value.length > 0);\n\nconst openedSetRef = shallowRef(new Set<T>());\n\nconst domProjectionItemsRef = shallowRef<undefined | T[]>();\nconst pinnedContainerRef = shallowRef<HTMLElement>();\nconst unpinnedContainerRef = shallowRef<HTMLElement>();\n\n// version fix problem with sync between data and rendered values when items have been changed\nconst versionRef = computed<number>((oldVersion) => {\n const currentVersion = shallowHash(...itemsRef.value);\n\n if (domProjectionItemsRef.value === undefined) return oldVersion ?? currentVersion;\n\n const lastSortedVersion = shallowHash(...domProjectionItemsRef.value);\n\n if (currentVersion === lastSortedVersion) return oldVersion ?? currentVersion;\n\n return oldVersion !== currentVersion ? currentVersion : lastSortedVersion;\n});\n\ncreateSortable(hasPinnedItems, pinnedContainerRef, pinnedItemsRef, () => 0);\ncreateSortable(hasUnpinnedItems, unpinnedContainerRef, unpinnedItemsRef, () => pinnedItemsRef.value.length);\n\nfunction createSortable(toggler: ShallowRef<boolean>, elRef: ShallowRef<undefined | HTMLElement>, itemsRef: ShallowRef<T[]>, getOffset: () => number) {\n const sortable = useSortable(elRef, itemsRef, {\n handle: `[data-draggable=\"true\"]`,\n animation: 150,\n forceFallback: true,\n scrollSensitivity: 80,\n forceAutoScrollFallback: true,\n onUpdate: (evt: SortableEvent) => {\n if (evt.oldIndex == null || evt.newIndex == null) {\n throw new Error('Sortable event has no index');\n }\n if (props.onDragEnd?.(evt.oldIndex, evt.newIndex) !== false) {\n moveItems(getOffset() + evt.oldIndex, getOffset() + evt.newIndex, true);\n }\n },\n });\n watch(toggler, (on) => on ? sortable.start() : sortable.stop());\n\n return sortable;\n}\n\nfunction moveItems(oldIndex: number, newIndex: number, afterUpdateDom: boolean) {\n if (oldIndex === newIndex) return;\n\n if (afterUpdateDom) {\n domProjectionItemsRef.value = moveElements(itemsRef.value.slice(), oldIndex, newIndex);\n }\n\n const preventDefault = props.onSort?.(oldIndex, newIndex) === false;\n\n if (!preventDefault) {\n moveElements(itemsRef.value, oldIndex, newIndex);\n optionalUpdateRef(itemsRef);\n }\n}\n\nfunction isDraggable(item: T) {\n if (props.enableDragging === false) return false;\n return (draggableSetRef.value?.has(item) ?? true);\n}\n\nfunction isToggable(item: T) {\n if (props.enableToggling === false) return false;\n return !isNil(toggledSetRef.value) && (toggableSetRef.value?.has(item) ?? true);\n}\n\nfunction isToggled(item: T) {\n return toggledSetRef.value?.has(item) ?? false;\n}\n\nfunction isPinnable(item: T) {\n if (props.enablePinning === false) return false;\n return !isNil(pinnedSetRef.value) && (pinnableSetRef.value?.has(item) ?? true);\n}\n\nfunction isPinned(item: T) {\n return pinnedSetRef.value?.has(item) ?? false;\n}\n\nfunction isOpened(item: T) {\n return openedSetRef.value.has(item);\n}\n\nfunction isRemovable(item: T) {\n if (props.enableRemoving === false) return false;\n if (removableSetRef.value?.has(item) === false) return false;\n return props.enableRemoving === true || typeof props.onRemove === 'function';\n}\n\nfunction handleToggle(item: T, index: number) {\n if (props.onToggle?.(item, index) === false || isNil(toggledSetRef.value)) return;\n\n const toggled = toggledSetRef.value;\n if (toggled.has(item)) toggled.delete(item);\n else toggled.add(item);\n optionalUpdateRef(toggledSetRef);\n}\n\nfunction handlePin(item: T, oldIndex: number) {\n if (oldIndex === -1) {\n throw new Error('Pinnable item not found');\n }\n\n if (props.onPin?.(item, oldIndex) === false || isNil(pinnedSetRef.value)) return;\n\n const pinned = pinnedSetRef.value;\n const alreadyPinned = pinned.has(item);\n if (alreadyPinned) pinned.delete(item);\n else pinned.add(item);\n optionalUpdateRef(pinnedSetRef);\n moveItems(oldIndex, pinned.size + (alreadyPinned ? 0 : -1), false);\n}\n\nfunction handleRemove(item: T, index: number) {\n if (props.onRemove?.(item, index) !== false) {\n itemsRef.value.splice(index, 1);\n optionalUpdateRef(itemsRef);\n\n if (pinnedSetRef.value?.has(item)) {\n pinnedSetRef.value.delete(item);\n optionalUpdateRef(pinnedSetRef);\n }\n\n if (toggledSetRef.value?.has(item)) {\n toggledSetRef.value.delete(item);\n optionalUpdateRef(toggledSetRef);\n }\n }\n}\n\nfunction handleToggleContent(item: T) {\n const opened = openedSetRef.value;\n if (opened.has(item)) opened.delete(item);\n else opened.add(item);\n optionalUpdateRef(openedSetRef);\n}\n\n// version fix problem with sync between data and rendered values\nconst getKey = (item: T) => `${versionRef.value}-${props.getItemKey(item)}`;\nconst pinnedKeysRef = computed(() => pinnedItemsRef.value.map(getKey));\nconst unpinnedKeysRef = computed(() => unpinnedItemsRef.value.map(getKey));\n\n</script>\n\n<template>\n <div :class=\"$style.root\">\n <div ref=\"pinnedContainerRef\" :class=\"$style.list\">\n <PlElementListItem\n v-for=\"(pinnedItem, pinnedIndex) in pinnedItemsRef\" :key=\"pinnedKeysRef[pinnedIndex]\"\n :class=\"$style.item\"\n\n :index=\"pinnedIndex\"\n :item=\"pinnedItem\"\n :showDragHandle=\"props.enableDragging\"\n :isDraggable=\"isDraggable(pinnedItem)\"\n :isRemovable=\"isRemovable(pinnedItem)\"\n :isToggable=\"isToggable(pinnedItem)\"\n :isToggled=\"isToggled(pinnedItem)\"\n :isPinnable=\"isPinnable(pinnedItem)\"\n :isPinned=\"isPinned(pinnedItem)\"\n :isOpened=\"isOpened(pinnedItem)\"\n\n @remove=\"handleRemove\"\n @toggle=\"handleToggle\"\n @pin=\"handlePin\"\n @toggleContent=\"handleToggleContent\"\n >\n <template #title=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-title\" />\n </template>\n <template v-if=\"slots['item-content']\" #content=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-content\" />\n </template>\n </PlElementListItem>\n </div>\n <div v-if=\"hasUnpinnedItems\" ref=\"unpinnedContainerRef\" :class=\"$style.list\">\n <PlElementListItem\n v-for=\"(unpinnedItem, unpinnedIndex) in unpinnedItemsRef\" :key=\"unpinnedKeysRef[unpinnedIndex]\"\n :class=\"$style.item\"\n\n :index=\"unpinnedIndex + (pinnedSetRef?.size ?? 0)\"\n :item=\"unpinnedItem\"\n :showDragHandle=\"props.enableDragging\"\n :isDraggable=\"isDraggable(unpinnedItem)\"\n :isRemovable=\"isRemovable(unpinnedItem)\"\n :isToggable=\"isToggable(unpinnedItem)\"\n :isToggled=\"isToggled(unpinnedItem)\"\n :isPinnable=\"isPinnable(unpinnedItem)\"\n :isPinned=\"isPinned(unpinnedItem)\"\n :isOpened=\"isOpened(unpinnedItem)\"\n\n @remove=\"handleRemove\"\n @toggle=\"handleToggle\"\n @pin=\"handlePin\"\n @toggleContent=\"handleToggleContent\"\n >\n <template #title=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-title\" />\n </template>\n <template v-if=\"slots['item-content']\" #content=\"{ item, index }\">\n <slot :index=\"index\" :item=\"item\" name=\"item-content\" />\n </template>\n </PlElementListItem>\n </div>\n </div>\n</template>\n\n<style module>\n.root, .list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-width: 180px;\n}\n\n.item {\n width: 100%;\n}\n\n:global(.sortable-ghost) {\n visibility: hidden;\n}\n:global(.sortable-drag) {\n opacity: 1;\n}\n</style>\n"],"names":["itemsRef","_useModel","__props","draggableSetRef","removableSetRef","pinnableSetRef","pinnedSetRef","toggableSetRef","toggledSetRef","props","slots","_useSlots","pinnedItemsRef","computed","isPinned","hasPinnedItems","unpinnedItemsRef","item","hasUnpinnedItems","openedSetRef","shallowRef","domProjectionItemsRef","pinnedContainerRef","unpinnedContainerRef","versionRef","oldVersion","currentVersion","shallowHash","lastSortedVersion","createSortable","toggler","elRef","getOffset","sortable","useSortable","evt","_a","moveItems","watch","on","oldIndex","newIndex","afterUpdateDom","moveElements","optionalUpdateRef","isDraggable","isToggable","isNil","isToggled","isPinnable","isOpened","isRemovable","handleToggle","index","toggled","handlePin","pinned","alreadyPinned","handleRemove","_b","_c","handleToggleContent","opened","getKey","pinnedKeysRef","unpinnedKeysRef"],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._root_1inp1_2,._list_1inp1_2{display:flex;flex-direction:column;gap:8px;min-width:180px}._item_1inp1_9{width:100%}.sortable-ghost{visibility:hidden}.sortable-drag{opacity:1}")),document.head.appendChild(e)}}catch(i){console.error("vite-plugin-css-injected-by-js",i)}})();
2
- const t = "_root_1inp1_2", o = "_list_1inp1_2", i = "_item_1inp1_9", s = {
3
- root: t,
4
- list: o,
5
- item: i
6
- };
7
- export {
8
- s as default,
9
- i as item,
10
- o as list,
11
- t as root
12
- };
13
- //# sourceMappingURL=PlElementList.vue3.js.map
@@ -1,55 +0,0 @@
1
- declare const _default: <T extends unknown = unknown>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
2
- props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
3
- readonly onToggle?: ((item: T, index: number) => any) | undefined;
4
- readonly onPin?: ((item: T, index: number) => any) | undefined;
5
- readonly onRemove?: ((item: T, index: number) => any) | undefined;
6
- readonly onToggleContent?: ((item: T, index: number) => any) | undefined;
7
- } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, never>, "onToggle" | "onPin" | "onRemove" | "onToggleContent"> & {
8
- item: T;
9
- index: number;
10
- showDragHandle: boolean;
11
- isDraggable: boolean;
12
- isRemovable: boolean;
13
- isToggable: boolean;
14
- isToggled: boolean;
15
- isPinnable: boolean;
16
- isPinned: boolean;
17
- isOpened: boolean;
18
- } & Partial<{}>> & import('vue').PublicProps;
19
- expose(exposed: import('vue').ShallowUnwrapRef<{}>): void;
20
- attrs: any;
21
- slots: Readonly<{
22
- title: (props: {
23
- item: T;
24
- index: number;
25
- }) => unknown;
26
- content?: (props: {
27
- item: T;
28
- index: number;
29
- }) => unknown;
30
- }> & {
31
- title: (props: {
32
- item: T;
33
- index: number;
34
- }) => unknown;
35
- content?: (props: {
36
- item: T;
37
- index: number;
38
- }) => unknown;
39
- };
40
- emit: {
41
- (e: "toggle", item: T, index: number): void;
42
- (e: "pin", item: T, index: number): void;
43
- (e: "remove", item: T, index: number): void;
44
- (e: "toggleContent", item: T, index: number): void;
45
- };
46
- }>) => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
47
- [key: string]: any;
48
- }> & {
49
- __ctx?: Awaited<typeof __VLS_setup>;
50
- };
51
- export default _default;
52
- type __VLS_PrettifyLocal<T> = {
53
- [K in keyof T]: T[K];
54
- } & {};
55
- //# sourceMappingURL=PlElementListItem.vue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlElementListItem.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlElementList/PlElementListItem.vue"],"names":[],"mappings":"yBAmOiB,CAAC,SAAS,OAAO,yBACpB,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,cAClD,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,iBAC5F,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;WAqM1D,mBAAmB,CAAC;;;;;;cAlMpB,CAAC;eACA,MAAM;wBACG,OAAO;qBACV,OAAO;qBACP,OAAO;oBACR,OAAO;mBACR,OAAO;oBACN,OAAO;kBACT,OAAO;kBACP,OAAO;mBAyL2E,CAAC,4BAA2B;oBACzG,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI;WAClD,GAAG;;eAtLF,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO;kBAC3C,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO;;eADjD,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO;kBAC3C,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO;;;YAKpD,QAAQ,QAAQ,CAAC,SAAS,MAAM,GAAG,IAAI;YACvC,KAAK,QAAQ,CAAC,SAAS,MAAM,GAAG,IAAI;YACpC,QAAQ,QAAQ,CAAC,SAAS,MAAM,GAAG,IAAI;YACvC,eAAe,QAAQ,CAAC,SAAS,MAAM,GAAG,IAAI;;;;;YAkLR,OAAO,CAAC,OAAO,WAAW,CAAC;;AA/MvE,wBA+M4E;AAyB5E,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
@@ -1,10 +0,0 @@
1
- import s from "./PlElementListItem.vue2.js";
2
- import t from "./PlElementListItem.vue3.js";
3
- import o from "../../_virtual/_plugin-vue_export-helper.js";
4
- const e = {
5
- $style: t
6
- }, c = /* @__PURE__ */ o(s, [["__cssModules", e]]);
7
- export {
8
- c as default
9
- };
10
- //# sourceMappingURL=PlElementListItem.vue.js.map
@@ -1,103 +0,0 @@
1
- import { defineComponent as f, useSlots as B, computed as c, createElementBlock as n, openBlock as o, normalizeClass as l, createElementVNode as y, createCommentVNode as t, createVNode as a, unref as d, renderSlot as v, withModifiers as g } from "vue";
2
- import "../../lib/ui/uikit/dist/index.js";
3
- import p from "../../lib/ui/uikit/dist/components/PlIcon16/PlIcon16.vue.js";
4
- import b from "../../lib/ui/uikit/dist/components/PlIcon24/PlIcon24.vue.js";
5
- const w = ["data-draggable"], O = /* @__PURE__ */ f({
6
- __name: "PlElementListItem",
7
- props: {
8
- item: {},
9
- index: {},
10
- showDragHandle: { type: Boolean },
11
- isDraggable: { type: Boolean },
12
- isRemovable: { type: Boolean },
13
- isToggable: { type: Boolean },
14
- isToggled: { type: Boolean },
15
- isPinnable: { type: Boolean },
16
- isPinned: { type: Boolean },
17
- isOpened: { type: Boolean }
18
- },
19
- emits: ["toggle", "pin", "remove", "toggleContent"],
20
- setup(u, { emit: k }) {
21
- const s = u, C = B(), $ = c(() => C.content !== void 0), r = k;
22
- return (e, i) => (o(), n("div", {
23
- class: l([e.$style.root, {
24
- [e.$style.pinned]: s.isPinned,
25
- [e.$style.disabled]: s.isToggled
26
- }])
27
- }, [
28
- y("div", {
29
- class: l([e.$style.head, {
30
- [e.$style.clickable]: $.value
31
- }]),
32
- onClick: i[3] || (i[3] = (m) => r("toggleContent", s.item, s.index))
33
- }, [
34
- s.showDragHandle ? (o(), n("div", {
35
- key: 0,
36
- class: l([e.$style.action, e.$style.draggable, { [e.$style.disable]: !s.isDraggable }]),
37
- "data-draggable": s.isDraggable
38
- }, [
39
- a(d(p), { name: "drag-dots" })
40
- ], 10, w)) : t("", !0),
41
- a(d(p), {
42
- class: l([e.$style.contentChevron, { [e.$style.opened]: s.isOpened }]),
43
- name: "chevron-down"
44
- }, null, 8, ["class"]),
45
- y("div", {
46
- class: l(e.$style.title)
47
- }, [
48
- v(e.$slots, "title", {
49
- item: s.item,
50
- index: s.index
51
- })
52
- ], 2),
53
- y("div", {
54
- class: l([e.$style.actions, e.$style.showOnHover])
55
- }, [
56
- s.isToggable ? (o(), n("div", {
57
- key: 0,
58
- class: l([e.$style.action, e.$style.clickable, { [e.$style.disable]: !s.isToggable }]),
59
- onClick: i[0] || (i[0] = g((m) => r("toggle", s.item, s.index), ["stop"]))
60
- }, [
61
- a(d(b), {
62
- name: s.isToggled === !0 ? "view-hide" : "view-show",
63
- size: "16"
64
- }, null, 8, ["name"])
65
- ], 2)) : t("", !0),
66
- s.isPinnable ? (o(), n("div", {
67
- key: 1,
68
- class: l([e.$style.action, e.$style.clickable, {
69
- [e.$style.disable]: !s.isPinnable,
70
- [e.$style.activated]: s.isPinned
71
- }]),
72
- onClick: i[1] || (i[1] = g((m) => r("pin", s.item, s.index), ["stop"]))
73
- }, [
74
- a(d(b), {
75
- name: "pin",
76
- size: "16"
77
- })
78
- ], 2)) : t("", !0),
79
- s.isRemovable ? (o(), n("div", {
80
- key: 2,
81
- class: l([e.$style.action, e.$style.clickable]),
82
- onClick: i[2] || (i[2] = g((m) => r("remove", s.item, s.index), ["stop"]))
83
- }, [
84
- a(d(p), { name: "close" })
85
- ], 2)) : t("", !0)
86
- ], 2)
87
- ], 2),
88
- $.value && e.isOpened ? (o(), n("div", {
89
- key: 0,
90
- class: l(e.$style.body)
91
- }, [
92
- v(e.$slots, "content", {
93
- item: s.item,
94
- index: s.index
95
- })
96
- ], 2)) : t("", !0)
97
- ], 2));
98
- }
99
- });
100
- export {
101
- O as default
102
- };
103
- //# sourceMappingURL=PlElementListItem.vue2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlElementListItem.vue2.js","sources":["../../../src/components/PlElementList/PlElementListItem.vue"],"sourcesContent":["<script generic=\"T extends unknown = unknown\" lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport { PlIcon16, PlIcon24 } from '@milaboratories/uikit';\n\nconst props = defineProps<{\n item: T;\n index: number;\n showDragHandle: boolean;\n isDraggable: boolean;\n isRemovable: boolean;\n isToggable: boolean;\n isToggled: boolean;\n isPinnable: boolean;\n isPinned: boolean;\n isOpened: boolean;\n}>();\n\nconst slots = defineSlots<{\n title: (props: { item: T; index: number }) => unknown;\n content?: (props: { item: T; index: number }) => unknown;\n}>();\nconst hasContentSlot = computed(() => slots['content'] !== undefined);\n\nconst emit = defineEmits<{\n (e: 'toggle', item: T, index: number): void;\n (e: 'pin', item: T, index: number): void;\n (e: 'remove', item: T, index: number): void;\n (e: 'toggleContent', item: T, index: number): void;\n}>();\n</script>\n\n<template>\n <div\n :class=\"[$style.root, {\n [$style.pinned]: props.isPinned,\n [$style.disabled]: props.isToggled,\n }]\"\n >\n <div\n :class=\"[$style.head, {\n [$style.clickable]: hasContentSlot,\n }]\"\n @click=\"emit('toggleContent', props.item, props.index)\"\n >\n <div\n v-if=\"props.showDragHandle\"\n :class=\"[$style.action, $style.draggable, { [$style.disable]: !props.isDraggable } ]\"\n :data-draggable=\"props.isDraggable\"\n >\n <PlIcon16 name=\"drag-dots\" />\n </div>\n <PlIcon16 :class=\"[$style.contentChevron, { [$style.opened]: props.isOpened }]\" name=\"chevron-down\" />\n\n <div :class=\"$style.title\">\n <slot name=\"title\" :item=\"props.item\" :index=\"props.index\" />\n </div>\n\n <div :class=\"[$style.actions, $style.showOnHover]\">\n <div\n v-if=\"props.isToggable\"\n :class=\"[$style.action, $style.clickable, { [$style.disable]: !props.isToggable }]\"\n @click.stop=\"emit('toggle', props.item, props.index)\"\n >\n <PlIcon24 :name=\"props.isToggled === true ? 'view-hide' : 'view-show'\" size=\"16\" />\n </div>\n <div\n v-if=\"props.isPinnable\"\n :class=\"[$style.action, $style.clickable, {\n [$style.disable]: !props.isPinnable,\n [$style.activated]: props.isPinned,\n }]\"\n @click.stop=\"emit('pin', props.item, props.index)\"\n >\n <PlIcon24 name=\"pin\" size=\"16\" />\n </div>\n <div\n v-if=\"props.isRemovable\"\n :class=\"[$style.action, $style.clickable]\"\n @click.stop=\"emit('remove', props.item, props.index)\"\n >\n <PlIcon16 name=\"close\" />\n </div>\n </div>\n </div>\n <div v-if=\"hasContentSlot && isOpened\" :class=\"$style.body\">\n <slot name=\"content\" :item=\"props.item\" :index=\"props.index\" />\n </div>\n </div>\n</template>\n\n<style module>\n.root {\n --background: rgba(255, 255, 255, 0.8);\n --border-color: var(--color-div-grey);\n --head-background: unset;\n --box-shadow: none;\n --box-shadow-active: 0 0 0 4px color-mix(in srgb, var(--border-color-focus) 50%, transparent);\n\n &:global(.sortable-drag),\n &:global(.sortable-chosen) {\n --head-background: var(--gradient-light-lime);\n --border-color: var(--border-color-focus);\n --box-shadow: var(--box-shadow-active)\n }\n}\n.root {\n display: flex;\n flex-direction: column;\n justify-content: center;\n border-radius: var(--border-radius);\n border: 1px solid var(--border-color);\n background-color: var(--background);\n transition: box-shadow 0.15s;\n box-shadow: var(--box-shadow);\n\n &:hover {\n --border-color: var(--border-color-focus);\n }\n\n &.disabled {\n opacity: 0.6;\n filter: grayscale(1);\n }\n\n &.pinned {\n --background: var(--bg-base-light);\n }\n}\n\n.head {\n position: relative;\n display: flex;\n align-items: center;\n padding: 8px;\n border-radius: var(--border-radius) var(--border-radius) 0 0;\n background: var(--head-background);\n\n &:hover, &.opened {\n --head-background: var(--gradient-light-lime);\n }\n}\n\n.contentChevron {\n display: block;\n width: 16px;\n height: 16px;\n margin-right: 4px;\n transform: rotate(-90deg);\n transition: transform 0.15s;\n\n &.opened {\n transform: rotate(0deg);\n }\n}\n\n.title {\n display: block;\n max-width: calc(100% - 50px);\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.body {\n padding: 24px;\n border-radius: 0 0 var(--border-radius) var(--border-radius);\n}\n\n.actions {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n align-items: center;\n background-color: var(--background);\n border-radius: var(--border-radius);\n}\n\n.action {\n width: 24px;\n height: 24px;\n padding: 4px; /* use padding instead of gap on parent, for better accessibility */\n opacity: 0.6;\n border-radius: var(--border-radius);\n transition: all 0.15s;\n\n svg {\n width: 16px;\n height: 16px;\n }\n\n &:hover {\n opacity: 1;\n background-color: var(--bg-elevated-02);\n }\n\n &.activated {\n opacity: 0.8;\n }\n\n &.disable {\n cursor: not-allowed;\n opacity: 0.4;\n }\n}\n\n.clickable {\n cursor: pointer;\n}\n\n.draggable {\n cursor: grab;\n}\n\n.showOnHover {\n opacity: 0;\n transition: opacity 0.15s;\n}\n\n.root:hover .showOnHover {\n opacity: 1;\n}\n</style>\n"],"names":["props","__props","slots","_useSlots","hasContentSlot","computed","emit","__emit"],"mappings":";;;;;;;;;;;;;;;;;;;;AAIA,UAAMA,IAAQC,GAaRC,IAAQC,EAGV,GACEC,IAAiBC,EAAS,MAAMH,EAAM,YAAe,MAAS,GAE9DI,IAAOC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,37 +0,0 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var r=document.createElement("style");r.appendChild(document.createTextNode("._root_1sir1_2{--background: rgba(255, 255, 255, .8);--border-color: var(--color-div-grey);--head-background: unset;--box-shadow: none;--box-shadow-active: 0 0 0 4px color-mix(in srgb, var(--border-color-focus) 50%, transparent)}._root_1sir1_2.sortable-drag,._root_1sir1_2.sortable-chosen{--head-background: var(--gradient-light-lime);--border-color: var(--border-color-focus);--box-shadow: var(--box-shadow-active) }._root_1sir1_2{display:flex;flex-direction:column;justify-content:center;border-radius:var(--border-radius);border:1px solid var(--border-color);background-color:var(--background);transition:box-shadow .15s;box-shadow:var(--box-shadow)}._root_1sir1_2:hover{--border-color: var(--border-color-focus)}._root_1sir1_2._disabled_1sir1_30{opacity:.6;filter:grayscale(1)}._root_1sir1_2._pinned_1sir1_35{--background: var(--bg-base-light)}._head_1sir1_40{position:relative;display:flex;align-items:center;padding:8px;border-radius:var(--border-radius) var(--border-radius) 0 0;background:var(--head-background)}._head_1sir1_40:hover,._head_1sir1_40._opened_1sir1_48{--head-background: var(--gradient-light-lime)}._contentChevron_1sir1_53{display:block;width:16px;height:16px;margin-right:4px;transform:rotate(-90deg);transition:transform .15s}._contentChevron_1sir1_53._opened_1sir1_48{transform:rotate(0)}._title_1sir1_66{display:block;max-width:calc(100% - 50px);overflow:hidden;text-overflow:ellipsis}._body_1sir1_73{padding:24px;border-radius:0 0 var(--border-radius) var(--border-radius)}._actions_1sir1_78{position:absolute;top:8px;right:8px;display:flex;align-items:center;background-color:var(--background);border-radius:var(--border-radius)}._action_1sir1_78{width:24px;height:24px;padding:4px;opacity:.6;border-radius:var(--border-radius);transition:all .15s}._action_1sir1_78 svg{width:16px;height:16px}._action_1sir1_78:hover{opacity:1;background-color:var(--bg-elevated-02)}._action_1sir1_78._activated_1sir1_106{opacity:.8}._action_1sir1_78._disable_1sir1_30{cursor:not-allowed;opacity:.4}._clickable_1sir1_116{cursor:pointer}._draggable_1sir1_120{cursor:grab}._showOnHover_1sir1_124{opacity:0;transition:opacity .15s}._root_1sir1_2:hover ._showOnHover_1sir1_124{opacity:1}")),document.head.appendChild(r)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
- const o = "_root_1sir1_2", t = "_disabled_1sir1_30", s = "_pinned_1sir1_35", _ = "_head_1sir1_40", n = "_opened_1sir1_48", e = "_contentChevron_1sir1_53", i = "_title_1sir1_66", c = "_body_1sir1_73", a = "_actions_1sir1_78", d = "_action_1sir1_78", r = "_activated_1sir1_106", l = "_disable_1sir1_30", b = "_clickable_1sir1_116", h = "_draggable_1sir1_120", v = "_showOnHover_1sir1_124", p = {
3
- root: o,
4
- disabled: t,
5
- pinned: s,
6
- head: _,
7
- opened: n,
8
- contentChevron: e,
9
- title: i,
10
- body: c,
11
- actions: a,
12
- action: d,
13
- activated: r,
14
- disable: l,
15
- clickable: b,
16
- draggable: h,
17
- showOnHover: v
18
- };
19
- export {
20
- d as action,
21
- a as actions,
22
- r as activated,
23
- c as body,
24
- b as clickable,
25
- e as contentChevron,
26
- p as default,
27
- l as disable,
28
- t as disabled,
29
- h as draggable,
30
- _ as head,
31
- n as opened,
32
- s as pinned,
33
- o as root,
34
- v as showOnHover,
35
- i as title
36
- };
37
- //# sourceMappingURL=PlElementListItem.vue3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlElementListItem.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
@@ -1,2 +0,0 @@
1
- export { default as PlElementList } from './PlElementList.vue';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PlElementList/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare const moveElements: <T>(array: T[], from: number, to: number) => T[];
2
- export declare function optionalUpdateRef<T>(ref: T): void;
3
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/PlElementList/utils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,MAAM,MAAM,MAAM,KAAG,CAAC,EAOvE,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,QAI1C"}