@genexus/genexus-ide-ui 0.0.96 → 0.0.97
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-start-page.cjs.entry.js +44 -4
- package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/start-page/start-page.js +44 -4
- package/dist/collection/components/start-page/start-page.js.map +1 -1
- package/dist/components/gx-ide-start-page.js +66 -50
- package/dist/components/gx-ide-start-page.js.map +1 -1
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-start-page.entry.js +44 -4
- package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/{p-f18b01c1.entry.js → p-9c6c5a61.entry.js} +79 -79
- package/dist/genexus-ide-ui/p-9c6c5a61.entry.js.map +1 -0
- package/dist/types/components/start-page/start-page.d.ts +0 -1
- package/package.json +1 -1
- package/dist/genexus-ide-ui/p-f18b01c1.entry.js.map +0 -1
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { r as
|
|
1
|
+
import { r as i, c as e, h as r, H as t, g as o } from "./p-2776d2f9.js";
|
|
2
2
|
|
|
3
|
-
import { L as
|
|
3
|
+
import { L as a } from "./p-74d59062.js";
|
|
4
4
|
|
|
5
|
-
import { f as
|
|
5
|
+
import { f as n } from "./p-04f3d630.js";
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const s = ".gxi-hidden{display:none !important}.gxi-full-height{height:100%}.gxi-overflow-auto{overflow:auto}.gxi-display-flex{display:flex}.align-start{display:flex;align-items:start}.align-center{display:flex;align-items:center}.align-end{display:flex;align-items:end}.overflow-auto{overflow:auto}.justify-start{display:flex;justify-content:start}.justify-center{display:flex;justify-content:center}.justify-end{display:flex;justify-content:end}.grid{display:grid;grid-row-gap:var(--gx-ide-grid-row-gap);grid-column-gap:var(--gx-ide-grid-column-gap);grid-template-rows:auto}ch-grid-cell{display:flex}ch-grid{overflow:auto;height:100%}ch-grid-column{z-index:99;border-bottom:1px solid var(--mer-color__neutral-gray--800)}ch-grid-column:first-child{padding-inline-start:var(--gx-ide-container__padding) !important}ch-grid-column:last-child{padding-inline-end:var(--gx-ide-container__padding) !important}ch-grid-cell{--mer-spacing--xs:var(--gx-ide-container__padding)}.layout{display:grid;gap:var(--mer-spacing--lg);box-sizing:border-box}.layout--two-cols{grid-template-columns:1fr 1fr}.layout--space-above{padding-block-start:var(--mer-spacing--lg)}gxg-tabs{box-shadow:none}:host(.gx-ide-component){height:100% !important;display:flex !important;flex-direction:column !important}:host(:focus-within) gx-ide-top-bar::part(wrapper){background-color:var(--color-secondary-enabled)}.gx-ide-main-wrapper{color:var(--gx-ide-component-text-color);font-weight:var(--mer-font__weight--regular);font-size:var(--mer-font__size--xs);font-family:var(--mer-font-family--primary);height:100%;background-color:var(--gx-ide-component-background-color);display:flex;flex-direction:column;flex-grow:1;box-sizing:border-box}.gx-ide-main{flex-grow:1;overflow-y:auto;}.gx-ide-main::-webkit-scrollbar{width:6px;height:6px}.gx-ide-main::-webkit-scrollbar-track{background-color:var(--gray-02);border-radius:10px}.gx-ide-main::-webkit-scrollbar-thumb{background:var(--gray-05);border-radius:10px}.gx-ide-main::-webkit-scrollbar-thumb:hover{background:var(--gray-04);cursor:pointer}.gx-ide-main .gxg-scroll{display:block;overflow-y:auto;padding-inline-end:2px}.gx-ide-overflow{overflow-y:auto;}.gx-ide-overflow::-webkit-scrollbar{width:6px;height:6px}.gx-ide-overflow::-webkit-scrollbar-track{background-color:var(--gray-02);border-radius:10px}.gx-ide-overflow::-webkit-scrollbar-thumb{background:var(--gray-05);border-radius:10px}.gx-ide-overflow::-webkit-scrollbar-thumb:hover{background:var(--gray-04);cursor:pointer}.gx-ide-overflow .gxg-scroll{display:block;overflow-y:auto;padding-inline-end:2px}.tree-container{display:flex;height:100%;width:100%;box-sizing:border-box}:host{display:block;box-shadow:none;height:100%;overflow:auto;opacity:0;transition:var(--gx-ide-show-component-delay) opacity}:host(.rendered){opacity:1}gxg-tabs{background-color:transparent;box-shadow:none;height:100% !important;overflow:auto}.layout{height:100%;overflow:auto}.layout gxg-card{height:100%;overflow:auto}.kbs-container,.news-container{display:flex;flex-direction:column;gap:var(--gx-ide-articles-gap)}.news-container p:first-child{margin-top:0}.news-container p:last-child{margin-bottom:0}gxg-card.section{border-bottom:2px solid var(--gray-00)}";
|
|
8
8
|
|
|
9
9
|
const l = class {
|
|
10
|
-
constructor(
|
|
11
|
-
|
|
12
|
-
this.componentDidRenderFirstTime =
|
|
13
|
-
this.getNewsCallbackRecentNews = async () => new Promise((async
|
|
10
|
+
constructor(t) {
|
|
11
|
+
i(this, t);
|
|
12
|
+
this.componentDidRenderFirstTime = e(this, "componentDidRenderFirstTime", 7);
|
|
13
|
+
this.getNewsCallbackRecentNews = async () => new Promise((async i => {
|
|
14
14
|
if (this.getNewsCallback) {
|
|
15
|
-
const
|
|
16
|
-
|
|
15
|
+
const e = await this.getNewsCallback();
|
|
16
|
+
i(e);
|
|
17
17
|
}
|
|
18
18
|
}));
|
|
19
19
|
// 7.LISTENERS //
|
|
20
20
|
// 8.PUBLIC METHODS API //
|
|
21
21
|
// 9.LOCAL METHODS //
|
|
22
|
-
this.kbClickHandler = async
|
|
23
|
-
const
|
|
22
|
+
this.kbClickHandler = async i => {
|
|
23
|
+
const e = i.target.id;
|
|
24
24
|
if (this.openKbCallback) {
|
|
25
|
-
await this.openKbCallback(
|
|
25
|
+
await this.openKbCallback(e);
|
|
26
26
|
}
|
|
27
27
|
};
|
|
28
|
-
this.searchKbsInputHandler =
|
|
29
|
-
this.kbsFilterValue =
|
|
28
|
+
this.searchKbsInputHandler = i => {
|
|
29
|
+
this.kbsFilterValue = i.detail.toLowerCase();
|
|
30
30
|
};
|
|
31
31
|
// private NewsClickHandler = async (e: MouseEvent) => {
|
|
32
32
|
// const newsId = (e.target as HTMLElement).id;
|
|
@@ -56,18 +56,18 @@ const l = class {
|
|
|
56
56
|
// }
|
|
57
57
|
// return null;
|
|
58
58
|
// };
|
|
59
|
-
this.renderKb =
|
|
60
|
-
if (
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
return
|
|
64
|
-
id:
|
|
65
|
-
key:
|
|
59
|
+
this.renderKb = i => {
|
|
60
|
+
if (i.id && i.name && i.name.toLowerCase().includes(this.kbsFilterValue)) {
|
|
61
|
+
const e = n(i.lastOpenedDate, "pretty");
|
|
62
|
+
const t = e ? `${this._componentLocale.recentKbs.lastOpened} ${e}` : null;
|
|
63
|
+
return r("gxg-card", {
|
|
64
|
+
id: i.id,
|
|
65
|
+
key: i.id,
|
|
66
66
|
cardType: "article",
|
|
67
|
-
cardTitle:
|
|
67
|
+
cardTitle: i.name,
|
|
68
68
|
icon: "general/knowledge-base",
|
|
69
69
|
iconColor: "auto",
|
|
70
|
-
cardSubtitle:
|
|
70
|
+
cardSubtitle: t,
|
|
71
71
|
actionable: true,
|
|
72
72
|
filterValue: this.kbsFilterValue,
|
|
73
73
|
onClick: this.kbClickHandler,
|
|
@@ -77,67 +77,24 @@ const l = class {
|
|
|
77
77
|
return null;
|
|
78
78
|
};
|
|
79
79
|
this.renderHomeTabContent = () => {
|
|
80
|
-
var
|
|
81
|
-
return
|
|
80
|
+
var i;
|
|
81
|
+
return r("div", {
|
|
82
82
|
class: "layout layout--two-cols layout--space-above"
|
|
83
|
-
},
|
|
83
|
+
}, r("gxg-card", {
|
|
84
84
|
class: "section",
|
|
85
85
|
cardTitle: this._componentLocale.recentKbs.title
|
|
86
|
-
},
|
|
86
|
+
}, r("div", {
|
|
87
87
|
class: "kbs-container"
|
|
88
|
-
}, (
|
|
88
|
+
}, (i = this.kbs) === null || i === void 0 ? void 0 : i.map((i => this.renderKb(i)))), r("gxg-form-text", {
|
|
89
89
|
slot: "header",
|
|
90
90
|
placeholder: "Search KBs by name",
|
|
91
91
|
onInput: this.searchKbsInputHandler
|
|
92
|
-
})),
|
|
92
|
+
})), r("gx-ide-recent-news", {
|
|
93
93
|
class: "section",
|
|
94
94
|
getNewsCallback: this.getNewsCallbackRecentNews,
|
|
95
95
|
openNewsCallback: this.openNewsCallback
|
|
96
96
|
}));
|
|
97
97
|
};
|
|
98
|
-
this.renderTabs = () => e("gxg-tabs", {
|
|
99
|
-
height: "auto",
|
|
100
|
-
minWidth: "100%",
|
|
101
|
-
noPadding: true
|
|
102
|
-
}, e("gxg-tab-bar", {
|
|
103
|
-
slot: "tab-bar-container",
|
|
104
|
-
displayBorder: true
|
|
105
|
-
}, e("gxg-tab-button", {
|
|
106
|
-
slot: "tab-bar",
|
|
107
|
-
"tab-label": this._componentLocale.tabs.home,
|
|
108
|
-
tab: "home",
|
|
109
|
-
"is-selected": true
|
|
110
|
-
}), e("gxg-tab-button", {
|
|
111
|
-
slot: "tab-bar",
|
|
112
|
-
"tab-label": this._componentLocale.tabs.learn,
|
|
113
|
-
tab: "learn",
|
|
114
|
-
disabled: true
|
|
115
|
-
}), e("gxg-tab-button", {
|
|
116
|
-
slot: "tab-bar",
|
|
117
|
-
"tab-label": this._componentLocale.tabs.samples,
|
|
118
|
-
tab: "samples",
|
|
119
|
-
disabled: true
|
|
120
|
-
}), e("gxg-tab-button", {
|
|
121
|
-
slot: "tab-bar",
|
|
122
|
-
"tab-label": this._componentLocale.tabs.marketplace,
|
|
123
|
-
tab: "marketplace",
|
|
124
|
-
disabled: true
|
|
125
|
-
}), e("gxg-tab-button", {
|
|
126
|
-
slot: "tab-bar",
|
|
127
|
-
"tab-label": this._componentLocale.tabs.updates,
|
|
128
|
-
tab: "updates",
|
|
129
|
-
disabled: true
|
|
130
|
-
})), e("gxg-tab", {
|
|
131
|
-
tab: "home"
|
|
132
|
-
}, this.renderHomeTabContent()), e("gxg-tab", {
|
|
133
|
-
tab: "learn"
|
|
134
|
-
}), e("gxg-tab", {
|
|
135
|
-
tab: "samples"
|
|
136
|
-
}), e("gxg-tab", {
|
|
137
|
-
tab: "marketplace"
|
|
138
|
-
}), e("gxg-tab", {
|
|
139
|
-
tab: "updates"
|
|
140
|
-
}));
|
|
141
98
|
this.kbsFilterValue = "";
|
|
142
99
|
this.renderedFirstTime = false;
|
|
143
100
|
this.news = undefined;
|
|
@@ -148,7 +105,7 @@ const l = class {
|
|
|
148
105
|
}
|
|
149
106
|
// 6.COMPONENT LIFECYCLE METHODS //
|
|
150
107
|
async componentWillLoad() {
|
|
151
|
-
this._componentLocale = await
|
|
108
|
+
this._componentLocale = await a.getComponentStrings(this.el);
|
|
152
109
|
}
|
|
153
110
|
componentDidRender() {
|
|
154
111
|
if (!this.renderedFirstTime) {
|
|
@@ -156,23 +113,66 @@ const l = class {
|
|
|
156
113
|
this.renderedFirstTime = true;
|
|
157
114
|
}
|
|
158
115
|
}
|
|
116
|
+
// private renderTabs = (): HTMLGxgTabsElement => {
|
|
117
|
+
// return (
|
|
118
|
+
// <gxg-tabs height="auto" minWidth="100%" no-border>
|
|
119
|
+
// <gxg-tab-bar slot="tab-bar-container" displayBorder>
|
|
120
|
+
// <gxg-tab-button
|
|
121
|
+
// slot="tab-bar"
|
|
122
|
+
// tab-label={this._componentLocale.tabs.home}
|
|
123
|
+
// tab="home"
|
|
124
|
+
// is-selected
|
|
125
|
+
// ></gxg-tab-button>
|
|
126
|
+
// <gxg-tab-button
|
|
127
|
+
// slot="tab-bar"
|
|
128
|
+
// tab-label={this._componentLocale.tabs.learn}
|
|
129
|
+
// tab="learn"
|
|
130
|
+
// disabled
|
|
131
|
+
// ></gxg-tab-button>
|
|
132
|
+
// <gxg-tab-button
|
|
133
|
+
// slot="tab-bar"
|
|
134
|
+
// tab-label={this._componentLocale.tabs.samples}
|
|
135
|
+
// tab="samples"
|
|
136
|
+
// disabled
|
|
137
|
+
// ></gxg-tab-button>
|
|
138
|
+
// <gxg-tab-button
|
|
139
|
+
// slot="tab-bar"
|
|
140
|
+
// tab-label={this._componentLocale.tabs.marketplace}
|
|
141
|
+
// tab="marketplace"
|
|
142
|
+
// disabled
|
|
143
|
+
// ></gxg-tab-button>
|
|
144
|
+
// <gxg-tab-button
|
|
145
|
+
// slot="tab-bar"
|
|
146
|
+
// tab-label={this._componentLocale.tabs.updates}
|
|
147
|
+
// tab="updates"
|
|
148
|
+
// disabled
|
|
149
|
+
// ></gxg-tab-button>
|
|
150
|
+
// </gxg-tab-bar>
|
|
151
|
+
// <gxg-tab tab="home">{this.renderHomeTabContent()}</gxg-tab>
|
|
152
|
+
// <gxg-tab tab="learn"></gxg-tab>
|
|
153
|
+
// <gxg-tab tab="samples"></gxg-tab>
|
|
154
|
+
// <gxg-tab tab="marketplace"></gxg-tab>
|
|
155
|
+
// <gxg-tab tab="updates"></gxg-tab>
|
|
156
|
+
// </gxg-tabs>
|
|
157
|
+
// );
|
|
158
|
+
// };
|
|
159
159
|
// 10.RENDER() FUNCTION //
|
|
160
160
|
render() {
|
|
161
|
-
return
|
|
161
|
+
return r(t, {
|
|
162
162
|
class: {
|
|
163
163
|
rendered: this.renderedFirstTime
|
|
164
164
|
}
|
|
165
|
-
}, this.
|
|
165
|
+
}, this.renderHomeTabContent());
|
|
166
166
|
}
|
|
167
167
|
static get assetsDirs() {
|
|
168
168
|
return [ "gx-ide-assets/start-page" ];
|
|
169
169
|
}
|
|
170
170
|
get el() {
|
|
171
|
-
return
|
|
171
|
+
return o(this);
|
|
172
172
|
}
|
|
173
173
|
};
|
|
174
174
|
|
|
175
|
-
l.style =
|
|
175
|
+
l.style = s;
|
|
176
176
|
|
|
177
177
|
export { l as gx_ide_start_page };
|
|
178
|
-
//# sourceMappingURL=p-
|
|
178
|
+
//# sourceMappingURL=p-9c6c5a61.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["startPageCss","GxIdeStartPage","this","getNewsCallbackRecentNews","async","Promise","resolve","getNewsCallback","newsResult","kbClickHandler","e","kbId","target","id","openKbCallback","searchKbsInputHandler","kbsFilterValue","detail","toLowerCase","renderKb","kb","name","includes","formattedDate","formatDate","lastOpenedDate","subtitle","_componentLocale","recentKbs","lastOpened","h","key","cardType","cardTitle","icon","iconColor","cardSubtitle","actionable","filterValue","onClick","hiChar","renderHomeTabContent","class","title","_a","kbs","map","slot","placeholder","onInput","openNewsCallback","componentWillLoad","Locale","getComponentStrings","el","componentDidRender","renderedFirstTime","componentDidRenderFirstTime","emit","componentName","render","Host","rendered"],"sources":["src/components/start-page/start-page.scss?tag=gx-ide-start-page&encapsulation=shadow","src/components/start-page/start-page.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: block;\n box-shadow: none;\n height: 100%;\n overflow: auto;\n opacity: 0;\n transition: var(--gx-ide-show-component-delay) opacity;\n}\n:host(.rendered) {\n opacity: 1;\n}\ngxg-tabs {\n background-color: transparent;\n box-shadow: none;\n height: 100% !important;\n overflow: auto;\n}\n.layout {\n height: 100%;\n overflow: auto;\n gxg-card {\n height: 100%;\n overflow: auto;\n }\n}\n.kbs-container,\n.news-container {\n display: flex;\n flex-direction: column;\n gap: var(--gx-ide-articles-gap);\n}\n.news-container {\n p:first-child {\n margin-top: 0;\n }\n p:last-child {\n margin-bottom: 0;\n }\n}\ngxg-card.section {\n border-bottom: 2px solid var(--gray-00);\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n State\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { formatDate } from \"../../common/helpers\";\n\n@Component({\n tag: \"gx-ide-start-page\",\n styleUrl: \"start-page.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/start-page\"]\n})\nexport class GxIdeStartPage {\n /*\nINDEX:\n1.OWN PROPERTIES \n2.REFERENCE TO ELEMENTS\n3.STATE() VARIABLES\n4.PUBLIC PROPERTY API | WATCH'S\n5.EVENTS (EMIT)\n6.COMPONENT LIFECYCLE METHODS\n7.LISTENERS\n8.PUBLIC METHODS API\n9.LOCAL METHODS\n10.RENDER() FUNCTION\n*/\n\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeStartPageElement;\n // private recentNewsEl!: HTMLGxgCardElement;\n\n // 3.STATE() VARIABLES //\n\n /*\n * The filter value to search for kbs\n */\n @State() kbsFilterValue = \"\";\n\n /**\n * True if the component has been rendered for the first time.\n */\n @State() renderedFirstTime = false;\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * A temporary array of news for testing purposes\n */\n @Prop() readonly news: NewsData[];\n\n /**\n * Ann array of the user's KB's\n */\n @Prop() readonly kbs: RecentKBData[];\n\n /**\n * Callback invoked to open a knowledge base when the user clicks on a KB card.\n */\n @Prop() readonly openKbCallback: OpenKbCallback;\n\n /**\n * Callback invoked to load the news feed (right panel \"Recent News\").\n */\n @Prop() readonly getNewsCallback: GetNewsCallback;\n\n /**\n * Callback invoked to open a news article.\n */\n @Prop() readonly openNewsCallback: OpenNewsCallback;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n private getNewsCallbackRecentNews = async (): Promise<NewsData[]> => {\n return new Promise(async resolve => {\n if (this.getNewsCallback) {\n const newsResult = await this.getNewsCallback();\n resolve(newsResult);\n }\n });\n };\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n private kbClickHandler = async (e: MouseEvent) => {\n const kbId = (e.target as HTMLElement).id;\n if (this.openKbCallback) {\n await this.openKbCallback(kbId);\n }\n };\n\n private searchKbsInputHandler = (e: CustomEvent<string>) => {\n this.kbsFilterValue = e.detail.toLowerCase();\n };\n\n // private NewsClickHandler = async (e: MouseEvent) => {\n // const newsId = (e.target as HTMLElement).id;\n // if (this.openNewsCallback) {\n // await this.openNewsCallback(newsId);\n // }\n // };\n\n // 9.LOCAL METHODS -> RENDERS //\n\n // private renderNews = (news: NewsData): HTMLGxgCardElement | null => {\n // if (news.id && news.title) {\n // return (\n // <gxg-card\n // id={news.id}\n // key={news.id}\n // cardType=\"article\"\n // cardTitle={news.title}\n // icon=\"gx-test/test-results\"\n // iconColor=\"auto\"\n // actionable\n // onClick={this.NewsClickHandler}\n // titleSemibold\n // noHeaderBorder\n // >\n // {news.body ? <p>{news.body}</p> : null}\n // </gxg-card>\n // );\n // }\n // return null;\n // };\n\n private renderKb = (kb: RecentKBData): HTMLGxgCardElement | null => {\n if (\n kb.id &&\n kb.name &&\n kb.name.toLowerCase().includes(this.kbsFilterValue)\n ) {\n const formattedDate = formatDate(kb.lastOpenedDate, \"pretty\");\n const subtitle = formattedDate\n ? `${this._componentLocale.recentKbs.lastOpened} ${formattedDate}`\n : null;\n return (\n <gxg-card\n id={kb.id}\n key={kb.id}\n cardType=\"article\"\n cardTitle={kb.name}\n icon=\"general/knowledge-base\"\n iconColor=\"auto\"\n cardSubtitle={subtitle}\n actionable\n filterValue={this.kbsFilterValue}\n onClick={this.kbClickHandler}\n hiChar\n ></gxg-card>\n );\n }\n return null;\n };\n\n private renderHomeTabContent = (): HTMLElement => {\n return (\n <div class=\"layout layout--two-cols layout--space-above\">\n <gxg-card\n class=\"section\"\n cardTitle={this._componentLocale.recentKbs.title}\n >\n <div class=\"kbs-container\">\n {this.kbs?.map(kb => {\n return this.renderKb(kb);\n })}\n </div>\n <gxg-form-text\n slot=\"header\"\n placeholder=\"Search KBs by name\"\n onInput={this.searchKbsInputHandler as any}\n ></gxg-form-text>\n </gxg-card>\n {/* <gxg-card\n class=\"section\"\n cardTitle={this._componentLocale.recentNews.title}\n ref={el => (this.recentNewsEl = el as HTMLGxgCardElement)}\n >\n <div class=\"news-container\">\n {this.news?.map(singleNews => {\n return this.renderNews(singleNews);\n })}\n </div>\n </gxg-card> */}\n {\n <gx-ide-recent-news\n class=\"section\"\n getNewsCallback={this.getNewsCallbackRecentNews}\n openNewsCallback={this.openNewsCallback}\n ></gx-ide-recent-news>\n }\n </div>\n );\n };\n\n // private renderTabs = (): HTMLGxgTabsElement => {\n // return (\n // <gxg-tabs height=\"auto\" minWidth=\"100%\" no-border>\n // <gxg-tab-bar slot=\"tab-bar-container\" displayBorder>\n // <gxg-tab-button\n // slot=\"tab-bar\"\n // tab-label={this._componentLocale.tabs.home}\n // tab=\"home\"\n // is-selected\n // ></gxg-tab-button>\n // <gxg-tab-button\n // slot=\"tab-bar\"\n // tab-label={this._componentLocale.tabs.learn}\n // tab=\"learn\"\n // disabled\n // ></gxg-tab-button>\n // <gxg-tab-button\n // slot=\"tab-bar\"\n // tab-label={this._componentLocale.tabs.samples}\n // tab=\"samples\"\n // disabled\n // ></gxg-tab-button>\n // <gxg-tab-button\n // slot=\"tab-bar\"\n // tab-label={this._componentLocale.tabs.marketplace}\n // tab=\"marketplace\"\n // disabled\n // ></gxg-tab-button>\n // <gxg-tab-button\n // slot=\"tab-bar\"\n // tab-label={this._componentLocale.tabs.updates}\n // tab=\"updates\"\n // disabled\n // ></gxg-tab-button>\n // </gxg-tab-bar>\n // <gxg-tab tab=\"home\">{this.renderHomeTabContent()}</gxg-tab>\n // <gxg-tab tab=\"learn\"></gxg-tab>\n // <gxg-tab tab=\"samples\"></gxg-tab>\n // <gxg-tab tab=\"marketplace\"></gxg-tab>\n // <gxg-tab tab=\"updates\"></gxg-tab>\n // </gxg-tabs>\n // );\n // };\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host class={{ rendered: this.renderedFirstTime }}>\n {/* this.renderTabs()*/}\n {this.renderHomeTabContent()}\n </Host>\n );\n }\n}\n\nexport type OpenKbCallback = (id: string) => Promise<void>;\nexport type GetNewsCallback = () => Promise<NewsData[]>;\nexport type OpenNewsCallback = (id: string) => Promise<void>;\n\nexport type RecentKBData = {\n id: string;\n name: string;\n lastOpenedDate?: Date;\n};\nexport type NewsData = {\n id: string;\n title: string;\n body: string;\n};\n"],"mappings":";;;;;;AAAA,MAAMA,IAAe;;MCsBRC,IAAc;;;;IA+EjBC,KAAAC,4BAA4BC,YAC3B,IAAIC,SAAQD,MAAME;MACvB,IAAIJ,KAAKK,iBAAiB;QACxB,MAAMC,UAAmBN,KAAKK;QAC9BD,EAAQE;;;;;;QAoBNN,KAAAO,iBAAiBL,MAAOM;MAC9B,MAAMC,IAAQD,EAAEE,OAAuBC;MACvC,IAAIX,KAAKY,gBAAgB;cACjBZ,KAAKY,eAAeH;;;IAItBT,KAAAa,wBAAyBL;MAC/BR,KAAKc,iBAAiBN,EAAEO,OAAOC;AAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkCtChB,KAAAiB,WAAYC;MAClB,IACEA,EAAGP,MACHO,EAAGC,QACHD,EAAGC,KAAKH,cAAcI,SAASpB,KAAKc,iBACpC;QACA,MAAMO,IAAgBC,EAAWJ,EAAGK,gBAAgB;QACpD,MAAMC,IAAWH,IACb,GAAGrB,KAAKyB,iBAAiBC,UAAUC,cAAcN,MACjD;QACJ,OACEO,EAAA;UACEjB,IAAIO,EAAGP;UACPkB,KAAKX,EAAGP;UACRmB,UAAS;UACTC,WAAWb,EAAGC;UACda,MAAK;UACLC,WAAU;UACVC,cAAcV;UACdW,YAAU;UACVC,aAAapC,KAAKc;UAClBuB,SAASrC,KAAKO;UACd+B,QAAM;;;MAIZ,OAAO;AAAI;IAGLtC,KAAAuC,uBAAuB;;MAC7B,OACEX,EAAA;QAAKY,OAAM;SACTZ,EAAA;QACEY,OAAM;QACNT,WAAW/B,KAAKyB,iBAAiBC,UAAUe;SAE3Cb,EAAA;QAAKY,OAAM;UACRE,IAAA1C,KAAK2C,SAAG,QAAAD,WAAA,aAAAA,EAAEE,KAAI1B,KACNlB,KAAKiB,SAASC,OAGzBU,EAAA;QACEiB,MAAK;QACLC,aAAY;QACZC,SAAS/C,KAAKa;WAehBe,EAAA;QACEY,OAAM;QACNnC,iBAAiBL,KAAKC;QACtB+C,kBAAkBhD,KAAKgD;;AAGvB;0BAlLgB;6BAKG;;;;;;;;EAsC7B,uBAAMC;IACJjD,KAAKyB,yBAAyByB,EAAOC,oBAAoBnD,KAAKoD;;EAYhE,kBAAAC;IACE,KAAKrD,KAAKsD,mBAAmB;MAC3BtD,KAAKuD,4BAA4BC,KAC/BxD,KAAKyB,iBAAiBgC;MAExBzD,KAAKsD,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuK7B,MAAAI;IACE,OACE9B,EAAC+B,GAAI;MAACnB,OAAO;QAAEoB,UAAU5D,KAAKsD;;OAE3BtD,KAAKuC"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["startPageCss","GxIdeStartPage","this","getNewsCallbackRecentNews","async","Promise","resolve","getNewsCallback","newsResult","kbClickHandler","e","kbId","target","id","openKbCallback","searchKbsInputHandler","kbsFilterValue","detail","toLowerCase","renderKb","kb","name","includes","formattedDate","formatDate","lastOpenedDate","subtitle","_componentLocale","recentKbs","lastOpened","h","key","cardType","cardTitle","icon","iconColor","cardSubtitle","actionable","filterValue","onClick","hiChar","renderHomeTabContent","class","title","_a","kbs","map","slot","placeholder","onInput","openNewsCallback","renderTabs","height","minWidth","noPadding","displayBorder","tabs","home","tab","learn","disabled","samples","marketplace","updates","componentWillLoad","Locale","getComponentStrings","el","componentDidRender","renderedFirstTime","componentDidRenderFirstTime","emit","componentName","render","Host","rendered"],"sources":["src/components/start-page/start-page.scss?tag=gx-ide-start-page&encapsulation=shadow","src/components/start-page/start-page.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: block;\n box-shadow: none;\n height: 100%;\n overflow: auto;\n opacity: 0;\n transition: var(--gx-ide-show-component-delay) opacity;\n}\n:host(.rendered) {\n opacity: 1;\n}\ngxg-tabs {\n background-color: transparent;\n box-shadow: none;\n height: 100% !important;\n overflow: auto;\n}\n.layout {\n height: 100%;\n overflow: auto;\n gxg-card {\n height: 100%;\n overflow: auto;\n }\n}\n.kbs-container,\n.news-container {\n display: flex;\n flex-direction: column;\n gap: var(--gx-ide-articles-gap);\n}\n.news-container {\n p:first-child {\n margin-top: 0;\n }\n p:last-child {\n margin-bottom: 0;\n }\n}\ngxg-card.section {\n border-bottom: 2px solid var(--gray-00);\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n State\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { formatDate } from \"../../common/helpers\";\n\n@Component({\n tag: \"gx-ide-start-page\",\n styleUrl: \"start-page.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/start-page\"]\n})\nexport class GxIdeStartPage {\n /*\nINDEX:\n1.OWN PROPERTIES \n2.REFERENCE TO ELEMENTS\n3.STATE() VARIABLES\n4.PUBLIC PROPERTY API | WATCH'S\n5.EVENTS (EMIT)\n6.COMPONENT LIFECYCLE METHODS\n7.LISTENERS\n8.PUBLIC METHODS API\n9.LOCAL METHODS\n10.RENDER() FUNCTION\n*/\n\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeStartPageElement;\n // private recentNewsEl!: HTMLGxgCardElement;\n\n // 3.STATE() VARIABLES //\n\n /*\n * The filter value to search for kbs\n */\n @State() kbsFilterValue = \"\";\n\n /**\n * True if the component has been rendered for the first time.\n */\n @State() renderedFirstTime = false;\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * A temporary array of news for testing purposes\n */\n @Prop() readonly news: NewsData[];\n\n /**\n * Ann array of the user's KB's\n */\n @Prop() readonly kbs: RecentKBData[];\n\n /**\n * Callback invoked to open a knowledge base when the user clicks on a KB card.\n */\n @Prop() readonly openKbCallback: OpenKbCallback;\n\n /**\n * Callback invoked to load the news feed (right panel \"Recent News\").\n */\n @Prop() readonly getNewsCallback: GetNewsCallback;\n\n /**\n * Callback invoked to open a news article.\n */\n @Prop() readonly openNewsCallback: OpenNewsCallback;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n private getNewsCallbackRecentNews = async (): Promise<NewsData[]> => {\n return new Promise(async resolve => {\n if (this.getNewsCallback) {\n const newsResult = await this.getNewsCallback();\n resolve(newsResult);\n }\n });\n };\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n private kbClickHandler = async (e: MouseEvent) => {\n const kbId = (e.target as HTMLElement).id;\n if (this.openKbCallback) {\n await this.openKbCallback(kbId);\n }\n };\n\n private searchKbsInputHandler = (e: CustomEvent<string>) => {\n this.kbsFilterValue = e.detail.toLowerCase();\n };\n\n // private NewsClickHandler = async (e: MouseEvent) => {\n // const newsId = (e.target as HTMLElement).id;\n // if (this.openNewsCallback) {\n // await this.openNewsCallback(newsId);\n // }\n // };\n\n // 9.LOCAL METHODS -> RENDERS //\n\n // private renderNews = (news: NewsData): HTMLGxgCardElement | null => {\n // if (news.id && news.title) {\n // return (\n // <gxg-card\n // id={news.id}\n // key={news.id}\n // cardType=\"article\"\n // cardTitle={news.title}\n // icon=\"gx-test/test-results\"\n // iconColor=\"auto\"\n // actionable\n // onClick={this.NewsClickHandler}\n // titleSemibold\n // noHeaderBorder\n // >\n // {news.body ? <p>{news.body}</p> : null}\n // </gxg-card>\n // );\n // }\n // return null;\n // };\n\n private renderKb = (kb: RecentKBData): HTMLGxgCardElement | null => {\n if (\n kb.id &&\n kb.name &&\n kb.name.toLowerCase().includes(this.kbsFilterValue)\n ) {\n const formattedDate = formatDate(kb.lastOpenedDate, \"pretty\");\n const subtitle = formattedDate\n ? `${this._componentLocale.recentKbs.lastOpened} ${formattedDate}`\n : null;\n return (\n <gxg-card\n id={kb.id}\n key={kb.id}\n cardType=\"article\"\n cardTitle={kb.name}\n icon=\"general/knowledge-base\"\n iconColor=\"auto\"\n cardSubtitle={subtitle}\n actionable\n filterValue={this.kbsFilterValue}\n onClick={this.kbClickHandler}\n hiChar\n ></gxg-card>\n );\n }\n return null;\n };\n\n private renderHomeTabContent = (): HTMLElement => {\n return (\n <div class=\"layout layout--two-cols layout--space-above\">\n <gxg-card\n class=\"section\"\n cardTitle={this._componentLocale.recentKbs.title}\n >\n <div class=\"kbs-container\">\n {this.kbs?.map(kb => {\n return this.renderKb(kb);\n })}\n </div>\n <gxg-form-text\n slot=\"header\"\n placeholder=\"Search KBs by name\"\n onInput={this.searchKbsInputHandler as any}\n ></gxg-form-text>\n </gxg-card>\n {/* <gxg-card\n class=\"section\"\n cardTitle={this._componentLocale.recentNews.title}\n ref={el => (this.recentNewsEl = el as HTMLGxgCardElement)}\n >\n <div class=\"news-container\">\n {this.news?.map(singleNews => {\n return this.renderNews(singleNews);\n })}\n </div>\n </gxg-card> */}\n {\n <gx-ide-recent-news\n class=\"section\"\n getNewsCallback={this.getNewsCallbackRecentNews}\n openNewsCallback={this.openNewsCallback}\n ></gx-ide-recent-news>\n }\n </div>\n );\n };\n\n private renderTabs = (): HTMLGxgTabsElement => {\n return (\n <gxg-tabs height=\"auto\" minWidth=\"100%\" noPadding>\n <gxg-tab-bar slot=\"tab-bar-container\" displayBorder>\n <gxg-tab-button\n slot=\"tab-bar\"\n tab-label={this._componentLocale.tabs.home}\n tab=\"home\"\n is-selected\n ></gxg-tab-button>\n <gxg-tab-button\n slot=\"tab-bar\"\n tab-label={this._componentLocale.tabs.learn}\n tab=\"learn\"\n disabled\n ></gxg-tab-button>\n <gxg-tab-button\n slot=\"tab-bar\"\n tab-label={this._componentLocale.tabs.samples}\n tab=\"samples\"\n disabled\n ></gxg-tab-button>\n <gxg-tab-button\n slot=\"tab-bar\"\n tab-label={this._componentLocale.tabs.marketplace}\n tab=\"marketplace\"\n disabled\n ></gxg-tab-button>\n <gxg-tab-button\n slot=\"tab-bar\"\n tab-label={this._componentLocale.tabs.updates}\n tab=\"updates\"\n disabled\n ></gxg-tab-button>\n </gxg-tab-bar>\n <gxg-tab tab=\"home\">{this.renderHomeTabContent()}</gxg-tab>\n <gxg-tab tab=\"learn\"></gxg-tab>\n <gxg-tab tab=\"samples\"></gxg-tab>\n <gxg-tab tab=\"marketplace\"></gxg-tab>\n <gxg-tab tab=\"updates\"></gxg-tab>\n </gxg-tabs>\n );\n };\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host class={{ rendered: this.renderedFirstTime }}>\n {this.renderTabs()}\n </Host>\n );\n }\n}\n\nexport type OpenKbCallback = (id: string) => Promise<void>;\nexport type GetNewsCallback = () => Promise<NewsData[]>;\nexport type OpenNewsCallback = (id: string) => Promise<void>;\n\nexport type RecentKBData = {\n id: string;\n name: string;\n lastOpenedDate?: Date;\n};\nexport type NewsData = {\n id: string;\n title: string;\n body: string;\n};\n"],"mappings":";;;;;;AAAA,MAAMA,IAAe;;MCsBRC,IAAc;;;;IA+EjBC,KAAAC,4BAA4BC,YAC3B,IAAIC,SAAQD,MAAME;MACvB,IAAIJ,KAAKK,iBAAiB;QACxB,MAAMC,UAAmBN,KAAKK;QAC9BD,EAAQE;;;;;;QAoBNN,KAAAO,iBAAiBL,MAAOM;MAC9B,MAAMC,IAAQD,EAAEE,OAAuBC;MACvC,IAAIX,KAAKY,gBAAgB;cACjBZ,KAAKY,eAAeH;;;IAItBT,KAAAa,wBAAyBL;MAC/BR,KAAKc,iBAAiBN,EAAEO,OAAOC;AAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkCtChB,KAAAiB,WAAYC;MAClB,IACEA,EAAGP,MACHO,EAAGC,QACHD,EAAGC,KAAKH,cAAcI,SAASpB,KAAKc,iBACpC;QACA,MAAMO,IAAgBC,EAAWJ,EAAGK,gBAAgB;QACpD,MAAMC,IAAWH,IACb,GAAGrB,KAAKyB,iBAAiBC,UAAUC,cAAcN,MACjD;QACJ,OACEO,EAAA;UACEjB,IAAIO,EAAGP;UACPkB,KAAKX,EAAGP;UACRmB,UAAS;UACTC,WAAWb,EAAGC;UACda,MAAK;UACLC,WAAU;UACVC,cAAcV;UACdW,YAAU;UACVC,aAAapC,KAAKc;UAClBuB,SAASrC,KAAKO;UACd+B,QAAM;;;MAIZ,OAAO;AAAI;IAGLtC,KAAAuC,uBAAuB;;MAC7B,OACEX,EAAA;QAAKY,OAAM;SACTZ,EAAA;QACEY,OAAM;QACNT,WAAW/B,KAAKyB,iBAAiBC,UAAUe;SAE3Cb,EAAA;QAAKY,OAAM;UACRE,IAAA1C,KAAK2C,SAAG,QAAAD,WAAA,aAAAA,EAAEE,KAAI1B,KACNlB,KAAKiB,SAASC,OAGzBU,EAAA;QACEiB,MAAK;QACLC,aAAY;QACZC,SAAS/C,KAAKa;WAehBe,EAAA;QACEY,OAAM;QACNnC,iBAAiBL,KAAKC;QACtB+C,kBAAkBhD,KAAKgD;;AAGvB;IAIFhD,KAAAiD,aAAa,MAEjBrB,EAAA;MAAUsB,QAAO;MAAOC,UAAS;MAAOC,WAAS;OAC/CxB,EAAA;MAAaiB,MAAK;MAAoBQ,eAAa;OACjDzB,EAAA;MACEiB,MAAK;MAAS,aACH7C,KAAKyB,iBAAiB6B,KAAKC;MACtCC,KAAI;MAAM;QAGZ5B,EAAA;MACEiB,MAAK;MAAS,aACH7C,KAAKyB,iBAAiB6B,KAAKG;MACtCD,KAAI;MACJE,UAAQ;QAEV9B,EAAA;MACEiB,MAAK;MAAS,aACH7C,KAAKyB,iBAAiB6B,KAAKK;MACtCH,KAAI;MACJE,UAAQ;QAEV9B,EAAA;MACEiB,MAAK;MAAS,aACH7C,KAAKyB,iBAAiB6B,KAAKM;MACtCJ,KAAI;MACJE,UAAQ;QAEV9B,EAAA;MACEiB,MAAK;MAAS,aACH7C,KAAKyB,iBAAiB6B,KAAKO;MACtCL,KAAI;MACJE,UAAQ;SAGZ9B,EAAA;MAAS4B,KAAI;OAAQxD,KAAKuC,yBAC1BX,EAAA;MAAS4B,KAAI;QACb5B,EAAA;MAAS4B,KAAI;QACb5B,EAAA;MAAS4B,KAAI;QACb5B,EAAA;MAAS4B,KAAI;;0BA7NO;6BAKG;;;;;;;;EAsC7B,uBAAMM;IACJ9D,KAAKyB,yBAAyBsC,EAAOC,oBAAoBhE,KAAKiE;;EAYhE,kBAAAC;IACE,KAAKlE,KAAKmE,mBAAmB;MAC3BnE,KAAKoE,4BAA4BC,KAC/BrE,KAAKyB,iBAAiB6C;MAExBtE,KAAKmE,oBAAoB;;;;EAuK7B,MAAAI;IACE,OACE3C,EAAC4C,GAAI;MAAChC,OAAO;QAAEiC,UAAUzE,KAAKmE;;OAC3BnE,KAAKiD"}
|