@zeedhi/teknisa-components-common 1.45.0 → 1.48.0

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,8 +1,9 @@
1
- import { KeyMap, I18n, FormatterParserProvider, Messages, Metadata, DatasourceFactory, RestDatasource, URL, MemoryDatasource, Utils, Loader, dayjs, Config } from '@zeedhi/core';
2
- import { Form, Button, Tooltip, GridEditable, Grid, ComponentRender, Iterable, Carousel, Loading as Loading$1, ModalService, GridColumnEditable, Report, IterableColumnsButtonController, IterableColumnsButton, TreeGridEditable } from '@zeedhi/common';
1
+ import { KeyMap, I18n, FormatterParserProvider, Messages, Metadata, DatasourceFactory, RestDatasource, URL, MemoryDatasource, Utils, Loader, DateHelper, Http } from '@zeedhi/core';
2
+ import { Form, Button, Tooltip, GridEditable, Grid, ComponentRender, Iterable, Carousel, Loading as Loading$1, ModalService, GridColumnEditable, Report, IterableColumnsButtonController, IterableColumnsButton, TreeGridEditable, List } from '@zeedhi/common';
3
3
  import get from 'lodash.get';
4
4
  import debounce from 'lodash.debounce';
5
5
  import merge from 'lodash.merge';
6
+ import { UserInfo } from '@zeedhi/zd-user-info-common';
6
7
 
