@turquoisehealth/pit-viper 2.183.0 → 2.183.1-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/claude-plugin/skills/pit-viper/SKILL.md +28 -31
  2. package/package.json +1 -1
  3. package/pv-components/dist/stats/vue/base/stats.html +1 -1
  4. package/pv-components/dist/stats/vue/visualizations/stats.html +1 -1
  5. package/pv-components/dist/stats/web/pv-menu-stats.html +1 -1
  6. package/pv-components/dist/stats/web/pv-multi-select-button-stats.html +1 -1
  7. package/pv-components/dist/stats/web/pv-query-builder-input-stats.html +1 -1
  8. package/pv-components/dist/stats/web/pv-select-button-stats.html +1 -1
  9. package/pv-components/dist/vue/base/components/base/PvMenu/cascadeUtils.d.ts +2 -1
  10. package/pv-components/dist/vue/base/components/base/PvMultiSelectButton/PvMultiSelectButton.vue.d.ts +3 -0
  11. package/pv-components/dist/vue/base/components/base/PvMultiSelectButton/types.d.ts +3 -1
  12. package/pv-components/dist/vue/base/pv-components-base.mjs +924 -871
  13. package/pv-components/dist/vue/base/pv-components-base.mjs.map +1 -1
  14. package/pv-components/dist/vue/base/types.d.ts +6 -4
  15. package/pv-components/dist/vue/visualizations/components/base/PvMenu/cascadeUtils.d.ts +2 -1
  16. package/pv-components/dist/vue/visualizations/components/base/PvMultiSelectButton/PvMultiSelectButton.vue.d.ts +3 -0
  17. package/pv-components/dist/vue/visualizations/components/base/PvMultiSelectButton/types.d.ts +3 -1
  18. package/pv-components/dist/vue/visualizations/components/tables/PvDataTable/helpers.d.ts +5 -1
  19. package/pv-components/dist/vue/visualizations/components/tables/PvDataTable/table-components/FilterGroupMenu.vue.d.ts +21 -0
  20. package/pv-components/dist/vue/visualizations/components/tables/PvDataTable/types.d.ts +33 -17
  21. package/pv-components/dist/vue/visualizations/components/tables/PvDataTable/useFilterStore.d.ts +4 -0
  22. package/pv-components/dist/vue/visualizations/components/tables/PvDataTable/useSetFilter.d.ts +11 -8
  23. package/pv-components/dist/vue/visualizations/pv-components-visualizations.mjs +2287 -1802
  24. package/pv-components/dist/vue/visualizations/pv-components-visualizations.mjs.map +1 -1
  25. package/pv-components/dist/vue/visualizations/types.d.ts +6 -4
  26. package/pv-components/dist/web/components/pv-menu/pv-menu.js +44 -35
  27. package/pv-components/dist/web/components/pv-multi-select-button/pv-multi-select-button.js +1016 -963
  28. package/pv-components/dist/web/components/pv-query-builder-input/pv-query-builder-input.js +68 -59
  29. package/pv-components/dist/web/components/pv-select-button/pv-select-button.js +44 -35
  30. package/pv-components/dist/web/pv-components.iife.js +20 -20
  31. package/pv-components/dist/web/pv-components.iife.js.map +1 -1
  32. package/claude-plugin/skills/pit-viper/references/design-language.md +0 -80
  33. package/claude-plugin/skills/pit-viper/references/design-rules.md +0 -265
  34. package/claude-plugin/skills/pit-viper/references/html-patterns.md +0 -468
  35. package/claude-plugin/skills/pit-viper/references/layout-patterns.md +0 -367
  36. package/claude-plugin/skills/pit-viper/references/patterns-core.md +0 -97
  37. package/claude-plugin/skills/pit-viper/references/theme-guide.md +0 -160
  38. package/claude-plugin/skills/pit-viper/references/vue-guidelines.md +0 -526
@@ -56,12 +56,14 @@ export interface MenuOptionSelectedEvent {
56
56
  }
57
57
  export interface SeeMoreEvent {
58
58
  parentId?: string;
59
+ offset?: number;
59
60
  }
60
- export interface MultiSelectState {
61
- selectedParentIds: string[];
62
- selectedChildrenIds: string[];
63
- deselectedChildrenIds: string[];
61
+ export interface SelectionNode {
62
+ id: string;
63
+ state: "selected" | "deselected";
64
+ children?: SelectionNode[];
64
65
  }
66
+ export type MultiSelectState = SelectionNode[];
65
67
  export declare enum MenuItemType {
66
68
  simple = "simple",
67
69
  checkbox = "checkbox",
@@ -1971,72 +1971,81 @@ var Ar = Symbol("SelectedItemsKey"), jr = Symbol("EnableCascadeSelectionKey"), M
1971
1971
  }),
