iobroker.telegram-menu 2.2.0 → 2.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 (39) hide show
  1. package/README.md +6 -1
  2. package/admin/build/index.js +56 -56
  3. package/admin/build/index.js.map +4 -4
  4. package/admin/css/button.css +66 -32
  5. package/admin/css/colors.css +140 -0
  6. package/admin/css/custom_classes.css +20 -0
  7. package/admin/css/description.css +4 -4
  8. package/admin/css/edit-container.css +43 -31
  9. package/admin/css/editor-header.css +10 -8
  10. package/admin/css/header.css +11 -15
  11. package/admin/css/input-select.css +131 -0
  12. package/admin/css/row-editor.css +4 -4
  13. package/admin/css/scrollbar.css +21 -0
  14. package/admin/css/style.css +194 -509
  15. package/admin/css/table.css +46 -46
  16. package/admin/css/textarea.css +3 -3
  17. package/admin/i18n/de/translations.json +123 -122
  18. package/admin/i18n/en/translations.json +123 -122
  19. package/admin/i18n/es/translations.json +7 -6
  20. package/admin/i18n/fr/translations.json +7 -6
  21. package/admin/i18n/it/translations.json +7 -6
  22. package/admin/i18n/nl/translations.json +7 -6
  23. package/admin/i18n/pl/translations.json +7 -6
  24. package/admin/i18n/pt/translations.json +7 -6
  25. package/admin/i18n/ru/translations.json +7 -6
  26. package/admin/i18n/uk/translations.json +7 -6
  27. package/admin/i18n/zh-cn/translations.json +7 -6
  28. package/admin/words.js +10 -4
  29. package/build/lib/getstate.js +6 -5
  30. package/build/lib/getstate.js.map +3 -3
  31. package/build/lib/global.js +6 -18
  32. package/build/lib/global.js.map +2 -2
  33. package/build/lib/string.js +29 -0
  34. package/build/lib/string.js.map +7 -0
  35. package/build/lib/utilities.js +8 -6
  36. package/build/lib/utilities.js.map +2 -2
  37. package/io-package.json +14 -14
  38. package/package.json +1 -1
  39. package/admin/css/input.css +0 -104
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/lib/utilities.ts"],
4
- "sourcesContent": ["import TelegramMenu from '../main';\nimport { isJSON, replaceAll } from './global';\nimport { debug, error } from './logging';\nimport type { UserListWithChatId, ProzessTimeValue } from './telegram-menu';\n\nconst processTimeValue = (textToSend: string, obj: ioBroker.State): string => {\n const string = obj.val?.toString();\n if (!string) {\n return textToSend;\n }\n const time = new Date(string);\n const timeString = time.toLocaleDateString('de-DE', {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n });\n textToSend = textToSend.replace('{time}', timeString);\n return textToSend;\n};\n\nconst getChatID = (userListWithChatID: UserListWithChatId[], user: string): string => {\n let chatId = '';\n userListWithChatID.forEach(element => {\n if (element.name === user) {\n chatId = element.chatID;\n }\n });\n return chatId;\n};\nconst exchangeValue = (\n textToSend: string,\n stateVal: string | number | boolean,\n): { valueChange: string; textToSend: string } | boolean => {\n const { startindex, endindex } = decomposeText(textToSend, 'change{', '}');\n\n let match = textToSend.substring(startindex + 'change'.length + 1, textToSend.indexOf('}', startindex));\n\n let objChangeValue;\n match = match.replace(/'/g, '\"');\n\n if (isJSON(`{${match}}`)) {\n objChangeValue = JSON.parse(`{${match}}`);\n } else {\n error([{ text: `There is a error in your input:`, val: replaceAll(match, '\"', \"'\") }]);\n return false;\n }\n\n let newValue;\n objChangeValue[String(stateVal)] ? (newValue = objChangeValue[String(stateVal)]) : (newValue = stateVal);\n return {\n valueChange: newValue,\n textToSend: textToSend.substring(0, startindex) + textToSend.substring(endindex + 1),\n };\n};\n\nfunction decomposeText(\n text: string,\n searchValue: string,\n secondValue: string,\n): { startindex: number; endindex: number; substring: string; textWithoutSubstring: string } {\n const startindex = text.indexOf(searchValue);\n const endindex = text.indexOf(secondValue, startindex);\n const substring = text.substring(startindex, endindex + secondValue.length);\n const textWithoutSubstring = text.replace(substring, '').trim();\n return {\n startindex: startindex,\n endindex: endindex,\n substring: substring,\n textWithoutSubstring: textWithoutSubstring,\n };\n}\n\nfunction changeValue(\n textToSend: string,\n val: string | number | boolean,\n): { textToSend: string; val: string | number } | undefined {\n if (textToSend.includes('change{')) {\n const result = exchangeValue(textToSend, val);\n if (!result) {\n return;\n }\n if (typeof result === 'boolean') {\n return;\n }\n return { textToSend: result.textToSend, val: result.valueChange };\n }\n}\nconst processTimeIdLc = async (textToSend: string, id: string | null): Promise<string | undefined> => {\n const _this = TelegramMenu.getInstance();\n\n let key = '';\n const { substring } = decomposeText(textToSend, '{time.', '}');\n const array = substring.split(',');\n let changedSubstring = substring;\n changedSubstring = changedSubstring.replace(array[0], '');\n\n if (array[0].includes('lc')) {\n key = 'lc';\n } else if (array[0].includes('ts')) {\n key = 'ts';\n }\n let idFromText = '';\n if (!id) {\n if (!changedSubstring.includes('id:')) {\n debug([{ text: 'Error processTimeIdLc: id not found in:', val: changedSubstring }]);\n return;\n }\n\n if (array[2]) {\n idFromText = array[2].replace('id:', '').replace('}', '').replace(/'/g, '');\n changedSubstring = changedSubstring.replace(array[2], '').replace(/,/g, '');\n }\n }\n if (!id && !idFromText) {\n return;\n }\n const value = await _this.getForeignStateAsync(id || idFromText);\n let timeValue;\n let timeStringUser;\n if (key && value) {\n timeStringUser = changedSubstring.replace(',(', '').replace(')', '').replace('}', '');\n timeValue = value[key as keyof ioBroker.StateValue];\n }\n if (!timeValue) {\n return;\n }\n const timeObj = new Date(timeValue);\n const milliseconds = timeObj.getMilliseconds();\n const seconds = timeObj.getSeconds();\n const minutes = timeObj.getMinutes();\n const hours = timeObj.getHours();\n const day = timeObj.getDate();\n const month = timeObj.getMonth() + 1;\n const year = timeObj.getFullYear();\n\n const time = {\n ms: milliseconds < 10 ? `00${milliseconds}` : milliseconds < 100 ? `0${milliseconds}` : milliseconds,\n s: seconds < 10 ? `0${seconds}` : seconds,\n m: minutes < 10 ? `0${minutes}` : minutes,\n h: hours < 10 ? `0${hours}` : hours,\n d: day < 10 ? `0${day}` : day,\n mo: month < 10 ? `0${month}` : month,\n y: year,\n };\n\n if (timeStringUser) {\n if (timeStringUser.includes('sss')) {\n timeStringUser = timeStringUser.replace('sss', time.ms.toString());\n }\n if (timeStringUser.includes('ss')) {\n timeStringUser = timeStringUser.replace('ss', time.s.toString());\n }\n if (timeStringUser.includes('mm')) {\n timeStringUser = timeStringUser.replace('mm', time.m.toString());\n }\n if (timeStringUser.includes('hh')) {\n timeStringUser = timeStringUser.replace('hh', time.h.toString());\n }\n if (timeStringUser.includes('DD')) {\n timeStringUser = timeStringUser.replace('DD', time.d.toString());\n }\n if (timeStringUser.includes('MM')) {\n timeStringUser = timeStringUser.replace('MM', time.mo.toString());\n }\n if (timeStringUser.includes('YYYY')) {\n timeStringUser = timeStringUser.replace('YYYY', time.y.toString());\n }\n if (timeStringUser.includes('YY')) {\n timeStringUser = timeStringUser.replace('YY', time.y.toString().slice(-2));\n }\n timeStringUser = timeStringUser.replace('(', '').replace(')', '');\n return textToSend.replace(substring, timeStringUser);\n }\n\n return textToSend;\n};\n\nconst checkStatus = async (\n text: string,\n processTimeValue?: ProzessTimeValue,\n): Promise<string | undefined | ioBroker.State | null> => {\n try {\n const _this = TelegramMenu.getInstance();\n debug([{ text: 'CheckStatusInfo:', val: text }]);\n\n const substring = decomposeText(text, '{status:', '}').substring;\n let id, valueChange;\n\n if (substring.includes(\"status:'id':\")) {\n id = substring.split(':')[2].replace(\"'}\", '').replace(/'/g, '').replace(/}/g, '');\n\n valueChange = substring.split(':')[3] ? substring.split(':')[3].replace('}', '') !== 'false' : true;\n } else {\n id = substring.split(':')[1].replace(\"'}\", '').replace(/'/g, '').replace(/}/g, '');\n valueChange = substring.split(':')[2] ? substring.split(':')[2].replace('}', '') !== 'false' : true;\n }\n\n const stateValue = await _this.getForeignStateAsync(id);\n\n if (!stateValue) {\n debug([{ text: 'Error getting Value from:', val: id }]);\n return;\n }\n\n if (text.includes('{time}') && processTimeValue) {\n text = text.replace(substring, '');\n if (stateValue.val && typeof stateValue.val === 'string') {\n return processTimeValue(text, stateValue).replace(stateValue.val, '');\n }\n }\n if (stateValue.val === undefined || stateValue.val === null) {\n debug([{ text: 'Id', val: id }, { text: 'Value is null or undefined!' }]);\n return text.replace(substring, '');\n }\n if (!valueChange) {\n return text.replace(substring, stateValue.val.toString());\n }\n const changedResult = changeValue(text, stateValue.val);\n let newValue;\n if (changedResult) {\n text = changedResult.textToSend;\n newValue = changedResult.val;\n } else {\n newValue = stateValue.val;\n }\n return text.replace(substring, newValue.toString());\n } catch (e: any) {\n error([\n { text: 'Error checkStatus:', val: e.message },\n { text: 'Stack:', val: e.stack },\n ]);\n }\n};\nconst checkStatusInfo = async (text: string): Promise<string | undefined> => {\n const _this = TelegramMenu.getInstance();\n\n try {\n if (!text) {\n return;\n }\n _this.log.debug(`Text: ${JSON.stringify(text)}`);\n if (text.includes('{status:')) {\n while (text.includes('{status:')) {\n const result = await checkStatus(text, processTimeValue);\n text = result?.toString() || '';\n }\n }\n if (text.includes('{time.lc') || text.includes('{time.ts')) {\n text = (await processTimeIdLc(text, null)) || '';\n }\n if (text.includes('{set:')) {\n const result = decomposeText(text, '{set:', '}');\n const id = result.substring.split(',')[0].replace(\"{set:'id':\", '').replace(/'/g, '');\n const importedValue = result.substring.split(',')[1];\n\n text = result.textWithoutSubstring;\n const convertedValue = await checkTypeOfId(id, importedValue);\n\n const ack = result.substring.split(',')[2].replace('}', '') == 'true';\n\n if (text === '') {\n text = 'W\u00E4hle eine Aktion';\n }\n if (convertedValue) {\n await _this.setForeignStateAsync(id, convertedValue, ack);\n }\n }\n if (text) {\n return text;\n }\n } catch (e: any) {\n error([\n { text: 'Error checkStatusInfo:', val: e.message },\n { text: 'Stack:', val: e.stack },\n ]);\n }\n};\n\nasync function checkTypeOfId(\n id: string,\n value: ioBroker.State | ioBroker.StateValue | ioBroker.SettableState,\n): Promise<ioBroker.State | null | undefined | ioBroker.StateValue | ioBroker.SettableState> {\n const _this = TelegramMenu.getInstance();\n try {\n debug([{ text: `Check Type of Id: ${id}` }]);\n const obj = await _this.getForeignObjectAsync(id);\n const receivedType = typeof value;\n if (!obj || !value) {\n return value;\n }\n if (receivedType === obj.common.type || !obj.common.type) {\n return value;\n }\n\n debug([{ text: `Change Value type from \"${receivedType}\" to \"${obj.common.type}\"` }]);\n\n if (obj.common.type === 'boolean') {\n if (value == 'true') {\n value = true;\n }\n if (value == 'false') {\n value = false;\n }\n return value;\n }\n if (obj.common.type === 'string') {\n return JSON.stringify(value);\n }\n if (obj && obj.common && obj.common.type === 'number' && typeof value === 'string') {\n return parseFloat(value);\n }\n\n return value;\n } catch (e: any) {\n error([\n { text: 'Error checkTypeOfId:', val: e.message },\n { text: 'Stack:', val: e.stack },\n ]);\n }\n}\nconst newLine = (text: string): string => {\n if (text && text.includes('\\\\n')) {\n return text.replace(/\\\\n/g, '\\n');\n }\n return text;\n};\n\nexport {\n checkStatusInfo,\n checkTypeOfId,\n changeValue,\n newLine,\n processTimeIdLc,\n processTimeValue,\n decomposeText,\n replaceAll,\n getChatID,\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import TelegramMenu from '../main';\nimport { isDefined, isJSON, replaceAll } from './global';\nimport { debug, error } from './logging';\nimport type { UserListWithChatId, ProzessTimeValue } from './telegram-menu';\n\nconst processTimeValue = (textToSend: string, obj: ioBroker.State): string => {\n const date = Number(obj.val);\n\n if (!isDefined(date)) {\n return textToSend;\n }\n const time = new Date(date);\n if (isNaN(time.getTime())) {\n error([{ text: 'Invalid Date:', val: date }]);\n return textToSend;\n }\n const timeString = time.toLocaleDateString('de-DE', {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n });\n return textToSend.replace('{time}', timeString);\n};\n\nconst getChatID = (userListWithChatID: UserListWithChatId[], user: string): string => {\n let chatId = '';\n userListWithChatID.forEach(element => {\n if (element.name === user) {\n chatId = element.chatID;\n }\n });\n return chatId;\n};\nconst exchangeValue = (\n textToSend: string,\n stateVal: string | number | boolean,\n): { valueChange: string; textToSend: string } | boolean => {\n const { startindex, endindex } = decomposeText(textToSend, 'change{', '}');\n\n let match = textToSend.substring(startindex + 'change'.length + 1, textToSend.indexOf('}', startindex));\n\n let objChangeValue;\n match = match.replace(/'/g, '\"');\n\n if (isJSON(`{${match}}`)) {\n objChangeValue = JSON.parse(`{${match}}`);\n } else {\n error([{ text: `There is a error in your input:`, val: replaceAll(match, '\"', \"'\") }]);\n return false;\n }\n\n let newValue;\n objChangeValue[String(stateVal)] ? (newValue = objChangeValue[String(stateVal)]) : (newValue = stateVal);\n return {\n valueChange: newValue,\n textToSend: textToSend.substring(0, startindex) + textToSend.substring(endindex + 1),\n };\n};\n\nfunction decomposeText(\n text: string,\n searchValue: string,\n secondValue: string,\n): { startindex: number; endindex: number; substring: string; textWithoutSubstring: string } {\n const startindex = text.indexOf(searchValue);\n const endindex = text.indexOf(secondValue, startindex);\n const substring = text.substring(startindex, endindex + secondValue.length);\n const textWithoutSubstring = text.replace(substring, '').trim();\n return {\n startindex: startindex,\n endindex: endindex,\n substring: substring,\n textWithoutSubstring: textWithoutSubstring,\n };\n}\n\nfunction changeValue(\n textToSend: string,\n val: string | number | boolean,\n): { textToSend: string; val: string | number } | undefined {\n if (textToSend.includes('change{')) {\n const result = exchangeValue(textToSend, val);\n if (!result) {\n return;\n }\n if (typeof result === 'boolean') {\n return;\n }\n return { textToSend: result.textToSend, val: result.valueChange };\n }\n}\n\nconst processTimeIdLc = async (textToSend: string, id: string | null): Promise<string | undefined> => {\n const _this = TelegramMenu.getInstance();\n\n let key = '';\n const { substring } = decomposeText(textToSend, '{time.', '}');\n const array = substring.split(',');\n let changedSubstring = substring;\n changedSubstring = changedSubstring.replace(array[0], '');\n\n if (array[0].includes('lc')) {\n key = 'lc';\n } else if (array[0].includes('ts')) {\n key = 'ts';\n }\n let idFromText = '';\n if (!id) {\n if (!changedSubstring.includes('id:')) {\n debug([{ text: 'Error processTimeIdLc: id not found in:', val: changedSubstring }]);\n return;\n }\n\n if (array[2]) {\n idFromText = array[2].replace('id:', '').replace('}', '').replace(/'/g, '');\n changedSubstring = changedSubstring.replace(array[2], '').replace(/,/g, '');\n }\n }\n if (!id && !idFromText) {\n return;\n }\n const value = await _this.getForeignStateAsync(id || idFromText);\n let timeValue;\n let timeStringUser;\n if (key && value) {\n timeStringUser = changedSubstring.replace(',(', '').replace(')', '').replace('}', '');\n timeValue = value[key as keyof ioBroker.StateValue];\n }\n if (!timeValue) {\n return;\n }\n const timeObj = new Date(timeValue);\n const milliseconds = timeObj.getMilliseconds();\n const seconds = timeObj.getSeconds();\n const minutes = timeObj.getMinutes();\n const hours = timeObj.getHours();\n const day = timeObj.getDate();\n const month = timeObj.getMonth() + 1;\n const year = timeObj.getFullYear();\n\n const time = {\n ms: milliseconds < 10 ? `00${milliseconds}` : milliseconds < 100 ? `0${milliseconds}` : milliseconds,\n s: seconds < 10 ? `0${seconds}` : seconds,\n m: minutes < 10 ? `0${minutes}` : minutes,\n h: hours < 10 ? `0${hours}` : hours,\n d: day < 10 ? `0${day}` : day,\n mo: month < 10 ? `0${month}` : month,\n y: year,\n };\n\n if (timeStringUser) {\n if (timeStringUser.includes('sss')) {\n timeStringUser = timeStringUser.replace('sss', time.ms.toString());\n }\n if (timeStringUser.includes('ss')) {\n timeStringUser = timeStringUser.replace('ss', time.s.toString());\n }\n if (timeStringUser.includes('mm')) {\n timeStringUser = timeStringUser.replace('mm', time.m.toString());\n }\n if (timeStringUser.includes('hh')) {\n timeStringUser = timeStringUser.replace('hh', time.h.toString());\n }\n if (timeStringUser.includes('DD')) {\n timeStringUser = timeStringUser.replace('DD', time.d.toString());\n }\n if (timeStringUser.includes('MM')) {\n timeStringUser = timeStringUser.replace('MM', time.mo.toString());\n }\n if (timeStringUser.includes('YYYY')) {\n timeStringUser = timeStringUser.replace('YYYY', time.y.toString());\n }\n if (timeStringUser.includes('YY')) {\n timeStringUser = timeStringUser.replace('YY', time.y.toString().slice(-2));\n }\n timeStringUser = timeStringUser.replace('(', '').replace(')', '');\n return textToSend.replace(substring, timeStringUser);\n }\n\n return textToSend;\n};\n\nconst checkStatus = async (\n text: string,\n processTimeValue?: ProzessTimeValue,\n): Promise<string | undefined | ioBroker.State | null> => {\n try {\n const _this = TelegramMenu.getInstance();\n debug([{ text: 'CheckStatusInfo:', val: text }]);\n\n const substring = decomposeText(text, '{status:', '}').substring;\n let id, valueChange;\n\n if (substring.includes(\"status:'id':\")) {\n id = substring.split(':')[2].replace(\"'}\", '').replace(/'/g, '').replace(/}/g, '');\n\n valueChange = substring.split(':')[3] ? substring.split(':')[3].replace('}', '') !== 'false' : true;\n } else {\n id = substring.split(':')[1].replace(\"'}\", '').replace(/'/g, '').replace(/}/g, '');\n valueChange = substring.split(':')[2] ? substring.split(':')[2].replace('}', '') !== 'false' : true;\n }\n\n const stateValue = await _this.getForeignStateAsync(id);\n\n if (!stateValue) {\n debug([{ text: 'Error getting Value from:', val: id }]);\n return;\n }\n\n if (text.includes('{time}') && processTimeValue) {\n text = text.replace(substring, '');\n if (stateValue.val && typeof stateValue.val === 'string') {\n return processTimeValue(text, stateValue).replace(stateValue.val, '');\n }\n }\n if (stateValue.val === undefined || stateValue.val === null) {\n debug([{ text: 'Id', val: id }, { text: 'Value is null or undefined!' }]);\n return text.replace(substring, '');\n }\n if (!valueChange) {\n return text.replace(substring, stateValue.val.toString());\n }\n const changedResult = changeValue(text, stateValue.val);\n let newValue;\n if (changedResult) {\n text = changedResult.textToSend;\n newValue = changedResult.val;\n } else {\n newValue = stateValue.val;\n }\n return text.replace(substring, newValue.toString());\n } catch (e: any) {\n error([\n { text: 'Error checkStatus:', val: e.message },\n { text: 'Stack:', val: e.stack },\n ]);\n }\n};\nconst checkStatusInfo = async (text: string): Promise<string | undefined> => {\n const _this = TelegramMenu.getInstance();\n\n try {\n if (!text) {\n return;\n }\n _this.log.debug(`Text: ${JSON.stringify(text)}`);\n if (text.includes('{status:')) {\n while (text.includes('{status:')) {\n const result = await checkStatus(text, processTimeValue);\n text = result?.toString() || '';\n }\n }\n if (text.includes('{time.lc') || text.includes('{time.ts')) {\n text = (await processTimeIdLc(text, null)) || '';\n }\n if (text.includes('{set:')) {\n const result = decomposeText(text, '{set:', '}');\n const id = result.substring.split(',')[0].replace(\"{set:'id':\", '').replace(/'/g, '');\n const importedValue = result.substring.split(',')[1];\n\n text = result.textWithoutSubstring;\n const convertedValue = await checkTypeOfId(id, importedValue);\n\n const ack = result.substring.split(',')[2].replace('}', '') == 'true';\n\n if (text === '') {\n text = 'W\u00E4hle eine Aktion';\n }\n if (convertedValue) {\n await _this.setForeignStateAsync(id, convertedValue, ack);\n }\n }\n if (text) {\n return text;\n }\n } catch (e: any) {\n error([\n { text: 'Error checkStatusInfo:', val: e.message },\n { text: 'Stack:', val: e.stack },\n ]);\n }\n};\n\nasync function checkTypeOfId(\n id: string,\n value: ioBroker.State | ioBroker.StateValue | ioBroker.SettableState,\n): Promise<ioBroker.State | null | undefined | ioBroker.StateValue | ioBroker.SettableState> {\n const _this = TelegramMenu.getInstance();\n try {\n debug([{ text: `Check Type of Id: ${id}` }]);\n const obj = await _this.getForeignObjectAsync(id);\n const receivedType = typeof value;\n if (!obj || !value) {\n return value;\n }\n if (receivedType === obj.common.type || !obj.common.type) {\n return value;\n }\n\n debug([{ text: `Change Value type from \"${receivedType}\" to \"${obj.common.type}\"` }]);\n\n if (obj.common.type === 'boolean') {\n if (value == 'true') {\n value = true;\n }\n if (value == 'false') {\n value = false;\n }\n return value;\n }\n if (obj.common.type === 'string') {\n return JSON.stringify(value);\n }\n if (obj && obj.common && obj.common.type === 'number' && typeof value === 'string') {\n return parseFloat(value);\n }\n\n return value;\n } catch (e: any) {\n error([\n { text: 'Error checkTypeOfId:', val: e.message },\n { text: 'Stack:', val: e.stack },\n ]);\n }\n}\n\nconst newLine = (text: string): string => {\n if (text && text.includes('\\\\n')) {\n return text.replace(/\\\\n/g, '\\n');\n }\n return text;\n};\n\nexport {\n checkStatusInfo,\n checkTypeOfId,\n changeValue,\n newLine,\n processTimeIdLc,\n processTimeValue,\n decomposeText,\n replaceAll,\n getChatID,\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["TelegramMenu", "processTimeValue"]
7
7
  }
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "telegram-menu",
4
- "version": "2.2.0",
4
+ "version": "2.2.1",
5
5
  "news": {
6
+ "2.2.1": {
7
+ "en": "FIX: Infinite loop on open events\nFIX: #248 Error converting time",
8
+ "de": "FIX: Unendliche Schleife auf offenen Veranstaltungen\nFIX: #248 Zeit ändern",
9
+ "ru": "FIX: Бесконечный цикл на открытых мероприятиях\nFIX: #248 Ошибка преобразования времени",
10
+ "pt": "FIX: loop infinito em eventos abertos\nFIX: #248 Tempo de conversão de erro",
11
+ "nl": "FIX: Oneindige lus op open gebeurtenissen\nFIX: #248 Fout bij het omzetten tijd",
12
+ "fr": "FIX: Boucle infinie sur les événements ouverts\nFIX: #248 Temps de conversion des erreurs",
13
+ "it": "FIX: Ciclo infinito sugli eventi aperti\nFIX: #248 Tempo di conversione di errore",
14
+ "es": "FIX: bucle infinito en eventos abiertos\nFIX: #248 Tiempo de conversión del error",
15
+ "pl": "FIX: Nieskończona pętla na otwartych zdarzeniach\nFIX: # 248 Czas konwersji błędów",
16
+ "uk": "FIX: Нескінченна петля на відкритих заходах\nFIX: #248 Час перетворення помилки",
17
+ "zh-cn": "FIX:关于公开事件的无限循环\nFIX: # 248 转换时间出错"
18
+ },
6
19
  "2.2.0": {
7
20
  "en": "FEAT: #237 Navigate by nav-button-click to action\nFIX: Cannot get value false in return text\nFIX: Delete row in Actions\nFIX: HttpRequest\nFEAT: Navigation styling and selectable menus",
8
21
  "de": "FEAT: #237 Navigieren Sie mit nav-button-klick auf Aktion\nFIX: Kann nicht Wert falsch im Rückgabetext erhalten\nFIX: Zeile in Aktion löschen\nFIX: HttpRequest\nFEAT: Navigations-Styling und wählbare Menüs",
@@ -80,19 +93,6 @@
80
93
  "pl": "FEAT: Styling\nCHORE: Uaktualnij zależności\nFIX: # 211 Brak danych wejściowych\nCHORE: Migracja do ESLint 9 i @ iobroker / eslint- config",
81
94
  "uk": "FEAT: Стилування\nCHORE: Оновити залежності\nFIX: #211 Немає можливості введення\nCHORE: Міграція до ESLint 9 і @iobroker/eslint-config",
82
95
  "zh-cn": "斯图林\nCHORE: 更新依赖性\nFIX: #211 (英语). 无法输入\nCHORE: 迁移到ESLint 9 和 @iobroster/eslint-config"
83
- },
84
- "2.1.4": {
85
- "en": "FIX: #203 Scrolling in table",
86
- "de": "FIX: #203 Scrolling in Tabelle",
87
- "ru": "FIX: #203",
88
- "pt": "FIX: #203 Rolagem na mesa",
89
- "nl": "FIX: #203 Scrollen in tabel",
90
- "fr": "FIXE: #203 Faire défiler le tableau",
91
- "it": "FIX: #203 Scorrelare in tavola",
92
- "es": "FIX: #203 Scrolling in table",
93
- "pl": "FIX: # 203 Przewijanie w tabeli",
94
- "uk": "FIX: #203 Прокручування в таблиці",
95
- "zh-cn": "FIX: # 203 在表格中滚动"
96
96
  }
97
97
  },