7
8
  /**
8
9
  * Form to be used on Crud operations
@@ -1134,9 +1135,11 @@ class GridBase {
1134
1135
  columnComponentName = `${this.grid.name}-filter-AND-CONTAINS-${column.name}-${index}`;
1135
1136
  }
1136
1137
  this.filterFormInputs[column.name].push(columnComponentName);
1137
- let newColumnComponent = Object.assign(Object.assign(Object.assign({ label: column.label }, column.componentProps), filterItem), { name: columnComponentName });
1138
+ const newColumnComponent = Object.assign(Object.assign(Object.assign({ label: column.label }, column.componentProps), filterItem), { name: columnComponentName });
1138
1139
  if (filterItem.helperOptions) {
1139
- newColumnComponent = this.getHelperValueComponent(newColumnComponent, filterItem.helperOptions, column);
1140
+ if (!newColumnComponent.events)
1141
+ newColumnComponent.events = {};
1142
+ newColumnComponent.events.change = this.changeHelperEvent.bind(this, column);
1140
1143
  }
1141
1144
  filterColumns.push(newColumnComponent);
1142
1145
  });
@@ -1144,54 +1147,9 @@ class GridBase {
1144
1147
  });
1145
1148
  return filterColumns;
1146
1149
  }
1147
- getHelperValueComponent(component, helperValues, column) {
1148
- return {
1149
- name: `${component.name}_helperspan`,
1150
- component: 'ZdTag',
1151
- tag: 'span',
1152
- cssClass: 'zd-display-flex',
1153
- grid: component.grid,
1154
- children: [
1155
- Object.assign(Object.assign({}, component), { persistentHint: true, events: {
1156
- onMounted: this.registerFilterComponentToForm.bind(this),
1157
- change: this.clearFilterHelperValue.bind(this, column),
1158
- } }),
1159
- {
1160
- name: `${component.name}_helperdropdown`,
1161
- component: 'ZdDropdown',
1162
- offsetY: true,
1163
- activator: {
1164
- name: `${component.name}_helperbutton`,
1165
- component: 'ZdButton',
1166
- iconName: 'magnify',
1167
- icon: true,
1168
- small: true,
1169
- cssClass: `filter-helper-values-button ${component.showLabel !== false ? 'with-label' : ''}`,
1170
- },
1171
- children: this.createHelperValueOptions(component, helperValues, column),
1172
- },
1173
- ],
1174
- };
1175
- }
1176
- createHelperValueOptions(component, helperValues, column) {
1177
- return helperValues.map((value) => ({
1178
- name: `${component.name}_helpervalue_${value}`,
1179
- component: 'ZdText',
1180
- cssClass: 'filter-helper-values-option',
1181
- text: TekFilterHelper.getLabel(value),
1182
- events: {
1183
- click: this.helperValuesOptionClick.bind(this, component, value, column),
1184
- },
1185
- }));
1186
- }
1187
- helperValuesOptionClick(component, helperValue, column) {
1188
- const value = TekFilterHelper.getValue(helperValue, column);
1189
- const componentObject = Metadata.getInstance(component.name);
1190
- componentObject.value = value;
1191
- componentObject.hint = TekFilterHelper.getLabel(helperValue);
1192
- this.setFilterPropsHelperValue(column, component.name, helperValue);
1193
- }
1194
- setFilterPropsHelperValue(column, componentName, helperValue) {
1150
+ changeHelperEvent(column, { component }) {
1151
+ const { helperValue } = component;
1152
+ const componentName = component.name;
1195
1153
  if (!Array.isArray(column.filterProps)) {
1196
1154
  column.filterProps.helperValue = helperValue;
1197
1155
  }
@@ -1205,14 +1163,6 @@ class GridBase {
1205
1163
  });
1206
1164
  }
1207
1165
  }
1208
- registerFilterComponentToForm({ component }) {
1209
- const form = Metadata.getInstance(`${this.grid.name}-filter-form`);
1210
- form.registerInput(component);
1211
- }
1212
- clearFilterHelperValue(column, { component }) {
1213
- this.setFilterPropsHelperValue(column, component.name, '');
1214
- component.hint = '';
1215
- }
1216
1166
  loadFilterValues({ component }) {
1217
1167
  const { datasource } = this.grid;
1218
1168
  if (datasource instanceof TekRestDatasource || datasource instanceof TekMemoryDatasource) {
@@ -1687,6 +1637,8 @@ class TekRestDatasource extends RestDatasource {
1687
1637
  }
1688
1638
  this.lazyLoad = this.getInitValue('lazyLoad', props.lazyLoad, this.lazyLoad);
1689
1639
  this.createAccessors();
1640
+ this.createObjAccessors(this.dynamicFilter, 'dynamicFilter');
1641
+ this.createObjAccessors(this.searchJoin, 'searchJoin');
1690
1642
  if (!this.lazyLoad) {
1691
1643
  this.get();
1692
1644
  }
@@ -1866,6 +1818,8 @@ class TekMemoryDatasource extends MemoryDatasource {
1866
1818
  this.searchJoin = this.getInitValue('searchJoin', props.searchJoin, {});
1867
1819
  }
1868
1820
  this.createAccessors();
1821
+ this.createObjAccessors(this.dynamicFilter, 'dynamicFilter');
1822
+ this.createObjAccessors(this.searchJoin, 'searchJoin');
1869
1823
  this.get();
1870
1824
  }
1871
1825
  updateReservedKeys() {
@@ -2012,61 +1966,70 @@ class TekMemoryDatasource extends MemoryDatasource {
2012
1966
  }
2013
1967
  getRowByDynamicFilter(row) {
2014
1968
  let filtered;
2015
- Object.keys(this.dynamicFilter).forEach((key) => {
2016
- const filterItems = this.dynamicFilter[key];
2017
- filterItems.forEach((item) => {
2018
- if (filtered === false && item.relation === 'AND')
2019
- return;
2020
- if (filtered === true && item.relation === 'OR')
2021
- return;
2022
- const columnValue = Utils.normalize(row[key].toString());
2023
- let value = '';
2024
- if (Array.isArray(item.value)) {
2025
- value = item.value.map((val) => Utils.normalize(val.toString()));
2026
- switch (item.operation) {
2027
- case 'IN':
2028
- filtered = value.includes(columnValue);
2029
- break;
2030
- case 'NOT_IN':
2031
- filtered = !value.includes(columnValue);
2032
- break;
2033
- case 'BETWEEN':
2034
- filtered = (Number(columnValue) || columnValue) >= (Number(value[0]) || value[0])
2035
- && (Number(columnValue) || columnValue) <= (Number(value[1]) || value[1]);
2036
- break;
1969
+ try {
1970
+ Object.keys(this.dynamicFilter).forEach((key) => {
1971
+ const filterItems = this.dynamicFilter[key];
1972
+ filterItems.forEach((item) => {
1973
+ if (filtered === false && item.relation === 'AND')
1974
+ return;
1975
+ if (filtered === true && item.relation === 'OR')
1976
+ return;
1977
+ const columnValue = Utils.normalize(row[key].toString());
1978
+ let value = '';
1979
+ if (Array.isArray(item.value)) {
1980
+ value = item.value.map((val) => Utils.normalize(val.toString()));
1981
+ switch (item.operation) {
1982
+ case 'IN':
1983
+ filtered = value.includes(columnValue);
1984
+ break;
1985
+ case 'NOT_IN':
1986
+ filtered = !value.includes(columnValue);
1987
+ break;
1988
+ case 'BETWEEN':
1989
+ filtered = (Number(columnValue) || columnValue) >= (Number(value[0]) || value[0])
1990
+ && (Number(columnValue) || columnValue) <= (Number(value[1]) || value[1]);
1991
+ break;
1992
+ default:
1993
+ break;
1994
+ }
2037
1995
  }
2038
- }
2039
- else {
2040
- value = Utils.normalize(item.value.toString());
2041
- switch (item.operation) {
2042
- case 'CONTAINS':
2043
- filtered = columnValue.indexOf(value) !== -1;
2044
- break;
2045
- case 'NOT_CONTAINS':
2046
- filtered = columnValue.indexOf(value) === -1;
2047
- break;
2048
- case 'EQUALS':
2049
- filtered = columnValue === value;
2050
- break;
2051
- case 'NOT_EQUALS':
2052
- filtered = columnValue !== value;
2053
- break;
2054
- case 'GREATER_THAN':
2055
- filtered = (Number(columnValue) || columnValue) > (Number(value) || value);
2056
- break;
2057
- case 'LESS_THAN':
2058
- filtered = (Number(columnValue) || columnValue) < (Number(value) || value);
2059
- break;
2060
- case 'GREATER_THAN_EQUALS':
2061
- filtered = (Number(columnValue) || columnValue) >= (Number(value) || value);
2062
- break;
2063
- case 'LESS_THAN_EQUALS':
2064
- filtered = (Number(columnValue) || columnValue) <= (Number(value) || value);
2065
- break;
1996
+ else {
1997
+ value = Utils.normalize(item.value.toString());
1998
+ switch (item.operation) {
1999
+ case 'CONTAINS':
2000
+ filtered = columnValue.indexOf(value) !== -1;
2001
+ break;
2002
+ case 'NOT_CONTAINS':
2003
+ filtered = columnValue.indexOf(value) === -1;
2004
+ break;
2005
+ case 'EQUALS':
2006
+ filtered = columnValue === value;
2007
+ break;
2008
+ case 'NOT_EQUALS':
2009
+ filtered = columnValue !== value;
2010
+ break;
2011
+ case 'GREATER_THAN':
2012
+ filtered = (Number(columnValue) || columnValue) > (Number(value) || value);
2013
+ break;
2014
+ case 'LESS_THAN':
2015
+ filtered = (Number(columnValue) || columnValue) < (Number(value) || value);
2016
+ break;
2017
+ case 'GREATER_THAN_EQUALS':
2018
+ filtered = (Number(columnValue) || columnValue) >= (Number(value) || value);
2019
+ break;
2020
+ case 'LESS_THAN_EQUALS':
2021
+ filtered = (Number(columnValue) || columnValue) <= (Number(value) || value);
2022
+ break;
2023
+ default:
2024
+ break;
2025
+ }
2066
2026
  }
2067
- }
2027
+ });
2068
2028
  });
2069
- });
2029
+ }
2030
+ catch (_a) {
2031
+ // do nothing
2032
+ }
2070
2033
  return filtered;
2071
2034
  }
2072
2035
  getRowBySearchJoin(row) {
@@ -3031,88 +2994,19 @@ class TekGridLayoutOptions extends ComponentRender {
3031
2994
  }
3032
2995
 
3033
2996
  class TekFilterHelper {
3034
- static formatDate(date, column) {
3035
- if (column.componentProps.dateFormat) {
3036
- return dayjs(date).format(column.componentProps.dateFormat);
3037
- }
3038
- return dayjs(date).format(Config.dateFormat);
3039
- }
3040
2997
  static getLabel(name) {
3041
- return I18n.translate(this.values[name].label);
2998
+ return DateHelper.getLabel(name);
3042
2999
  }
3043
3000
  static getValue(name, column) {
3044
- if (!this.values[name])
3045
- return '';
3046
- const value = this.values[name].fn();
3047
- if (Array.isArray(value)) {
3048
- return value.map((item) => this.formatDate(item, column));
3049
- }
3050
- return this.formatDate(value, column);
3001
+ return DateHelper.getValue(name, column.componentProps.dateFormat);
3051
3002
  }
3052
3003
  static register(name, label, fn) {
3053
- this.values[name] = {
3054
- label,
3055
- fn,
3056
- };
3004
+ DateHelper.register(name, label, fn);
3057
3005
  }
3058
3006
  static unregister(name) {
3059
- delete this.values[name];
3007
+ DateHelper.unregister(name);
3060
3008
  }
3061
- }
3062
- TekFilterHelper.values = {
3063
- TODAY: {
3064
- label: 'TEKGRID_HELPERVALUE_TODAY',
3065
- fn: () => dayjs().toDate(),
3066
- },
3067
- TOMORROW: {
3068
- label: 'TEKGRID_HELPERVALUE_TOMORROW',
3069
- fn: () => dayjs().add(1, 'day').toDate(),
3070
- },
3071
- YESTERDAY: {
3072
- label: 'TEKGRID_HELPERVALUE_YESTERDAY',
3073
- fn: () => dayjs().subtract(1, 'day').toDate(),
3074
- },
3075
- LAST_7_DAYS: {
3076
- label: 'TEKGRID_HELPERVALUE_LAST_7_DAYS',
3077
- fn: () => {
3078
- const end = dayjs().toDate();
3079
- const start = dayjs().subtract(7, 'day').toDate();
3080
- return [start, end];
3081
- },
3082
- },
3083
- NEXT_7_DAYS: {
3084
- label: 'TEKGRID_HELPERVALUE_NEXT_7_DAYS',
3085
- fn: () => {
3086
- const start = dayjs().toDate();
3087
- const end = dayjs().add(7, 'day').toDate();
3088
- return [start, end];
3089
- },
3090
- },
3091
- CURRENT_WEEK: {
3092
- label: 'TEKGRID_HELPERVALUE_CURRENT_WEEK',
3093
- fn: () => {
3094
- const start = dayjs().startOf('week').toDate();
3095
- const end = dayjs().endOf('week').toDate();
3096
- return [start, end];
3097
- },
3098
- },
3099
- CURRENT_MONTH: {
3100
- label: 'TEKGRID_HELPERVALUE_CURRENT_MONTH',
3101
- fn: () => {
3102
- const start = dayjs().startOf('month').toDate();
3103
- const end = dayjs().endOf('month').toDate();
3104
- return [start, end];
3105
- },
3106
- },
3107
- CURRENT_YEAR: {
3108
- label: 'TEKGRID_HELPERVALUE_CURRENT_YEAR',
3109
- fn: () => {
3110
- const start = dayjs().startOf('year').toDate();
3111
- const end = dayjs().endOf('year').toDate();
3112
- return [start, end];
3113
- },
3114
- },
3115
- };
3009
+ }
3116
3010
 
3117
3011
  /* TekTreeGrid Class */
