@turquoisehealth/pit-viper 2.258.0 → 2.258.1

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 (32) hide show
  1. package/_site/assets/css/pit-viper-a11y-v3.css +13 -12
  2. package/_site/assets/css/pit-viper-a11y.css +13 -12
  3. package/_site/assets/css/pit-viper-consumer.css +13 -12
  4. package/_site/assets/css/pit-viper-v2-scoped.css +10 -12
  5. package/_site/assets/css/pit-viper-v2.css +13 -12
  6. package/_site/assets/css/pit-viper-v3.css +13 -12
  7. package/_site/assets/css/pit-viper.css +13 -12
  8. package/package.json +1 -1
  9. package/pv-components/dist/stats/vue/base/stats.html +1 -1
  10. package/pv-components/dist/stats/vue/visualizations/stats.html +1 -1
  11. package/pv-components/dist/stats/web/pv-filter-modal-stats.html +1 -1
  12. package/pv-components/dist/stats/web/pv-filter-panel-stats.html +1 -1
  13. package/pv-components/dist/stats/web/pv-hover-action-menu-stats.html +1 -1
  14. package/pv-components/dist/vue/ai/components/base/PvFilterModal/PvFilterModal.vue.d.ts +1 -0
  15. package/pv-components/dist/vue/ai/components/base/PvFilterPanel/PvFilterPanel.vue.d.ts +1 -0
  16. package/pv-components/dist/vue/ai/components/base/PvFilterPanel/PvFilterPanelOptionRow.vue.d.ts +1 -0
  17. package/pv-components/dist/vue/ai/components/base/PvFilterPanel/types.d.ts +12 -4
  18. package/pv-components/dist/vue/base/components/base/PvFilterModal/PvFilterModal.vue.d.ts +1 -0
  19. package/pv-components/dist/vue/base/components/base/PvFilterPanel/PvFilterPanel.vue.d.ts +1 -0
  20. package/pv-components/dist/vue/base/components/base/PvFilterPanel/PvFilterPanelOptionRow.vue.d.ts +1 -0
  21. package/pv-components/dist/vue/base/components/base/PvFilterPanel/types.d.ts +12 -4
  22. package/pv-components/dist/vue/base/pv-components-base.mjs +188 -148
  23. package/pv-components/dist/vue/base/pv-components-base.mjs.map +1 -1
  24. package/pv-components/dist/vue/visualizations/components/base/PvFilterModal/PvFilterModal.vue.d.ts +1 -0
  25. package/pv-components/dist/vue/visualizations/components/base/PvFilterPanel/PvFilterPanel.vue.d.ts +1 -0
  26. package/pv-components/dist/vue/visualizations/components/base/PvFilterPanel/PvFilterPanelOptionRow.vue.d.ts +1 -0
  27. package/pv-components/dist/vue/visualizations/components/base/PvFilterPanel/types.d.ts +12 -4
  28. package/pv-components/dist/web/components/pv-filter-modal/pv-filter-modal.js +48 -26
  29. package/pv-components/dist/web/components/pv-filter-panel/pv-filter-panel.js +394 -358
  30. package/pv-components/dist/web/components/pv-hover-action-menu/pv-hover-action-menu.js +1 -1
  31. package/pv-components/dist/web/pv-components.iife.js +1 -1
  32. package/pv-components/dist/web/pv-components.iife.js.map +1 -1
@@ -51,6 +51,7 @@ declare const __VLS_component: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}
51
51
  maxWidth: string;
52
52
  ariaLabel: string;
53
53
  readOnly: boolean;
54
+ canRemoveFocus: boolean;
54
55
  colDefs: PvFilterPanelColDef[];
55
56
  controlledValues: Record<string, string[]>;
56
57
  devMode: boolean;
@@ -49,6 +49,7 @@ declare const __VLS_component: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}
49
49
  width: string;
50
50
  ariaLabel: string;
51
51
  readOnly: boolean;
52
+ canRemoveFocus: boolean;
52
53
  colDefs: PvFilterPanelColDef[];
53
54
  controlledValues: Record<string, string[]>;
54
55
  devMode: boolean;
@@ -23,6 +23,7 @@ declare const __VLS_component: DefineComponent<PvFilterPanelOptionRowProps, {},
23
23
  resultCount: PvFilterPanelResultCount | null;
24
24
  control: "checkbox" | "radio";