98
98
  "titleLang": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.telegram-menu",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "description": "Easily create Telegram Menus",
5
5
  "author": {
6
6
  "name": "MiRo1310",
@@ -1,104 +0,0 @@
1
- input {
2
- margin: 0 !important;
3
- padding-left: 5px !important;
4
- border: none !important;
5
- width: calc(100% - 50px) !important;
6
- font-size: 16px !important;
7
- border-color: #ccc !important;
8
- border-bottom: 1px solid #ccc !important;
9
- }
10
-
11
- body .header__actions input {
12
- font-size: 1.0rem !important;
13
- width: 300px !important;
14
- }
15
-
16
- .Settings input[type="checkbox"] {
17
- margin-left: 8px;
18
- }
19
-
20
- .RenameCard input {
21
- text-align: center;
22
- }
23
-
24
- tr[draggable="true"] input {
25
- cursor: text;
26
- user-select: text; /* Standard */
27
- -moz-user-select: text; /* Firefox */
28
- -webkit-user-select: text; /* Safari */
29
- -ms-user-select: text; /* Internet Explorer/Edge */
30
- /* padding: 5px 0; */
31
- }
32
-
33
- .inUse,
34
- .inUse input {
35
- color: red !important;
36
- border-color: red !important;
37
- }
38
-
39
- .dark input,
40
- .blue input {
41
- background-color: inherit;
42
- color: white;
43
- border-bottom: 1px solid white !important;
44
- }
45
-
46
- .dark .header__menu_container input:hover,
47
- .blue .header__menu_container input:hover {
48
- border-width: 2px !important;
49
- }
50
-
51
- input ~ p {
52
- margin-left: 5px !important;
53
- }
54
-
55
- input ~ p {
56
- margin-top: 0 !important;
57
- display: block;
58
- }
59
-
60
- input:focus {
61
- outline: none;
62
- }
63
-
64
- input:disabled {
65
- opacity: 0.3;
66
- }
67
-
68
- /* checkbox */
69
- /* Allgemein */
70
- label.checkbox {
71
- display: flex;
72
- align-items: center;
73
- height: 20px;
74
- }
75
-
76
- label.checkbox input {
77
- display: inline-block !important;
78
- width: 20px !important;
79
- height: 20px !important;
80
- }
81
-
82
- label.checkbox span {
83
- margin-left: 5px;
84
- }
85
-
86
- #root table tbody input[type="checkbox"] {
87
- width: 20px !important;
88
- height: 20px !important;
89
- vertical-align: text-bottom;
90
- cursor: pointer !important;
91
- }
92
-
93
- input[type="checkbox"]:checked {
94
- accent-color: rgb(33, 150, 243);
95
- }
96
-
97
- .checkbox__line {
98
- margin-left: 8px !important;
99
- margin-top: 5px !important;
100
- }
101
-
102
- .input__container--settings {
103
- width: 100% !important;
104
- }