3118
3012
  class TekTreeGrid extends TreeGridEditable {
@@ -3278,6 +3172,422 @@ class TekTreeGrid extends TreeGridEditable {
3278
3172
  }
3279
3173
  }
3280
3174
 
3175
+ class TekUserInfoController {
3176
+ constructor(component) {
3177
+ this.component = component;
3178
+ }
3179
+ get versionInfo() {
3180
+ return this.component.versionInfo;
3181
+ }
3182
+ get name() {
3183
+ var _a;
3184
+ return ((_a = this.versionInfo) === null || _a === void 0 ? void 0 : _a.name) || '';
3185
+ }
3186
+ set name(value) {
3187
+ if (!this.versionInfo)
3188
+ return;
3189
+ this.versionInfo.name = value;
3190
+ }
3191
+ get version() {
3192
+ var _a;
3193
+ return ((_a = this.versionInfo) === null || _a === void 0 ? void 0 : _a.version) || '';
3194
+ }
3195
+ set version(value) {
3196
+ if (!this.versionInfo)
3197
+ return;
3198
+ this.versionInfo.version = value;
3199
+ }
3200
+ get defaultEmail() {
3201
+ return this.component.defaultEmail;
3202
+ }
3203
+ set defaultEmail(value) {
3204
+ this.component.defaultEmail = value;
3205
+ }
3206
+ get hasDefaultEmail() {
3207
+ return !!this.component.defaultEmail;
3208
+ }
3209
+ get hasAboutImage() {
3210
+ return !!this.component.aboutImage;
3211
+ }
3212
+ mergeText(name, version) {
3213
+ return `${name} - <b>${version}</b>`;
3214
+ }
3215
+ get mainVersion() {
3216
+ var _a;
3217
+ if (!((_a = this.versionInfo) === null || _a === void 0 ? void 0 : _a.name) || !this.versionInfo.version)
3218
+ return '';
3219
+ return this.mergeText(this.versionInfo.name, this.versionInfo.version);
3220
+ }
3221
+ getItems(tab) {
3222
+ if (!this.versionInfo)
3223
+ return [];
3224
+ const tabInfo = this.versionInfo[tab];
3225
+ return tabInfo.map((item) => this.mergeText(item.name, item.version));
3226
+ }
3227
+ get frontendItems() {
3228
+ return this.getItems('frontend');
3229
+ }
3230
+ get backendItems() {
3231
+ return this.getItems('backend');
3232
+ }
3233
+ get modulesItems() {
3234
+ return this.getItems('modules');
3235
+ }
3236
+ }
3237
+
3238
+ class TekUserInfo extends UserInfo {
3239
+ constructor(props) {
3240
+ super(props);
3241
+ /**
3242
+ * Data about the application version
3243
+ */
3244
+ this.versionInfo = null;
3245
+ /**
3246
+ * Default email address to be defined in the Report Bug form
3247
+ */
3248
+ this.defaultEmail = '';
3249
+ /**
3250
+ * Url from which the version info will be retrieved
3251
+ */
3252
+ this.versionUrl = '';
3253
+ /**
3254
+ * Path to the image to be shown on about modal
3255
+ */
3256
+ this.aboutImage = '';
3257
+ this.versionInfo = this.getInitValue('versionInfo', props.versionInfo, this.versionInfo);
3258
+ this.defaultEmail = this.getInitValue('defaultEmail', props.defaultEmail, this.defaultEmail);
3259
+ this.versionUrl = this.getInitValue('versionUrl', props.versionUrl, this.versionUrl);
3260
+ this.aboutImage = this.getInitValue('aboutImage', props.aboutImage, this.aboutImage);
3261
+ this.createAccessors();
3262
+ this.propBottomSlot = props.bottomSlot;
3263
+ }
3264
+ getBottomSlot() {
3265
+ return [
3266
+ {
3267
+ name: `${this.name}_bottom_list`,
3268
+ component: 'TekUserInfoList',
3269
+ parentName: this.name,
3270
+ },
3271
+ ];
3272
+ }
3273
+ onAboutClick() {
3274
+ if (!this.aboutModal) {
3275
+ this.aboutModal = ModalService.create({
3276
+ name: `${this.name}_about_modal`,
3277
+ cssClass: 'about-modal',
3278
+ children: [
3279
+ {
3280
+ name: `${this.name}_about_header`,
3281
+ component: 'ZdHeader',
3282
+ color: 'transparent',
3283
+ padless: true,
3284
+ elevation: 0,
3285
+ rightSlot: [
3286
+ {
3287
+ name: `${this.name}_about_close_button`,
3288
+ component: 'ZdModalCloseButton',
3289
+ small: true,
3290
+ modalName: `${this.name}_about_modal`,
3291
+ },
3292
+ ],
3293
+ },
3294
+ {
3295
+ name: `${this.name}_about_row`,
3296
+ component: 'ZdTag',
3297
+ tag: 'div',
3298
+ cssClass: 'zd-justify-center zd-px-6',
3299
+ isVisible: `{{TekUserInfoController_${this.componentId}.hasAboutImage}}`,
3300
+ children: [
3301
+ {
3302
+ name: `${this.name}_about_image`,
3303
+ component: 'ZdImage',
3304
+ width: '100%',
3305
+ src: this.aboutImage,
3306
+ },
3307
+ ],
3308
+ },
3309
+ {
3310
+ name: `${this.name}_version_tabs`,
3311
+ cssClass: 'zd-pt-3',
3312
+ component: 'ZdTabs',
3313
+ tabs: [
3314
+ {
3315
+ name: `${this.name}_version_frontend_tab`,
3316
+ tabTitle: 'Frontend',
3317
+ children: this.getVersionTree('frontend'),
3318
+ },
3319
+ {
3320
+ name: `${this.name}_version_backend_tab`,
3321
+ tabTitle: 'Backend',
3322
+ children: this.getVersionTree('backend'),
3323
+ },
3324
+ {
3325
+ name: `${this.name}_version_modules_tab`,
3326
+ tabTitle: 'Modules',
3327
+ children: this.getVersionTree('modules'),
3328
+ },
3329
+ ],
3330
+ },
3331
+ ],
3332
+ });
3333
+ }
3334
+ this.aboutModal.show();
3335
+ }
3336
+ getVersionTree(tab) {
3337
+ if (!this.versionInfo)
3338
+ return [];
3339
+ const main = {
3340
+ name: `${this.name}_version_${tab}_main`,
3341
+ component: 'ZdText',
3342
+ text: `{{TekUserInfoController_${this.componentId}.mainVersion}}`,
3343
+ };
3344
+ const itemsComponent = {
3345
+ name: `${this.name}_version_${tab}`,
3346
+ component: 'ZdText',
3347
+ cssClass: 'zd-pl-4',
3348
+ text: `{{TekUserInfoController_${this.componentId}.${tab}Items}}`,
3349
+ };
3350
+ return [main, itemsComponent];
3351
+ }
3352
+ onReportClick() {
3353
+ if (!this.reportModal) {
3354
+ this.reportModal = ModalService.create({
3355
+ name: `${this.name}_report_modal`,
3356
+ children: [
3357
+ {
3358
+ name: `${this.name}_report_header`,
3359
+ component: 'ZdHeader',
3360
+ color: 'transparent',
3361
+ padless: true,
3362
+ elevation: 0,
3363
+ leftSlot: [
3364
+ {
3365
+ name: `${this.name}_report_title`,
3366
+ component: 'ZdText',
3367
+ text: 'TEKUSERINFO_REPORT_ERROR',
3368
+ cssClass: 'zd-theme-font-title',
3369
+ },
3370
+ ],
3371
+ rightSlot: [
3372
+ {
3373
+ name: `${this.name}_report_close_button`,
3374
+ component: 'ZdModalCloseButton',
3375
+ small: true,
3376
+ modalName: `${this.name}_report_modal`,
3377
+ },
3378
+ ],
3379
+ },
3380
+ {
3381
+ name: `${this.name}_report_form`,
3382
+ component: 'ZdForm',
3383
+ cssClass: 'zd-pt-4',
3384
+ children: [
3385
+ {
3386
+ name: 'report_email',
3387
+ component: 'ZdTextInput',
3388
+ label: 'E-mail',
3389
+ grid: {
3390
+ cols: '12',
3391
+ },
3392
+ value: `{{TekUserInfoController_${this.componentId}.defaultEmail}}`,
3393
+ readonly: `{{TekUserInfoController_${this.componentId}.hasDefaultEmail}}`,
3394
+ validations: {
3395
+ required: {},
3396
+ email: {},
3397
+ },
3398
+ },
3399
+ {
3400
+ name: 'report_cc',
3401
+ component: 'ZdTextInput',
3402
+ label: 'CC',
3403
+ placeholder: 'TEKUSERINFO_EMAIL_PLACEHOLDER',
3404
+ grid: {
3405
+ cols: '12',
3406
+ },
3407
+ },
3408
+ {
3409
+ name: 'report_type',
3410
+ component: 'ZdSelect',
3411
+ label: 'TEKUSERINFO_TYPE',
3412
+ dataValue: 'value',
3413
+ dataText: 'text',
3414
+ datasource: {
3415
+ uniqueKey: 'value',
3416
+ translate: true,
3417
+ data: [
3418
+ { value: '0', text: 'TEKUSERINFO_ERROR' },
3419
+ { value: '1', text: 'TEKUSERINFO_IMPROVEMENT' },
3420
+ ],
3421
+ },
3422
+ grid: {
3423
+ cols: '12',
3424
+ },
3425
+ validations: {
3426
+ required: {},
3427
+ },
3428
+ },
3429
+ {
3430
+ name: 'report_description',
3431
+ component: 'ZdTextarea',
3432
+ label: 'TEKUSERINFO_DESCRIPTION',
3433
+ grid: {
3434
+ cols: '12',
3435
+ },
3436
+ validations: {
3437
+ required: {},
3438
+ },
3439
+ },
3440
+ ],
3441
+ },
3442
+ {
3443
+ name: `${this.name}_report_footer`,
3444
+ component: 'ZdFooter',
3445
+ color: 'transparent',
3446
+ padless: true,
3447
+ rightSlot: [
3448
+ {
3449
+ name: `${this.name}_report_cancel`,
3450
+ component: 'ZdButton',
3451
+ label: 'TEKUSERINFO_CANCEL',
3452
+ outline: true,
3453
+ events: {
3454
+ click: () => { var _a; (_a = this.reportModal) === null || _a === void 0 ? void 0 : _a.hide(); },
3455
+ },
3456
+ },
3457
+ {
3458
+ name: `${this.name}_report_send`,
3459
+ component: 'ZdButton',
3460
+ label: 'TEKUSERINFO_SEND',
3461
+ events: {
3462
+ click: (args) => this.onSendReport(args),
3463
+ },
3464
+ },
3465
+ ],
3466
+ },
3467
+ ],
3468
+ });
3469
+ }
3470
+ this.reportModal.show();
3471
+ }
3472
+ onSendReport({ event, element }) {
3473
+ if (!this.reportModal)
3474
+ return;
3475
+ const form = Metadata.getInstance(`${this.name}_report_form`);
3476
+ if (!form.validate())
3477
+ return;
3478
+ this.callEvent('onSendReport', {
3479
+ event, element, component: this, form,
3480
+ });
3481
+ this.reportModal.hide();
3482
+ }
3483
+ onCreated() {
3484
+ super.onCreated();
3485
+ Loader.addController(`TekUserInfoController_${this.componentId}`, new TekUserInfoController(this));
3486
+ this.bottomSlot = this.propBottomSlot ? this.propBottomSlot : this.getBottomSlot();
3487
+ }
3488
+ onMounted(element) {
3489
+ const _super = Object.create(null, {
3490
+ onMounted: { get: () => super.onMounted }
3491
+ });
3492
+ return __awaiter(this, void 0, void 0, function* () {
3493
+ _super.onMounted.call(this, element);
3494
+ if (this.versionUrl) {
3495
+ const res = yield Http.get(this.versionUrl);
3496
+ this.versionInfo = res.data.versionInfo;
3497
+ }
3498
+ });
3499
+ }
3500
+ }
3501
+ Messages.add({
3502
+ 'pt-BR': {
3503
+ translation: {
3504
+ TEKUSERINFO_ABOUT: 'Sobre',
3505
+ TEKUSERINFO_REPORT_ERROR: 'Reportar Erro',
3506
+ TEKUSERINFO_EMAIL_PLACEHOLDER: 'Separe e-mails usando ";"',
3507
+ TEKUSERINFO_TYPE: 'Tipo',
3508
+ TEKUSERINFO_ERROR: 'Erro',
3509
+ TEKUSERINFO_IMPROVEMENT: 'Melhoria',
3510
+ TEKUSERINFO_DESCRIPTION: 'Descrição',
3511
+ TEKUSERINFO_CANCEL: 'Cancelar',
3512
+ TEKUSERINFO_SEND: 'Enviar',
3513
+ },
3514
+ },
3515
+ 'en-US': {
3516
+ translation: {
3517
+ TEKUSERINFO_ABOUT: 'About',
3518
+ TEKUSERINFO_REPORT_ERROR: 'Report Bug',
3519
+ TEKUSERINFO_EMAIL_PLACEHOLDER: 'Separate e-mails using ";"',
3520
+ TEKUSERINFO_TYPE: 'Type',
3521
+ TEKUSERINFO_ERROR: 'Bug',
3522
+ TEKUSERINFO_IMPROVEMENT: 'Improvement',
3523
+ TEKUSERINFO_DESCRIPTION: 'Description',
3524
+ TEKUSERINFO_CANCEL: 'Cancel',
3525
+ TEKUSERINFO_SEND: 'Send',
3526
+ },
3527
+ },
3528
+ 'es-ES': {
3529
+ translation: {
3530
+ TEKUSERINFO_ABOUT: 'Sobre',
3531
+ TEKUSERINFO_REPORT_ERROR: 'Reportar Error',
3532
+ TEKUSERINFO_EMAIL_PLACEHOLDER: 'Separar e-mails usando ";"',
3533
+ TEKUSERINFO_TYPE: 'Tipo',
3534
+ TEKUSERINFO_ERROR: 'Error',
3535
+ TEKUSERINFO_IMPROVEMENT: 'Mejora',
3536
+ TEKUSERINFO_DESCRIPTION: 'Descripción',
3537
+ TEKUSERINFO_CANCEL: 'Cancelar',
3538
+ TEKUSERINFO_SEND: 'Enviar',
3539
+ },
3540
+ },
3541
+ });
3542
+
3543
+ class TekUserInfoList extends List {
3544
+ constructor(props) {
3545
+ super(props);
3546
+ /**
3547
+ * Name of the user info component
3548
+ */
3549
+ this.parentName = '';
3550
+ this.dense = true;
3551
+ this.parentName = props.parentName || '';
3552
+ this.items = this.getItems();
3553
+ }
3554
+ getItems() {
3555
+ const parent = this.parentName ? Metadata.getInstance(this.parentName) : this.parent;
3556
+ if (!(parent instanceof TekUserInfo)) {
3557
+ throw Error(`Could not find the TekUserInfo component associated with ${this.name} TekUserInfoList`);
3558
+ }
3559
+ return [
3560
+ {
3561
+ name: `${parent.name}_version`,
3562
+ component: 'ZdListItem',
3563
+ title: `{{TekUserInfoController_${parent.componentId}.name}}`,
3564
+ subtitle: `{{TekUserInfoController_${parent.componentId}.version}}`,
3565
+ cssClass: 'zd-px-2',
3566
+ },
3567
+ {
3568
+ name: `${parent.name}_about`,
3569
+ component: 'ZdListItem',
3570
+ title: 'TEKUSERINFO_ABOUT',
3571
+ prependIcon: 'infoOutline',
3572
+ cssClass: 'zd-px-2',
3573
+ events: {
3574
+ click: () => parent.onAboutClick(),
3575
+ },
3576
+ },
3577
+ {
3578
+ name: `${parent.name}_report`,
3579
+ component: 'ZdListItem',
3580
+ title: 'TEKUSERINFO_REPORT_ERROR',
3581
+ prependIcon: 'mdi-ladybug',
3582
+ cssClass: 'zd-px-2',
3583
+ events: {
3584
+ click: () => parent.onReportClick(),
3585
+ },
3586
+ },
3587
+ ];
3588
+ }
3589
+ }
3590
+
3281
3591
  Messages.add({
3282
3592
  'pt-BR': {
3283
3593
  translation: {
@@ -3326,4 +3636,4 @@ Messages.add({
3326
3636
  },
3327
3637
  });
3328
3638
 
3329
- export { BreadcrumbHeader, CardTitle, CrudAddButton, CrudButton, CrudCancelButton, CrudDeleteButton, CrudForm, CrudSaveButton, DynamicFilterOperations, DynamicFilterRelations, Image, IterableCarousel, IterableComponentRender, Loading, Notifications, ProductCard, TekFilterHelper, TekGrid, TekGridColumn, TekGridColumnsButton, TekGridLayoutOptions, TekMemoryDatasource, TekRestDatasource, TekTreeGrid, columnAggregationValues };
3639
+ export { BreadcrumbHeader, CardTitle, CrudAddButton, CrudButton, CrudCancelButton, CrudDeleteButton, CrudForm, CrudSaveButton, DynamicFilterOperations, DynamicFilterRelations, Image, IterableCarousel, IterableComponentRender, Loading, Notifications, ProductCard, TekFilterHelper, TekGrid, TekGridColumn, TekGridColumnsButton, TekGridLayoutOptions, TekMemoryDatasource, TekRestDatasource, TekTreeGrid, TekUserInfo, TekUserInfoList, columnAggregationValues };