@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.
@@ -1,32 +1,32 @@
1
- import { r as t, c as a, h as e, H as i, g as r } from "./p-2776d2f9.js";
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 o } from "./p-74d59062.js";
3
+ import { L as a } from "./p-74d59062.js";
4
4
 
5
- import { f as s } from "./p-04f3d630.js";
5
+ import { f as n } from "./p-04f3d630.js";
6
6
 
7
- const n = ".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)}";
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(i) {
11
- t(this, i);
12
- this.componentDidRenderFirstTime = a(this, "componentDidRenderFirstTime", 7);
13
- this.getNewsCallbackRecentNews = async () => new Promise((async t => {
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 a = await this.getNewsCallback();
16
- t(a);
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 t => {
23
- const a = t.target.id;
22
+ this.kbClickHandler = async i => {
23
+ const e = i.target.id;
24
24
  if (this.openKbCallback) {
25
- await this.openKbCallback(a);
25
+ await this.openKbCallback(e);
26
26
  }
27
27
  };
28
- this.searchKbsInputHandler = t => {
29
- this.kbsFilterValue = t.detail.toLowerCase();
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 = t => {
60
- if (t.id && t.name && t.name.toLowerCase().includes(this.kbsFilterValue)) {
61
- const a = s(t.lastOpenedDate, "pretty");
62
- const i = a ? `${this._componentLocale.recentKbs.lastOpened} ${a}` : null;
63
- return e("gxg-card", {
64
- id: t.id,
65
- key: t.id,
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: t.name,
67
+ cardTitle: i.name,
68
68
  icon: "general/knowledge-base",
69
69
  iconColor: "auto",
70
- cardSubtitle: i,
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 t;
81
- return e("div", {
80
+ var i;
81
+ return r("div", {
82
82
  class: "layout layout--two-cols layout--space-above"
83
- }, e("gxg-card", {
83
+ }, r("gxg-card", {
84
84
  class: "section",
85
85
  cardTitle: this._componentLocale.recentKbs.title
86
- }, e("div", {
86
+ }, r("div", {
87
87
  class: "kbs-container"
88
- }, (t = this.kbs) === null || t === void 0 ? void 0 : t.map((t => this.renderKb(t)))), e("gxg-form-text", {
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
- })), e("gx-ide-recent-news", {
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 o.getComponentStrings(this.el);
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 e(i, {
161
+ return r(t, {
162
162
  class: {
163
163
  rendered: this.renderedFirstTime
164
164
  }
165
- }, this.renderTabs());
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 r(this);
171
+ return o(this);
172
172
  }
173
173
  };
174
174
 
175
- l.style = n;
175
+ l.style = s;
176
176
 
177
177
  export { l as gx_ide_start_page };
178
- //# sourceMappingURL=p-f18b01c1.entry.js.map
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"}
@@ -41,7 +41,6 @@ export declare class GxIdeStartPage {
41
41
  private searchKbsInputHandler;
42
42
  private renderKb;
43
43
  private renderHomeTabContent;
44
- private renderTabs;
45
44
  render(): any;
46
45
  }
47
46
  export type OpenKbCallback = (id: string) => Promise<void>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genexus/genexus-ide-ui",
3
3
  "license": "Apache-2.0",
4
- "version": "0.0.96",
4
+ "version": "0.0.97",
5
5
  "description": "GeneXus IDE UI components",
6
6
  "main": "dist/index.cjs.js",
7
7
  "module": "dist/index.js",
@@ -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"}