25
25
  depth: number;
26
+ focusActionDisabled: boolean;
26
27
  isFocused: boolean;
27
28
  showFocusAction: boolean;
28
29
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLLabelElement>;
@@ -427,6 +427,7 @@ export interface PvFilterStore {
427
427
  export interface PvFilterPanelResolvedFilter {
428
428
  aggregateSelectionState?: MultiSelectState;
429
429
  booleanValue?: boolean | null;
430
+ canRemoveFocus?: boolean;
430
431
  category?: PvFilterPanelCategory | null;
431
432
  clientFiltering?: boolean;
432
433
  colDef: PvFilterPanelColDef;
@@ -447,11 +448,13 @@ export interface PvFilterPanelResolvedFilter {
447
448
  filterSectionHeaderRenderer?: Component;
448
449
  filterOptionsSortDescription?: string;
449
450
  filterOptionsSortTooltip?: string;
450
- hideOptionsSortDescription?: boolean;
451
- hideSearch?: boolean;
451
+ focusableFields?: string[];
452
+ focusFieldLabels?: Record<string, string>;
452
453
  focusText?: string;
453
454
  focusedValues?: string[];
454
455
  focusedValuesByField?: Record<string, string[] | undefined>;
456
+ hideOptionsSortDescription?: boolean;
457
+ hideSearch?: boolean;
455
458
  hasMore?: boolean;
456
459
  isAggregate?: boolean;
457
460
  isFocusable?: boolean;
@@ -507,8 +510,10 @@ export interface PvFilterPanelOptionRowProps {
507
510
  control?: "checkbox" | "radio";
508
511
  depth?: number;
509
512
  disabled?: boolean;
510
- indeterminate?: boolean;
513
+ focusActionDisabled?: boolean;
514
+ focusActionLabel?: string;
511
515
  focusText?: string;
516
+ indeterminate?: boolean;
512
517
  isFocused?: boolean;
513
518
  label: string;
514
519
  /** Name shared by inputs in the same radio group. */
@@ -547,6 +552,8 @@ export interface PvFilterPanelProps {
547
552
  ariaLabel?: string;
548
553
  /** Auto-hide backing fields represented by aggregate filters and child fields represented by filter groups. */
549
554
  autoHideRelatedFilterFields?: boolean;
555
+ /** Whether the currently focused value may be removed. */
556
+ canRemoveFocus?: boolean;
550
557
  cancelLabel?: string;
551
558
  categoryOrder?: PvFilterPanelCategory[];
552
559
  /** Base label used by the collapsed filters toggle; rendered as `Show/Hide ${label}`. */
@@ -616,7 +623,8 @@ export interface PvFilterPanelProps {
616
623
  * fields that consuming components default via `withDefaults` as required, so the composable can rely
617
624
  * on them being present. Both `PvFilterPanel` and `PvFilterModal` satisfy this after applying defaults.
618
625
  */
619
- export type PvFilterPanelCoreProps = Omit<PvFilterPanelProps, "colDefs" | "controlledValues" | "devMode" | "displayPreferencesIcon" | "enableFocusView" | "filterHasMoreMap" | "filterLoadingMap" | "filterLoadingMoreMap" | "filterOptions" | "filterSearchQueries" | "filterSuggestions" | "focusableFields" | "focusedValues" | "focusText" | "rangeDebounceMs" | "readOnly" | "staged"> & {
626
+ export type PvFilterPanelCoreProps = Omit<PvFilterPanelProps, "canRemoveFocus" | "colDefs" | "controlledValues" | "devMode" | "displayPreferencesIcon" | "enableFocusView" | "filterHasMoreMap" | "filterLoadingMap" | "filterLoadingMoreMap" | "filterOptions" | "filterSearchQueries" | "filterSuggestions" | "focusableFields" | "focusedValues" | "focusText" | "rangeDebounceMs" | "readOnly" | "staged"> & {
627
+ canRemoveFocus: boolean;
620
628
  colDefs: PvFilterPanelColDef[];
621
629
  controlledValues: Record<string, string[]>;
622
630
  devMode: boolean;
@@ -5033,14 +5033,19 @@ var as = ["data-align"], os = ["id", "role"], ss = /* @__PURE__ */ ht(/* @__PURE
5033
5033
  type: Boolean,
5034
5034
  default: !1
5035
5035
  },
5036
- indeterminate: {
5036
+ focusActionDisabled: {
5037
5037
  type: Boolean,
5038
5038
  default: !1
5039
5039
  },
5040
+ focusActionLabel: { type: String },
5040
5041
  focusText: {
5041
5042
  default: "Focus",
5042
5043
  type: String
5043
5044
  },
5045
+ indeterminate: {
5046
+ type: Boolean,
5047
+ default: !1
5048
+ },
5044
5049
  isFocused: {
5045
5050
  type: Boolean,
5046
5051
  default: !1
@@ -5071,7 +5076,7 @@ var as = ["data-align"], os = ["id", "role"], ss = /* @__PURE__ */ ht(/* @__PURE
5071
5076
  },
5072
5077
  emits: ["focus-value", "toggle-value"],
5073
5078
  setup(e, { emit: t }) {
5074
- let n = e, c = t, u = z(), d = r(() => n.resultCount !== null && n.resultCount !== void 0 && n.resultCount !== ""), f = r(() => !n.renderer && (d.value || !!u["result-count"])), p = r(() => ({ "--pv-filter-panel-option-row-depth": String(n.depth) })), m = r(() => ({
5079
+ let n = e, c = t, d = z(), f = r(() => n.resultCount !== null && n.resultCount !== void 0 && n.resultCount !== ""), p = r(() => n.focusActionLabel ?? (n.isFocused ? `Remove ${n.focusText}` : `Select as ${n.focusText}`)), m = r(() => !n.renderer && (f.value || !!d["result-count"])), h = r(() => ({ "--pv-filter-panel-option-row-depth": String(n.depth) })), g = r(() => ({
5075
5080
  disabled: n.disabled,
5076
5081
  highlightSearchText: !0,
5077
5082
  id: n.value,
@@ -5085,17 +5090,17 @@ var as = ["data-align"], os = ["id", "role"], ss = /* @__PURE__ */ ht(/* @__PURE
5085
5090
  subduedText: n.subduedText,
5086
5091
  text: n.label,
5087
5092
  value: n.value
5088
- })), h = (e) => {
5093
+ })), _ = (e) => {
5089
5094
  n.disabled || c("toggle-value", n.value, e === !0);
5090
- }, g = (e) => {
5091
- h(e.target.checked);
5092
- }, _ = () => {
5093
- n.disabled || c("focus-value", n.value);
5095
+ }, v = (e) => {
5096
+ _(e.target.checked);
5097
+ }, b = () => {
5098
+ n.disabled || n.focusActionDisabled || c("focus-value", n.value);
5094
5099
  };
5095
5100
  return (t, n) => (k(), o("label", {
5096
5101
  class: x(["pv-filter-panel-option-row pv-flex", { "pv-filter-panel-option-row-disabled": e.disabled }]),
5097
5102
  "data-testid": "pv-filter-panel-option-row",
5098
- style: C(p.value)
5103
+ style: C(h.value)
5099
5104
  }, [
5100
5105
  e.control === "radio" ? (k(), o("input", {
5101
5106
  key: 0,
@@ -5105,42 +5110,52 @@ var as = ["data-align"], os = ["id", "role"], ss = /* @__PURE__ */ ht(/* @__PURE
5105
5110
  checked: e.selected,
5106
5111
  disabled: e.disabled,
5107
5112
  name: e.name,
5108
- onChange: g
5113
+ onChange: v
5109
5114
  }, null, 40, Ts)) : (k(), i(ws, {
5110
5115
  key: 1,
5111
5116
  ariaLabel: e.ariaLabel || e.label,
5112
5117
  disabled: e.disabled,
5113
5118
  indeterminate: e.indeterminate,
5114
5119
  modelValue: e.selected,
5115
- "onUpdate:modelValue": h
5120
+ "onUpdate:modelValue": _
5116
5121
  }, null, 8, [
5117
5122
  "ariaLabel",
5118
5123
  "disabled",
5119
5124
  "indeterminate",
5120
5125
  "modelValue"
5121
5126
  ])),
5122
- e.renderer ? (k(), i(P(e.renderer), S(y({ key: 2 }, m.value)), null, 16)) : (k(), o("span", Es, [
5127
+ e.renderer ? (k(), i(P(e.renderer), S(y({ key: 2 }, g.value)), null, 16)) : (k(), o("span", Es, [
5123
5128
  s("span", Ds, I(e.label), 1),
5124
5129
  e.subduedText ? (k(), o("span", Os, I(e.subduedText), 1)) : a("v-if", !0),
5125
5130
  e.subText ? (k(), o("span", ks, I(e.subText), 1)) : a("v-if", !0)
5126
5131
  ])),
5127
- f.value ? (k(), o("span", As, [N(t.$slots, "result-count", {}, () => [l("(" + I(e.resultCount) + ")", 1)], !0)])) : a("v-if", !0),
5128
- e.showFocusAction ? (k(), i(yt, {
5132
+ m.value ? (k(), o("span", As, [N(t.$slots, "result-count", {}, () => [l("(" + I(e.resultCount) + ")", 1)], !0)])) : a("v-if", !0),
5133
+ e.showFocusAction ? (k(), o("div", {
5129
5134
  key: 5,
5130
- ariaLabel: e.isFocused ? `Remove ${e.focusText}` : `Select as ${e.focusText}`,
5131
- disabled: e.disabled,
5132
- leftIcon: "focus",
5133
- size: "md",
5134
- variant: e.isFocused ? "primary" : "ghost",
5135
- onClick: me(_, ["stop", "prevent"])
5136
- }, null, 8, [
5137
- "ariaLabel",
5138
- "disabled",
5139
- "variant"
5140
- ])) : a("v-if", !0)
5135
+ class: x(["pv-filter-panel-option-row-focus-action", { "pv-filter-panel-option-row-focus-action-always-visible": e.isFocused }]),
5136
+ "data-testid": "pv-filter-panel-option-row-focus-action"
5137
+ }, [u(li, {
5138
+ description: p.value,
5139
+ position: "top-right",
5140
+ size: "sm"
5141
+ }, {
5142
+ trigger: fe(() => [u(yt, {
5143
+ ariaLabel: p.value,
5144
+ disabled: e.disabled || e.focusActionDisabled,
5145
+ leftIcon: "focus",
5146
+ size: "md",
5147
+ variant: e.isFocused ? "primary" : "ghost",
5148
+ onClick: me(b, ["stop", "prevent"])
5149
+ }, null, 8, [
5150
+ "ariaLabel",
5151
+ "disabled",
5152
+ "variant"
5153
+ ])]),
5154
+ _: 1
5155
+ }, 8, ["description"])], 2)) : a("v-if", !0)
5141
5156
  ], 6));
5142
5157
  }
5143
- }), [["styles", [".pv-filter-panel-option-row[data-v-d5f24abf]{--flex-align:center;--flex-gap:.5rem;cursor:pointer;min-width:0;padding-left:calc(var(--pv-filter-panel-option-row-depth) * 1.25rem)}.pv-filter-panel-option-row-content[data-v-d5f24abf]{--flex-align:stretch;--flex-gap:0;flex:auto;min-width:0}.pv-filter-panel-option-row-disabled[data-v-d5f24abf]{cursor:not-allowed;opacity:.6}.pv-filter-panel-option-row-line[data-v-d5f24abf]{--lines:1}.pv-filter-panel-option-row-right[data-v-d5f24abf]{text-align:right;flex:none}"]], ["__scopeId", "data-v-d5f24abf"]]), Ms = ["for"], Ns = [
5158
+ }), [["styles", [".pv-filter-panel-option-row[data-v-b85834dc]{--flex-align:center;--flex-gap:.5rem;cursor:pointer;min-width:0;padding-left:calc(var(--pv-filter-panel-option-row-depth) * 1.25rem)}.pv-filter-panel-option-row-content[data-v-b85834dc]{--flex-align:stretch;--flex-gap:0;flex:auto;min-width:0}.pv-filter-panel-option-row-disabled[data-v-b85834dc]{cursor:not-allowed;opacity:.6}.pv-filter-panel-option-row-line[data-v-b85834dc]{--lines:1}.pv-filter-panel-option-row-right[data-v-b85834dc]{text-align:right;flex:none}.pv-filter-panel-option-row-focus-action[data-v-b85834dc]{opacity:0;pointer-events:none}.pv-filter-panel-option-row:hover .pv-filter-panel-option-row-focus-action[data-v-b85834dc],.pv-filter-panel-option-row:focus-within .pv-filter-panel-option-row-focus-action[data-v-b85834dc],.pv-filter-panel-option-row-focus-action-always-visible[data-v-b85834dc]{opacity:1;pointer-events:auto}"]], ["__scopeId", "data-v-b85834dc"]]), Ms = ["for"], Ns = [
5144
5159
  "id",
5145
5160
  "type",
5146
5161
  "value",
@@ -6268,6 +6283,7 @@ function xu(e, t, n) {
6268
6283
  }));
6269
6284
  }, H = (e) => Se.value.find((t) => t.key === e) ?? Se.value.find((t) => ce(t.colDef).includes(e)), xe = (e, t, n) => ml(H(e)?.knownOptions ?? []).find((r) => r.value === n || hl(r, t, n, e)), Se = r(() => e.colDefs.filter(P).map((t) => {
6270
6285
  let n = A(t), r = k(t), i = te(t), a = ye(F(n), t), o = ye(z(n), t), s = {
6286
+ canRemoveFocus: e.canRemoveFocus,
6271
6287
  category: N(t),
6272
6288
  clientFiltering: r.filterOptionsClientFiltering !== !1,
6273
6289
  colDef: t,
@@ -6286,6 +6302,8 @@ function xu(e, t, n) {
6286
6302
  filterSectionDefs: r.filterSectionDefs,
6287
6303
  filterOptionsSortDescription: r.filterOptionsSortDescription,
6288
6304
  filterOptionsSortTooltip: r.filterOptionsSortTooltip,
6305
+ focusFieldLabels: Object.fromEntries(ce(t).map((e) => [e, ge(e)])),
6306
+ focusableFields: e.focusableFields,
6289
6307
  focusText: e.focusText,
6290
6308
  hideOptionsSortDescription: r.filterPanelHideOptionsSortDescription,
6291
6309
  hideSearch: r.filterPanelHideSearch,
@@ -6734,6 +6752,10 @@ var Su = ["aria-label"], Cu = {
6734
6752
  type: Boolean,
6735
6753
  default: void 0
6736
6754
  },
6755
+ canRemoveFocus: {
6756
+ type: Boolean,
6757
+ default: !0
6758
+ },
6737
6759
  cancelLabel: {
6738
6760
  default: "Cancel",
6739
6761
  type: String
@@ -7147,7 +7169,7 @@ var Su = ["aria-label"], Cu = {
7147
7169
  _: 3
7148
7170
  }, 8, ["modelValue"]));
7149
7171
  }
7150
- }), [["styles", [".pv-filter-modal-rail[data-v-e3f66d03]{--flex-align:stretch;flex:0 0 180px;padding-inline-end:1rem;overflow-y:auto}.pv-filter-modal-pane[data-v-e3f66d03]{flex:auto;min-width:0;min-height:0;padding-inline-start:1rem}.pv-filter-modal-options[data-v-e3f66d03]{min-height:360px;max-height:360px;overflow-y:auto}.pv-filter-modal-pane-actions[data-v-e3f66d03]{margin-top:auto;padding-top:.5rem}"]], ["__scopeId", "data-v-e3f66d03"]]), Pu = Object.defineProperty, Fu = Object.getOwnPropertySymbols, Iu = Object.prototype.hasOwnProperty, Lu = Object.prototype.propertyIsEnumerable, Ru = (e, t, n) => t in e ? Pu(e, t, {
7172
+ }), [["styles", [".pv-filter-modal-rail[data-v-fb919d6a]{--flex-align:stretch;flex:0 0 180px;padding-inline-end:1rem;overflow-y:auto}.pv-filter-modal-pane[data-v-fb919d6a]{flex:auto;min-width:0;min-height:0;padding-inline-start:1rem}.pv-filter-modal-options[data-v-fb919d6a]{min-height:360px;max-height:360px;overflow-y:auto}.pv-filter-modal-pane-actions[data-v-fb919d6a]{margin-top:auto;padding-top:.5rem}"]], ["__scopeId", "data-v-fb919d6a"]]), Pu = Object.defineProperty, Fu = Object.getOwnPropertySymbols, Iu = Object.prototype.hasOwnProperty, Lu = Object.prototype.propertyIsEnumerable, Ru = (e, t, n) => t in e ? Pu(e, t, {
7151
7173
  enumerable: !0,
7152
7174
  configurable: !0,
7153
7175
  writable: !0,