1972
1972
  emits: /* @__PURE__ */ v(["handle-selected", "see-more"], ["update:selectedIds"]),
1973
1973
  setup(e, { emit: n }) {
1974
- let i = e, s = _(Ar, void 0), c = ae(e, "selectedIds"), l = _(Ir, j(!1)), d = _(Fr, j(!1)), f = _(Nr, void 0), p = _(Pr, void 0), m = j(i.defaultExpanded ?? !1), h = j(!1), g = j(i.children ?? []), v = j(/* @__PURE__ */ new Set());
1974
+ let i = e, s = _(Ar, void 0), c = ae(e, "selectedIds"), l = _(Ir, j(!1)), d = _(Fr, j(!1)), f = _(Nr, void 0), p = _(Pr, void 0), m = j(i.defaultExpanded ?? !1), h = j(!1), g = j(!1), v = j(i.children ?? []), b = j(/* @__PURE__ */ new Set());
1975
1975
  L(() => i.children, (e) => {
1976
1976
  if (!e) {
1977
- g.value = [];
1977
+ v.value = [];
1978
1978
  return;
1979
1979
  }
1980
- let t = g.value.filter((e) => v.value.has(e.id)), n = new Set(e.map((e) => e.id)), r = t.filter((e) => !n.has(e.id));
1981
- g.value = [...e, ...r];
1980
+ let t = v.value.filter((e) => b.value.has(e.id)), n = new Set(e.map((e) => e.id)), r = t.filter((e) => !n.has(e.id));
1981
+ v.value = [...e, ...r], g.value = !1;
1982
1982
  });
1983
- let b = () => {
1983
+ let S = () => {
1984
1984
  m.value = !m.value;
1985
- }, S = r(() => ({ paddingLeft: `${i.level * 12 + 12}px` })), w = r(() => {
1985
+ }, w = r(() => ({ paddingLeft: `${i.level * 12 + 12}px` })), T = r(() => {
1986
1986
  let { level: e, config: t, itemClass: n, ...r } = i;
1987
1987
  return r;
1988
- }), T = r(() => g.value.length > 0 && i.level < Ur), E = r(() => T.value ? l.value ? m.value : !0 : !1), O = r(() => m.value ? "chevron-down" : "chevron-right"), k = (e) => s && Array.isArray(s.value) ? s.value.some((t) => t.id === e.id) : c.value.includes(e.id), A = n, N = r(() => i.totalChildCount == null ? !1 : i.totalChildCount > g.value.length), te = async () => {
1988
+ }), E = r(() => (v.value.length > 0 || (i.totalChildCount ?? 0) > 0) && i.level < Ur), O = r(() => E.value ? l.value ? m.value : !0 : !1), k = r(() => m.value ? "chevron-down" : "chevron-right"), A = (e) => s && Array.isArray(s.value) ? s.value.some((t) => t.id === e.id) : c.value.includes(e.id), N = n, te = r(() => g.value || i.totalChildCount == null ? !1 : i.totalChildCount > v.value.length), P = async () => {
1989
1989
  if (h.value) return;
1990
1990
  if (!i.handleSeeMore) {
1991
- A("see-more", { parentId: i.id });
1991
+ N("see-more", {
1992
+ parentId: i.id,
1993
+ offset: v.value.length
1994
+ });
1992
1995
  return;
1993
1996
  }
1994
1997
  let e = f?.value?.has(i.id) ?? !1;
1995
1998
  h.value = !0;
1996
1999
  try {
1997
- let t = await i.handleSeeMore({ parentId: i.id });
2000
+ let t = await i.handleSeeMore({
2001
+ parentId: i.id,
2002
+ offset: v.value.length
2003
+ });
1998
2004
  if (Array.isArray(t) && t.length > 0) {
1999
- let n = new Set(g.value.map((e) => e.id)), r = t.filter((e) => !n.has(e.id));
2000
- if (r.length === 0) return;
2001
- let a = new Set(v.value);
2005
+ let n = new Set(v.value.map((e) => e.id)), r = t.filter((e) => !n.has(e.id));
2006
+ if (r.length === 0) {
2007
+ g.value = !0;
2008
+ return;
2009
+ }
2010
+ let a = new Set(b.value);
2002
2011
  for (let e of r) a.add(e.id);
2003
- if (v.value = a, g.value = [...g.value, ...r], e && s?.value) {
2012
+ if (b.value = a, v.value = [...v.value, ...r], e && s?.value) {
2004
2013
  let e = p?.value?.get(i.id), t = e ? r.filter((t) => !e.has(t.id)) : r;
2005
2014
  if (t.length > 0) {
2006
2015
  let e = new Set(s.value.map((e) => e.id)), n = t.filter((t) => !e.has(t.id));
2007
2016
  n.length > 0 && (s.value = [...s.value, ...n]);
2008
2017
  }
2009
2018
  }
2010
- }
2019
+ } else Array.isArray(t) && (g.value = !0);
2011
2020
  } finally {
2012
2021
  h.value = !1;
2013
2022
  }
2014
- }, P = (e) => {
2015
- if (l.value && T.value && e.option.id === i.id && !d.value) {
2016
- b();
2023
+ }, F = (e) => {
2024
+ if (l.value && E.value && e.option.id === i.id && !d.value) {
2025
+ S();
2017
2026
  return;
2018
2027
  }
2019
2028
  if (!s) {
2020
2029
  let t = c.value.indexOf(e.option.id);
2021
2030
  t > -1 ? c.value = [...c.value.slice(0, t), ...c.value.slice(t + 1)] : c.value = [...c.value, e.option.id];
2022
2031
  }
2023
- A("handle-selected", e);
2024
- }, F = (e) => {
2025
- A("handle-selected", e);
2032
+ N("handle-selected", e);
2033
+ }, ne = (e) => {
2034
+ N("handle-selected", e);
2026
2035
  };
2027
2036
  return (n, r) => {
2028
2037
  let s = ee("PvMenuItem", !0);
2029
- return D(), o(t, null, [u(Br, y(w.value, {
2030
- children: g.value,
2038
+ return D(), o(t, null, [u(Br, y(T.value, {
2039
+ children: v.value,
2031
2040
  menuOptionConfig: e.config,
2032
2041
  queryText: e.queryText,
2033
2042
  highlightSearchText: e.highlightSearchText,
2034
- showChevron: re(l) && T.value,
2035
- chevronIcon: O.value,
2043
+ showChevron: re(l) && E.value,
2044
+ chevronIcon: k.value,
2036
2045
  expanded: m.value,
2037
- onHandleSelected: P,
2038
- onToggleExpanded: b,
2039
- selected: k(i)
2046
+ onHandleSelected: F,
2047
+ onToggleExpanded: S,
2048
+ selected: A(i)
2040
2049
  }), null, 16, [
2041
2050
  "children",
2042
2051
  "menuOptionConfig",
@@ -2046,13 +2055,13 @@ var Ar = Symbol("SelectedItemsKey"), jr = Symbol("EnableCascadeSelectionKey"), M
2046
2055
  "chevronIcon",
2047
2056
  "expanded",
2048
2057
  "selected"
2049
- ]), E.value ? (D(), o("ul", {
2058
+ ]), O.value ? (D(), o("ul", {
2050
2059
  key: 0,
2051
2060
  role: "list",
2052
- style: C(S.value)
2053
- }, [(D(!0), o(t, null, M(g.value, (t) => (D(), o("li", {
2061
+ style: C(w.value)
2062
+ }, [(D(!0), o(t, null, M(v.value, (t) => (D(), o("li", {
2054
2063
  key: t.id,
2055
- "data-active": k(t) ? "true" : null,
2064
+ "data-active": A(t) ? "true" : null,
2056
2065
  class: x(e.itemClass)
2057
2066
  }, [u(s, y({ ref_for: !0 }, t, {
2058
2067
  selectedIds: c.value,
@@ -2061,21 +2070,21 @@ var Ar = Symbol("SelectedItemsKey"), jr = Symbol("EnableCascadeSelectionKey"), M
2061
2070
  queryText: e.queryText,
2062
2071
  highlightSearchText: e.highlightSearchText,
2063
2072
  level: e.level + 1,
2064
- onHandleSelected: F,
2065
- onSeeMore: r[1] ||= (e) => A("see-more", e)
2073
+ onHandleSelected: ne,
2074
+ onSeeMore: r[1] ||= (e) => N("see-more", e)
2066
2075
  }), null, 16, [
2067
2076
  "selectedIds",
2068
2077
  "config",
2069
2078
  "queryText",
2070
2079
  "highlightSearchText",
2071
2080
  "level"
2072
- ])], 10, Vr))), 128)), N.value ? (D(), o("li", Hr, [u(Er, {
2081
+ ])], 10, Vr))), 128)), te.value ? (D(), o("li", Hr, [u(Er, {
2073
2082
  class: "pv-text-brand",
2074
2083
  variant: "ghost",
2075
2084
  label: "See more",
2076
2085
  loading: h.value,
2077
2086
  "data-testid": "pv-menu-item-see-more",
2078
- onClick: te
2087
+ onClick: P
2079
2088
  }, null, 8, ["loading"])])) : a("v-if", !0)], 4)) : a("v-if", !0)], 64);
2080
2089
  };
2081
2090
  }