sodas-validation-ui 0.3.1 → 0.5.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.
@@ -264,7 +264,7 @@ function G({ rule: e, index: t, onRemove: m, onCommonChange: l, forceUpdate: n,
264
264
  /* @__PURE__ */ a(
265
265
  S,
266
266
  {
267
- variant: "outline-danger",
267
+ variant: "danger",
268
268
  size: "sm",
269
269
  onClick: m,
270
270
  "aria-label": `Remove rule ${t + 1}`,
@@ -490,7 +490,7 @@ function ae({
490
490
  /* @__PURE__ */ a(
491
491
  S,
492
492
  {
493
- variant: "outline-danger",
493
+ variant: "danger",
494
494
  size: "sm",
495
495
  onClick: () => n(t),
496
496
  "aria-label": `Remove column ${e}`,
@@ -606,7 +606,7 @@ function B({ validationRules: e }) {
606
606
  /* @__PURE__ */ a(
607
607
  S,
608
608
  {
609
- variant: "outline-secondary",
609
+ variant: "secondary",
610
610
  size: "sm",
611
611
  onClick: () => N.current?.click(),
612
612
  "aria-label": "Initialize from CSV file",
@@ -769,7 +769,7 @@ function le({ node: e, index: t, onRemove: m, onFieldChange: l }) {
769
769
  /* @__PURE__ */ a(
770
770
  S,
771
771
  {
772
- variant: "outline-danger",
772
+ variant: "danger",
773
773
  size: "sm",
774
774
  onClick: m,
775
775
  "aria-label": `Remove node ${t + 1}`,
@@ -1 +1 @@
1
- (function(f,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("react/jsx-runtime"),require("react"),require("react-bootstrap"),require("sodas-sdk")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","react-bootstrap","sodas-sdk"],e):(f=typeof globalThis<"u"?globalThis:f||self,e(f.SodasValidationUI={},f.jsxRuntime,f.React,f.ReactBootstrap,f.sodasSdk))})(this,(function(f,e,v,i,o){"use strict";const O={[o.VALIDATION_TYPE.DATA_TYPE]:"Data Type",[o.VALIDATION_TYPE.RANGE]:"Range",[o.VALIDATION_TYPE.PATTERN]:"Pattern",[o.VALIDATION_TYPE.UNIQUENESS]:"Uniqueness",[o.VALIDATION_TYPE.CUSTOM]:"Custom",[o.VALIDATION_TYPE.COMPLETENESS]:"Completeness",[o.VALIDATION_TYPE.LENGTH]:"Length",[o.VALIDATION_TYPE.ALLOWED_VALUES]:"Allowed Values",[o.VALIDATION_TYPE.OUTLIER]:"Outlier",[o.VALIDATION_TYPE.STATISTICAL]:"Statistical"},P=Object.entries(o.COMPARISION_OPERATOR).map(([a,l])=>({value:l,label:a})),M=Object.entries(o.CUSTOM_CONDITION_TYPE).map(([a,l])=>({value:l,label:a})),w=Object.entries(o.OUTLIER_METHOD).map(([a,l])=>({value:l,label:a})),Y=Object.entries(o.EXPECTED_TYPE).map(([a,l])=>({value:l,label:a})),S=Object.entries(o.DATETIME_FORMAT_TYPE).map(([a,l])=>({value:l,label:a}));function C({label:a,value:l="",type:u="text",onChange:s,options:n,checkbox:t}){return n?e.jsxs(i.Form.Group,{className:"mb-0 sodas-validation-ui__field",children:[e.jsx(i.Form.Label,{children:a}),e.jsx(i.Form.Select,{size:"sm",value:l,onChange:c=>s(c.target.value),"aria-label":a,children:n.map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))})]}):u==="checkbox"||t?e.jsx(i.Form.Group,{className:"mb-0 sodas-validation-ui__field sodas-validation-ui__field--checkbox",children:e.jsx(i.Form.Check,{type:"checkbox",label:a,checked:!!l,onChange:c=>s(c.target.checked),"aria-label":a})}):e.jsxs(i.Form.Group,{className:"mb-0 sodas-validation-ui__field",children:[e.jsx(i.Form.Label,{children:a}),e.jsx(i.Form.Control,{size:"sm",type:u,value:l,onChange:c=>s(c.target.value),"aria-label":a})]})}function q({rule:a,type:l,forceUpdate:u}){const s=(n,t)=>{typeof n=="function"&&n.call(a,t),u()};switch(l){case o.VALIDATION_TYPE.UNIQUENESS:return e.jsx(C,{label:"Unique",type:"checkbox",value:a.getUnique,onChange:n=>s(a.setUnique,!!n),checkbox:!0});case o.VALIDATION_TYPE.PATTERN:return e.jsx(C,{label:"Pattern",value:a.getPattern??"",onChange:n=>s(a.setPattern,n)});case o.VALIDATION_TYPE.RANGE:return e.jsxs(e.Fragment,{children:[e.jsx(C,{label:"Min value",type:"number",value:String(a.getMinValue??0),onChange:n=>s(a.setMinValue,Number(n)||0)}),e.jsx(C,{label:"Max value",type:"number",value:String(a.getMaxValue??0),onChange:n=>s(a.setMaxValue,Number(n)||0)})]});case o.VALIDATION_TYPE.LENGTH:return e.jsxs(e.Fragment,{children:[e.jsx(C,{label:"Min length",type:"number",value:String(a.getMinLength??0),onChange:n=>s(a.setMinLength,Number(n)||0)}),e.jsx(C,{label:"Max length",type:"number",value:String(a.getMaxLength??0),onChange:n=>s(a.setMaxLength,Number(n)||0)})]});case o.VALIDATION_TYPE.ALLOWED_VALUES:{const n=a.getAllowedValues??[],t=Array.isArray(n)?n.join(", "):"";return e.jsx(C,{label:"Allowed values (comma-separated)",value:t,onChange:c=>s(a.setAllowedValues,c.split(",").map(g=>g.trim()).filter(Boolean))})}case o.VALIDATION_TYPE.COMPLETENESS:return e.jsx(C,{label:"Min completeness",type:"number",value:String(a.getMinCompleteness??0),onChange:n=>s(a.setMinCompleteness,Number(n)||0)});case o.VALIDATION_TYPE.DATA_TYPE:{const n=a.getExpectedType??o.EXPECTED_TYPE.STRING;return e.jsxs(e.Fragment,{children:[e.jsx(C,{label:"Expected type",value:n,options:Y,onChange:t=>s(a.setExpectedType,t)}),n===o.EXPECTED_TYPE.DATETIME&&e.jsx(C,{label:"Datetime format",value:a.getDatetimeFormat??o.DATETIME_FORMAT_TYPE.YYYY_MM_DD_HH_MM_SS,options:S,onChange:t=>s(a.setDatetimeFormat,t)})]})}case o.VALIDATION_TYPE.OUTLIER:return e.jsxs(e.Fragment,{children:[e.jsx(C,{label:"Method",value:a.getMethod??o.OUTLIER_METHOD.Z_SCORE,options:w,onChange:n=>s(a.setMethod,n)}),e.jsx(C,{label:"Threshold",type:"number",value:String(a.getThreshold??0),onChange:n=>s(a.setThreshold,Number(n)||0)})]});case o.VALIDATION_TYPE.STATISTICAL:return e.jsxs(e.Fragment,{children:[e.jsx(C,{label:"Check",value:a.getCheck??"",onChange:n=>s(a.setCheck,n)}),e.jsx(C,{label:"Threshold",type:"number",value:String(a.getThreshold??0),onChange:n=>s(a.setThreshold,Number(n)||0)}),e.jsx(C,{label:"Comparison",value:a.getComparision??o.COMPARISION_OPERATOR.EQUAL,options:P,onChange:n=>s(a.setComparision,n)})]});case o.VALIDATION_TYPE.CUSTOM:{const n=a.getCondition??{};return e.jsxs(e.Fragment,{children:[e.jsx(C,{label:"Condition type",value:n.type??o.CUSTOM_CONDITION_TYPE.ALL,options:M,onChange:t=>s(a.setCondition,{...n,type:t})}),e.jsx(C,{label:"Threshold (threholder)",type:"number",value:String(n.threholder??0),onChange:t=>s(a.setCondition,{...n,threholder:Number(t)||0})}),e.jsx(C,{label:"Comparison",value:n.comparision??o.COMPARISION_OPERATOR.EQUAL,options:P,onChange:t=>s(a.setCondition,{...n,comparision:t})})]})}default:return null}}function F({rule:a,index:l,onRemove:u,onCommonChange:s,forceUpdate:n,showColumn:t=!0}){const c=a.getType;return e.jsx(i.Card,{className:"sodas-validation-ui__rule-card",children:e.jsxs(i.Card.Body,{children:[e.jsxs("div",{className:"d-flex justify-content-between align-items-center mb-2",children:[e.jsx(i.Card.Title,{className:"mb-0 fs-6",children:O[c]??c}),e.jsx(i.Button,{variant:"outline-danger",size:"sm",onClick:u,"aria-label":`Remove rule ${l+1}`,children:"Remove"})]}),e.jsxs("div",{className:"d-flex flex-wrap gap-2 align-items-end sodas-validation-ui__rule-fields-row",children:[e.jsxs("div",{className:"d-flex flex-wrap gap-2 sodas-validation-ui__fields",children:[t&&e.jsx(C,{label:"Column",value:a.getColumn,onChange:g=>s(a,"column",g)}),e.jsx(C,{label:"Name",value:a.getName,onChange:g=>s(a,"name",g)})]}),e.jsx("div",{className:"d-flex flex-wrap gap-2 sodas-validation-ui__type-fields",children:e.jsx(q,{rule:a,type:c,forceUpdate:n})})]})]})})}function U(){const[,a]=v.useState(0);return v.useCallback(()=>a(l=>l+1),[])}function D({validationRules:a}){const l=U(),[u,s]=v.useState(""),n=r=>{if(!Array.isArray(a))return;const m=o.createRule(r);a.push(m),l()},t=()=>{u&&n(u)},c=r=>{Array.isArray(a)&&(a.splice(r,1),l())},g=(r,m,T)=>{m==="column"?r.setColumn(T):m==="name"&&r.setName(T),l()};if(!Array.isArray(a))return e.jsx("div",{className:"alert alert-danger sodas-validation-ui sodas-validation-ui--empty",children:"validationRules must be an array"});const _=new Map;a.forEach((r,m)=>{const T=r.getType;_.has(T)||_.set(T,[]),_.get(T).push({rule:r,index:m})});const p=[];return a.forEach(r=>{const m=r.getType;p.includes(m)||p.push(m)}),e.jsxs("div",{className:"sodas-validation-ui sodas-validation-ui--type-based",children:[e.jsxs("div",{className:"d-flex align-items-center gap-2 flex-wrap mb-3 sodas-validation-ui__toolbar",children:[e.jsx(i.Form.Label,{className:"mb-0 fw-semibold",children:"Add rule:"}),e.jsxs(i.Form.Select,{className:"sodas-validation-ui__add-select",value:u,onChange:r=>s(r.target.value),"aria-label":"Validation rule type",children:[e.jsx("option",{value:"",children:"-- Select type --"}),Object.entries(O).map(([r,m])=>e.jsx("option",{value:r,children:m},r))]}),e.jsx(i.Button,{variant:"primary",size:"sm",onClick:t,disabled:!u,"aria-label":"Append rule",children:"Append"})]}),e.jsx("div",{className:"sodas-validation-ui__sections",children:p.map(r=>{const m=_.get(r)??[];return e.jsxs("section",{className:"card mb-3 sodas-validation-ui__section",children:[e.jsx("div",{className:"card-header",children:e.jsx("h5",{className:"mb-0 card-title",children:O[r]??r})}),e.jsx("ul",{className:"list-unstyled mb-0 p-2 sodas-validation-ui__list",children:m.map(({rule:T,index:d})=>e.jsx("li",{className:"sodas-validation-ui__rule mb-2",children:e.jsx(F,{rule:T,index:d,onRemove:()=>c(d),onCommonChange:g,forceUpdate:l,showColumn:!0})},d))})]},r)})}),a.length===0&&e.jsx("p",{className:"text-muted small sodas-validation-ui__empty",children:"No rules. Select a type and click Append to add one."})]})}function E(a,l){if(!Array.isArray(l))return;const u=a.toValidationRules();l.length=0,l.push(...u)}function G(){const[,a]=v.useState(0);return v.useCallback(()=>a(l=>l+1),[])}function x({validationRules:a}){const[l,u]=v.useState(()=>Array.isArray(a)?o.ColumnGroupedValidationRules.fromValidationRules(a):o.ColumnGroupedValidationRules.fromValidationRules([])),s=G(),[n,t]=v.useState(0);if(!Array.isArray(a))return e.jsx("div",{className:"alert alert-danger sodas-validation-ui sodas-validation-ui--empty",children:"validationRules must be an array"});const c=l.getColumnNames(),g=()=>{const d=`New Column ${n+1}`;t(b=>b+1),u(b=>{const N=o.ColumnGroupedValidationRules.fromValidationRules(b.toValidationRules());return N.appendColumn(d,[]),E(N,a),N})},_=d=>{u(b=>{const N=o.ColumnGroupedValidationRules.fromValidationRules(b.toValidationRules()),y=N.getColumnNames();return d>=0&&d<y.length&&(N.removeColumn(d),E(N,a)),N})},p=(d,b)=>{const N=String(b).trim();N!==""&&u(y=>{const h=o.ColumnGroupedValidationRules.fromValidationRules(y.toValidationRules()),A=h.getColumnNames();if(d>=0&&d<A.length)try{h.setColumnName(d,N),E(h,a)}catch{}return h})},r=(d,b)=>{const N=o.createRule(b);N.setColumn(d),u(y=>{const h=o.ColumnGroupedValidationRules.fromValidationRules(y.toValidationRules());return h.getColumnNames().includes(d)?h.getRules(d).push(N):h.appendColumn(d,[N]),E(h,a),h})},m=(d,b)=>{u(N=>{const y=o.ColumnGroupedValidationRules.fromValidationRules(N.toValidationRules()),h=y.getRules(d),A=h.indexOf(b);return A!==-1&&(h.splice(A,1),E(y,a)),y})},T=(d,b,N)=>{b==="column"?d.setColumn(N):b==="name"&&d.setName(N),s()};return e.jsxs("div",{className:"sodas-validation-ui sodas-validation-ui--columned",children:[e.jsx("div",{className:"d-flex mb-3 sodas-validation-ui__toolbar",children:e.jsx(i.Button,{variant:"primary",size:"sm",onClick:g,"aria-label":"Add column section",children:"Add column"})}),e.jsx("div",{className:"sodas-validation-ui__sections",children:c.map((d,b)=>e.jsx(j,{columnName:d,columnIndex:b,rules:l.getRules(d),onRenameColumn:p,onRemoveColumn:_,onAddRule:r,onRemoveRule:m,onCommonChange:T,forceUpdate:s},b))}),c.length===0&&e.jsx("p",{className:"text-muted small sodas-validation-ui__empty",children:'No columns. Click "Add column" to add a column section.'})]})}function j({columnName:a,columnIndex:l,rules:u,onRenameColumn:s,onRemoveColumn:n,onAddRule:t,onRemoveRule:c,onCommonChange:g,forceUpdate:_}){const[p,r]=v.useState(""),[m,T]=v.useState(a),[d,b]=v.useState(!1);v.useEffect(()=>{T(a)},[a]);const N=()=>{b(!1);const h=m.trim();h!==""&&h!==a?s(l,h):T(a)},y=h=>{h.key==="Enter"&&h.target.blur()};return e.jsxs(i.Card,{className:"mb-3 sodas-validation-ui__section sodas-validation-ui__section--column",children:[e.jsxs(i.Card.Header,{className:"d-flex justify-content-between align-items-start gap-2 flex-wrap",children:[e.jsxs("div",{className:"flex-grow-1 min-w-0",children:[e.jsx(i.Form.Label,{className:"small fw-semibold text-muted mb-1",children:"Column Name"}),d?e.jsx(i.Form.Control,{size:"sm",type:"text",value:m,onChange:h=>T(h.target.value),onBlur:N,onKeyDown:y,"aria-label":"Column name",autoFocus:!0}):e.jsx("h5",{className:"mb-0 card-title cursor-pointer rounded p-1 sodas-validation-ui__section-title-editable",onClick:()=>b(!0),onFocus:()=>b(!0),tabIndex:0,role:"button","aria-label":"Edit column name",children:a})]}),e.jsx(i.Button,{variant:"outline-danger",size:"sm",onClick:()=>n(l),"aria-label":`Remove column ${a}`,children:"Remove column"})]}),e.jsxs(i.Card.Body,{children:[e.jsxs("div",{className:"d-flex align-items-center gap-2 flex-wrap mb-2 sodas-validation-ui__toolbar--inline",children:[e.jsx(i.Form.Label,{className:"mb-0 fw-semibold",children:"Add rule:"}),e.jsxs(i.Form.Select,{className:"sodas-validation-ui__add-select",value:p,onChange:h=>r(h.target.value),"aria-label":"Validation rule type",children:[e.jsx("option",{value:"",children:"-- Select type --"}),Object.entries(O).map(([h,A])=>e.jsx("option",{value:h,children:A},h))]}),e.jsx(i.Button,{variant:"primary",size:"sm",onClick:()=>{p&&(t(a,p),r(""))},disabled:!p,"aria-label":"Append rule",children:"Append"})]}),e.jsx("ul",{className:"list-unstyled mb-0 sodas-validation-ui__list",children:u.map((h,A)=>e.jsx("li",{className:"mb-2 sodas-validation-ui__rule",children:e.jsx(F,{rule:h,index:A,onRemove:()=>c(a,h),onCommonChange:g,forceUpdate:_,showColumn:!1})},A))})]})]})}const I="type",V="column";function L({validationRules:a}){const[l,u]=v.useState(I),[s,n]=v.useState(0),[t,c]=v.useState(null),g=v.useRef(null),_=async p=>{const r=p.target.files?.[0];if(p.target.value="",c(null),!!r)try{const T=(await o.ColumnGroupedValidationRules.fromCSVFileBrowser(r)).toValidationRules(),d=a;d.splice(0,d.length,...T),n(b=>b+1)}catch(m){c(m instanceof Error?m.message:String(m))}};return Array.isArray(a)?e.jsxs("div",{className:"sodas-validation-ui sodas-validation-ui--tabs",children:[e.jsxs("div",{className:"d-flex flex-wrap align-items-center justify-content-between gap-2 border-bottom pb-2 mb-3",children:[e.jsxs(i.Nav,{variant:"tabs",activeKey:l,onSelect:p=>p&&u(p),role:"tablist","aria-label":"Editor mode",className:"flex-grow-1",children:[e.jsx(i.Nav.Item,{children:e.jsx(i.Nav.Link,{eventKey:I,role:"tab","aria-selected":l===I,"aria-controls":"validation-rules-editor-panel-type",id:"validation-rules-editor-tab-type",children:"By Type"})}),e.jsx(i.Nav.Item,{children:e.jsx(i.Nav.Link,{eventKey:V,role:"tab","aria-selected":l===V,"aria-controls":"validation-rules-editor-panel-column",id:"validation-rules-editor-tab-column",children:"By Column"})})]}),e.jsxs("div",{className:"d-flex align-items-center gap-2 flex-wrap ms-auto",children:[e.jsx("input",{ref:g,type:"file",accept:".csv,text/csv","aria-label":"Initialize from CSV file",className:"visually-hidden",onChange:_}),e.jsx(i.Button,{variant:"outline-secondary",size:"sm",onClick:()=>g.current?.click(),"aria-label":"Initialize from CSV file",children:"Initialize from CSV"}),t&&e.jsx("span",{className:"text-danger small",role:"alert",children:t})]})]}),e.jsx("div",{id:"validation-rules-editor-panel-type",role:"tabpanel","aria-labelledby":"validation-rules-editor-tab-type",hidden:l!==I,className:"sodas-validation-ui__panel",children:l===I&&e.jsx(D,{validationRules:a},s)}),e.jsx("div",{id:"validation-rules-editor-panel-column",role:"tabpanel","aria-labelledby":"validation-rules-editor-tab-column",hidden:l!==V,className:"sodas-validation-ui__panel",children:l===V&&e.jsx(x,{validationRules:a},s)})]}):e.jsx("div",{className:"alert alert-danger sodas-validation-ui sodas-validation-ui--empty",children:"validationRules must be an array"})}function z(){const[,a]=v.useState(0);return v.useCallback(()=>a(l=>l+1),[])}function H({template:a}){const l=z(),u=v.useRef(a);if(u.current=a,a==null||typeof a!="object")return e.jsx("div",{className:"alert alert-danger template-editor template-editor--empty",children:"template must be an object"});const s=u.current;Array.isArray(s.validationRules)||(s.validationRules=[]);const n=p=>{s.name=p.target.value,l()},t=p=>{s.description=p.target.value,l()},c=s.name??"",g=s.description??"",_=s.validationRules;return e.jsxs("div",{className:"template-editor",children:[e.jsxs(i.Form,{className:"template-editor__meta mb-4",children:[e.jsxs(i.Form.Group,{className:"mb-3",children:[e.jsx(i.Form.Label,{children:"Name"}),e.jsx(i.Form.Control,{type:"text",value:c,onChange:n,placeholder:"Template name","aria-label":"Template name"})]}),e.jsxs(i.Form.Group,{className:"mb-3",children:[e.jsx(i.Form.Label,{children:"Description"}),e.jsx(i.Form.Control,{as:"textarea",rows:3,value:g,onChange:t,placeholder:"Template description","aria-label":"Template description"})]})]}),e.jsxs("div",{className:"template-editor__rules pt-3 border-top",children:[e.jsx("h5",{className:"mb-3",children:"Validation Rules"}),e.jsx(L,{validationRules:_})]})]})}function Q(){const[,a]=v.useState(0);return v.useCallback(()=>a(l=>l+1),[])}function K({qualityRequirement:a}){const l=Q(),u=v.useRef(a);if(u.current=a,a==null||typeof a!="object")return e.jsx("div",{className:"alert alert-danger quality-requirement-editor quality-requirement-editor--empty",children:"qualityRequirement must be an object"});const s=u.current;Array.isArray(s.nodes)||(s.nodes=[]);const n=r=>{s.name=r.target.value,l()},t=()=>{s.nodes.push({node_name:"",hook:"",validation_rules:[]}),l()},c=r=>{s.nodes.splice(r,1),l()},g=(r,m,T)=>{const d=s.nodes[r];d&&(d[m]=T,l())},_=s.name??"",p=s.nodes;return e.jsxs("div",{className:"quality-requirement-editor",children:[e.jsx(i.Form,{className:"quality-requirement-editor__meta mb-4",children:e.jsxs(i.Form.Group,{children:[e.jsx(i.Form.Label,{children:"Name"}),e.jsx(i.Form.Control,{type:"text",value:_,onChange:n,placeholder:"Quality requirement name","aria-label":"Quality requirement name"})]})}),e.jsxs("div",{className:"quality-requirement-editor__nodes pt-3 border-top",children:[e.jsxs("div",{className:"d-flex justify-content-between align-items-center mb-3",children:[e.jsx("h5",{className:"mb-0",children:"Nodes"}),e.jsx(i.Button,{variant:"primary",size:"sm",onClick:t,"aria-label":"Add node",children:"Add node"})]}),p.length===0&&e.jsx("p",{className:"text-muted small quality-requirement-editor__empty-nodes",children:'No nodes. Click "Add node" to add one.'}),e.jsx("ul",{className:"list-unstyled mb-0 quality-requirement-editor__list",children:p.map((r,m)=>e.jsx("li",{className:"quality-requirement-editor__node mb-3",children:e.jsx($,{node:r,index:m,onRemove:()=>c(m),onFieldChange:(T,d)=>g(m,T,d)})},m))})]})]})}function $({node:a,index:l,onRemove:u,onFieldChange:s}){const n=v.useRef(a);n.current=a;const t=n.current;return Array.isArray(t.validation_rules)||(t.validation_rules=[]),e.jsxs(i.Card,{className:"quality-requirement-editor__node-card",children:[e.jsxs(i.Card.Header,{className:"d-flex justify-content-between align-items-center",children:[e.jsxs(i.Card.Title,{className:"mb-0 fs-6",children:["Node ",l+1]}),e.jsx(i.Button,{variant:"outline-danger",size:"sm",onClick:u,"aria-label":`Remove node ${l+1}`,children:"Remove"})]}),e.jsxs(i.Card.Body,{children:[e.jsx(i.Form,{className:"quality-requirement-editor__node-fields mb-3",children:e.jsxs("div",{className:"row g-2",children:[e.jsxs(i.Form.Group,{className:"col-md-6",children:[e.jsx(i.Form.Label,{children:"Node name"}),e.jsx(i.Form.Control,{size:"sm",type:"text",value:t.node_name??"",onChange:c=>s("node_name",c.target.value),placeholder:"node_name","aria-label":"Node name"})]}),e.jsxs(i.Form.Group,{className:"col-md-6",children:[e.jsx(i.Form.Label,{children:"Hook"}),e.jsx(i.Form.Control,{size:"sm",type:"text",value:t.hook??"",onChange:c=>s("hook",c.target.value),placeholder:"hook","aria-label":"Hook"})]})]})}),e.jsxs("div",{className:"quality-requirement-editor__node-rules pt-3 border-top",children:[e.jsx("h6",{className:"mb-2",children:"Validation rules"}),e.jsx(L,{validationRules:t.validation_rules})]})]})]})}f.ColumnedValidationRulesEditor=x,f.QualityRequirementEditor=K,f.TemplateEditor=H,f.TypeBasedValidationRulesEditor=D,f.ValidationRulesEditor=L,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(f,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("react/jsx-runtime"),require("react"),require("react-bootstrap"),require("sodas-sdk")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","react-bootstrap","sodas-sdk"],e):(f=typeof globalThis<"u"?globalThis:f||self,e(f.SodasValidationUI={},f.jsxRuntime,f.React,f.ReactBootstrap,f.sodasSdk))})(this,(function(f,e,v,i,o){"use strict";const O={[o.VALIDATION_TYPE.DATA_TYPE]:"Data Type",[o.VALIDATION_TYPE.RANGE]:"Range",[o.VALIDATION_TYPE.PATTERN]:"Pattern",[o.VALIDATION_TYPE.UNIQUENESS]:"Uniqueness",[o.VALIDATION_TYPE.CUSTOM]:"Custom",[o.VALIDATION_TYPE.COMPLETENESS]:"Completeness",[o.VALIDATION_TYPE.LENGTH]:"Length",[o.VALIDATION_TYPE.ALLOWED_VALUES]:"Allowed Values",[o.VALIDATION_TYPE.OUTLIER]:"Outlier",[o.VALIDATION_TYPE.STATISTICAL]:"Statistical"},P=Object.entries(o.COMPARISION_OPERATOR).map(([a,l])=>({value:l,label:a})),M=Object.entries(o.CUSTOM_CONDITION_TYPE).map(([a,l])=>({value:l,label:a})),w=Object.entries(o.OUTLIER_METHOD).map(([a,l])=>({value:l,label:a})),Y=Object.entries(o.EXPECTED_TYPE).map(([a,l])=>({value:l,label:a})),S=Object.entries(o.DATETIME_FORMAT_TYPE).map(([a,l])=>({value:l,label:a}));function C({label:a,value:l="",type:u="text",onChange:s,options:n,checkbox:t}){return n?e.jsxs(i.Form.Group,{className:"mb-0 sodas-validation-ui__field",children:[e.jsx(i.Form.Label,{children:a}),e.jsx(i.Form.Select,{size:"sm",value:l,onChange:c=>s(c.target.value),"aria-label":a,children:n.map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))})]}):u==="checkbox"||t?e.jsx(i.Form.Group,{className:"mb-0 sodas-validation-ui__field sodas-validation-ui__field--checkbox",children:e.jsx(i.Form.Check,{type:"checkbox",label:a,checked:!!l,onChange:c=>s(c.target.checked),"aria-label":a})}):e.jsxs(i.Form.Group,{className:"mb-0 sodas-validation-ui__field",children:[e.jsx(i.Form.Label,{children:a}),e.jsx(i.Form.Control,{size:"sm",type:u,value:l,onChange:c=>s(c.target.value),"aria-label":a})]})}function q({rule:a,type:l,forceUpdate:u}){const s=(n,t)=>{typeof n=="function"&&n.call(a,t),u()};switch(l){case o.VALIDATION_TYPE.UNIQUENESS:return e.jsx(C,{label:"Unique",type:"checkbox",value:a.getUnique,onChange:n=>s(a.setUnique,!!n),checkbox:!0});case o.VALIDATION_TYPE.PATTERN:return e.jsx(C,{label:"Pattern",value:a.getPattern??"",onChange:n=>s(a.setPattern,n)});case o.VALIDATION_TYPE.RANGE:return e.jsxs(e.Fragment,{children:[e.jsx(C,{label:"Min value",type:"number",value:String(a.getMinValue??0),onChange:n=>s(a.setMinValue,Number(n)||0)}),e.jsx(C,{label:"Max value",type:"number",value:String(a.getMaxValue??0),onChange:n=>s(a.setMaxValue,Number(n)||0)})]});case o.VALIDATION_TYPE.LENGTH:return e.jsxs(e.Fragment,{children:[e.jsx(C,{label:"Min length",type:"number",value:String(a.getMinLength??0),onChange:n=>s(a.setMinLength,Number(n)||0)}),e.jsx(C,{label:"Max length",type:"number",value:String(a.getMaxLength??0),onChange:n=>s(a.setMaxLength,Number(n)||0)})]});case o.VALIDATION_TYPE.ALLOWED_VALUES:{const n=a.getAllowedValues??[],t=Array.isArray(n)?n.join(", "):"";return e.jsx(C,{label:"Allowed values (comma-separated)",value:t,onChange:c=>s(a.setAllowedValues,c.split(",").map(g=>g.trim()).filter(Boolean))})}case o.VALIDATION_TYPE.COMPLETENESS:return e.jsx(C,{label:"Min completeness",type:"number",value:String(a.getMinCompleteness??0),onChange:n=>s(a.setMinCompleteness,Number(n)||0)});case o.VALIDATION_TYPE.DATA_TYPE:{const n=a.getExpectedType??o.EXPECTED_TYPE.STRING;return e.jsxs(e.Fragment,{children:[e.jsx(C,{label:"Expected type",value:n,options:Y,onChange:t=>s(a.setExpectedType,t)}),n===o.EXPECTED_TYPE.DATETIME&&e.jsx(C,{label:"Datetime format",value:a.getDatetimeFormat??o.DATETIME_FORMAT_TYPE.YYYY_MM_DD_HH_MM_SS,options:S,onChange:t=>s(a.setDatetimeFormat,t)})]})}case o.VALIDATION_TYPE.OUTLIER:return e.jsxs(e.Fragment,{children:[e.jsx(C,{label:"Method",value:a.getMethod??o.OUTLIER_METHOD.Z_SCORE,options:w,onChange:n=>s(a.setMethod,n)}),e.jsx(C,{label:"Threshold",type:"number",value:String(a.getThreshold??0),onChange:n=>s(a.setThreshold,Number(n)||0)})]});case o.VALIDATION_TYPE.STATISTICAL:return e.jsxs(e.Fragment,{children:[e.jsx(C,{label:"Check",value:a.getCheck??"",onChange:n=>s(a.setCheck,n)}),e.jsx(C,{label:"Threshold",type:"number",value:String(a.getThreshold??0),onChange:n=>s(a.setThreshold,Number(n)||0)}),e.jsx(C,{label:"Comparison",value:a.getComparision??o.COMPARISION_OPERATOR.EQUAL,options:P,onChange:n=>s(a.setComparision,n)})]});case o.VALIDATION_TYPE.CUSTOM:{const n=a.getCondition??{};return e.jsxs(e.Fragment,{children:[e.jsx(C,{label:"Condition type",value:n.type??o.CUSTOM_CONDITION_TYPE.ALL,options:M,onChange:t=>s(a.setCondition,{...n,type:t})}),e.jsx(C,{label:"Threshold (threholder)",type:"number",value:String(n.threholder??0),onChange:t=>s(a.setCondition,{...n,threholder:Number(t)||0})}),e.jsx(C,{label:"Comparison",value:n.comparision??o.COMPARISION_OPERATOR.EQUAL,options:P,onChange:t=>s(a.setCondition,{...n,comparision:t})})]})}default:return null}}function F({rule:a,index:l,onRemove:u,onCommonChange:s,forceUpdate:n,showColumn:t=!0}){const c=a.getType;return e.jsx(i.Card,{className:"sodas-validation-ui__rule-card",children:e.jsxs(i.Card.Body,{children:[e.jsxs("div",{className:"d-flex justify-content-between align-items-center mb-2",children:[e.jsx(i.Card.Title,{className:"mb-0 fs-6",children:O[c]??c}),e.jsx(i.Button,{variant:"danger",size:"sm",onClick:u,"aria-label":`Remove rule ${l+1}`,children:"Remove"})]}),e.jsxs("div",{className:"d-flex flex-wrap gap-2 align-items-end sodas-validation-ui__rule-fields-row",children:[e.jsxs("div",{className:"d-flex flex-wrap gap-2 sodas-validation-ui__fields",children:[t&&e.jsx(C,{label:"Column",value:a.getColumn,onChange:g=>s(a,"column",g)}),e.jsx(C,{label:"Name",value:a.getName,onChange:g=>s(a,"name",g)})]}),e.jsx("div",{className:"d-flex flex-wrap gap-2 sodas-validation-ui__type-fields",children:e.jsx(q,{rule:a,type:c,forceUpdate:n})})]})]})})}function U(){const[,a]=v.useState(0);return v.useCallback(()=>a(l=>l+1),[])}function D({validationRules:a}){const l=U(),[u,s]=v.useState(""),n=r=>{if(!Array.isArray(a))return;const m=o.createRule(r);a.push(m),l()},t=()=>{u&&n(u)},c=r=>{Array.isArray(a)&&(a.splice(r,1),l())},g=(r,m,T)=>{m==="column"?r.setColumn(T):m==="name"&&r.setName(T),l()};if(!Array.isArray(a))return e.jsx("div",{className:"alert alert-danger sodas-validation-ui sodas-validation-ui--empty",children:"validationRules must be an array"});const _=new Map;a.forEach((r,m)=>{const T=r.getType;_.has(T)||_.set(T,[]),_.get(T).push({rule:r,index:m})});const p=[];return a.forEach(r=>{const m=r.getType;p.includes(m)||p.push(m)}),e.jsxs("div",{className:"sodas-validation-ui sodas-validation-ui--type-based",children:[e.jsxs("div",{className:"d-flex align-items-center gap-2 flex-wrap mb-3 sodas-validation-ui__toolbar",children:[e.jsx(i.Form.Label,{className:"mb-0 fw-semibold",children:"Add rule:"}),e.jsxs(i.Form.Select,{className:"sodas-validation-ui__add-select",value:u,onChange:r=>s(r.target.value),"aria-label":"Validation rule type",children:[e.jsx("option",{value:"",children:"-- Select type --"}),Object.entries(O).map(([r,m])=>e.jsx("option",{value:r,children:m},r))]}),e.jsx(i.Button,{variant:"primary",size:"sm",onClick:t,disabled:!u,"aria-label":"Append rule",children:"Append"})]}),e.jsx("div",{className:"sodas-validation-ui__sections",children:p.map(r=>{const m=_.get(r)??[];return e.jsxs("section",{className:"card mb-3 sodas-validation-ui__section",children:[e.jsx("div",{className:"card-header",children:e.jsx("h5",{className:"mb-0 card-title",children:O[r]??r})}),e.jsx("ul",{className:"list-unstyled mb-0 p-2 sodas-validation-ui__list",children:m.map(({rule:T,index:d})=>e.jsx("li",{className:"sodas-validation-ui__rule mb-2",children:e.jsx(F,{rule:T,index:d,onRemove:()=>c(d),onCommonChange:g,forceUpdate:l,showColumn:!0})},d))})]},r)})}),a.length===0&&e.jsx("p",{className:"text-muted small sodas-validation-ui__empty",children:"No rules. Select a type and click Append to add one."})]})}function E(a,l){if(!Array.isArray(l))return;const u=a.toValidationRules();l.length=0,l.push(...u)}function G(){const[,a]=v.useState(0);return v.useCallback(()=>a(l=>l+1),[])}function x({validationRules:a}){const[l,u]=v.useState(()=>Array.isArray(a)?o.ColumnGroupedValidationRules.fromValidationRules(a):o.ColumnGroupedValidationRules.fromValidationRules([])),s=G(),[n,t]=v.useState(0);if(!Array.isArray(a))return e.jsx("div",{className:"alert alert-danger sodas-validation-ui sodas-validation-ui--empty",children:"validationRules must be an array"});const c=l.getColumnNames(),g=()=>{const d=`New Column ${n+1}`;t(b=>b+1),u(b=>{const N=o.ColumnGroupedValidationRules.fromValidationRules(b.toValidationRules());return N.appendColumn(d,[]),E(N,a),N})},_=d=>{u(b=>{const N=o.ColumnGroupedValidationRules.fromValidationRules(b.toValidationRules()),y=N.getColumnNames();return d>=0&&d<y.length&&(N.removeColumn(d),E(N,a)),N})},p=(d,b)=>{const N=String(b).trim();N!==""&&u(y=>{const h=o.ColumnGroupedValidationRules.fromValidationRules(y.toValidationRules()),A=h.getColumnNames();if(d>=0&&d<A.length)try{h.setColumnName(d,N),E(h,a)}catch{}return h})},r=(d,b)=>{const N=o.createRule(b);N.setColumn(d),u(y=>{const h=o.ColumnGroupedValidationRules.fromValidationRules(y.toValidationRules());return h.getColumnNames().includes(d)?h.getRules(d).push(N):h.appendColumn(d,[N]),E(h,a),h})},m=(d,b)=>{u(N=>{const y=o.ColumnGroupedValidationRules.fromValidationRules(N.toValidationRules()),h=y.getRules(d),A=h.indexOf(b);return A!==-1&&(h.splice(A,1),E(y,a)),y})},T=(d,b,N)=>{b==="column"?d.setColumn(N):b==="name"&&d.setName(N),s()};return e.jsxs("div",{className:"sodas-validation-ui sodas-validation-ui--columned",children:[e.jsx("div",{className:"d-flex mb-3 sodas-validation-ui__toolbar",children:e.jsx(i.Button,{variant:"primary",size:"sm",onClick:g,"aria-label":"Add column section",children:"Add column"})}),e.jsx("div",{className:"sodas-validation-ui__sections",children:c.map((d,b)=>e.jsx(j,{columnName:d,columnIndex:b,rules:l.getRules(d),onRenameColumn:p,onRemoveColumn:_,onAddRule:r,onRemoveRule:m,onCommonChange:T,forceUpdate:s},b))}),c.length===0&&e.jsx("p",{className:"text-muted small sodas-validation-ui__empty",children:'No columns. Click "Add column" to add a column section.'})]})}function j({columnName:a,columnIndex:l,rules:u,onRenameColumn:s,onRemoveColumn:n,onAddRule:t,onRemoveRule:c,onCommonChange:g,forceUpdate:_}){const[p,r]=v.useState(""),[m,T]=v.useState(a),[d,b]=v.useState(!1);v.useEffect(()=>{T(a)},[a]);const N=()=>{b(!1);const h=m.trim();h!==""&&h!==a?s(l,h):T(a)},y=h=>{h.key==="Enter"&&h.target.blur()};return e.jsxs(i.Card,{className:"mb-3 sodas-validation-ui__section sodas-validation-ui__section--column",children:[e.jsxs(i.Card.Header,{className:"d-flex justify-content-between align-items-start gap-2 flex-wrap",children:[e.jsxs("div",{className:"flex-grow-1 min-w-0",children:[e.jsx(i.Form.Label,{className:"small fw-semibold text-muted mb-1",children:"Column Name"}),d?e.jsx(i.Form.Control,{size:"sm",type:"text",value:m,onChange:h=>T(h.target.value),onBlur:N,onKeyDown:y,"aria-label":"Column name",autoFocus:!0}):e.jsx("h5",{className:"mb-0 card-title cursor-pointer rounded p-1 sodas-validation-ui__section-title-editable",onClick:()=>b(!0),onFocus:()=>b(!0),tabIndex:0,role:"button","aria-label":"Edit column name",children:a})]}),e.jsx(i.Button,{variant:"danger",size:"sm",onClick:()=>n(l),"aria-label":`Remove column ${a}`,children:"Remove column"})]}),e.jsxs(i.Card.Body,{children:[e.jsxs("div",{className:"d-flex align-items-center gap-2 flex-wrap mb-2 sodas-validation-ui__toolbar--inline",children:[e.jsx(i.Form.Label,{className:"mb-0 fw-semibold",children:"Add rule:"}),e.jsxs(i.Form.Select,{className:"sodas-validation-ui__add-select",value:p,onChange:h=>r(h.target.value),"aria-label":"Validation rule type",children:[e.jsx("option",{value:"",children:"-- Select type --"}),Object.entries(O).map(([h,A])=>e.jsx("option",{value:h,children:A},h))]}),e.jsx(i.Button,{variant:"primary",size:"sm",onClick:()=>{p&&(t(a,p),r(""))},disabled:!p,"aria-label":"Append rule",children:"Append"})]}),e.jsx("ul",{className:"list-unstyled mb-0 sodas-validation-ui__list",children:u.map((h,A)=>e.jsx("li",{className:"mb-2 sodas-validation-ui__rule",children:e.jsx(F,{rule:h,index:A,onRemove:()=>c(a,h),onCommonChange:g,forceUpdate:_,showColumn:!1})},A))})]})]})}const I="type",V="column";function L({validationRules:a}){const[l,u]=v.useState(I),[s,n]=v.useState(0),[t,c]=v.useState(null),g=v.useRef(null),_=async p=>{const r=p.target.files?.[0];if(p.target.value="",c(null),!!r)try{const T=(await o.ColumnGroupedValidationRules.fromCSVFileBrowser(r)).toValidationRules(),d=a;d.splice(0,d.length,...T),n(b=>b+1)}catch(m){c(m instanceof Error?m.message:String(m))}};return Array.isArray(a)?e.jsxs("div",{className:"sodas-validation-ui sodas-validation-ui--tabs",children:[e.jsxs("div",{className:"d-flex flex-wrap align-items-center justify-content-between gap-2 border-bottom pb-2 mb-3",children:[e.jsxs(i.Nav,{variant:"tabs",activeKey:l,onSelect:p=>p&&u(p),role:"tablist","aria-label":"Editor mode",className:"flex-grow-1",children:[e.jsx(i.Nav.Item,{children:e.jsx(i.Nav.Link,{eventKey:I,role:"tab","aria-selected":l===I,"aria-controls":"validation-rules-editor-panel-type",id:"validation-rules-editor-tab-type",children:"By Type"})}),e.jsx(i.Nav.Item,{children:e.jsx(i.Nav.Link,{eventKey:V,role:"tab","aria-selected":l===V,"aria-controls":"validation-rules-editor-panel-column",id:"validation-rules-editor-tab-column",children:"By Column"})})]}),e.jsxs("div",{className:"d-flex align-items-center gap-2 flex-wrap ms-auto",children:[e.jsx("input",{ref:g,type:"file",accept:".csv,text/csv","aria-label":"Initialize from CSV file",className:"visually-hidden",onChange:_}),e.jsx(i.Button,{variant:"secondary",size:"sm",onClick:()=>g.current?.click(),"aria-label":"Initialize from CSV file",children:"Initialize from CSV"}),t&&e.jsx("span",{className:"text-danger small",role:"alert",children:t})]})]}),e.jsx("div",{id:"validation-rules-editor-panel-type",role:"tabpanel","aria-labelledby":"validation-rules-editor-tab-type",hidden:l!==I,className:"sodas-validation-ui__panel",children:l===I&&e.jsx(D,{validationRules:a},s)}),e.jsx("div",{id:"validation-rules-editor-panel-column",role:"tabpanel","aria-labelledby":"validation-rules-editor-tab-column",hidden:l!==V,className:"sodas-validation-ui__panel",children:l===V&&e.jsx(x,{validationRules:a},s)})]}):e.jsx("div",{className:"alert alert-danger sodas-validation-ui sodas-validation-ui--empty",children:"validationRules must be an array"})}function z(){const[,a]=v.useState(0);return v.useCallback(()=>a(l=>l+1),[])}function H({template:a}){const l=z(),u=v.useRef(a);if(u.current=a,a==null||typeof a!="object")return e.jsx("div",{className:"alert alert-danger template-editor template-editor--empty",children:"template must be an object"});const s=u.current;Array.isArray(s.validationRules)||(s.validationRules=[]);const n=p=>{s.name=p.target.value,l()},t=p=>{s.description=p.target.value,l()},c=s.name??"",g=s.description??"",_=s.validationRules;return e.jsxs("div",{className:"template-editor",children:[e.jsxs(i.Form,{className:"template-editor__meta mb-4",children:[e.jsxs(i.Form.Group,{className:"mb-3",children:[e.jsx(i.Form.Label,{children:"Name"}),e.jsx(i.Form.Control,{type:"text",value:c,onChange:n,placeholder:"Template name","aria-label":"Template name"})]}),e.jsxs(i.Form.Group,{className:"mb-3",children:[e.jsx(i.Form.Label,{children:"Description"}),e.jsx(i.Form.Control,{as:"textarea",rows:3,value:g,onChange:t,placeholder:"Template description","aria-label":"Template description"})]})]}),e.jsxs("div",{className:"template-editor__rules pt-3 border-top",children:[e.jsx("h5",{className:"mb-3",children:"Validation Rules"}),e.jsx(L,{validationRules:_})]})]})}function Q(){const[,a]=v.useState(0);return v.useCallback(()=>a(l=>l+1),[])}function K({qualityRequirement:a}){const l=Q(),u=v.useRef(a);if(u.current=a,a==null||typeof a!="object")return e.jsx("div",{className:"alert alert-danger quality-requirement-editor quality-requirement-editor--empty",children:"qualityRequirement must be an object"});const s=u.current;Array.isArray(s.nodes)||(s.nodes=[]);const n=r=>{s.name=r.target.value,l()},t=()=>{s.nodes.push({node_name:"",hook:"",validation_rules:[]}),l()},c=r=>{s.nodes.splice(r,1),l()},g=(r,m,T)=>{const d=s.nodes[r];d&&(d[m]=T,l())},_=s.name??"",p=s.nodes;return e.jsxs("div",{className:"quality-requirement-editor",children:[e.jsx(i.Form,{className:"quality-requirement-editor__meta mb-4",children:e.jsxs(i.Form.Group,{children:[e.jsx(i.Form.Label,{children:"Name"}),e.jsx(i.Form.Control,{type:"text",value:_,onChange:n,placeholder:"Quality requirement name","aria-label":"Quality requirement name"})]})}),e.jsxs("div",{className:"quality-requirement-editor__nodes pt-3 border-top",children:[e.jsxs("div",{className:"d-flex justify-content-between align-items-center mb-3",children:[e.jsx("h5",{className:"mb-0",children:"Nodes"}),e.jsx(i.Button,{variant:"primary",size:"sm",onClick:t,"aria-label":"Add node",children:"Add node"})]}),p.length===0&&e.jsx("p",{className:"text-muted small quality-requirement-editor__empty-nodes",children:'No nodes. Click "Add node" to add one.'}),e.jsx("ul",{className:"list-unstyled mb-0 quality-requirement-editor__list",children:p.map((r,m)=>e.jsx("li",{className:"quality-requirement-editor__node mb-3",children:e.jsx($,{node:r,index:m,onRemove:()=>c(m),onFieldChange:(T,d)=>g(m,T,d)})},m))})]})]})}function $({node:a,index:l,onRemove:u,onFieldChange:s}){const n=v.useRef(a);n.current=a;const t=n.current;return Array.isArray(t.validation_rules)||(t.validation_rules=[]),e.jsxs(i.Card,{className:"quality-requirement-editor__node-card",children:[e.jsxs(i.Card.Header,{className:"d-flex justify-content-between align-items-center",children:[e.jsxs(i.Card.Title,{className:"mb-0 fs-6",children:["Node ",l+1]}),e.jsx(i.Button,{variant:"danger",size:"sm",onClick:u,"aria-label":`Remove node ${l+1}`,children:"Remove"})]}),e.jsxs(i.Card.Body,{children:[e.jsx(i.Form,{className:"quality-requirement-editor__node-fields mb-3",children:e.jsxs("div",{className:"row g-2",children:[e.jsxs(i.Form.Group,{className:"col-md-6",children:[e.jsx(i.Form.Label,{children:"Node name"}),e.jsx(i.Form.Control,{size:"sm",type:"text",value:t.node_name??"",onChange:c=>s("node_name",c.target.value),placeholder:"node_name","aria-label":"Node name"})]}),e.jsxs(i.Form.Group,{className:"col-md-6",children:[e.jsx(i.Form.Label,{children:"Hook"}),e.jsx(i.Form.Control,{size:"sm",type:"text",value:t.hook??"",onChange:c=>s("hook",c.target.value),placeholder:"hook","aria-label":"Hook"})]})]})}),e.jsxs("div",{className:"quality-requirement-editor__node-rules pt-3 border-top",children:[e.jsx("h6",{className:"mb-2",children:"Validation rules"}),e.jsx(L,{validationRules:t.validation_rules})]})]})]})}f.ColumnedValidationRulesEditor=x,f.QualityRequirementEditor=K,f.TemplateEditor=H,f.TypeBasedValidationRulesEditor=D,f.ValidationRulesEditor=L,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sodas-validation-ui",
3
- "version": "0.3.1",
3
+ "version": "0.5.0",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "vite",
@@ -8,7 +8,8 @@
8
8
  "lint": "eslint .",
9
9
  "preview": "vite preview",
10
10
  "storybook": "storybook dev -p 6006",
11
- "build-storybook": "storybook build"
11
+ "build-storybook": "storybook build",
12
+ "prepublishOnly": "npm run build"
12
13
  },
13
14
  "main": "dist/sodas-validation-ui.umd.cjs",
14
15
  "module": "dist/sodas-validation-ui.js",