@servicetitan/dte-unlayer 0.112.0 → 0.113.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.
- package/dist/display-conditions/ConditionRow.d.ts.map +1 -1
- package/dist/display-conditions/ConditionRow.js +0 -1
- package/dist/display-conditions/ConditionRow.js.map +1 -1
- package/dist/display-conditions/schemaDataPoints.d.ts.map +1 -1
- package/dist/display-conditions/schemaDataPoints.js +0 -1
- package/dist/display-conditions/schemaDataPoints.js.map +1 -1
- package/dist/display-conditions/types.d.ts +0 -1
- package/dist/display-conditions/types.d.ts.map +1 -1
- package/dist/display-conditions/types.js.map +1 -1
- package/package.json +1 -1
- package/src/display-conditions/ConditionRow.tsx +0 -1
- package/src/display-conditions/schemaDataPoints.ts +0 -1
- package/src/display-conditions/types.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionRow.d.ts","sourceRoot":"","sources":["../../src/display-conditions/ConditionRow.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAoB,eAAe,EAA0C,MAAM,SAAS,CAAC;AACpG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,eAAe,CAAC;IAC3B,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAsBD,wBAAgB,YAAY,CAAC,EACzB,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,QAAQ,GACX,EAAE,QAAQ,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"ConditionRow.d.ts","sourceRoot":"","sources":["../../src/display-conditions/ConditionRow.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAoB,eAAe,EAA0C,MAAM,SAAS,CAAC;AACpG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,eAAe,CAAC;IAC3B,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAsBD,wBAAgB,YAAY,CAAC,EACzB,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,QAAQ,GACX,EAAE,QAAQ,CAAC,iBAAiB,CAAC,2CA0J7B"}
|
|
@@ -93,7 +93,6 @@ export function ConditionRow({ canRemove, condition, dataPointOptions, onChange,
|
|
|
93
93
|
...{
|
|
94
94
|
disableClearSelection: true
|
|
95
95
|
},
|
|
96
|
-
groupBy: "group",
|
|
97
96
|
itemToKey: (item)=>{
|
|
98
97
|
var _item_fullKey;
|
|
99
98
|
return (_item_fullKey = item === null || item === void 0 ? void 0 : item.fullKey) !== null && _item_fullKey !== void 0 ? _item_fullKey : '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/display-conditions/ConditionRow.tsx"],"sourcesContent":["import { Button, Chip, Combobox, Flex, TextField } from '@servicetitan/anvil2';\nimport TrashIcon from '@servicetitan/anvil2/assets/icons/material/round/delete.svg';\nimport { useMemo } from 'react';\nimport { NUMBER_OPERATORS, SingleCondition, STRING_OPERATORS, VALUE_LESS_OPERATORS } from './types';\nimport type { DataPointOption } from './types';\n\nexport interface ConditionRowProps {\n canRemove: boolean;\n condition: SingleCondition;\n dataPointOptions: DataPointOption[];\n onChange: (c: SingleCondition) => void;\n onRemove: () => void;\n}\n\ninterface OperatorOption {\n label: string;\n value: string;\n}\n\nfunction sanitizeNumericInput(raw: string): string {\n // Allow only a single leading minus and one decimal separator.\n let value = raw.replaceAll(/[^0-9.-]/g, '');\n const isNegative = value.startsWith('-');\n value = value.replaceAll('-', '');\n if (isNegative) {\n value = `-${value}`;\n }\n const firstDot = value.indexOf('.');\n if (firstDot >= 0) {\n value = `${value.slice(0, firstDot + 1)}${value.slice(firstDot + 1).replaceAll('.', '')}`;\n }\n return value;\n}\n\nexport function ConditionRow({\n canRemove,\n condition,\n dataPointOptions,\n onChange,\n onRemove,\n}: Readonly<ConditionRowProps>) {\n const selectedDataPoint = useMemo(\n () => dataPointOptions.find(opt => opt.fullKey === condition.dataPointKey) ?? null,\n [dataPointOptions, condition.dataPointKey],\n );\n\n const fieldType = selectedDataPoint?.fieldType ?? 'string';\n\n const operatorItems: OperatorOption[] = useMemo(\n () =>\n fieldType === 'number'\n ? ([...NUMBER_OPERATORS] as OperatorOption[])\n : ([...STRING_OPERATORS] as OperatorOption[]),\n [fieldType],\n );\n\n const selectedOperator = useMemo(\n () => operatorItems.find(op => op.value === condition.operator) ?? null,\n [operatorItems, condition.operator],\n );\n\n const isValueLess = VALUE_LESS_OPERATORS.includes(condition.operator);\n\n const handleValueChange = (raw: string) => {\n const value = fieldType === 'number' ? sanitizeNumericInput(raw) : raw;\n onChange({ ...condition, value });\n };\n\n const handleDataPointChange = (item: DataPointOption | null) => {\n const nextFieldType = item?.fieldType ?? 'string';\n const nextIsNumber = nextFieldType === 'number';\n const nextOperatorItems = nextIsNumber ? NUMBER_OPERATORS : STRING_OPERATORS;\n const operatorReset = !nextOperatorItems.some(op => op.value === condition.operator);\n onChange({\n ...condition,\n dataPointKey: item?.fullKey ?? '',\n operator: operatorReset\n ? nextIsNumber\n ? 'num_eq'\n : 'is_equal_to'\n : condition.operator,\n });\n };\n\n return (\n <Flex\n direction=\"row\"\n alignItems=\"flex-end\"\n gap=\"2\"\n style={{ flexWrap: 'wrap', rowGap: 8, width: '100%' }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'flex-end',\n flexShrink: 0,\n padding: '4px 8px',\n }}\n >\n <Chip label=\"IF\" size=\"small\" />\n </div>\n <div style={{ flex: '2 1 240px', minWidth: 200 }}>\n <Combobox\n {...({ disableClearSelection: true } as object)}\n groupBy=\"group\"\n itemToKey={(item: DataPointOption | null) => item?.fullKey ?? ''}\n itemToString={(item: DataPointOption | null) => item?.title ?? ''}\n items={dataPointOptions}\n selectedItem={selectedDataPoint}\n onChange={handleDataPointChange}\n >\n <Combobox.SelectTrigger\n label=\"Data point\"\n placeholder=\"Select data point...\"\n size=\"small\"\n />\n <Combobox.Content>\n {({ items }: { items: DataPointOption[] }) => (\n <Combobox.List>\n {items.map((item, i) => (\n <Combobox.Item index={i} item={item} key={item.fullKey}>\n {item.title}\n </Combobox.Item>\n ))}\n </Combobox.List>\n )}\n </Combobox.Content>\n </Combobox>\n </div>\n <div style={{ flex: '1 1 180px', minWidth: 150 }}>\n <Combobox\n {...({ disableClearSelection: true } as object)}\n itemToKey={(item: OperatorOption | null) => item?.value ?? ''}\n itemToString={(item: OperatorOption | null) => item?.label ?? ''}\n items={operatorItems}\n selectedItem={selectedOperator}\n onChange={(item: OperatorOption | null) =>\n onChange({\n ...condition,\n operator: (item?.value ?? 'is_equal_to') as SingleCondition['operator'],\n })\n }\n >\n <Combobox.SelectTrigger\n label=\"Condition\"\n placeholder=\"Select...\"\n size=\"small\"\n />\n <Combobox.Content>\n {({ items }: { items: OperatorOption[] }) => (\n <Combobox.List>\n {items.map((item, i) => (\n <Combobox.Item index={i} item={item} key={item.value}>\n {item.label}\n </Combobox.Item>\n ))}\n </Combobox.List>\n )}\n </Combobox.Content>\n </Combobox>\n </div>\n {!isValueLess && (\n <div style={{ flex: '1 1 180px', minWidth: 150 }}>\n <TextField\n label=\"Value\"\n size=\"small\"\n value={condition.value}\n onChange={e => handleValueChange(e.target.value)}\n placeholder={fieldType === 'number' ? 'e.g. 1.5' : 'Enter value...'}\n style={{ width: '100%' }}\n aria-label=\"Value\"\n {...(fieldType === 'number' && { inputMode: 'decimal' })}\n />\n </div>\n )}\n {canRemove && (\n <div\n style={{\n display: 'flex',\n alignItems: 'flex-end',\n flexShrink: 0,\n padding: '4px 8px',\n }}\n >\n <Button\n appearance=\"secondary\"\n aria-label=\"Remove condition\"\n icon={{ before: TrashIcon }}\n size=\"small\"\n onClick={onRemove}\n />\n </div>\n )}\n </Flex>\n );\n}\n"],"names":["Button","Chip","Combobox","Flex","TextField","TrashIcon","useMemo","NUMBER_OPERATORS","STRING_OPERATORS","VALUE_LESS_OPERATORS","sanitizeNumericInput","raw","value","replaceAll","isNegative","startsWith","firstDot","indexOf","slice","ConditionRow","canRemove","condition","dataPointOptions","onChange","onRemove","selectedDataPoint","find","opt","fullKey","dataPointKey","fieldType","operatorItems","selectedOperator","op","operator","isValueLess","includes","handleValueChange","handleDataPointChange","item","nextFieldType","nextIsNumber","nextOperatorItems","operatorReset","some","direction","alignItems","gap","style","flexWrap","rowGap","width","div","display","flexShrink","padding","label","size","flex","minWidth","disableClearSelection","groupBy","itemToKey","itemToString","title","items","selectedItem","SelectTrigger","placeholder","Content","List","map","i","Item","index","e","target","aria-label","inputMode","appearance","icon","before","onClick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/display-conditions/ConditionRow.tsx"],"sourcesContent":["import { Button, Chip, Combobox, Flex, TextField } from '@servicetitan/anvil2';\nimport TrashIcon from '@servicetitan/anvil2/assets/icons/material/round/delete.svg';\nimport { useMemo } from 'react';\nimport { NUMBER_OPERATORS, SingleCondition, STRING_OPERATORS, VALUE_LESS_OPERATORS } from './types';\nimport type { DataPointOption } from './types';\n\nexport interface ConditionRowProps {\n canRemove: boolean;\n condition: SingleCondition;\n dataPointOptions: DataPointOption[];\n onChange: (c: SingleCondition) => void;\n onRemove: () => void;\n}\n\ninterface OperatorOption {\n label: string;\n value: string;\n}\n\nfunction sanitizeNumericInput(raw: string): string {\n // Allow only a single leading minus and one decimal separator.\n let value = raw.replaceAll(/[^0-9.-]/g, '');\n const isNegative = value.startsWith('-');\n value = value.replaceAll('-', '');\n if (isNegative) {\n value = `-${value}`;\n }\n const firstDot = value.indexOf('.');\n if (firstDot >= 0) {\n value = `${value.slice(0, firstDot + 1)}${value.slice(firstDot + 1).replaceAll('.', '')}`;\n }\n return value;\n}\n\nexport function ConditionRow({\n canRemove,\n condition,\n dataPointOptions,\n onChange,\n onRemove,\n}: Readonly<ConditionRowProps>) {\n const selectedDataPoint = useMemo(\n () => dataPointOptions.find(opt => opt.fullKey === condition.dataPointKey) ?? null,\n [dataPointOptions, condition.dataPointKey],\n );\n\n const fieldType = selectedDataPoint?.fieldType ?? 'string';\n\n const operatorItems: OperatorOption[] = useMemo(\n () =>\n fieldType === 'number'\n ? ([...NUMBER_OPERATORS] as OperatorOption[])\n : ([...STRING_OPERATORS] as OperatorOption[]),\n [fieldType],\n );\n\n const selectedOperator = useMemo(\n () => operatorItems.find(op => op.value === condition.operator) ?? null,\n [operatorItems, condition.operator],\n );\n\n const isValueLess = VALUE_LESS_OPERATORS.includes(condition.operator);\n\n const handleValueChange = (raw: string) => {\n const value = fieldType === 'number' ? sanitizeNumericInput(raw) : raw;\n onChange({ ...condition, value });\n };\n\n const handleDataPointChange = (item: DataPointOption | null) => {\n const nextFieldType = item?.fieldType ?? 'string';\n const nextIsNumber = nextFieldType === 'number';\n const nextOperatorItems = nextIsNumber ? NUMBER_OPERATORS : STRING_OPERATORS;\n const operatorReset = !nextOperatorItems.some(op => op.value === condition.operator);\n onChange({\n ...condition,\n dataPointKey: item?.fullKey ?? '',\n operator: operatorReset\n ? nextIsNumber\n ? 'num_eq'\n : 'is_equal_to'\n : condition.operator,\n });\n };\n\n return (\n <Flex\n direction=\"row\"\n alignItems=\"flex-end\"\n gap=\"2\"\n style={{ flexWrap: 'wrap', rowGap: 8, width: '100%' }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'flex-end',\n flexShrink: 0,\n padding: '4px 8px',\n }}\n >\n <Chip label=\"IF\" size=\"small\" />\n </div>\n <div style={{ flex: '2 1 240px', minWidth: 200 }}>\n <Combobox\n {...({ disableClearSelection: true } as object)}\n itemToKey={(item: DataPointOption | null) => item?.fullKey ?? ''}\n itemToString={(item: DataPointOption | null) => item?.title ?? ''}\n items={dataPointOptions}\n selectedItem={selectedDataPoint}\n onChange={handleDataPointChange}\n >\n <Combobox.SelectTrigger\n label=\"Data point\"\n placeholder=\"Select data point...\"\n size=\"small\"\n />\n <Combobox.Content>\n {({ items }: { items: DataPointOption[] }) => (\n <Combobox.List>\n {items.map((item, i) => (\n <Combobox.Item index={i} item={item} key={item.fullKey}>\n {item.title}\n </Combobox.Item>\n ))}\n </Combobox.List>\n )}\n </Combobox.Content>\n </Combobox>\n </div>\n <div style={{ flex: '1 1 180px', minWidth: 150 }}>\n <Combobox\n {...({ disableClearSelection: true } as object)}\n itemToKey={(item: OperatorOption | null) => item?.value ?? ''}\n itemToString={(item: OperatorOption | null) => item?.label ?? ''}\n items={operatorItems}\n selectedItem={selectedOperator}\n onChange={(item: OperatorOption | null) =>\n onChange({\n ...condition,\n operator: (item?.value ?? 'is_equal_to') as SingleCondition['operator'],\n })\n }\n >\n <Combobox.SelectTrigger\n label=\"Condition\"\n placeholder=\"Select...\"\n size=\"small\"\n />\n <Combobox.Content>\n {({ items }: { items: OperatorOption[] }) => (\n <Combobox.List>\n {items.map((item, i) => (\n <Combobox.Item index={i} item={item} key={item.value}>\n {item.label}\n </Combobox.Item>\n ))}\n </Combobox.List>\n )}\n </Combobox.Content>\n </Combobox>\n </div>\n {!isValueLess && (\n <div style={{ flex: '1 1 180px', minWidth: 150 }}>\n <TextField\n label=\"Value\"\n size=\"small\"\n value={condition.value}\n onChange={e => handleValueChange(e.target.value)}\n placeholder={fieldType === 'number' ? 'e.g. 1.5' : 'Enter value...'}\n style={{ width: '100%' }}\n aria-label=\"Value\"\n {...(fieldType === 'number' && { inputMode: 'decimal' })}\n />\n </div>\n )}\n {canRemove && (\n <div\n style={{\n display: 'flex',\n alignItems: 'flex-end',\n flexShrink: 0,\n padding: '4px 8px',\n }}\n >\n <Button\n appearance=\"secondary\"\n aria-label=\"Remove condition\"\n icon={{ before: TrashIcon }}\n size=\"small\"\n onClick={onRemove}\n />\n </div>\n )}\n </Flex>\n );\n}\n"],"names":["Button","Chip","Combobox","Flex","TextField","TrashIcon","useMemo","NUMBER_OPERATORS","STRING_OPERATORS","VALUE_LESS_OPERATORS","sanitizeNumericInput","raw","value","replaceAll","isNegative","startsWith","firstDot","indexOf","slice","ConditionRow","canRemove","condition","dataPointOptions","onChange","onRemove","selectedDataPoint","find","opt","fullKey","dataPointKey","fieldType","operatorItems","selectedOperator","op","operator","isValueLess","includes","handleValueChange","handleDataPointChange","item","nextFieldType","nextIsNumber","nextOperatorItems","operatorReset","some","direction","alignItems","gap","style","flexWrap","rowGap","width","div","display","flexShrink","padding","label","size","flex","minWidth","disableClearSelection","itemToKey","itemToString","title","items","selectedItem","SelectTrigger","placeholder","Content","List","map","i","Item","index","e","target","aria-label","inputMode","appearance","icon","before","onClick"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaDataPoints.d.ts","sourceRoot":"","sources":["../../src/display-conditions/schemaDataPoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,YAAY,EAGf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQ1C,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"schemaDataPoints.d.ts","sourceRoot":"","sources":["../../src/display-conditions/schemaDataPoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,YAAY,EAGf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQ1C,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,eAAe,EAAE,CAqB7F"}
|
|
@@ -13,7 +13,6 @@ export function getSchemaDataPointOptions(schema) {
|
|
|
13
13
|
return {
|
|
14
14
|
fieldType,
|
|
15
15
|
fullKey: f.fullKey,
|
|
16
|
-
group: fieldType === 'number' ? 'Numeric Fields' : 'Data Model',
|
|
17
16
|
title: f.fullTitle || f.title || f.fullKey
|
|
18
17
|
};
|
|
19
18
|
}).sort((a, b)=>a.title.localeCompare(b.title));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/display-conditions/schemaDataPoints.ts"],"sourcesContent":["import {\n SchemaFieldBaseOptions,\n SchemaObject,\n schemaBuildMap,\n schemaIsNumber,\n} from '../shared/schema';\nimport { DataPointOption } from './types';\n\nfunction isUseInConditionals(node: { options?: SchemaFieldBaseOptions } | undefined): boolean {\n return (\n node?.options?.useInConditionals === true || node?.options?.useInCalculatedFields === true\n );\n}\n\nexport function getSchemaDataPointOptions(schema: SchemaObject | undefined): DataPointOption[] {\n if (!schema?.properties) {\n return [];\n }\n const { map } = schemaBuildMap(schema);\n return Object.values(map)\n .filter(\n f =>\n f.isValue &&\n !f.isArrayed &&\n isUseInConditionals(f.node as { options?: SchemaFieldBaseOptions }),\n )\n .map(f => {\n const fieldType = schemaIsNumber(f.node) ? ('number' as const) : ('string' as const);\n return {\n fieldType,\n fullKey: f.fullKey,\n
|
|
1
|
+
{"version":3,"sources":["../../src/display-conditions/schemaDataPoints.ts"],"sourcesContent":["import {\n SchemaFieldBaseOptions,\n SchemaObject,\n schemaBuildMap,\n schemaIsNumber,\n} from '../shared/schema';\nimport { DataPointOption } from './types';\n\nfunction isUseInConditionals(node: { options?: SchemaFieldBaseOptions } | undefined): boolean {\n return (\n node?.options?.useInConditionals === true || node?.options?.useInCalculatedFields === true\n );\n}\n\nexport function getSchemaDataPointOptions(schema: SchemaObject | undefined): DataPointOption[] {\n if (!schema?.properties) {\n return [];\n }\n const { map } = schemaBuildMap(schema);\n return Object.values(map)\n .filter(\n f =>\n f.isValue &&\n !f.isArrayed &&\n isUseInConditionals(f.node as { options?: SchemaFieldBaseOptions }),\n )\n .map(f => {\n const fieldType = schemaIsNumber(f.node) ? ('number' as const) : ('string' as const);\n return {\n fieldType,\n fullKey: f.fullKey,\n title: f.fullTitle || f.title || f.fullKey,\n };\n })\n .sort((a, b) => a.title.localeCompare(b.title));\n}\n"],"names":["schemaBuildMap","schemaIsNumber","isUseInConditionals","node","options","useInConditionals","useInCalculatedFields","getSchemaDataPointOptions","schema","properties","map","Object","values","filter","f","isValue","isArrayed","fieldType","fullKey","title","fullTitle","sort","a","b","localeCompare"],"mappings":"AAAA,SAGIA,cAAc,EACdC,cAAc,QACX,mBAAmB;AAG1B,SAASC,oBAAoBC,IAAsD;QAE3EA,eAA6CA;IADjD,OACIA,CAAAA,iBAAAA,4BAAAA,gBAAAA,KAAMC,OAAO,cAAbD,oCAAAA,cAAeE,iBAAiB,MAAK,QAAQF,CAAAA,iBAAAA,4BAAAA,iBAAAA,KAAMC,OAAO,cAAbD,qCAAAA,eAAeG,qBAAqB,MAAK;AAE9F;AAEA,OAAO,SAASC,0BAA0BC,MAAgC;IACtE,IAAI,EAACA,mBAAAA,6BAAAA,OAAQC,UAAU,GAAE;QACrB,OAAO,EAAE;IACb;IACA,MAAM,EAAEC,GAAG,EAAE,GAAGV,eAAeQ;IAC/B,OAAOG,OAAOC,MAAM,CAACF,KAChBG,MAAM,CACHC,CAAAA,IACIA,EAAEC,OAAO,IACT,CAACD,EAAEE,SAAS,IACZd,oBAAoBY,EAAEX,IAAI,GAEjCO,GAAG,CAACI,CAAAA;QACD,MAAMG,YAAYhB,eAAea,EAAEX,IAAI,IAAK,WAAsB;QAClE,OAAO;YACHc;YACAC,SAASJ,EAAEI,OAAO;YAClBC,OAAOL,EAAEM,SAAS,IAAIN,EAAEK,KAAK,IAAIL,EAAEI,OAAO;QAC9C;IACJ,GACCG,IAAI,CAAC,CAACC,GAAGC,IAAMD,EAAEH,KAAK,CAACK,aAAa,CAACD,EAAEJ,KAAK;AACrD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/display-conditions/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,IAAI,CAAC;AAE3C,wCAAwC;AACxC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;EASnB,CAAC;AAEX,wCAAwC;AACxC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;EAOnB,CAAC;AAEX,mDAAmD;AACnD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAsD,CAAC;AAEvF,MAAM,MAAM,iBAAiB,GACvB,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAC1C,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;AAEjD,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAAiC,CAAC;AAEtF,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,4FAA4F;IAC5F,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,gFAAgF;IAChF,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,UAAU,EAAE,eAAe,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC5B,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/display-conditions/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,IAAI,CAAC;AAE3C,wCAAwC;AACxC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;EASnB,CAAC;AAEX,wCAAwC;AACxC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;EAOnB,CAAC;AAEX,mDAAmD;AACnD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAsD,CAAC;AAEvF,MAAM,MAAM,iBAAiB,GACvB,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAC1C,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;AAEjD,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAAiC,CAAC;AAEtF,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,4FAA4F;IAC5F,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,gFAAgF;IAChF,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,UAAU,EAAE,eAAe,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC5B,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,uDAAuD;AACvD,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/display-conditions/types.ts"],"sourcesContent":["/**\n * Display condition types for the modal and Nunjucks generation.\n */\n\nexport type DisplayBehavior = 'show' | 'hide';\n\nexport type LogicalOperator = 'and' | 'or';\n\n/** Operators for string-type fields. */\nexport const STRING_OPERATORS = [\n { label: 'Contains', value: 'contains' },\n { label: 'Does not contain', value: 'does_not_contain' },\n { label: 'Is equal to', value: 'is_equal_to' },\n { label: 'Is not equal to', value: 'is_not_equal_to' },\n { label: 'Starts with', value: 'starts_with' },\n { label: 'Ends with', value: 'ends_with' },\n { label: 'Is empty', value: 'is_empty' },\n { label: 'Is not empty', value: 'is_not_empty' },\n] as const;\n\n/** Operators for number-type fields. */\nexport const NUMBER_OPERATORS = [\n { label: '== (equal to)', value: 'num_eq' },\n { label: '!= (not equal to)', value: 'num_neq' },\n { label: '> (greater than)', value: 'num_gt' },\n { label: '< (less than)', value: 'num_lt' },\n { label: '>= (greater than or equal to)', value: 'num_gte' },\n { label: '<= (less than or equal to)', value: 'num_lte' },\n] as const;\n\n/** All operators combined for type definitions. */\nexport const CONDITION_OPERATORS = [...STRING_OPERATORS, ...NUMBER_OPERATORS] as const;\n\nexport type ConditionOperator =\n | (typeof STRING_OPERATORS)[number]['value']\n | (typeof NUMBER_OPERATORS)[number]['value'];\n\n/** Operators that do not require a value (empty/is not empty) */\nexport const VALUE_LESS_OPERATORS: ConditionOperator[] = ['is_empty', 'is_not_empty'];\n\nexport interface SingleCondition {\n id: string;\n dataPointKey: string;\n /** How this condition connects to the PREVIOUS condition. Absent on the first condition. */\n logicalOperator?: LogicalOperator;\n operator: ConditionOperator;\n value: string;\n}\n\nexport interface ConditionGroup {\n id: string;\n /** How this group connects to the PREVIOUS group. Absent on the first group. */\n logicalOperator?: LogicalOperator;\n conditions: SingleCondition[];\n}\n\nexport interface DisplayConditionState {\n behavior: DisplayBehavior;\n groups: ConditionGroup[];\n}\n\nexport interface DataPointOption {\n fieldType: 'number' | 'string';\n fullKey: string;\n
|
|
1
|
+
{"version":3,"sources":["../../src/display-conditions/types.ts"],"sourcesContent":["/**\n * Display condition types for the modal and Nunjucks generation.\n */\n\nexport type DisplayBehavior = 'show' | 'hide';\n\nexport type LogicalOperator = 'and' | 'or';\n\n/** Operators for string-type fields. */\nexport const STRING_OPERATORS = [\n { label: 'Contains', value: 'contains' },\n { label: 'Does not contain', value: 'does_not_contain' },\n { label: 'Is equal to', value: 'is_equal_to' },\n { label: 'Is not equal to', value: 'is_not_equal_to' },\n { label: 'Starts with', value: 'starts_with' },\n { label: 'Ends with', value: 'ends_with' },\n { label: 'Is empty', value: 'is_empty' },\n { label: 'Is not empty', value: 'is_not_empty' },\n] as const;\n\n/** Operators for number-type fields. */\nexport const NUMBER_OPERATORS = [\n { label: '== (equal to)', value: 'num_eq' },\n { label: '!= (not equal to)', value: 'num_neq' },\n { label: '> (greater than)', value: 'num_gt' },\n { label: '< (less than)', value: 'num_lt' },\n { label: '>= (greater than or equal to)', value: 'num_gte' },\n { label: '<= (less than or equal to)', value: 'num_lte' },\n] as const;\n\n/** All operators combined for type definitions. */\nexport const CONDITION_OPERATORS = [...STRING_OPERATORS, ...NUMBER_OPERATORS] as const;\n\nexport type ConditionOperator =\n | (typeof STRING_OPERATORS)[number]['value']\n | (typeof NUMBER_OPERATORS)[number]['value'];\n\n/** Operators that do not require a value (empty/is not empty) */\nexport const VALUE_LESS_OPERATORS: ConditionOperator[] = ['is_empty', 'is_not_empty'];\n\nexport interface SingleCondition {\n id: string;\n dataPointKey: string;\n /** How this condition connects to the PREVIOUS condition. Absent on the first condition. */\n logicalOperator?: LogicalOperator;\n operator: ConditionOperator;\n value: string;\n}\n\nexport interface ConditionGroup {\n id: string;\n /** How this group connects to the PREVIOUS group. Absent on the first group. */\n logicalOperator?: LogicalOperator;\n conditions: SingleCondition[];\n}\n\nexport interface DisplayConditionState {\n behavior: DisplayBehavior;\n groups: ConditionGroup[];\n}\n\nexport interface DataPointOption {\n fieldType: 'number' | 'string';\n fullKey: string;\n title: string;\n}\n\n/** Unlayer display condition shape passed to done() */\nexport interface UnlayerDisplayCondition {\n type: string;\n label: string;\n description?: string;\n before: string;\n after: string;\n}\n"],"names":["STRING_OPERATORS","label","value","NUMBER_OPERATORS","CONDITION_OPERATORS","VALUE_LESS_OPERATORS"],"mappings":"AAAA;;CAEC,GAMD,sCAAsC,GACtC,OAAO,MAAMA,mBAAmB;IAC5B;QAAEC,OAAO;QAAYC,OAAO;IAAW;IACvC;QAAED,OAAO;QAAoBC,OAAO;IAAmB;IACvD;QAAED,OAAO;QAAeC,OAAO;IAAc;IAC7C;QAAED,OAAO;QAAmBC,OAAO;IAAkB;IACrD;QAAED,OAAO;QAAeC,OAAO;IAAc;IAC7C;QAAED,OAAO;QAAaC,OAAO;IAAY;IACzC;QAAED,OAAO;QAAYC,OAAO;IAAW;IACvC;QAAED,OAAO;QAAgBC,OAAO;IAAe;CAClD,CAAU;AAEX,sCAAsC,GACtC,OAAO,MAAMC,mBAAmB;IAC5B;QAAEF,OAAO;QAAiBC,OAAO;IAAS;IAC1C;QAAED,OAAO;QAAqBC,OAAO;IAAU;IAC/C;QAAED,OAAO;QAAoBC,OAAO;IAAS;IAC7C;QAAED,OAAO;QAAiBC,OAAO;IAAS;IAC1C;QAAED,OAAO;QAAiCC,OAAO;IAAU;IAC3D;QAAED,OAAO;QAA8BC,OAAO;IAAU;CAC3D,CAAU;AAEX,iDAAiD,GACjD,OAAO,MAAME,sBAAsB;OAAIJ;OAAqBG;CAAiB,CAAU;AAMvF,+DAA+D,GAC/D,OAAO,MAAME,uBAA4C;IAAC;IAAY;CAAe,CAAC"}
|
package/package.json
CHANGED
|
@@ -102,7 +102,6 @@ export function ConditionRow({
|
|
|
102
102
|
<div style={{ flex: '2 1 240px', minWidth: 200 }}>
|
|
103
103
|
<Combobox
|
|
104
104
|
{...({ disableClearSelection: true } as object)}
|
|
105
|
-
groupBy="group"
|
|
106
105
|
itemToKey={(item: DataPointOption | null) => item?.fullKey ?? ''}
|
|
107
106
|
itemToString={(item: DataPointOption | null) => item?.title ?? ''}
|
|
108
107
|
items={dataPointOptions}
|