@iobroker/json-config 8.1.10 → 8.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/README.md +45 -8
  2. package/build/JsonConfigComponent/ConfigCheckDocker.d.ts +3 -3
  3. package/build/JsonConfigComponent/ConfigCheckDocker.js +3 -4
  4. package/build/JsonConfigComponent/ConfigCheckDocker.js.map +1 -1
  5. package/build/JsonConfigComponent/ConfigImageSendTo.d.ts +3 -2
  6. package/build/JsonConfigComponent/ConfigImageSendTo.js +17 -5
  7. package/build/JsonConfigComponent/ConfigImageSendTo.js.map +1 -1
  8. package/build/JsonConfigComponent/ConfigPanel.js +2 -0
  9. package/build/JsonConfigComponent/ConfigPanel.js.map +1 -1
  10. package/build/JsonConfigComponent/ConfigQrCode.d.ts +2 -2
  11. package/build/JsonConfigComponent/ConfigQrCode.js +1 -2
  12. package/build/JsonConfigComponent/ConfigQrCode.js.map +1 -1
  13. package/build/JsonConfigComponent/ConfigQrCodeSendTo.d.ts +21 -0
  14. package/build/JsonConfigComponent/ConfigQrCodeSendTo.js +69 -0
  15. package/build/JsonConfigComponent/ConfigQrCodeSendTo.js.map +1 -0
  16. package/build/JsonConfigComponent/ConfigSendto.js +2 -2
  17. package/build/JsonConfigComponent/ConfigSendto.js.map +1 -1
  18. package/build/JsonConfigComponent/ConfigState.js +18 -2
  19. package/build/JsonConfigComponent/ConfigState.js.map +1 -1
  20. package/build/JsonConfigComponent/ConfigTable.js +2 -2
  21. package/build/JsonConfigComponent/ConfigTable.js.map +1 -1
  22. package/build/JsonConfigComponent/wrapper/Components/CustomModal.js +3 -3
  23. package/build/JsonConfigComponent/wrapper/Components/CustomModal.js.map +1 -1
  24. package/build/index.d.ts +1 -1
  25. package/build/index.js.map +1 -1
  26. package/build/types.d.ts +24 -3
  27. package/package.json +7 -7
