@milaboratories/uikit 2.11.8 → 2.12.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 (28) hide show
  1. package/.turbo/turbo-build.log +18 -18
  2. package/.turbo/turbo-formatter$colon$check.log +2 -2
  3. package/.turbo/turbo-linter$colon$check.log +2 -2
  4. package/.turbo/turbo-types$colon$check.log +1 -1
  5. package/CHANGELOG.md +18 -0
  6. package/dist/components/LongText.js.map +1 -1
  7. package/dist/components/LongText.style.css +1 -1
  8. package/dist/components/LongText.vue.d.ts.map +1 -1
  9. package/dist/components/LongText.vue2.js +1 -1
  10. package/dist/components/LongText.vue2.js.map +1 -1
  11. package/dist/components/PlElementList/PlElementList.js.map +1 -1
  12. package/dist/components/PlElementList/PlElementList.style.js.map +1 -1
  13. package/dist/components/PlElementList/PlElementList.vue.d.ts.map +1 -1
  14. package/dist/components/PlElementList/PlElementList.vue2.js +95 -95
  15. package/dist/components/PlElementList/PlElementList.vue2.js.map +1 -1
  16. package/dist/components/PlElementList/utils.d.ts +1 -1
  17. package/dist/components/PlElementList/utils.d.ts.map +1 -1
  18. package/dist/components/PlElementList/utils.js +6 -5
  19. package/dist/components/PlElementList/utils.js.map +1 -1
  20. package/dist/components/PlSlideModal/pl-slide-modal.css +1 -1
  21. package/dist/composition/filters/metadata.js +16 -16
  22. package/dist/composition/filters/metadata.js.map +1 -1
  23. package/package.json +4 -4
  24. package/src/components/LongText.vue +6 -8
  25. package/src/components/PlElementList/PlElementList.vue +51 -42
  26. package/src/components/PlElementList/utils.ts +7 -6
  27. package/src/components/PlSlideModal/pl-slide-modal.scss +1 -0
  28. package/src/composition/filters/metadata.ts +16 -16
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","names":[],"sources":["../../../src/composition/filters/metadata.ts"],"sourcesContent":["import type { FilterSpecType, SimplifiedPColumnSpec } from \"@platforma-sdk/model\";\nimport type { FilterSpecMetadataRecord } from \"./types\";\n\nexport const filterUiMetadata = {\n equal: {\n label: \"Col = X (Equal)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"equal\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n notEqual: {\n label: \"Col ≠ X (Not Equal)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"notEqual\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n lessThan: {\n label: \"Col < X (Less Than)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"lessThan\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n greaterThan: {\n label: \"Col > X (Greater Than)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"greaterThan\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n lessThanOrEqual: {\n label: \"Col ≤ X (Less Than or Equal)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"lessThanOrEqual\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n greaterThanOrEqual: {\n label: \"Col ≥ X (Greater Than or Equal)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"greaterThanOrEqual\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n // Columns comparison\n equalToColumn: {\n label: \"Col₁ = Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"equalToColumn\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n lessThanColumn: {\n label: \"Col₁ < Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"lessThanColumn\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n minDiff: {\n label: \"Margin (positive)\",\n fieldType: \"number?\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n greaterThanColumn: {\n label: \"Col₁ > Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"greaterThanColumn\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n minDiff: {\n label: \"Margin (positive)\",\n fieldType: \"number?\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n lessThanColumnOrEqual: {\n label: \"Col₁ ≤ Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"lessThanColumnOrEqual\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n minDiff: {\n label: \"Margin (positive)\",\n fieldType: \"number?\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n greaterThanColumnOrEqual: {\n label: \"Col₁ ≥ Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"greaterThanColumnOrEqual\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n minDiff: {\n label: \"Margin (positive)\",\n fieldType: \"number?\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n // Ordering filters\n topN: {\n label: \"Top N\",\n form: {\n column: {\n label: \"Rank By Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"topN\",\n },\n n: {\n label: \"N\",\n fieldType: \"number\",\n defaultValue: () => 10,\n },\n },\n supportedFor: isNumericValueType,\n },\n bottomN: {\n label: \"Bottom N\",\n form: {\n column: {\n label: \"Rank By Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"bottomN\",\n },\n n: {\n label: \"N\",\n fieldType: \"number\",\n defaultValue: () => 10,\n },\n },\n supportedFor: isNumericValueType,\n },\n patternContainSubsequence: {\n label: \"Col ~ Seq (Contain Subsequence)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternContainSubsequence\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n patternNotContainSubsequence: {\n label: \"Col ≁ Seq (Not Contain Subsequence)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternNotContainSubsequence\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n patternEquals: {\n label: \"Col = Seq (Equals)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternEquals\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n patternNotEquals: {\n label: \"Col ≠ Seq (Not Equal)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternNotEquals\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n isNA: {\n label: \"Is NA\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"isNA\",\n },\n },\n supportedFor: () => true,\n },\n isNotNA: {\n label: \"Is Not NA\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"isNotNA\",\n },\n },\n supportedFor: () => true,\n },\n or: {\n label: \"Or\",\n form: {\n type: {\n fieldType: \"FilterType\",\n label: \"Predicate\",\n defaultValue: () => \"or\",\n },\n filters: {\n fieldType: \"unknown[]\",\n label: \"Filters\",\n defaultValue: () => [],\n },\n },\n supportedFor: () => false,\n },\n and: {\n label: \"And\",\n form: {\n type: {\n fieldType: \"FilterType\",\n label: \"Predicate\",\n defaultValue: () => \"and\",\n },\n filters: {\n fieldType: \"unknown[]\",\n label: \"Filters\",\n defaultValue: () => [],\n },\n },\n supportedFor: () => false,\n },\n not: {\n label: \"Not\",\n form: {\n type: {\n fieldType: \"FilterType\",\n label: \"Predicate\",\n defaultValue: () => \"not\",\n },\n filter: {\n fieldType: \"form\",\n label: \"Filter\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: () => false,\n },\n patternMatchesRegularExpression: {\n label: \"Col ~ X (Matches Regular Expression)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternMatchesRegularExpression\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n patternFuzzyContainSubsequence: {\n label: \"Col ~ Seq (Fuzzy Contain Subsequence)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternFuzzyContainSubsequence\",\n },\n value: {\n label: \"Set\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n inSet: {\n label: \"Col ∈ Set (In Set)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"inSet\",\n },\n value: {\n fieldType: \"unknown[]\",\n label: \"Set\",\n defaultValue: () => [],\n },\n },\n supportedFor: isStringValueType,\n },\n notInSet: {\n label: \"Col ∉ Set (Not In Set)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"notInSet\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"unknown[]\",\n defaultValue: () => [],\n },\n },\n supportedFor: isStringValueType,\n },\n ifNa: {\n label: \"If NA Then (Replace NA)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"ifNa\",\n },\n replacement: {\n label: \"Replacement Value\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: () => true,\n },\n} satisfies FilterSpecMetadataRecord<FilterSpecType>;\n\nexport function getFilterUiTypeOptions(columnSpec?: SimplifiedPColumnSpec) {\n if (!columnSpec) {\n return [];\n }\n\n return Object.entries(filterUiMetadata)\n .filter(([_, metadata]) => metadata.supportedFor(columnSpec))\n .map(([type, metadata]) => ({\n label: metadata.label,\n value: type,\n }));\n}\n\nexport function getFilterUiMetadata(type: FilterSpecType) {\n return filterUiMetadata[type];\n}\n\nfunction isNumericValueType(spec: SimplifiedPColumnSpec): boolean {\n return (\n spec.valueType === \"Int\" ||\n spec.valueType === \"Long\" ||\n spec.valueType === \"Float\" ||\n spec.valueType === \"Double\"\n );\n}\n\nfunction isStringValueType(spec: SimplifiedPColumnSpec): boolean {\n return spec.valueType === \"String\";\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"metadata.js","names":[],"sources":["../../../src/composition/filters/metadata.ts"],"sourcesContent":["import type { FilterSpecType, SimplifiedPColumnSpec } from \"@platforma-sdk/model\";\nimport type { FilterSpecMetadataRecord } from \"./types\";\n\nexport const filterUiMetadata = {\n equal: {\n label: \"Equals (=)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"equal\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n notEqual: {\n label: \"Not Equal To (≠)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"notEqual\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n lessThan: {\n label: \"Below (<)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"lessThan\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n greaterThan: {\n label: \"Above (>)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"greaterThan\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n lessThanOrEqual: {\n label: \"At Most (≤)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"lessThanOrEqual\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n greaterThanOrEqual: {\n label: \"At Least (≥)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"greaterThanOrEqual\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n // Columns comparison\n equalToColumn: {\n label: \"Col₁ = Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"equalToColumn\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n lessThanColumn: {\n label: \"Col₁ < Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"lessThanColumn\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n minDiff: {\n label: \"Margin (positive)\",\n fieldType: \"number?\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n greaterThanColumn: {\n label: \"Col₁ > Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"greaterThanColumn\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n minDiff: {\n label: \"Margin (positive)\",\n fieldType: \"number?\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n lessThanColumnOrEqual: {\n label: \"Col₁ ≤ Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"lessThanColumnOrEqual\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n minDiff: {\n label: \"Margin (positive)\",\n fieldType: \"number?\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n greaterThanColumnOrEqual: {\n label: \"Col₁ ≥ Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"greaterThanColumnOrEqual\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n minDiff: {\n label: \"Margin (positive)\",\n fieldType: \"number?\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n // Ordering filters\n topN: {\n label: \"Top N\",\n form: {\n column: {\n label: \"Rank By Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"topN\",\n },\n n: {\n label: \"N\",\n fieldType: \"number\",\n defaultValue: () => 10,\n },\n },\n supportedFor: isNumericValueType,\n },\n bottomN: {\n label: \"Bottom N\",\n form: {\n column: {\n label: \"Rank By Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"bottomN\",\n },\n n: {\n label: \"N\",\n fieldType: \"number\",\n defaultValue: () => 10,\n },\n },\n supportedFor: isNumericValueType,\n },\n patternContainSubsequence: {\n label: \"Contains (~)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternContainSubsequence\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n patternNotContainSubsequence: {\n label: \"Does Not Contain (≁)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternNotContainSubsequence\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n patternEquals: {\n label: \"Equals (=)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternEquals\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n patternNotEquals: {\n label: \"Not Equal To (≠)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternNotEquals\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n isNA: {\n label: \"Is Empty (NA)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"isNA\",\n },\n },\n supportedFor: () => true,\n },\n isNotNA: {\n label: \"Is Not Empty (≠ NA)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"isNotNA\",\n },\n },\n supportedFor: () => true,\n },\n or: {\n label: \"Or\",\n form: {\n type: {\n fieldType: \"FilterType\",\n label: \"Predicate\",\n defaultValue: () => \"or\",\n },\n filters: {\n fieldType: \"unknown[]\",\n label: \"Filters\",\n defaultValue: () => [],\n },\n },\n supportedFor: () => false,\n },\n and: {\n label: \"And\",\n form: {\n type: {\n fieldType: \"FilterType\",\n label: \"Predicate\",\n defaultValue: () => \"and\",\n },\n filters: {\n fieldType: \"unknown[]\",\n label: \"Filters\",\n defaultValue: () => [],\n },\n },\n supportedFor: () => false,\n },\n not: {\n label: \"Not\",\n form: {\n type: {\n fieldType: \"FilterType\",\n label: \"Predicate\",\n defaultValue: () => \"not\",\n },\n filter: {\n fieldType: \"form\",\n label: \"Filter\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: () => false,\n },\n patternMatchesRegularExpression: {\n label: \"Matches Regex (.*)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternMatchesRegularExpression\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n patternFuzzyContainSubsequence: {\n label: \"Contains Approximately (Fuzzy ~)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternFuzzyContainSubsequence\",\n },\n value: {\n label: \"Set\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n inSet: {\n label: \"In List (∈)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"inSet\",\n },\n value: {\n fieldType: \"unknown[]\",\n label: \"Set\",\n defaultValue: () => [],\n },\n },\n supportedFor: isStringValueType,\n },\n notInSet: {\n label: \"Not In List (∉)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"notInSet\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"unknown[]\",\n defaultValue: () => [],\n },\n },\n supportedFor: isStringValueType,\n },\n ifNa: {\n label: \"If NA Then (Replace NA)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"ifNa\",\n },\n replacement: {\n label: \"Replacement Value\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: () => true,\n },\n} satisfies FilterSpecMetadataRecord<FilterSpecType>;\n\nexport function getFilterUiTypeOptions(columnSpec?: SimplifiedPColumnSpec) {\n if (!columnSpec) {\n return [];\n }\n\n return Object.entries(filterUiMetadata)\n .filter(([_, metadata]) => metadata.supportedFor(columnSpec))\n .map(([type, metadata]) => ({\n label: metadata.label,\n value: type,\n }));\n}\n\nexport function getFilterUiMetadata(type: FilterSpecType) {\n return filterUiMetadata[type];\n}\n\nfunction isNumericValueType(spec: SimplifiedPColumnSpec): boolean {\n return (\n spec.valueType === \"Int\" ||\n spec.valueType === \"Long\" ||\n spec.valueType === \"Float\" ||\n spec.valueType === \"Double\"\n );\n}\n\nfunction isStringValueType(spec: SimplifiedPColumnSpec): boolean {\n return spec.valueType === \"String\";\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/uikit",
3
- "version": "2.11.8",
3
+ "version": "2.12.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
@@ -32,7 +32,7 @@
32
32
  "sortablejs": "^1.15.6",
33
33
  "vue": "^3.5.24",
34
34
  "@milaboratories/helpers": "1.14.1",
35
- "@platforma-sdk/model": "1.63.12"
35
+ "@platforma-sdk/model": "1.65.0"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@vitest/coverage-istanbul": "^4.1.3",
@@ -40,9 +40,9 @@
40
40
  "svgo": "^3.3.2",
41
41
  "typescript": "~5.9.3",
42
42
  "vitest": "^4.1.3",
43
- "@milaboratories/ts-builder": "1.3.1",
43
+ "@milaboratories/build-configs": "2.0.0",
44
44
  "@milaboratories/ts-configs": "1.2.3",
45
- "@milaboratories/build-configs": "2.0.0"
45
+ "@milaboratories/ts-builder": "1.3.1"
46
46
  },
47
47
  "scripts": {
48
48
  "dev": "ts-builder serve --target browser-lib --build-config ./build.browser-lib.config.js",
@@ -43,28 +43,26 @@ function mouseoutHandler() {
43
43
 
44
44
  <style lang="scss">
45
45
  .ui-lt-container {
46
+ position: relative;
46
47
  min-width: 0;
47
- white-space: nowrap;
48
48
  overflow: hidden;
49
- position: relative;
49
+ white-space: nowrap;
50
50
  border-radius: 5px;
51
51
 
52
52
  span {
53
53
  display: inline-block;
54
+ width: 100%;
54
55
  overflow: hidden;
55
56
  text-overflow: ellipsis;
56
- width: 100%;
57
57
  vertical-align: bottom;
58
- pointer-events: all !important;
59
58
  }
60
59
 
61
60
  .ui-lt-animate {
62
61
  position: relative;
62
+ width: fit-content;
63
+ overflow: unset;
64
+ text-overflow: unset;
63
65
  animation: left-to-right v-bind(animationTime) infinite alternate linear;
64
-
65
- overflow: unset !important;
66
- text-overflow: unset !important;
67
- width: fit-content !important;
68
66
  }
69
67
  }
70
68
 
@@ -11,6 +11,8 @@ import { computed, shallowRef, watch } from "vue";
11
11
  import PlElementListItem from "./PlElementListItem.vue";
12
12
  import { moveElements } from "./utils.ts";
13
13
 
14
+ type ItemEntry = [idx: number, item: T];
15
+
14
16
  const itemsRef = defineModel<T[]>("items", { required: true });
15
17
 
16
18
  const props = withDefaults(
@@ -99,11 +101,17 @@ const dndSortingEnabled = computed((): boolean => {
99
101
  return props.disableDragging !== true;
100
102
  });
101
103
 
102
- const pinnedItemsRef = computed(() => itemsRef.value.filter(isPinnedItem));
104
+ const pinnedItemsRef = computed(() =>
105
+ itemsRef.value
106
+ .map((item, index) => [index, item] as ItemEntry)
107
+ .filter(([index, item]) => isPinnedItem(item, index)),
108
+ );
103
109
  const hasPinnedItems = computed(() => pinnedItemsRef.value.length > 0);
104
110
 
105
111
  const unpinnedItemsRef = computed(() =>
106
- itemsRef.value.filter((item, index) => !isPinnedItem(item, index)),
112
+ itemsRef.value
113
+ .map((item, index) => [index, item] as ItemEntry)
114
+ .filter(([index, item]) => !isPinnedItem(item, index)),
107
115
  );
108
116
  const hasUnpinnedItems = computed(() => unpinnedItemsRef.value.length > 0);
109
117
 
@@ -112,8 +120,8 @@ const pinnedContainerRef = shallowRef<HTMLElement>();
112
120
  const unpinnedContainerRef = shallowRef<HTMLElement>();
113
121
 
114
122
  // version fix problem with sync between data and rendered values
115
- const getKey = (item: T, index: number) => {
116
- return `${versionRef.value}-${props.getItemKey(item, index)}`;
123
+ const getKey = (entry: ItemEntry) => {
124
+ return `${versionRef.value}-${props.getItemKey(entry[1], entry[0])}`;
117
125
  };
118
126
  const pinnedKeysRef = computed(() => pinnedItemsRef.value.map(getKey));
119
127
  const unpinnedKeysRef = computed(() => unpinnedItemsRef.value.map(getKey));
@@ -151,7 +159,7 @@ createSortable(
151
159
  function createSortable(
152
160
  toggler: ShallowRef<boolean>,
153
161
  elRef: ShallowRef<undefined | HTMLElement>,
154
- itemsRef: ShallowRef<T[]>,
162
+ itemsRef: ShallowRef<ItemEntry[]>,
155
163
  getOffset: () => number,
156
164
  ) {
157
165
  const sortable = useSortable(elRef, itemsRef, {
@@ -195,7 +203,7 @@ function moveItems(oldIndex: number, newIndex: number, afterUpdateDom: boolean)
195
203
  const preventDefault = props.onSort?.(oldIndex, newIndex) === false;
196
204
 
197
205
  if (!preventDefault) {
198
- moveElements(itemsRef.value, oldIndex, newIndex);
206
+ itemsRef.value = moveElements(itemsRef.value, oldIndex, newIndex);
199
207
  }
200
208
  }
201
209
 
@@ -258,7 +266,8 @@ function handlePin(item: T, index: number) {
258
266
  throw new Error("Pinnable item not found");
259
267
  }
260
268
 
261
- const alreadyPinned = pinnedItemsRef.value.includes(item);
269
+ const alreadyPinned =
270
+ pinnedItemsRef.value.findIndex(([originalIndex]) => originalIndex === index) !== -1;
262
271
 
263
272
  if (props.onPin?.(item, index) === false) return;
264
273
 
@@ -267,7 +276,7 @@ function handlePin(item: T, index: number) {
267
276
 
268
277
  function handleRemove(item: T, index: number) {
269
278
  if (props.onRemove?.(item, index) === false) return;
270
- itemsRef.value.splice(index, 1);
279
+ itemsRef.value = [...itemsRef.value.slice(0, index), ...itemsRef.value.slice(index + 1)];
271
280
  }
272
281
 
273
282
  function getClassFunction(
@@ -291,26 +300,26 @@ const getItemClassAfter = getClassFunction(props.itemClassAfter);
291
300
  <div :class="$style.root">
292
301
  <div ref="pinnedContainerRef" :class="$style.list">
293
302
  <PlElementListItem
294
- v-for="(pinnedItem, pinnedIndex) in pinnedItemsRef"
303
+ v-for="([originalIndex, item], pinnedIndex) in pinnedItemsRef"
295
304
  :key="pinnedKeysRef[pinnedIndex]"
296
- :class="[$style.item, getItemClass(pinnedItem, pinnedIndex)]"
297
- :titleClass="getItemClassTitle(pinnedItem, pinnedIndex)"
298
- :contentClass="getItemClassContent(pinnedItem, pinnedIndex)"
299
- :beforeClass="getItemClassBefore(pinnedItem, pinnedIndex)"
300
- :afterClass="getItemClassAfter(pinnedItem, pinnedIndex)"
301
- :index="pinnedIndex"
302
- :item="pinnedItem"
305
+ :class="[$style.item, getItemClass(item, originalIndex)]"
306
+ :titleClass="getItemClassTitle(item, originalIndex)"
307
+ :contentClass="getItemClassContent(item, originalIndex)"
308
+ :beforeClass="getItemClassBefore(item, originalIndex)"
309
+ :afterClass="getItemClassAfter(item, originalIndex)"
310
+ :index="originalIndex"
311
+ :item="item"
303
312
  :showDragHandle="dndSortingEnabled"
304
- :isActive="isActiveItem(pinnedItem, pinnedIndex)"
305
- :isDraggable="isDraggableItem(pinnedItem, pinnedIndex)"
306
- :isRemovable="isRemovableItem(pinnedItem, pinnedIndex)"
307
- :isToggable="isToggableItem(pinnedItem, pinnedIndex)"
308
- :isToggled="isToggledItem(pinnedItem, pinnedIndex)"
309
- :isPinnable="isPinnableItem(pinnedItem, pinnedIndex)"
313
+ :isActive="isActiveItem(item, originalIndex)"
314
+ :isDraggable="isDraggableItem(item, originalIndex)"
315
+ :isRemovable="isRemovableItem(item, originalIndex)"
316
+ :isToggable="isToggableItem(item, originalIndex)"
317
+ :isToggled="isToggledItem(item, originalIndex)"
318
+ :isPinnable="isPinnableItem(item, originalIndex)"
310
319
  :isPinned="true"
311
- :isExpandable="isExpandableItem(pinnedItem, pinnedIndex)"
312
- :isExpanded="isExpandedItem(pinnedItem, pinnedIndex)"
313
- @click="emits('itemClick', pinnedItem)"
320
+ :isExpandable="isExpandableItem(item, originalIndex)"
321
+ :isExpanded="isExpandedItem(item, originalIndex)"
322
+ @click="emits('itemClick', item)"
314
323
  @remove="handleRemove"
315
324
  @toggle="handleToggle"
316
325
  @pin="handlePin"
@@ -332,26 +341,26 @@ const getItemClassAfter = getClassFunction(props.itemClassAfter);
332
341
  </div>
333
342
  <div v-if="hasUnpinnedItems" ref="unpinnedContainerRef" :class="$style.list">
334
343
  <PlElementListItem
335
- v-for="(unpinnedItem, unpinnedIndex) in unpinnedItemsRef"
344
+ v-for="([originalIndex, item], unpinnedIndex) in unpinnedItemsRef"
336
345
  :key="unpinnedKeysRef[unpinnedIndex]"
337
- :class="[$style.item, getItemClass(unpinnedItem, unpinnedIndex)]"
338
- :titleClass="getItemClassTitle(unpinnedItem, unpinnedIndex)"
339
- :contentClass="getItemClassContent(unpinnedItem, unpinnedIndex)"
340
- :beforeClass="getItemClassBefore(unpinnedItem, unpinnedIndex)"
341
- :afterClass="getItemClassAfter(unpinnedItem, unpinnedIndex)"
342
- :index="unpinnedIndex + (pinnedItemsRef?.length ?? 0)"
343
- :item="unpinnedItem"
346
+ :class="[$style.item, getItemClass(item, originalIndex)]"
347
+ :titleClass="getItemClassTitle(item, originalIndex)"
348
+ :contentClass="getItemClassContent(item, originalIndex)"
349
+ :beforeClass="getItemClassBefore(item, originalIndex)"
350
+ :afterClass="getItemClassAfter(item, originalIndex)"
351
+ :index="originalIndex"
352
+ :item="item"
344
353
  :showDragHandle="dndSortingEnabled"
345
- :isActive="isActiveItem(unpinnedItem, unpinnedIndex)"
346
- :isDraggable="isDraggableItem(unpinnedItem, unpinnedIndex)"
347
- :isRemovable="isRemovableItem(unpinnedItem, unpinnedIndex)"
348
- :isToggable="isToggableItem(unpinnedItem, unpinnedIndex)"
349
- :isToggled="isToggledItem(unpinnedItem, unpinnedIndex)"
350
- :isPinnable="isPinnableItem(unpinnedItem, unpinnedIndex)"
354
+ :isActive="isActiveItem(item, originalIndex)"
355
+ :isDraggable="isDraggableItem(item, originalIndex)"
356
+ :isRemovable="isRemovableItem(item, originalIndex)"
357
+ :isToggable="isToggableItem(item, originalIndex)"
358
+ :isToggled="isToggledItem(item, originalIndex)"
359
+ :isPinnable="isPinnableItem(item, originalIndex)"
351
360
  :isPinned="false"
352
- :isExpandable="isExpandableItem(unpinnedItem, unpinnedIndex)"
353
- :isExpanded="isExpandedItem(unpinnedItem, unpinnedIndex)"
354
- @click="emits('itemClick', unpinnedItem)"
361
+ :isExpandable="isExpandableItem(item, originalIndex)"
362
+ :isExpanded="isExpandedItem(item, originalIndex)"
363
+ @click="emits('itemClick', item)"
355
364
  @remove="handleRemove"
356
365
  @toggle="handleToggle"
357
366
  @pin="handlePin"
@@ -1,12 +1,13 @@
1
- export const moveElements = <T>(array: T[], from: number, to: number): T[] => {
2
- if (to >= 0 && to < array.length) {
3
- const element = array.splice(from, 1)[0];
4
- array.splice(to, 0, element);
1
+ export const moveElements = <T>(array: readonly T[], from: number, to: number): T[] => {
2
+ const result = [...array];
3
+ if (to >= 0 && to < result.length) {
4
+ const [element] = result.splice(from, 1);
5
+ result.splice(to, 0, element);
5
6
  } else {
6
7
  console.warn(
7
- `Invalid move operation: from ${from} to ${to} in array of length ${array.length}`,
8
+ `Invalid move operation: from ${from} to ${to} in array of length ${result.length}`,
8
9
  );
9
10
  }
10
11
 
11
- return array;
12
+ return result;
12
13
  };
@@ -31,6 +31,7 @@
31
31
  position: absolute;
32
32
  top: 12px;
33
33
  right: 12px;
34
+ z-index: 1;
34
35
  }
35
36
 
36
37
  &.has-title {
@@ -3,7 +3,7 @@ import type { FilterSpecMetadataRecord } from "./types";
3
3
 
4
4
  export const filterUiMetadata = {
5
5
  equal: {
6
- label: "Col = X (Equal)",
6
+ label: "Equals (=)",
7
7
  form: {
8
8
  column: {
9
9
  label: "Column",
@@ -24,7 +24,7 @@ export const filterUiMetadata = {
24
24
  supportedFor: isNumericValueType,
25
25
  },
26
26
  notEqual: {
27
- label: "Col X (Not Equal)",
27
+ label: "Not Equal To ()",
28
28
  form: {
29
29
  column: {
30
30
  label: "Column",
@@ -45,7 +45,7 @@ export const filterUiMetadata = {
45
45
  supportedFor: isNumericValueType,
46
46
  },
47
47
  lessThan: {
48
- label: "Col < X (Less Than)",
48
+ label: "Below (<)",
49
49
  form: {
50
50
  column: {
51
51
  label: "Column",
@@ -66,7 +66,7 @@ export const filterUiMetadata = {
66
66
  supportedFor: isNumericValueType,
67
67
  },
68
68
  greaterThan: {
69
- label: "Col > X (Greater Than)",
69
+ label: "Above (>)",
70
70
  form: {
71
71
  column: {
72
72
  label: "Column",
@@ -87,7 +87,7 @@ export const filterUiMetadata = {
87
87
  supportedFor: isNumericValueType,
88
88
  },
89
89
  lessThanOrEqual: {
90
- label: "Col X (Less Than or Equal)",
90
+ label: "At Most ()",
91
91
  form: {
92
92
  column: {
93
93
  label: "Column",
@@ -108,7 +108,7 @@ export const filterUiMetadata = {
108
108
  supportedFor: isNumericValueType,
109
109
  },
110
110
  greaterThanOrEqual: {
111
- label: "Col X (Greater Than or Equal)",
111
+ label: "At Least ()",
112
112
  form: {
113
113
  column: {
114
114
  label: "Column",
@@ -308,7 +308,7 @@ export const filterUiMetadata = {
308
308
  supportedFor: isNumericValueType,
309
309
  },
310
310
  patternContainSubsequence: {
311
- label: "Col ~ Seq (Contain Subsequence)",
311
+ label: "Contains (~)",
312
312
  form: {
313
313
  column: {
314
314
  label: "Column",
@@ -329,7 +329,7 @@ export const filterUiMetadata = {
329
329
  supportedFor: isStringValueType,
330
330
  },
331
331
  patternNotContainSubsequence: {
332
- label: "Col ≁ Seq (Not Contain Subsequence)",
332
+ label: "Does Not Contain (≁)",
333
333
  form: {
334
334
  column: {
335
335
  label: "Column",
@@ -350,7 +350,7 @@ export const filterUiMetadata = {
350
350
  supportedFor: isStringValueType,
351
351
  },
352
352
  patternEquals: {
353
- label: "Col = Seq (Equals)",
353
+ label: "Equals (=)",
354
354
  form: {
355
355
  column: {
356
356
  label: "Column",
@@ -371,7 +371,7 @@ export const filterUiMetadata = {
371
371
  supportedFor: isStringValueType,
372
372
  },
373
373
  patternNotEquals: {
374
- label: "Col Seq (Not Equal)",
374
+ label: "Not Equal To ()",
375
375
  form: {
376
376
  column: {
377
377
  label: "Column",
@@ -392,7 +392,7 @@ export const filterUiMetadata = {
392
392
  supportedFor: isStringValueType,
393
393
  },
394
394
  isNA: {
395
- label: "Is NA",
395
+ label: "Is Empty (NA)",
396
396
  form: {
397
397
  column: {
398
398
  label: "Column",
@@ -408,7 +408,7 @@ export const filterUiMetadata = {
408
408
  supportedFor: () => true,
409
409
  },
410
410
  isNotNA: {
411
- label: "Is Not NA",
411
+ label: "Is Not Empty (≠ NA)",
412
412
  form: {
413
413
  column: {
414
414
  label: "Column",
@@ -472,7 +472,7 @@ export const filterUiMetadata = {
472
472
  supportedFor: () => false,
473
473
  },
474
474
  patternMatchesRegularExpression: {
475
- label: "Col ~ X (Matches Regular Expression)",
475
+ label: "Matches Regex (.*)",
476
476
  form: {
477
477
  column: {
478
478
  label: "Column",
@@ -493,7 +493,7 @@ export const filterUiMetadata = {
493
493
  supportedFor: isStringValueType,
494
494
  },
495
495
  patternFuzzyContainSubsequence: {
496
- label: "Col ~ Seq (Fuzzy Contain Subsequence)",
496
+ label: "Contains Approximately (Fuzzy ~)",
497
497
  form: {
498
498
  column: {
499
499
  label: "Column",
@@ -514,7 +514,7 @@ export const filterUiMetadata = {
514
514
  supportedFor: isStringValueType,
515
515
  },
516
516
  inSet: {
517
- label: "Col Set (In Set)",
517
+ label: "In List ()",
518
518
  form: {
519
519
  column: {
520
520
  label: "Column",
@@ -535,7 +535,7 @@ export const filterUiMetadata = {
535
535
  supportedFor: isStringValueType,
536
536
  },
537
537
  notInSet: {
538
- label: "Col Set (Not In Set)",
538
+ label: "Not In List ()",
539
539
  form: {
540
540
  column: {
541
541
  label: "Column",