@genexus/genexus-ide-ui 1.1.47 → 1.1.49
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/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-ai-message.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-name-picker.cjs.entry.js +109 -0
- package/dist/cjs/gx-ide-name-picker.cjs.entry.js.map +1 -0
- package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-plugin-details.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-plugin-details.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-select-user-team.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-select-user-team.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-start-page.cjs.entry.js +20 -38
- package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-ww-files.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-ww-images.cjs.entry.js +1 -1
- package/dist/cjs/{helpers-263b5f4e.js → helpers-21c9cd02.js} +7 -3
- package/dist/cjs/helpers-21c9cd02.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{tabular-grid-render-b1767da2.js → tabular-grid-render-4350dbaf.js} +2 -2
- package/dist/cjs/{tabular-grid-render-b1767da2.js.map → tabular-grid-render-4350dbaf.js.map} +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/common/helpers.js +7 -3
- package/dist/collection/common/helpers.js.map +1 -1
- package/dist/collection/components/name-picker/gx-ide-assets/name-picker/langs/name-picker.lang.en.json +13 -0
- package/dist/collection/components/name-picker/gx-ide-assets/name-picker/langs/name-picker.lang.ja.json +13 -0
- package/dist/collection/components/name-picker/gx-ide-assets/name-picker/langs/name-picker.lang.zh.json +13 -0
- package/dist/collection/components/name-picker/name-picker.css +21 -0
- package/dist/collection/components/name-picker/name-picker.js +184 -0
- package/dist/collection/components/name-picker/name-picker.js.map +1 -0
- package/dist/collection/components/plugin-details/plugin-details.css +1 -3
- package/dist/collection/components/select-user-team/select-user-team.css +2 -0
- package/dist/collection/components/start-page/gx-ide-assets/start-page/langs/start-page.lang.en.json +0 -4
- package/dist/collection/components/start-page/gx-ide-assets/start-page/langs/start-page.lang.ja.json +0 -4
- package/dist/collection/components/start-page/gx-ide-assets/start-page/langs/start-page.lang.zh.json +0 -4
- package/dist/collection/components/start-page/start-page.css +13 -100
- package/dist/collection/components/start-page/start-page.js +44 -109
- package/dist/collection/components/start-page/start-page.js.map +1 -1
- package/dist/collection/testing/locale.e2e.js +1 -0
- package/dist/collection/testing/locale.e2e.js.map +1 -1
- package/dist/components/gx-ide-name-picker.d.ts +11 -0
- package/dist/components/gx-ide-name-picker.js +131 -0
- package/dist/components/gx-ide-name-picker.js.map +1 -0
- package/dist/components/gx-ide-plugin-details.js +1 -1
- package/dist/components/gx-ide-plugin-details.js.map +1 -1
- package/dist/components/gx-ide-select-user-team.js +1 -1
- package/dist/components/gx-ide-select-user-team.js.map +1 -1
- package/dist/components/gx-ide-start-page.js +23 -43
- package/dist/components/gx-ide-start-page.js.map +1 -1
- package/dist/components/helpers.js +6 -2
- package/dist/components/helpers.js.map +1 -1
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-ai-message.entry.js +1 -1
- package/dist/esm/gx-ide-dashboard-home.entry.js +1 -1
- package/dist/esm/gx-ide-name-picker.entry.js +105 -0
- package/dist/esm/gx-ide-name-picker.entry.js.map +1 -0
- package/dist/esm/gx-ide-new-environment.entry.js +1 -1
- package/dist/esm/gx-ide-new-kb.entry.js +1 -1
- package/dist/esm/gx-ide-object-selector.entry.js +1 -1
- package/dist/esm/gx-ide-plugin-details.entry.js +1 -1
- package/dist/esm/gx-ide-plugin-details.entry.js.map +1 -1
- package/dist/esm/gx-ide-select-user-team.entry.js +1 -1
- package/dist/esm/gx-ide-select-user-team.entry.js.map +1 -1
- package/dist/esm/gx-ide-start-page.entry.js +20 -38
- package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +2 -2
- package/dist/esm/gx-ide-team-dev-commit.entry.js +2 -2
- package/dist/esm/gx-ide-team-dev-history.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js +2 -2
- package/dist/esm/gx-ide-ww-files.entry.js +1 -1
- package/dist/esm/gx-ide-ww-images.entry.js +1 -1
- package/dist/esm/{helpers-b180a2d1.js → helpers-7960f084.js} +7 -3
- package/dist/esm/helpers-7960f084.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{tabular-grid-render-96d67a8c.js → tabular-grid-render-f7eb612b.js} +2 -2
- package/dist/esm/{tabular-grid-render-96d67a8c.js.map → tabular-grid-render-f7eb612b.js.map} +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/name-picker/langs/name-picker.lang.en.json +13 -0
- package/dist/genexus-ide-ui/gx-ide-assets/name-picker/langs/name-picker.lang.ja.json +13 -0
- package/dist/genexus-ide-ui/gx-ide-assets/name-picker/langs/name-picker.lang.zh.json +13 -0
- package/dist/genexus-ide-ui/gx-ide-assets/start-page/langs/start-page.lang.en.json +0 -4
- package/dist/genexus-ide-ui/gx-ide-assets/start-page/langs/start-page.lang.ja.json +0 -4
- package/dist/genexus-ide-ui/gx-ide-assets/start-page/langs/start-page.lang.zh.json +0 -4
- package/dist/genexus-ide-ui/{p-137a252f.entry.js → p-12b563fe.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-57ed2623.entry.js → p-2b38e18e.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-af975c83.entry.js → p-4b680e46.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-6f5cf136.entry.js → p-4cc2b3e6.entry.js} +6 -6
- package/dist/genexus-ide-ui/p-4cc2b3e6.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-a58048e9.entry.js → p-4e3ad78d.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-3ccd331f.entry.js → p-5624d287.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-24573081.entry.js → p-59908901.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-18bbaa49.entry.js → p-60302626.entry.js} +26 -26
- package/dist/genexus-ide-ui/p-60302626.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-11a60dbe.entry.js → p-646ddf49.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-c8270f7d.js → p-77c2e69d.js} +2 -2
- package/dist/genexus-ide-ui/{p-31c1b79d.entry.js → p-7f091892.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-1972b953.js → p-8c15538c.js} +13 -10
- package/dist/genexus-ide-ui/p-8c15538c.js.map +1 -0
- package/dist/genexus-ide-ui/{p-072419f9.entry.js → p-8c867f9a.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-d18c51fe.entry.js → p-a7883e6b.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-7a28161f.entry.js → p-c1ad1cc6.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-ab1e2886.entry.js → p-e2b0ee82.entry.js} +549 -575
- package/dist/genexus-ide-ui/p-e2b0ee82.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-e3bce13e.entry.js +143 -0
- package/dist/genexus-ide-ui/p-e3bce13e.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-083d8e94.entry.js → p-ed87224f.entry.js} +3 -3
- package/dist/types/components/name-picker/name-picker.d.ts +27 -0
- package/dist/types/components/start-page/start-page.d.ts +19 -32
- package/dist/types/components.d.ts +45 -20
- package/package.json +1 -1
- package/dist/cjs/helpers-263b5f4e.js.map +0 -1
- package/dist/collection/pages/assets/images/plugin/python-logo.svg +0 -16
- package/dist/esm/helpers-b180a2d1.js.map +0 -1
- package/dist/genexus-ide-ui/p-18bbaa49.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-1972b953.js.map +0 -1
- package/dist/genexus-ide-ui/p-6f5cf136.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-ab1e2886.entry.js.map +0 -1
- /package/dist/genexus-ide-ui/{p-137a252f.entry.js.map → p-12b563fe.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-57ed2623.entry.js.map → p-2b38e18e.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-af975c83.entry.js.map → p-4b680e46.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-a58048e9.entry.js.map → p-4e3ad78d.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-3ccd331f.entry.js.map → p-5624d287.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-24573081.entry.js.map → p-59908901.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-11a60dbe.entry.js.map → p-646ddf49.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-c8270f7d.js.map → p-77c2e69d.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-31c1b79d.entry.js.map → p-7f091892.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-072419f9.entry.js.map → p-8c867f9a.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-d18c51fe.entry.js.map → p-a7883e6b.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-7a28161f.entry.js.map → p-c1ad1cc6.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-083d8e94.entry.js.map → p-ed87224f.entry.js.map} +0 -0
|
@@ -118,10 +118,14 @@ export const formatDate = (date, type = "date-time") => {
|
|
|
118
118
|
}
|
|
119
119
|
else if (type === "date-time-short") {
|
|
120
120
|
// No seconds
|
|
121
|
-
|
|
121
|
+
if (locale === "es-ES") {
|
|
122
|
+
formattedDate = `${year}-${month}-${day} ${time}`;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
formattedDate = `${month}/${day}/${year} ${time}`;
|
|
126
|
+
}
|
|
122
127
|
}
|
|
123
|
-
else {
|
|
124
|
-
// pretty
|
|
128
|
+
else if ("pretty") {
|
|
125
129
|
const daysPassedFromToday = daysFromToday(date);
|
|
126
130
|
const today = new Date();
|
|
127
131
|
const currentYear = today.getFullYear();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/common/helpers.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n ComboBoxModel,\n TreeViewItemModel\n} from \"@genexus/chameleon-controls-library\";\nexport type ChCheckboxArray = HTMLChCheckboxElement[] | null;\n\nimport { GxOption } from \"./types\";\n\nconst daysOfWeek = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n];\n\n/**\n * @param element an HTMLElement\n * @returns an alphabetically ordered array of all the parts and exportparts the element contains.\n */\nexport const getElementSelectorParts = (element: HTMLElement) => {\n const queries: string[] = [];\n const elementParts = element.shadowRoot?.querySelectorAll(`[part]`);\n const elementExportParts =\n element.shadowRoot?.querySelectorAll(`[exportparts]`);\n\n elementParts?.forEach(el => {\n queries.push(\n `${element.tagName.toLowerCase()}::part(${el.getAttribute(\"part\")})`\n );\n });\n elementExportParts?.forEach(el => {\n queries.push(\n ...[\n ...el.getAttribute(\"exportparts\").matchAll(/(?:[\\w-]+:)?([\\w-]+)/g)\n ].map(item => `${element.tagName.toLowerCase()}::part(${item[1]})`)\n );\n });\n\n return queries.sort();\n};\n\n/**\n * @param selector a part selector\n * @returns A reference to the element the part belongs to.\n */\nexport const querySelectorPart = (selector: string) => {\n const querySelectorDeep = (\n element: HTMLElement,\n parts: string\n ): HTMLElement => {\n const shadow = element.shadowRoot;\n const partList = parts.split(\" \");\n\n const partElement: HTMLElement = shadow.querySelector(\n partList.map(partName => `[part~=\"${partName}\"]`).join(\"\")\n );\n if (partElement) {\n return partElement;\n }\n\n const exportPartElement: HTMLElement = shadow.querySelector(\n partList.map(partName => `[exportparts*=\"${partName}\"]`).join(\"\")\n );\n if (exportPartElement) {\n const exportPartList: string[] = [];\n const exportparts = exportPartElement.getAttribute(\"exportparts\");\n\n partList.forEach(partItem => {\n const exportPartName = exportparts.match(\n `(?:([\\\\w-]+):)?(${partItem})`\n )[1];\n if (exportPartName) {\n exportPartList.push(exportPartName);\n }\n });\n\n if (partList.length === exportPartList.length) {\n return querySelectorDeep(exportPartElement, exportPartList.join(\" \"));\n }\n }\n\n return null;\n };\n\n const selectorItems = selector.match(\"(.*)::part\\\\(([^)]+)\\\\)\");\n const entity = selectorItems[1];\n const partName = selectorItems[2];\n\n return querySelectorDeep(document.querySelector(entity), partName);\n};\n\nconst daysFromToday = (date: Date): number => {\n const today = new Date();\n // To calculate the time difference of two dates\n const timeDifference = today.getTime() - date.getTime();\n // To calculate the no. of days between two dates\n const daysDifference = timeDifference / (1000 * 3600 * 24);\n return Math.floor(daysDifference);\n};\n\n// - - - - - - - - - - - -\n// Date Functions\n// - - - - - - - - - - - -\n\nconst isToday = (date: Date): boolean => {\n const today = new Date();\n if (today.toDateString() === date.toDateString()) {\n return true;\n }\n return false;\n};\n\nconst isYesterday = (date: Date): boolean => {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n if (yesterday.toDateString() === date.toDateString()) {\n return true;\n }\n return false;\n};\n\nexport const formatDate = (\n date: Date,\n type: FormatDateType = \"date-time\"\n): string => {\n let formattedDate;\n // validate date\n // undefined or null\n if (date === undefined || date === null) {\n return \"\";\n }\n // If the date object is invalid it will return 'NaN' on getTime() and NaN is never equal to itself\n const dateIsValid = date.getTime() === date.getTime();\n if (!dateIsValid) {\n return \"Invalid date\";\n }\n let locale = \"en-US\";\n const lang = document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf();\n if (lang === \"es\") {\n locale = \"es-ES\";\n }\n formattedDate = date.toLocaleDateString(locale);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n const time = `${hours}:${minutes}`;\n if (type === \"date-time\") {\n formattedDate += ` ${date.toLocaleTimeString()}`;\n } else if (type === \"date-time-short\") {\n // No seconds\n formattedDate = `${year}/${month}/${day} ${time}`;\n } else {\n // pretty\n const daysPassedFromToday = daysFromToday(date);\n const today = new Date();\n const currentYear = today.getFullYear();\n if (isToday(date)) {\n return `Today ${time}`;\n } else if (isYesterday(date)) {\n return `Yesterday ${time}`;\n } else if (daysPassedFromToday <= 7) {\n // If one week or less, just show the day of the week, and the time\n const day = daysOfWeek[date.getDay()];\n return `${day} ${time}`;\n } else if (currentYear === year) {\n // If current year, show day number and month name. Example: November 17th\n if (locale === \"es-ES\") {\n formattedDate = `${day} de ${date.toLocaleString(\"es-ES\", {\n month: \"long\"\n })} ${time}`;\n } else {\n formattedDate = `${date.toLocaleString(\"en-US\", {\n month: \"long\"\n })} ${day} ${time}`;\n }\n } else {\n // Display date as usual\n formattedDate = formatDate(date, \"date-time-short\");\n }\n }\n return formattedDate;\n};\n\nexport type FormatDateType =\n | \"date\"\n | \"date-time\"\n | \"date-time-short\"\n | \"pretty\";\n\n// - - - - - - - - - - - -\n// /End of Date Functions\n// - - - - - - - - - - - -\n\n/* Count the total tree nodes (by default it does not count the first level nodes)*/\nexport const countTreeItems = (\n treeModel: TreeViewItemModel[],\n children = false\n): number => {\n let totalNodes = 0;\n treeModel.forEach(node => {\n children && totalNodes++;\n if (node.items) {\n totalNodes += countTreeItems(node.items, true);\n }\n });\n return totalNodes;\n};\n\n/**\n * @description it evaluates the initial selected combo item\n * @param options an array of GxOption\n * @returns the initial combo value, which in this case is the id\n */\nexport const setInitialComboValue = (options: GxOption[]): string => {\n const selected = options.find(option => option.selected);\n if (selected) {\n return selected.value || selected.id;\n } else {\n return options[0].value || options[0].id;\n }\n};\n\nexport const escapeRegExp = (str: string) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n};\n\n/**\n * @description this function highlights the character(s) that match(es) the filter value.\n * hiChar comes from (hi)light (Char)acters\n * @param text the string to find the filter value on\n * @param filterValue the filter value\n * @returns a span element\n */\nexport const hiChar = function (text: string, filterValue: string) {\n if (text && filterValue) {\n const escapedFilterValue = escapeRegExp(filterValue);\n const re = new RegExp(escapedFilterValue, \"gi\");\n return (\n <span\n innerHTML={text.replace(re, '<span class=\"hiChar\">$&</span>')}\n ></span>\n );\n } else {\n return text;\n }\n};\n\nexport const closeOnOutsideClickHandler = (\n eventInfo: PointerEvent,\n ref: HTMLElement\n): true | void => {\n if (!eventInfo.composedPath().includes(ref)) {\n return true;\n }\n};\n\nexport const mapOptionsToComboBoxItemModel = (\n options: GxOption[]\n): ComboBoxModel =>\n options.map(option => ({\n value: option.id,\n caption: option.label\n // startImgSrc: option.iconName\n }));\n\nexport const renderChCheckboxItems = (\n options: GxOption[] | undefined,\n frontEndCheckboxInputHandler: (\n event: ChCheckboxCustomEvent<string> | InputEvent\n ) => void,\n checkedIds: string[]\n): HTMLChCheckboxElement[] => {\n return options?.map(option => {\n const value = checkedIds?.find(\n id => option.value === id || option.id === id\n );\n return (\n <ch-checkbox\n name={option.name}\n class=\"checkbox\"\n checkedValue={option.value || option.id}\n caption={option.label}\n disabled={option.disabled}\n value={value}\n onInput={frontEndCheckboxInputHandler}\n startImgSrc={option.iconName}\n key={option.value || option.id}\n ></ch-checkbox>\n );\n });\n};\n"]}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/common/helpers.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n ComboBoxModel,\n TreeViewItemModel\n} from \"@genexus/chameleon-controls-library\";\nexport type ChCheckboxArray = HTMLChCheckboxElement[] | null;\n\nimport { GxOption } from \"./types\";\n\nconst daysOfWeek = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n];\n\n/**\n * @param element an HTMLElement\n * @returns an alphabetically ordered array of all the parts and exportparts the element contains.\n */\nexport const getElementSelectorParts = (element: HTMLElement) => {\n const queries: string[] = [];\n const elementParts = element.shadowRoot?.querySelectorAll(`[part]`);\n const elementExportParts =\n element.shadowRoot?.querySelectorAll(`[exportparts]`);\n\n elementParts?.forEach(el => {\n queries.push(\n `${element.tagName.toLowerCase()}::part(${el.getAttribute(\"part\")})`\n );\n });\n elementExportParts?.forEach(el => {\n queries.push(\n ...[\n ...el.getAttribute(\"exportparts\").matchAll(/(?:[\\w-]+:)?([\\w-]+)/g)\n ].map(item => `${element.tagName.toLowerCase()}::part(${item[1]})`)\n );\n });\n\n return queries.sort();\n};\n\n/**\n * @param selector a part selector\n * @returns A reference to the element the part belongs to.\n */\nexport const querySelectorPart = (selector: string) => {\n const querySelectorDeep = (\n element: HTMLElement,\n parts: string\n ): HTMLElement => {\n const shadow = element.shadowRoot;\n const partList = parts.split(\" \");\n\n const partElement: HTMLElement = shadow.querySelector(\n partList.map(partName => `[part~=\"${partName}\"]`).join(\"\")\n );\n if (partElement) {\n return partElement;\n }\n\n const exportPartElement: HTMLElement = shadow.querySelector(\n partList.map(partName => `[exportparts*=\"${partName}\"]`).join(\"\")\n );\n if (exportPartElement) {\n const exportPartList: string[] = [];\n const exportparts = exportPartElement.getAttribute(\"exportparts\");\n\n partList.forEach(partItem => {\n const exportPartName = exportparts.match(\n `(?:([\\\\w-]+):)?(${partItem})`\n )[1];\n if (exportPartName) {\n exportPartList.push(exportPartName);\n }\n });\n\n if (partList.length === exportPartList.length) {\n return querySelectorDeep(exportPartElement, exportPartList.join(\" \"));\n }\n }\n\n return null;\n };\n\n const selectorItems = selector.match(\"(.*)::part\\\\(([^)]+)\\\\)\");\n const entity = selectorItems[1];\n const partName = selectorItems[2];\n\n return querySelectorDeep(document.querySelector(entity), partName);\n};\n\nconst daysFromToday = (date: Date): number => {\n const today = new Date();\n // To calculate the time difference of two dates\n const timeDifference = today.getTime() - date.getTime();\n // To calculate the no. of days between two dates\n const daysDifference = timeDifference / (1000 * 3600 * 24);\n return Math.floor(daysDifference);\n};\n\n// - - - - - - - - - - - -\n// Date Functions\n// - - - - - - - - - - - -\n\nconst isToday = (date: Date): boolean => {\n const today = new Date();\n if (today.toDateString() === date.toDateString()) {\n return true;\n }\n return false;\n};\n\nconst isYesterday = (date: Date): boolean => {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n if (yesterday.toDateString() === date.toDateString()) {\n return true;\n }\n return false;\n};\n\nexport const formatDate = (\n date: Date,\n type: FormatDateType = \"date-time\"\n): string => {\n let formattedDate;\n // validate date\n // undefined or null\n if (date === undefined || date === null) {\n return \"\";\n }\n // If the date object is invalid it will return 'NaN' on getTime() and NaN is never equal to itself\n const dateIsValid = date.getTime() === date.getTime();\n if (!dateIsValid) {\n return \"Invalid date\";\n }\n let locale = \"en-US\";\n const lang = document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf();\n if (lang === \"es\") {\n locale = \"es-ES\";\n }\n formattedDate = date.toLocaleDateString(locale);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n const time = `${hours}:${minutes}`;\n if (type === \"date-time\") {\n formattedDate += ` ${date.toLocaleTimeString()}`;\n } else if (type === \"date-time-short\") {\n // No seconds\n if (locale === \"es-ES\") {\n formattedDate = `${year}-${month}-${day} ${time}`;\n } else {\n formattedDate = `${month}/${day}/${year} ${time}`;\n }\n } else if (\"pretty\") {\n const daysPassedFromToday = daysFromToday(date);\n const today = new Date();\n const currentYear = today.getFullYear();\n if (isToday(date)) {\n return `Today ${time}`;\n } else if (isYesterday(date)) {\n return `Yesterday ${time}`;\n } else if (daysPassedFromToday <= 7) {\n // If one week or less, just show the day of the week, and the time\n const day = daysOfWeek[date.getDay()];\n return `${day} ${time}`;\n } else if (currentYear === year) {\n // If current year, show day number and month name. Example: November 17th\n if (locale === \"es-ES\") {\n formattedDate = `${day} de ${date.toLocaleString(\"es-ES\", {\n month: \"long\"\n })} ${time}`;\n } else {\n formattedDate = `${date.toLocaleString(\"en-US\", {\n month: \"long\"\n })} ${day} ${time}`;\n }\n } else {\n // Display date as usual\n formattedDate = formatDate(date, \"date-time-short\");\n }\n }\n return formattedDate;\n};\n\nexport type FormatDateType =\n | \"date\"\n | \"date-time\"\n | \"date-time-short\"\n | \"pretty\";\n\n// - - - - - - - - - - - -\n// /End of Date Functions\n// - - - - - - - - - - - -\n\n/* Count the total tree nodes (by default it does not count the first level nodes)*/\nexport const countTreeItems = (\n treeModel: TreeViewItemModel[],\n children = false\n): number => {\n let totalNodes = 0;\n treeModel.forEach(node => {\n children && totalNodes++;\n if (node.items) {\n totalNodes += countTreeItems(node.items, true);\n }\n });\n return totalNodes;\n};\n\n/**\n * @description it evaluates the initial selected combo item\n * @param options an array of GxOption\n * @returns the initial combo value, which in this case is the id\n */\nexport const setInitialComboValue = (options: GxOption[]): string => {\n const selected = options.find(option => option.selected);\n if (selected) {\n return selected.value || selected.id;\n } else {\n return options[0].value || options[0].id;\n }\n};\n\nexport const escapeRegExp = (str: string) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n};\n\n/**\n * @description this function highlights the character(s) that match(es) the filter value.\n * hiChar comes from (hi)light (Char)acters\n * @param text the string to find the filter value on\n * @param filterValue the filter value\n * @returns a span element\n */\nexport const hiChar = function (text: string, filterValue: string) {\n if (text && filterValue) {\n const escapedFilterValue = escapeRegExp(filterValue);\n const re = new RegExp(escapedFilterValue, \"gi\");\n return (\n <span\n innerHTML={text.replace(re, '<span class=\"hiChar\">$&</span>')}\n ></span>\n );\n } else {\n return text;\n }\n};\n\nexport const closeOnOutsideClickHandler = (\n eventInfo: PointerEvent,\n ref: HTMLElement\n): true | void => {\n if (!eventInfo.composedPath().includes(ref)) {\n return true;\n }\n};\n\nexport const mapOptionsToComboBoxItemModel = (\n options: GxOption[]\n): ComboBoxModel =>\n options.map(option => ({\n value: option.id,\n caption: option.label\n // startImgSrc: option.iconName\n }));\n\nexport const renderChCheckboxItems = (\n options: GxOption[] | undefined,\n frontEndCheckboxInputHandler: (\n event: ChCheckboxCustomEvent<string> | InputEvent\n ) => void,\n checkedIds: string[]\n): HTMLChCheckboxElement[] => {\n return options?.map(option => {\n const value = checkedIds?.find(\n id => option.value === id || option.id === id\n );\n return (\n <ch-checkbox\n name={option.name}\n class=\"checkbox\"\n checkedValue={option.value || option.id}\n caption={option.label}\n disabled={option.disabled}\n value={value}\n onInput={frontEndCheckboxInputHandler}\n startImgSrc={option.iconName}\n key={option.value || option.id}\n ></ch-checkbox>\n );\n });\n};\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: grid;
|
|
3
|
+
block-size: 100%;
|
|
4
|
+
grid-template-rows: 1fr max-content;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.field-group {
|
|
8
|
+
grid-auto-rows: max-content;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.main {
|
|
12
|
+
overflow: auto;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.section {
|
|
16
|
+
display: contents;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.tooltip {
|
|
20
|
+
position: absolute;
|
|
21
|
+
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f)
|
|
3
|
+
throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
|
5
|
+
throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
6
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
9
|
+
if (kind === "m")
|
|
10
|
+
throw new TypeError("Private method is not writable");
|
|
11
|
+
if (kind === "a" && !f)
|
|
12
|
+
throw new TypeError("Private accessor was defined without a setter");
|
|
13
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
|
14
|
+
throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
15
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
16
|
+
};
|
|
17
|
+
var _GxIdeNamePicker_componentLocale, _GxIdeNamePicker_inputValueEl, _GxIdeNamePicker_handleInputValueChange, _GxIdeNamePicker_cancelClickHandler, _GxIdeNamePicker_confirmClickHandler, _GxIdeNamePicker_initializeValidatableControls, _GxIdeNamePicker_evaluateTooltipRender;
|
|
18
|
+
import { h, Host } from "@stencil/core";
|
|
19
|
+
import { config } from "../../common/config";
|
|
20
|
+
import { validateControls } from "../../common/form-validation";
|
|
21
|
+
import { Locale } from "../../common/locale";
|
|
22
|
+
const CSS_BUNDLES = [
|
|
23
|
+
"resets/box-sizing",
|
|
24
|
+
"utils/form",
|
|
25
|
+
"utils/spacing",
|
|
26
|
+
"utils/layout",
|
|
27
|
+
"chameleon/scrollbar",
|
|
28
|
+
"components/button",
|
|
29
|
+
"components/edit",
|
|
30
|
+
"components/tooltip"
|
|
31
|
+
];
|
|
32
|
+
export class GxIdeNamePicker {
|
|
33
|
+
constructor() {
|
|
34
|
+
/**
|
|
35
|
+
* The component hard-coded strings translations.
|
|
36
|
+
*/
|
|
37
|
+
// eslint-disable-next-line @stencil-community/own-props-must-be-private
|
|
38
|
+
_GxIdeNamePicker_componentLocale.set(this, void 0);
|
|
39
|
+
_GxIdeNamePicker_inputValueEl.set(this, void 0);
|
|
40
|
+
_GxIdeNamePicker_handleInputValueChange.set(this, (event) => {
|
|
41
|
+
this.inputValue = event.detail;
|
|
42
|
+
});
|
|
43
|
+
_GxIdeNamePicker_cancelClickHandler.set(this, async () => {
|
|
44
|
+
this.cancelCallback();
|
|
45
|
+
});
|
|
46
|
+
_GxIdeNamePicker_confirmClickHandler.set(this, async () => {
|
|
47
|
+
const formSubmitResult = await this.createCallback(this.inputValue);
|
|
48
|
+
this.validatableControls = validateControls(formSubmitResult, this.validatableControls);
|
|
49
|
+
});
|
|
50
|
+
_GxIdeNamePicker_initializeValidatableControls.set(this, () => {
|
|
51
|
+
// populate validatableControls with the controls that could have errors.
|
|
52
|
+
const validatableControls = [__classPrivateFieldGet(this, _GxIdeNamePicker_inputValueEl, "f")];
|
|
53
|
+
validatableControls.forEach(validatableControl => {
|
|
54
|
+
if (validatableControl.id) {
|
|
55
|
+
this.validatableControls.set(validatableControl.id, {
|
|
56
|
+
reference: validatableControl,
|
|
57
|
+
hasError: false,
|
|
58
|
+
message: undefined
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
// TODO: evaluate if this should be a global helper function.
|
|
64
|
+
// It is used on other dialogs as well.
|
|
65
|
+
_GxIdeNamePicker_evaluateTooltipRender.set(this, (controlReference) => {
|
|
66
|
+
var _a, _b, _c;
|
|
67
|
+
return ((_b = (_a = this.validatableControls) === null || _a === void 0 ? void 0 : _a.get(controlReference === null || controlReference === void 0 ? void 0 : controlReference.id)) === null || _b === void 0 ? void 0 : _b.hasError) &&
|
|
68
|
+
((_c = this.validatableControls.get(controlReference.id)) === null || _c === void 0 ? void 0 : _c.message) && (h("ch-tooltip", { class: "tooltip", actionElement: controlReference, blockAlign: config.tooltipSettings.blockAlign, inlineAlign: config.tooltipSettings.inlineAlign, delay: config.tooltipSettings.delay }, this.validatableControls.get(controlReference.id).message));
|
|
69
|
+
});
|
|
70
|
+
this.inputValue = undefined;
|
|
71
|
+
this.validatableControls = new Map();
|
|
72
|
+
this.cancelCallback = undefined;
|
|
73
|
+
this.createCallback = undefined;
|
|
74
|
+
this.defaultInputValue = undefined;
|
|
75
|
+
}
|
|
76
|
+
defaultInputValueChanged(newDefaultInputValue) {
|
|
77
|
+
this.inputValue = newDefaultInputValue;
|
|
78
|
+
}
|
|
79
|
+
async componentWillLoad() {
|
|
80
|
+
__classPrivateFieldSet(this, _GxIdeNamePicker_componentLocale, await Locale.getComponentStrings(this.el), "f");
|
|
81
|
+
this.defaultInputValueChanged(this.defaultInputValue);
|
|
82
|
+
}
|
|
83
|
+
componentDidLoad() {
|
|
84
|
+
__classPrivateFieldGet(this, _GxIdeNamePicker_initializeValidatableControls, "f").call(this);
|
|
85
|
+
}
|
|
86
|
+
render() {
|
|
87
|
+
const confirmButtonDisabled = !this.inputValue || this.inputValue.length === 0;
|
|
88
|
+
return (h(Host, { class: "widget" }, h("ch-theme", { model: CSS_BUNDLES }), h("section", { class: "section" }, h("div", { class: "main scrollable field-group spacing-body" }, h("div", { class: "field field-block" }, h("label", { class: "label", htmlFor: "input-name" }, __classPrivateFieldGet(this, _GxIdeNamePicker_componentLocale, "f").labels.name), h("ch-edit", { type: "text", id: "input-name", class: "input", placeholder: __classPrivateFieldGet(this, _GxIdeNamePicker_componentLocale, "f").placeHolders.name, value: this.inputValue, onInput: __classPrivateFieldGet(this, _GxIdeNamePicker_handleInputValueChange, "f"), ref: (el) => (__classPrivateFieldSet(this, _GxIdeNamePicker_inputValueEl, el, "f")) }), __classPrivateFieldGet(this, _GxIdeNamePicker_evaluateTooltipRender, "f").call(this, __classPrivateFieldGet(this, _GxIdeNamePicker_inputValueEl, "f")))), h("footer", { class: "control-footer-with-border spacing-body" }, h("div", { class: "buttons-spacer" }, h("button", { class: "button-secondary", onClick: __classPrivateFieldGet(this, _GxIdeNamePicker_cancelClickHandler, "f") }, __classPrivateFieldGet(this, _GxIdeNamePicker_componentLocale, "f").buttons.cancel), h("button", { class: "button-primary", onClick: __classPrivateFieldGet(this, _GxIdeNamePicker_confirmClickHandler, "f"), disabled: confirmButtonDisabled }, __classPrivateFieldGet(this, _GxIdeNamePicker_componentLocale, "f").buttons.confirm))))));
|
|
89
|
+
}
|
|
90
|
+
static get is() { return "gx-ide-name-picker"; }
|
|
91
|
+
static get encapsulation() { return "shadow"; }
|
|
92
|
+
static get originalStyleUrls() {
|
|
93
|
+
return {
|
|
94
|
+
"$": ["name-picker.scss"]
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
static get styleUrls() {
|
|
98
|
+
return {
|
|
99
|
+
"$": ["name-picker.css"]
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
static get assetsDirs() { return ["gx-ide-assets/name-picker"]; }
|
|
103
|
+
static get properties() {
|
|
104
|
+
return {
|
|
105
|
+
"cancelCallback": {
|
|
106
|
+
"type": "unknown",
|
|
107
|
+
"mutable": false,
|
|
108
|
+
"complexType": {
|
|
109
|
+
"original": "() => Promise<void>",
|
|
110
|
+
"resolved": "() => Promise<void>",
|
|
111
|
+
"references": {
|
|
112
|
+
"Promise": {
|
|
113
|
+
"location": "global",
|
|
114
|
+
"id": "global::Promise"
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"required": false,
|
|
119
|
+
"optional": false,
|
|
120
|
+
"docs": {
|
|
121
|
+
"tags": [],
|
|
122
|
+
"text": "Callback that must be invoked when the 'Cancel' button is pressed."
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
"createCallback": {
|
|
126
|
+
"type": "unknown",
|
|
127
|
+
"mutable": false,
|
|
128
|
+
"complexType": {
|
|
129
|
+
"original": "(\n inputValue: string\n ) => Promise<FormSubmitResult>",
|
|
130
|
+
"resolved": "(inputValue: string) => Promise<FormSubmitResult>",
|
|
131
|
+
"references": {
|
|
132
|
+
"Promise": {
|
|
133
|
+
"location": "global",
|
|
134
|
+
"id": "global::Promise"
|
|
135
|
+
},
|
|
136
|
+
"FormSubmitResult": {
|
|
137
|
+
"location": "import",
|
|
138
|
+
"path": "../../components",
|
|
139
|
+
"id": "src/components.d.ts::FormSubmitResult"
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
"required": false,
|
|
144
|
+
"optional": false,
|
|
145
|
+
"docs": {
|
|
146
|
+
"tags": [],
|
|
147
|
+
"text": "Callback that must be invoked when the 'Create' button is pressed."
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
"defaultInputValue": {
|
|
151
|
+
"type": "string",
|
|
152
|
+
"mutable": false,
|
|
153
|
+
"complexType": {
|
|
154
|
+
"original": "string",
|
|
155
|
+
"resolved": "string",
|
|
156
|
+
"references": {}
|
|
157
|
+
},
|
|
158
|
+
"required": false,
|
|
159
|
+
"optional": false,
|
|
160
|
+
"docs": {
|
|
161
|
+
"tags": [],
|
|
162
|
+
"text": "This property is used to set the initial values of the input field when the component is loaded."
|
|
163
|
+
},
|
|
164
|
+
"attribute": "default-input-value",
|
|
165
|
+
"reflect": false
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
static get states() {
|
|
170
|
+
return {
|
|
171
|
+
"inputValue": {},
|
|
172
|
+
"validatableControls": {}
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
static get elementRef() { return "el"; }
|
|
176
|
+
static get watchers() {
|
|
177
|
+
return [{
|
|
178
|
+
"propName": "defaultInputValue",
|
|
179
|
+
"methodName": "defaultInputValueChanged"
|
|
180
|
+
}];
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
_GxIdeNamePicker_componentLocale = new WeakMap(), _GxIdeNamePicker_inputValueEl = new WeakMap(), _GxIdeNamePicker_handleInputValueChange = new WeakMap(), _GxIdeNamePicker_cancelClickHandler = new WeakMap(), _GxIdeNamePicker_confirmClickHandler = new WeakMap(), _GxIdeNamePicker_initializeValidatableControls = new WeakMap(), _GxIdeNamePicker_evaluateTooltipRender = new WeakMap();
|
|
184
|
+
//# sourceMappingURL=name-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-picker.js","sourceRoot":"","sources":["../../../src/components/name-picker/name-picker.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, h, Host, Prop, State, Watch } from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { config } from \"../../common/config\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../common/form-validation\";\nimport { Locale } from \"../../common/locale\";\nimport { FormSubmitResult } from \"../../components\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form\",\n \"utils/spacing\",\n \"utils/layout\",\n \"chameleon/scrollbar\",\n \"components/button\",\n \"components/edit\",\n \"components/tooltip\"\n];\n\n@Component({\n tag: \"gx-ide-name-picker\",\n styleUrl: \"name-picker.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/name-picker\"]\n})\nexport class GxIdeNamePicker {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n #inputValueEl!: HTMLChEditElement;\n\n @Element() el: HTMLGxIdeNamePickerElement;\n\n /**\n * The input name\n */\n @State() inputValue: string;\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * Callback that must be invoked when the 'Cancel' button is pressed.\n */\n @Prop() readonly cancelCallback: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Create' button is pressed.\n */\n @Prop() readonly createCallback: (\n inputValue: string\n ) => Promise<FormSubmitResult>;\n\n /**\n * This property is used to set the initial values of the input field when the component is loaded.\n */\n @Prop() readonly defaultInputValue: string;\n @Watch(\"defaultInputValue\")\n defaultInputValueChanged(newDefaultInputValue: string) {\n this.inputValue = newDefaultInputValue;\n }\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.defaultInputValueChanged(this.defaultInputValue);\n }\n\n componentDidLoad() {\n this.#initializeValidatableControls();\n }\n\n #handleInputValueChange = (event: CustomEvent<string> | InputEvent) => {\n this.inputValue = event.detail as string;\n };\n\n #cancelClickHandler = async () => {\n this.cancelCallback();\n };\n\n #confirmClickHandler = async () => {\n const formSubmitResult = await this.createCallback(this.inputValue);\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n };\n\n #initializeValidatableControls = () => {\n // populate validatableControls with the controls that could have errors.\n const validatableControls: HTMLElement[] = [this.#inputValueEl];\n validatableControls.forEach(validatableControl => {\n if (validatableControl.id) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on other dialogs as well.\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n render() {\n const confirmButtonDisabled =\n !this.inputValue || this.inputValue.length === 0;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <div class=\"main scrollable field-group spacing-body\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"input-name\">\n {this.#componentLocale.labels.name}\n </label>\n <ch-edit\n type=\"text\"\n id=\"input-name\"\n class=\"input\"\n placeholder={this.#componentLocale.placeHolders.name}\n value={this.inputValue}\n onInput={this.#handleInputValueChange}\n ref={(el: HTMLChEditElement) =>\n (this.#inputValueEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#inputValueEl)}\n </div>\n </div>\n\n <footer class=\"control-footer-with-border spacing-body\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n onClick={this.#cancelClickHandler}\n >\n {this.#componentLocale.buttons.cancel}\n </button>\n\n <button\n class=\"button-primary\"\n onClick={this.#confirmClickHandler}\n disabled={confirmButtonDisabled}\n >\n {this.#componentLocale.buttons.confirm}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
inline-size: 100%;
|
|
7
7
|
align-items: center;
|
|
8
8
|
justify-content: center;
|
|
9
|
+
padding: var(--mer-spacing--xl);
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
.slide {
|
|
@@ -15,6 +16,7 @@
|
|
|
15
16
|
max-block-size: 700px;
|
|
16
17
|
max-inline-size: 1100px;
|
|
17
18
|
background-color: var(--mer-surface__elevation--01);
|
|
19
|
+
border-radius: var(--mer-spacing--md);
|
|
18
20
|
overflow: hidden;
|
|
19
21
|
}
|
|
20
22
|
.slide__illustration {
|
package/dist/collection/components/start-page/gx-ide-assets/start-page/langs/start-page.lang.en.json
CHANGED
|
@@ -8,10 +8,6 @@
|
|
|
8
8
|
"description": "Create a new Knowledge Base to start working.",
|
|
9
9
|
"buttonCaption": "New Knowledge Base"
|
|
10
10
|
},
|
|
11
|
-
"viewSamples": {
|
|
12
|
-
"title": "View Samples",
|
|
13
|
-
"description": "Explore our samples. Search, discover, and chat with the assistant to find exactly what you need."
|
|
14
|
-
},
|
|
15
11
|
"openExistingProject": {
|
|
16
12
|
"title": "Open Existing Project",
|
|
17
13
|
"description": "You can open a project from the server, whether it's a GeneXus Next Start project or any other project.",
|
package/dist/collection/components/start-page/gx-ide-assets/start-page/langs/start-page.lang.ja.json
CHANGED
|
@@ -8,10 +8,6 @@
|
|
|
8
8
|
"description": "作業を開始するための新しいナレッジベースを作成します。",
|
|
9
9
|
"buttonCaption": "新規ナレッジベース"
|
|
10
10
|
},
|
|
11
|
-
"viewSamples": {
|
|
12
|
-
"title": "View Samples",
|
|
13
|
-
"description": "Explore our samples. Search, discover, and chat with the assistant to find exactly what you need."
|
|
14
|
-
},
|
|
15
11
|
"openExistingProject": {
|
|
16
12
|
"title": "既存プロジェクトを開く",
|
|
17
13
|
"description": "サーバーからプロジェクトを開くことができます。GeneXus Next Startプロジェクトまたはその他のプロジェクトを開くことができます。",
|
package/dist/collection/components/start-page/gx-ide-assets/start-page/langs/start-page.lang.zh.json
CHANGED
|
@@ -8,10 +8,6 @@
|
|
|
8
8
|
"description": "Create a new Knowledge Base to start working.",
|
|
9
9
|
"buttonCaption": "New Knowledge Base"
|
|
10
10
|
},
|
|
11
|
-
"viewSamples": {
|
|
12
|
-
"title": "View Samples",
|
|
13
|
-
"description": "Explore our samples. Search, discover, and chat with the assistant to find exactly what you need."
|
|
14
|
-
},
|
|
15
11
|
"openExistingProject": {
|
|
16
12
|
"title": "Open Existing Project",
|
|
17
13
|
"description": "You can open a project from the server, whether it's a GeneXus Next Start project or any other project.",
|