@@ -41,7 +41,7 @@ const CustomModal = ({ toggleTranslation, noTranslation, title, fullWidth, help,
41
41
  title && (React.createElement(DialogTitle, null,
42
42
  icon ? React.createElement(Icon, { style: styles.titleIcon }) : null,
43
43
  title,
44
- I18n.getLanguage() !== 'en' && toggleTranslation ? (React.createElement(IconButton, { size: "large", style: { ...styles.languageButton, ...(noTranslation ? styles.languageButtonActive : {}) }, onClick: () => toggleTranslation(), title: I18n.t('Disable/Enable translation') },
44
+ I18n.getLanguage() !== 'en' && toggleTranslation ? (React.createElement(IconButton, { size: "large", style: { ...styles.languageButton, ...(noTranslation ? styles.languageButtonActive : {}) }, onClick: () => toggleTranslation(), title: I18n.t('ra_Disable/Enable translation') },
45
45
  React.createElement(LanguageIcon, null))) : null)),
46
46
  React.createElement(DialogContent, { sx: { ...(overflowHidden ? styles.overflowHidden : {}), ...styles.content }, style: { paddingTop: 8 } },
47
47
  textInput && (React.createElement(TextField
@@ -54,8 +54,8 @@ const CustomModal = ({ toggleTranslation, noTranslation, title, fullWidth, help,
54
54
  children,
55
55
  help ? React.createElement("div", null, help) : null),
56
56
  React.createElement(DialogActions, null,
57
- applyButton !== false && (React.createElement(Button, { startIcon: React.createElement(CheckIcon, null), disabled: progress || (applyDisabled && defaultValue === value), onClick: () => onApply && onApply(textInput ? value : ''), variant: "contained", color: "primary" }, I18n.t(titleButtonApply || 'Ok'))),
58
- React.createElement(Button, { color: "grey", onClick: () => onClose && onClose(), disabled: progress, variant: "contained", startIcon: React.createElement(CloseIcon, null) }, I18n.t(titleButtonClose || 'Cancel')))));
57
+ applyButton !== false && (React.createElement(Button, { startIcon: React.createElement(CheckIcon, null), disabled: progress || (applyDisabled && defaultValue === value), onClick: () => onApply && onApply(textInput ? value : ''), variant: "contained", color: "primary" }, I18n.t(titleButtonApply || 'ra_Ok'))),
58
+ React.createElement(Button, { color: "grey", onClick: () => onClose && onClose(), disabled: progress, variant: "contained", startIcon: React.createElement(CloseIcon, null) }, I18n.t(titleButtonClose || 'ra_Cancel')))));
59
59
  };
60
60
  export default CustomModal;
61
61
  //# sourceMappingURL=CustomModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CustomModal.js","sourceRoot":"./src/","sources":["JsonConfigComponent/wrapper/Components/CustomModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX, useEffect, useState } from 'react';\n\nimport {\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n TextField,\n Button,\n useMediaQuery,\n useTheme,\n} from '@mui/material';\n\nimport { Check as CheckIcon, Close as CloseIcon, Language as LanguageIcon } from '@mui/icons-material';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nconst styles: Record<string, React.CSSProperties> = {\n modalDialog: {\n minWidth: 400,\n maxWidth: 800,\n },\n overflowHidden: {\n display: 'flex',\n overflow: 'hidden',\n },\n titleIcon: {\n marginRight: 5,\n },\n content: {\n fontSize: 16,\n },\n languageButton: {\n position: 'absolute',\n right: 8,\n top: 8,\n },\n languageButtonActive: {\n color: 'primary.main',\n },\n};\n\ninterface CustomModalProps {\n toggleTranslation?: () => void;\n noTranslation?: boolean;\n title: string;\n fullWidth?: boolean;\n help?: string;\n maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | false;\n progress?: boolean;\n icon?: any;\n applyDisabled?: boolean;\n applyButton?: boolean;\n onClose: () => void;\n children: JSX.Element | JSX.Element[] | string | string[] | undefined | null;\n titleButtonApply?: string;\n titleButtonClose?: string;\n onApply: (value: string) => void;\n textInput?: boolean;\n defaultValue?: string;\n overflowHidden?: boolean;\n}\n\nconst CustomModal = ({\n toggleTranslation,\n noTranslation,\n title,\n fullWidth,\n help,\n maxWidth,\n progress,\n icon,\n applyDisabled,\n applyButton,\n onClose,\n children,\n titleButtonApply,\n titleButtonClose,\n onApply,\n textInput,\n defaultValue,\n overflowHidden,\n}: CustomModalProps): JSX.Element => {\n const [value, setValue] = useState(defaultValue);\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const muiTheme = useTheme();\n const isSmallScreen = useMediaQuery(muiTheme.breakpoints.down('md'));\n\n let Icon = null;\n\n if (icon) {\n Icon = icon;\n }\n\n return (\n <Dialog\n open={!0}\n maxWidth={isSmallScreen ? false : maxWidth || 'md'}\n fullWidth={!!fullWidth}\n fullScreen={isSmallScreen}\n disableEscapeKeyDown={false}\n onClose={onClose}\n sx={{ '& .MuiPaper-root': isSmallScreen ? {} : styles.modalDialog /* paper: classes.background */ }}\n >\n {title && (\n <DialogTitle>\n {icon ? <Icon style={styles.titleIcon} /> : null}\n {title}\n {I18n.getLanguage() !== 'en' && toggleTranslation ? (\n <IconButton\n size=\"large\"\n style={{ ...styles.languageButton, ...(noTranslation ? styles.languageButtonActive : {}) }}\n onClick={() => toggleTranslation()}\n title={I18n.t('Disable/Enable translation')}\n >\n <LanguageIcon />\n </IconButton>\n ) : null}\n </DialogTitle>\n )}\n <DialogContent\n sx={{ ...(overflowHidden ? styles.overflowHidden : {}), ...styles.content }}\n style={{ paddingTop: 8 }}\n >\n {textInput && (\n <TextField\n // className={className}\n autoComplete=\"off\"\n fullWidth\n autoFocus\n variant=\"outlined\"\n size=\"medium\"\n // rows={10}\n multiline\n value={value}\n onChange={e => setValue(e.target.value)}\n // customValue\n />\n )}\n {children}\n {help ? <div>{help}</div> : null}\n </DialogContent>\n <DialogActions>\n {applyButton !== false && (\n <Button\n startIcon={<CheckIcon />}\n disabled={progress || (applyDisabled && defaultValue === value)}\n onClick={() => onApply && onApply(textInput ? value : '')}\n variant=\"contained\"\n color=\"primary\"\n >\n {I18n.t(titleButtonApply || 'Ok')}\n </Button>\n )}\n <Button\n color=\"grey\"\n onClick={() => onClose && onClose()}\n disabled={progress}\n variant=\"contained\"\n startIcon={<CloseIcon />}\n >\n {I18n.t(titleButtonClose || 'Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default CustomModal;\n"]}
1
+ {"version":3,"file":"CustomModal.js","sourceRoot":"./src/","sources":["JsonConfigComponent/wrapper/Components/CustomModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAY,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE7D,OAAO,EACH,MAAM,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,MAAM,EACN,aAAa,EACb,QAAQ,GACX,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,IAAI,SAAS,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEvG,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAElD,MAAM,MAAM,GAAwC;IAChD,WAAW,EAAE;QACT,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;KAChB;IACD,cAAc,EAAE;QACZ,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,QAAQ;KACrB;IACD,SAAS,EAAE;QACP,WAAW,EAAE,CAAC;KACjB;IACD,OAAO,EAAE;QACL,QAAQ,EAAE,EAAE;KACf;IACD,cAAc,EAAE;QACZ,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;KACT;IACD,oBAAoB,EAAE;QAClB,KAAK,EAAE,cAAc;KACxB;CACJ,CAAC;AAuBF,MAAM,WAAW,GAAG,CAAC,EACjB,iBAAiB,EACjB,aAAa,EACb,KAAK,EACL,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,aAAa,EACb,WAAW,EACX,OAAO,EACP,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,YAAY,EACZ,cAAc,GACC,EAAe,EAAE;IAChC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjD,SAAS,CAAC,GAAG,EAAE;QACX,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAC;IAC5B,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAErE,IAAI,IAAI,GAAG,IAAI,CAAC;IAEhB,IAAI,IAAI,EAAE,CAAC;QACP,IAAI,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CACH,oBAAC,MAAM,IACH,IAAI,EAAE,CAAC,CAAC,EACR,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,EAClD,SAAS,EAAE,CAAC,CAAC,SAAS,EACtB,UAAU,EAAE,aAAa,EACzB,oBAAoB,EAAE,KAAK,EAC3B,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,+BAA+B,EAAE;QAElG,KAAK,IAAI,CACN,oBAAC,WAAW;YACP,IAAI,CAAC,CAAC,CAAC,oBAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,GAAI,CAAC,CAAC,CAAC,IAAI;YAC/C,KAAK;YACL,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAChD,oBAAC,UAAU,IACP,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAC1F,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,EAClC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,+BAA+B,CAAC;gBAE9C,oBAAC,YAAY,OAAG,CACP,CAChB,CAAC,CAAC,CAAC,IAAI,CACE,CACjB;QACD,oBAAC,aAAa,IACV,EAAE,EAAE,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,EAC3E,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;YAEvB,SAAS,IAAI,CACV,oBAAC,SAAS;YACN,wBAAwB;;gBAAxB,wBAAwB;gBACxB,YAAY,EAAC,KAAK,EAClB,SAAS,QACT,SAAS,QACT,OAAO,EAAC,UAAU,EAClB,IAAI,EAAC,QAAQ;gBACb,YAAY;gBACZ,SAAS,QACT,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAEzC,CACL;YACA,QAAQ;YACR,IAAI,CAAC,CAAC,CAAC,iCAAM,IAAI,CAAO,CAAC,CAAC,CAAC,IAAI,CACpB;QAChB,oBAAC,aAAa;YACT,WAAW,KAAK,KAAK,IAAI,CACtB,oBAAC,MAAM,IACH,SAAS,EAAE,oBAAC,SAAS,OAAG,EACxB,QAAQ,EAAE,QAAQ,IAAI,CAAC,aAAa,IAAI,YAAY,KAAK,KAAK,CAAC,EAC/D,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EACzD,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,SAAS,IAEd,IAAI,CAAC,CAAC,CAAC,gBAAgB,IAAI,OAAO,CAAC,CAC/B,CACZ;YACD,oBAAC,MAAM,IACH,KAAK,EAAC,MAAM,EACZ,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,IAAI,OAAO,EAAE,EACnC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAC,WAAW,EACnB,SAAS,EAAE,oBAAC,SAAS,OAAG,IAEvB,IAAI,CAAC,CAAC,CAAC,gBAAgB,IAAI,WAAW,CAAC,CACnC,CACG,CACX,CACZ,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import React, { type JSX, useEffect, useState } from 'react';\n\nimport {\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n TextField,\n Button,\n useMediaQuery,\n useTheme,\n} from '@mui/material';\n\nimport { Check as CheckIcon, Close as CloseIcon, Language as LanguageIcon } from '@mui/icons-material';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nconst styles: Record<string, React.CSSProperties> = {\n modalDialog: {\n minWidth: 400,\n maxWidth: 800,\n },\n overflowHidden: {\n display: 'flex',\n overflow: 'hidden',\n },\n titleIcon: {\n marginRight: 5,\n },\n content: {\n fontSize: 16,\n },\n languageButton: {\n position: 'absolute',\n right: 8,\n top: 8,\n },\n languageButtonActive: {\n color: 'primary.main',\n },\n};\n\ninterface CustomModalProps {\n toggleTranslation?: () => void;\n noTranslation?: boolean;\n title: string;\n fullWidth?: boolean;\n help?: string;\n maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | false;\n progress?: boolean;\n icon?: any;\n applyDisabled?: boolean;\n applyButton?: boolean;\n onClose: () => void;\n children: JSX.Element | JSX.Element[] | string | string[] | undefined | null;\n titleButtonApply?: string;\n titleButtonClose?: string;\n onApply: (value: string) => void;\n textInput?: boolean;\n defaultValue?: string;\n overflowHidden?: boolean;\n}\n\nconst CustomModal = ({\n toggleTranslation,\n noTranslation,\n title,\n fullWidth,\n help,\n maxWidth,\n progress,\n icon,\n applyDisabled,\n applyButton,\n onClose,\n children,\n titleButtonApply,\n titleButtonClose,\n onApply,\n textInput,\n defaultValue,\n overflowHidden,\n}: CustomModalProps): JSX.Element => {\n const [value, setValue] = useState(defaultValue);\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const muiTheme = useTheme();\n const isSmallScreen = useMediaQuery(muiTheme.breakpoints.down('md'));\n\n let Icon = null;\n\n if (icon) {\n Icon = icon;\n }\n\n return (\n <Dialog\n open={!0}\n maxWidth={isSmallScreen ? false : maxWidth || 'md'}\n fullWidth={!!fullWidth}\n fullScreen={isSmallScreen}\n disableEscapeKeyDown={false}\n onClose={onClose}\n sx={{ '& .MuiPaper-root': isSmallScreen ? {} : styles.modalDialog /* paper: classes.background */ }}\n >\n {title && (\n <DialogTitle>\n {icon ? <Icon style={styles.titleIcon} /> : null}\n {title}\n {I18n.getLanguage() !== 'en' && toggleTranslation ? (\n <IconButton\n size=\"large\"\n style={{ ...styles.languageButton, ...(noTranslation ? styles.languageButtonActive : {}) }}\n onClick={() => toggleTranslation()}\n title={I18n.t('ra_Disable/Enable translation')}\n >\n <LanguageIcon />\n </IconButton>\n ) : null}\n </DialogTitle>\n )}\n <DialogContent\n sx={{ ...(overflowHidden ? styles.overflowHidden : {}), ...styles.content }}\n style={{ paddingTop: 8 }}\n >\n {textInput && (\n <TextField\n // className={className}\n autoComplete=\"off\"\n fullWidth\n autoFocus\n variant=\"outlined\"\n size=\"medium\"\n // rows={10}\n multiline\n value={value}\n onChange={e => setValue(e.target.value)}\n // customValue\n />\n )}\n {children}\n {help ? <div>{help}</div> : null}\n </DialogContent>\n <DialogActions>\n {applyButton !== false && (\n <Button\n startIcon={<CheckIcon />}\n disabled={progress || (applyDisabled && defaultValue === value)}\n onClick={() => onApply && onApply(textInput ? value : '')}\n variant=\"contained\"\n color=\"primary\"\n >\n {I18n.t(titleButtonApply || 'ra_Ok')}\n </Button>\n )}\n <Button\n color=\"grey\"\n onClick={() => onClose && onClose()}\n disabled={progress}\n variant=\"contained\"\n startIcon={<CloseIcon />}\n >\n {I18n.t(titleButtonClose || 'ra_Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default CustomModal;\n"]}
package/build/index.d.ts CHANGED
@@ -3,5 +3,5 @@ import JsonConfigComponent from './JsonConfigComponent';
3
3
  import ConfigPanel from './JsonConfigComponent/ConfigPanel';
4
4
  import ConfigGeneric from './JsonConfigComponent/ConfigGeneric';
5
5
  export type { DeviceManagerPropsProps, ConfigGenericProps, ConfigGenericState, } from './JsonConfigComponent/ConfigGeneric';
6
- export type { ConfigItemType, ConfigItemConfirmData, ConfigItem, ConfigItemAlive, ConfigItemSelectOption, ConfigItemPanel, ConfigItemPattern, ConfigItemChip, ConfigItemTabs, ConfigItemText, ConfigItemColor, ConfigItemCheckbox, ConfigItemNumber, ConfigItemQrCode, ConfigItemPassword, ConfigItemObjectId, ConfigItemSlider, ConfigItemTopic, ConfigItemIP, ConfigItemUser, ConfigItemStaticDivider, ConfigItemStaticHeader, ConfigItemStaticImage, ConfigItemStaticText, ConfigItemRoom, ConfigItemFunc, ConfigItemSelect, ConfigItemAutocomplete, ConfigItemSetState, ConfigItemAutocompleteSendTo, ConfigItemAccordion, ConfigItemDivider, ConfigItemHeader, ConfigItemCoordinates, ConfigItemCustom, ConfigItemDatePicker, ConfigItemDeviceManager, ConfigItemLanguage, ConfigItemPort, ConfigItemImageSendTo, ConfigItemSendTo, ConfigItemState, ConfigItemTextSendTo, ConfigItemSelectSendTo, ConfigItemTable, ConfigItemTimePicker, ConfigItemCertCollection, ConfigItemCRON, ConfigItemCertificateSelect, ConfigItemLicense, ConfigItemCertificates, ConfigItemCheckLicense, ConfigItemUUID, ConfigItemJsonEditor, ConfigItemYamlEditor, ConfigItemInterface, ConfigItemImageUpload, ConfigItemInstanceSelect, ConfigItemFile, ConfigItemFileSelector, ConfigItemAny, BackEndCommandType, BackEndCommandGeneric, BackEndCommandNoOperation, BackEndCommandRefresh, BackEndCommandOpenLink, BackEndCommandMessage, BackEndCommand, } from './types';
6
+ export type { ConfigItemType, ConfigItemConfirmData, ConfigItem, ConfigItemAlive, ConfigItemSelectOption, ConfigItemPanel, ConfigItemPattern, ConfigItemChip, ConfigItemTabs, ConfigItemText, ConfigItemColor, ConfigItemCheckbox, ConfigItemNumber, ConfigItemQrCode, ConfigItemQrCodeSendTo, ConfigItemPassword, ConfigItemObjectId, ConfigItemSlider, ConfigItemTopic, ConfigItemIP, ConfigItemUser, ConfigItemStaticDivider, ConfigItemStaticHeader, ConfigItemStaticImage, ConfigItemStaticText, ConfigItemRoom, ConfigItemFunc, ConfigItemSelect, ConfigItemAutocomplete, ConfigItemSetState, ConfigItemAutocompleteSendTo, ConfigItemAccordion, ConfigItemDivider, ConfigItemHeader, ConfigItemCoordinates, ConfigItemCustom, ConfigItemDatePicker, ConfigItemDeviceManager, ConfigItemLanguage, ConfigItemPort, ConfigItemImageSendTo, ConfigItemSendTo, ConfigItemState, ConfigItemTextSendTo, ConfigItemSelectSendTo, ConfigItemTable, ConfigItemTimePicker, ConfigItemCertCollection, ConfigItemCRON, ConfigItemCertificateSelect, ConfigItemLicense, ConfigItemCertificates, ConfigItemCheckLicense, ConfigItemUUID, ConfigItemJsonEditor, ConfigItemYamlEditor, ConfigItemInterface, ConfigItemImageUpload, ConfigItemInstanceSelect, ConfigItemFile, ConfigItemFileSelector, ConfigItemAny, BackEndCommandType, BackEndCommandGeneric, BackEndCommandNoOperation, BackEndCommandRefresh, BackEndCommandOpenLink, BackEndCommandMessage, BackEndCommand, } from './types';
7
7
  export { JsonConfig, JsonConfigComponent, ConfigPanel, ConfigGeneric };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"./src/","sources":["index.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,WAAW,MAAM,mCAAmC,CAAC;AAC5D,OAAO,aAAa,MAAM,qCAAqC,CAAC;AA+EhE,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC","sourcesContent":["import JsonConfig from './JsonConfig';\nimport JsonConfigComponent from './JsonConfigComponent';\nimport ConfigPanel from './JsonConfigComponent/ConfigPanel';\nimport ConfigGeneric from './JsonConfigComponent/ConfigGeneric';\n\nexport type {\n DeviceManagerPropsProps,\n ConfigGenericProps,\n ConfigGenericState,\n} from './JsonConfigComponent/ConfigGeneric';\n\nexport type {\n ConfigItemType,\n ConfigItemConfirmData,\n ConfigItem,\n ConfigItemAlive,\n ConfigItemSelectOption,\n ConfigItemPanel,\n ConfigItemPattern,\n ConfigItemChip,\n ConfigItemTabs,\n ConfigItemText,\n ConfigItemColor,\n ConfigItemCheckbox,\n ConfigItemNumber,\n ConfigItemQrCode,\n ConfigItemPassword,\n ConfigItemObjectId,\n ConfigItemSlider,\n ConfigItemTopic,\n ConfigItemIP,\n ConfigItemUser,\n ConfigItemStaticDivider,\n ConfigItemStaticHeader,\n ConfigItemStaticImage,\n ConfigItemStaticText,\n ConfigItemRoom,\n ConfigItemFunc,\n ConfigItemSelect,\n ConfigItemAutocomplete,\n ConfigItemSetState,\n ConfigItemAutocompleteSendTo,\n ConfigItemAccordion,\n ConfigItemDivider,\n ConfigItemHeader,\n ConfigItemCoordinates,\n ConfigItemCustom,\n ConfigItemDatePicker,\n ConfigItemDeviceManager,\n ConfigItemLanguage,\n ConfigItemPort,\n ConfigItemImageSendTo,\n ConfigItemSendTo,\n ConfigItemState,\n ConfigItemTextSendTo,\n ConfigItemSelectSendTo,\n ConfigItemTable,\n ConfigItemTimePicker,\n ConfigItemCertCollection,\n ConfigItemCRON,\n ConfigItemCertificateSelect,\n ConfigItemLicense,\n ConfigItemCertificates,\n ConfigItemCheckLicense,\n ConfigItemUUID,\n ConfigItemJsonEditor,\n ConfigItemYamlEditor,\n ConfigItemInterface,\n ConfigItemImageUpload,\n ConfigItemInstanceSelect,\n ConfigItemFile,\n ConfigItemFileSelector,\n ConfigItemAny,\n BackEndCommandType,\n BackEndCommandGeneric,\n BackEndCommandNoOperation,\n BackEndCommandRefresh,\n BackEndCommandOpenLink,\n BackEndCommandMessage,\n BackEndCommand,\n} from './types';\n\nexport { JsonConfig, JsonConfigComponent, ConfigPanel, ConfigGeneric };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"./src/","sources":["index.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,WAAW,MAAM,mCAAmC,CAAC;AAC5D,OAAO,aAAa,MAAM,qCAAqC,CAAC;AAgFhE,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC","sourcesContent":["import JsonConfig from './JsonConfig';\nimport JsonConfigComponent from './JsonConfigComponent';\nimport ConfigPanel from './JsonConfigComponent/ConfigPanel';\nimport ConfigGeneric from './JsonConfigComponent/ConfigGeneric';\n\nexport type {\n DeviceManagerPropsProps,\n ConfigGenericProps,\n ConfigGenericState,\n} from './JsonConfigComponent/ConfigGeneric';\n\nexport type {\n ConfigItemType,\n ConfigItemConfirmData,\n ConfigItem,\n ConfigItemAlive,\n ConfigItemSelectOption,\n ConfigItemPanel,\n ConfigItemPattern,\n ConfigItemChip,\n ConfigItemTabs,\n ConfigItemText,\n ConfigItemColor,\n ConfigItemCheckbox,\n ConfigItemNumber,\n ConfigItemQrCode,\n ConfigItemQrCodeSendTo,\n ConfigItemPassword,\n ConfigItemObjectId,\n ConfigItemSlider,\n ConfigItemTopic,\n ConfigItemIP,\n ConfigItemUser,\n ConfigItemStaticDivider,\n ConfigItemStaticHeader,\n ConfigItemStaticImage,\n ConfigItemStaticText,\n ConfigItemRoom,\n ConfigItemFunc,\n ConfigItemSelect,\n ConfigItemAutocomplete,\n ConfigItemSetState,\n ConfigItemAutocompleteSendTo,\n ConfigItemAccordion,\n ConfigItemDivider,\n ConfigItemHeader,\n ConfigItemCoordinates,\n ConfigItemCustom,\n ConfigItemDatePicker,\n ConfigItemDeviceManager,\n ConfigItemLanguage,\n ConfigItemPort,\n ConfigItemImageSendTo,\n ConfigItemSendTo,\n ConfigItemState,\n ConfigItemTextSendTo,\n ConfigItemSelectSendTo,\n ConfigItemTable,\n ConfigItemTimePicker,\n ConfigItemCertCollection,\n ConfigItemCRON,\n ConfigItemCertificateSelect,\n ConfigItemLicense,\n ConfigItemCertificates,\n ConfigItemCheckLicense,\n ConfigItemUUID,\n ConfigItemJsonEditor,\n ConfigItemYamlEditor,\n ConfigItemInterface,\n ConfigItemImageUpload,\n ConfigItemInstanceSelect,\n ConfigItemFile,\n ConfigItemFileSelector,\n ConfigItemAny,\n BackEndCommandType,\n BackEndCommandGeneric,\n BackEndCommandNoOperation,\n BackEndCommandRefresh,\n BackEndCommandOpenLink,\n BackEndCommandMessage,\n BackEndCommand,\n} from './types';\n\nexport { JsonConfig, JsonConfigComponent, ConfigPanel, ConfigGeneric };\n"]}
package/build/types.d.ts CHANGED
@@ -59,6 +59,7 @@ export type ConfigItemType =
59
59
  | 'pattern'
60
60
  | 'port'
61
61
  | 'qrCode'
62
+ | 'qrCodeSendTo'
62
63
  | 'room'
63
64
  | 'select'
64
65
  | 'selectSendTo'
@@ -225,7 +226,7 @@ interface ConfigItemIndexed extends ConfigItem {
225
226
  attr?: string;
226
227
  }
227
228
 
228
- interface ConfigItemTableIndexed extends ConfigItem {
229
+ type ConfigItemTableIndexed = ConfigItemAny & {
229
230
  attr?: string;
230
231
  /** show filter options in the header of the table */
231
232
  filter?: boolean;
@@ -233,7 +234,7 @@ interface ConfigItemTableIndexed extends ConfigItem {
233
234
  sort?: boolean;
234
235
  /** tooltip in the header of the table */
235
236
  title?: string;
236
- }
237
+ };
237
238
 
238
239
  export interface ConfigItemAlive extends ConfigItem {
239
240
  type: 'alive';
@@ -373,6 +374,22 @@ export interface ConfigItemQrCode extends ConfigItem {
373
374
  level?: 'L' | 'M' | 'Q' | 'H';
374
375
  }
375
376
 
377
+ export interface ConfigItemQrCodeSendTo extends Omit<ConfigItem, 'data'> {
378
+ type: 'qrCodeSendTo';
379
+ command?: string;
380
+ alsoDependsOn?: string[];
381
+ data?: Record<string, any>;
382
+ sendFirstByClick?: boolean | ioBroker.StringOrTranslated;
383
+ /** Size of the QR code */
384
+ size?: number;
385
+ /** Foreground color */
386
+ fgColor?: string;
387
+ /** Background color */
388
+ bgColor?: string;
389
+ /** QR code level */
390
+ level?: 'L' | 'M' | 'Q' | 'H';
391
+ }
392
+
376
393
  export interface ConfigItemPassword extends ConfigItem {
377
394
  type: 'password';
378
395
  /** repeat password must be compared with password */
@@ -730,6 +747,7 @@ export interface ConfigItemImageSendTo extends Omit<ConfigItem, 'data'> {
730
747
  alsoDependsOn?: string[];
731
748
  height?: number | string;
732
749
  data?: Record<string, any>;
750
+ sendFirstByClick?: boolean | ioBroker.StringOrTranslated;
733
751
  }
734
752
 
735
753
  export interface ConfigItemSendTo extends Omit<ConfigItem, 'data'> {
@@ -816,6 +834,8 @@ export interface ConfigItemState extends ConfigItem {
816
834
  setOnEnterKey?: boolean;
817
835
  /** Options for `select`. If not defiled, the `common.states` in the object must exist. */
818
836
  options?: (string | ConfigItemSelectOption)[];
837
+ /** Number of decimal places to display for numeric values in text/html mode */
838
+ digits?: number;
819
839
  }
820
840
 
821
841
  export interface ConfigItemTextSendTo extends Omit<ConfigItem, 'data'> {
@@ -1138,7 +1158,8 @@ export type ConfigItemAny =
1138
1158
  | ConfigItemStaticText
1139
1159
  | ConfigItemTopic
1140
1160
  | ConfigItemObjectId
1141
- | ConfigItemQrCode;
1161
+ | ConfigItemQrCode
1162
+ | ConfigItemQrCodeSendTo;
1142
1163
 
1143
1164
  export type JsonConfigContext = {
1144
1165
  adapterName: string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@iobroker/json-config",
3
3
  "description": "This package contains the ioBroker JSON config UI components",
4
- "version": "8.1.10",
4
+ "version": "8.2.1",
5
5
  "author": {
6
6
  "name": "bluefox",
7
7
  "email": "dogafox@gmail.com"
@@ -35,8 +35,8 @@
35
35
  "access": "public"
36
36
  },
37
37
  "dependencies": {
38
- "@iobroker/adapter-react-v5": "^8.0.21",
39
- "@module-federation/runtime": "^2.0.0",
38
+ "@iobroker/adapter-react-v5": "^8.1.1",
39
+ "@module-federation/runtime": "^2.0.1",
40
40
  "@mui/x-date-pickers": "^7.29.4",
41
41
  "crypto-js": "^4.2.0",
42
42
  "json5": "^2.2.3",
@@ -45,17 +45,17 @@
45
45
  "yaml": "^2.8.2"
46
46
  },
47
47
  "devDependencies": {
48
- "@alcalzone/release-script": "^5.0.0",
49
- "@alcalzone/release-script-plugin-license": "^4.0.0",
48
+ "@alcalzone/release-script": "^5.1.1",
49
+ "@alcalzone/release-script-plugin-license": "^5.1.1",
50
50
  "@iobroker/build-tools": "^3.0.1",
51
51
  "@iobroker/eslint-config": "^2.2.0",
52
52
  "@types/crypto-js": "^4.2.2",
53
53
  "@types/json5": "^2.2.0",
54
- "@types/node": "^25.2.1",
54
+ "@types/node": "^25.3.3",
55
55
  "@types/react": "^18.3.28",
56
56
  "@types/react-color": "^3.0.13",
57
57
  "@types/react-dom": "^18.3.7",
58
- "ajv": "^8.17.1",
58
+ "ajv": "^8.18.0",
59
59
  "react-color": "^2.19.3",
60
60
  "tsc-alias": "^1.8.16"
61
61
  },