@idevs/corelib 0.0.91 → 0.0.93

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.
@@ -13,7 +13,6 @@ let CheckboxButtonEditor = class CheckboxButtonEditor extends EditorWidget {
13
13
  return Fluent('div').getNode();
14
14
  }
15
15
  constructor(props) {
16
- var _a;
17
16
  super(props);
18
17
  if (isEmptyOrNull(this.options.enumKey) && this.options.enumType == null && isEmptyOrNull(this.options.lookupKey)) {
19
18
  return;
@@ -37,7 +36,7 @@ let CheckboxButtonEditor = class CheckboxButtonEditor extends EditorWidget {
37
36
  const values = Enum.getValues(enumType);
38
37
  for (const x of values) {
39
38
  const name = Enum.toString(enumType, x);
40
- this.addCheckbox(x.toString(), (_a = tryGetText('Enums.' + enumKey + '.' + name)) !== null && _a !== void 0 ? _a : name);
39
+ this.addCheckbox(x.toString(), tryGetText('Enums.' + enumKey + '.' + name) ?? name);
41
40
  }
42
41
  }
43
42
  this.domNode.classList.add('d-flex', 'flex-wrap');
@@ -103,6 +102,7 @@ let CheckboxButtonEditor = class CheckboxButtonEditor extends EditorWidget {
103
102
  values.forEach(v => {
104
103
  const checks = Array.from(inputs).filter(input => input.value === v);
105
104
  if (checks.length > 0) {
105
+ ;
106
106
  checks[0].checked = true;
107
107
  }
108
108
  });
@@ -1 +1 @@
1
- {"version":3,"file":"checkboxButtonEditor.js","sourceRoot":"","sources":["../../src/editors/checkboxButtonEditor.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/adjacent-overload-signatures */\n// reference: https://github-wiki-see.page/m/serenity-is/Serenity/wiki/CheckBox-Group-Editor\n\nimport {\n Decorators,\n EditorProps,\n EditorWidget,\n Enum,\n EnumKeyAttribute,\n EnumTypeRegistry,\n Fluent,\n IReadOnly,\n getCustomAttributes,\n getLookup,\n isArray,\n isEmptyOrNull,\n toId,\n tryGetText,\n} from '@serenity-is/corelib'\n\nexport type CheckboxButtonEditorOptions = {\n enumKey?: string\n enumType?: any\n lookupKey?: string\n isStringId?: boolean\n}\n\n@Decorators.registerEditor('CheckboxButtonEditor')\nexport class CheckboxButtonEditor<P extends CheckboxButtonEditorOptions = CheckboxButtonEditorOptions>\n extends EditorWidget<P>\n implements IReadOnly\n{\n private _items: Array<{ [key: string]: any }>\n private readonly _idField: string\n private readonly _textField: string\n private readonly _isStringId: boolean\n\n static override createDefaultElement() {\n return Fluent('div').getNode()\n }\n declare readonly domNode: HTMLElement\n\n constructor(props: EditorProps<P>) {\n super(props)\n\n if (isEmptyOrNull(this.options.enumKey) && this.options.enumType == null && isEmptyOrNull(this.options.lookupKey)) {\n return\n }\n\n this._isStringId = this.options.isStringId\n\n if (!isEmptyOrNull(this.options.lookupKey)) {\n const lookup = getLookup(this.options.lookupKey)\n this._idField = lookup.idField\n this._textField = lookup.textField\n this.set_items(lookup.items as Array<{ [key: string]: any }>)\n } else {\n const enumType = this.options.enumType || EnumTypeRegistry.get(this.options.enumKey)\n let enumKey = this.options.enumKey\n\n if (enumKey == null && enumType != null) {\n const enumKeyAttr = getCustomAttributes(enumType, EnumKeyAttribute, false)\n if (enumKeyAttr.length > 0) {\n enumKey = enumKeyAttr[0].value\n }\n }\n const values = Enum.getValues(enumType)\n for (const x of values) {\n const name = Enum.toString(enumType, x)\n this.addCheckbox(x.toString(), tryGetText('Enums.' + enumKey + '.' + name) ?? name)\n }\n }\n\n this.domNode.classList.add('d-flex', 'flex-wrap')\n }\n\n protected renderCheckboxes() {\n const childDivs = this.domNode.querySelectorAll('div')\n childDivs.forEach(function (child) {\n this.domNode.removeChild(child)\n })\n\n for (const item of this._items) {\n const textValue = item[this._textField]\n const text = textValue == null ? '' : textValue.toString()\n const idValue = item[this._idField]\n const id = idValue == null ? '' : idValue.toString()\n this.addCheckbox(id, text)\n }\n }\n\n protected addCheckbox(value: string, text: string) {\n const div = $('<div class=\"col-12 col-sm-6 col-md-4 col-xl-3\" />')\n const label = $('<label/>').text(text.replace(/, /g, ',').replace(/,/g, ', '))\n $('<input type=\"checkbox\" class=\"me-2\" />')\n .attr('name', this.uniqueName)\n .attr('id', this.uniqueName + '_' + value)\n .attr('value', value)\n .prependTo(label)\n label.appendTo(div)\n div.appendTo(this.domNode)\n }\n\n get_items(): Array<{ [key: string]: any }> {\n return this._items\n }\n\n get items(): Array<{ [key: string]: any }> {\n return this.get_items()\n }\n\n set_items(value: Array<{ [key: string]: any }>) {\n this._items = value\n this.renderCheckboxes()\n }\n\n set items(v: Array<{ [key: string]: any }>) {\n this.set_items(v)\n }\n\n get_value() {\n const val: string[] = []\n const inputs = this.domNode.querySelectorAll('input:checked')\n\n inputs.forEach((input: HTMLInputElement) => {\n val.push(this._isStringId ? input.value : toId(input.value))\n })\n\n return val.join(',')\n }\n\n get value(): string {\n return this.get_value()\n }\n\n set_value(value: string): void {\n if (value !== this.get_value()) {\n let values: unknown[] = []\n if (!isEmptyOrNull(value)) {\n values = this._isStringId ? value.split(',') : value.split(',').map(p => Number(p))\n }\n const inputs = this.domNode.querySelectorAll<HTMLInputElement>('input')\n inputs.forEach(input => {\n input.checked = false\n })\n\n values.forEach(v => {\n const checks = Array.from(inputs).filter(input => (input as HTMLInputElement).value === v)\n if (checks.length > 0) {\n (checks[0] as HTMLInputElement).checked = true\n }\n })\n }\n }\n\n set value(v: string) {\n this.set_value(v)\n }\n\n get_readOnly(): boolean {\n return this.domNode.getAttribute('disabled') != null\n }\n\n set_readOnly(value: boolean): void {\n if (this.get_readOnly() !== value) {\n if (value) {\n this.domNode.setAttribute('disabled', 'disabled')\n this.domNode.querySelectorAll<HTMLInputElement>('input').forEach(input => {\n input.setAttribute('disabled', 'disabled')\n })\n } else {\n this.domNode.removeAttribute('disabled')\n this.domNode.querySelectorAll<HTMLInputElement>('input').forEach(input => {\n input.removeAttribute('disabled')\n })\n }\n }\n }\n}\n\nexport class idevsEditors {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public static load() {}\n}\n"]}
1
+ {"version":3,"file":"checkboxButtonEditor.js","sourceRoot":"","sources":["../../src/editors/checkboxButtonEditor.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/adjacent-overload-signatures */\n// reference: https://github-wiki-see.page/m/serenity-is/Serenity/wiki/CheckBox-Group-Editor\n\nimport {\n Decorators,\n EditorProps,\n EditorWidget,\n Enum,\n EnumKeyAttribute,\n EnumTypeRegistry,\n Fluent,\n IReadOnly,\n getCustomAttributes,\n getLookup,\n isEmptyOrNull,\n toId,\n tryGetText,\n} from '@serenity-is/corelib'\n\nexport type CheckboxButtonEditorOptions = {\n enumKey?: string\n enumType?: any\n lookupKey?: string\n isStringId?: boolean\n}\n\n@Decorators.registerEditor('CheckboxButtonEditor')\nexport class CheckboxButtonEditor<P extends CheckboxButtonEditorOptions = CheckboxButtonEditorOptions>\n extends EditorWidget<P>\n implements IReadOnly\n{\n private _items: Array<{ [key: string]: any }>\n private readonly _idField: string\n private readonly _textField: string\n private readonly _isStringId: boolean\n\n static override createDefaultElement() {\n return Fluent('div').getNode()\n }\n declare readonly domNode: HTMLElement\n\n constructor(props: EditorProps<P>) {\n super(props)\n\n if (isEmptyOrNull(this.options.enumKey) && this.options.enumType == null && isEmptyOrNull(this.options.lookupKey)) {\n return\n }\n\n this._isStringId = this.options.isStringId\n\n if (!isEmptyOrNull(this.options.lookupKey)) {\n const lookup = getLookup(this.options.lookupKey)\n this._idField = lookup.idField\n this._textField = lookup.textField\n this.set_items(lookup.items as Array<{ [key: string]: any }>)\n } else {\n const enumType = this.options.enumType || EnumTypeRegistry.get(this.options.enumKey)\n let enumKey = this.options.enumKey\n\n if (enumKey == null && enumType != null) {\n const enumKeyAttr = getCustomAttributes(enumType, EnumKeyAttribute, false)\n if (enumKeyAttr.length > 0) {\n enumKey = enumKeyAttr[0].value\n }\n }\n const values = Enum.getValues(enumType)\n for (const x of values) {\n const name = Enum.toString(enumType, x)\n this.addCheckbox(x.toString(), tryGetText('Enums.' + enumKey + '.' + name) ?? name)\n }\n }\n\n this.domNode.classList.add('d-flex', 'flex-wrap')\n }\n\n protected renderCheckboxes() {\n const childDivs = this.domNode.querySelectorAll('div')\n childDivs.forEach(function (child) {\n this.domNode.removeChild(child)\n })\n\n for (const item of this._items) {\n const textValue = item[this._textField]\n const text = textValue == null ? '' : textValue.toString()\n const idValue = item[this._idField]\n const id = idValue == null ? '' : idValue.toString()\n this.addCheckbox(id, text)\n }\n }\n\n protected addCheckbox(value: string, text: string) {\n const div = $('<div class=\"col-12 col-sm-6 col-md-4 col-xl-3\" />')\n const label = $('<label/>').text(text.replace(/, /g, ',').replace(/,/g, ', '))\n $('<input type=\"checkbox\" class=\"me-2\" />')\n .attr('name', this.uniqueName)\n .attr('id', this.uniqueName + '_' + value)\n .attr('value', value)\n .prependTo(label)\n label.appendTo(div)\n div.appendTo(this.domNode)\n }\n\n get_items(): Array<{ [key: string]: any }> {\n return this._items\n }\n\n get items(): Array<{ [key: string]: any }> {\n return this.get_items()\n }\n\n set_items(value: Array<{ [key: string]: any }>) {\n this._items = value\n this.renderCheckboxes()\n }\n\n set items(v: Array<{ [key: string]: any }>) {\n this.set_items(v)\n }\n\n get_value() {\n const val: string[] = []\n const inputs = this.domNode.querySelectorAll('input:checked')\n\n inputs.forEach((input: HTMLInputElement) => {\n val.push(this._isStringId ? input.value : toId(input.value))\n })\n\n return val.join(',')\n }\n\n get value(): string {\n return this.get_value()\n }\n\n set_value(value: string): void {\n if (value !== this.get_value()) {\n let values: unknown[] = []\n if (!isEmptyOrNull(value)) {\n values = this._isStringId ? value.split(',') : value.split(',').map(p => Number(p))\n }\n const inputs = this.domNode.querySelectorAll<HTMLInputElement>('input')\n inputs.forEach(input => {\n input.checked = false\n })\n\n values.forEach(v => {\n const checks = Array.from(inputs).filter(input => (input as HTMLInputElement).value === v)\n if (checks.length > 0) {\n ;(checks[0] as HTMLInputElement).checked = true\n }\n })\n }\n }\n\n set value(v: string) {\n this.set_value(v)\n }\n\n get_readOnly(): boolean {\n return this.domNode.getAttribute('disabled') != null\n }\n\n set_readOnly(value: boolean): void {\n if (this.get_readOnly() !== value) {\n if (value) {\n this.domNode.setAttribute('disabled', 'disabled')\n this.domNode.querySelectorAll<HTMLInputElement>('input').forEach(input => {\n input.setAttribute('disabled', 'disabled')\n })\n } else {\n this.domNode.removeAttribute('disabled')\n this.domNode.querySelectorAll<HTMLInputElement>('input').forEach(input => {\n input.removeAttribute('disabled')\n })\n }\n }\n }\n}\n\nexport class idevsEditors {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public static load() {}\n}\n"]}
@@ -14,16 +14,15 @@ let DateMonthEditor = class DateMonthEditor extends SelectEditor {
14
14
  return indexOf(this.months, x => x == this.value);
15
15
  }
16
16
  getItems() {
17
- var _a, _b, _c;
18
17
  const opt = this.options;
19
18
  if (opt.items != null && opt.items.length >= 1) {
20
19
  return opt.items;
21
20
  }
22
21
  const today = new Date();
23
22
  this.months = [];
24
- const locale = (_a = opt.locale) !== null && _a !== void 0 ? _a : 'en';
25
- const options = { month: (_b = opt.display) !== null && _b !== void 0 ? _b : '2-digit' };
26
- const upperCase = (_c = opt.upperCase) !== null && _c !== void 0 ? _c : false;
23
+ const locale = opt.locale ?? 'en';
24
+ const options = { month: opt.display ?? '2-digit' };
25
+ const upperCase = opt.upperCase ?? false;
27
26
  for (let i = 0; i <= 11; i++) {
28
27
  let m = new Date(today.getFullYear(), i, 1).toLocaleDateString(locale, options);
29
28
  if (upperCase) {
@@ -1 +1 @@
1
- {"version":3,"file":"dateMonthEditor.js","sourceRoot":"","sources":["../../src/editors/dateMonthEditor.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAe,YAAY,EAAuB,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAGnG,IAAM,eAAe,GAArB,MAAM,eAA2E,SAAQ,YAAe;IAG7G,YAAY,KAAqB;QAC/B,KAAK,CAAC,KAAK,CAAC,CAAA;QAEZ,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;IACnD,CAAC;IAED,QAAQ;;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,OAAiC,CAAA;QAElD,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC/C,OAAO,GAAG,CAAC,KAAK,CAAA;QAClB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;QAChB,MAAM,MAAM,GAAG,MAAA,GAAG,CAAC,MAAM,mCAAI,IAAI,CAAA;QACjC,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,MAAA,GAAG,CAAC,OAAO,mCAAI,SAAS,EAAE,CAAA;QACnD,MAAM,SAAS,GAAG,MAAA,GAAG,CAAC,SAAS,mCAAI,KAAK,CAAA;QAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YAC/E,IAAI,SAAS,EAAE,CAAC;gBACd,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;YACrB,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;CACF,CAAA;AApCY,eAAe;IAD3B,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC;GAChC,eAAe,CAoC3B","sourcesContent":["import { Decorators, EditorProps, SelectEditor, SelectEditorOptions, indexOf } from '@serenity-is/corelib'\n\n@Decorators.registerEditor('DateMonthEditor')\nexport class DateMonthEditor<P extends DateMonthEditorOptions = DateMonthEditorOptions> extends SelectEditor<P> {\n private months: string[]\n\n constructor(props: EditorProps<P>) {\n super(props)\n\n this.updateItems()\n }\n\n get valueAsMonth() {\n return indexOf(this.months, x => x == this.value)\n }\n\n getItems() {\n const opt = this.options as DateMonthEditorOptions\n\n if (opt.items != null && opt.items.length >= 1) {\n return opt.items\n }\n\n const today = new Date()\n this.months = []\n const locale = opt.locale ?? 'en'\n const options = { month: opt.display ?? '2-digit' }\n const upperCase = opt.upperCase ?? false\n\n for (let i = 0; i <= 11; i++) {\n let m = new Date(today.getFullYear(), i, 1).toLocaleDateString(locale, options)\n if (upperCase) {\n m = m.toUpperCase()\n }\n this.months.push(m)\n }\n\n return this.months\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport interface DateMonthEditorOptions extends SelectEditorOptions {\n display?: '2-digit' | 'short' | 'long'\n locale?: 'en' | 'th'\n upperCase?: boolean\n}\n"]}
1
+ {"version":3,"file":"dateMonthEditor.js","sourceRoot":"","sources":["../../src/editors/dateMonthEditor.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAe,YAAY,EAAuB,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAGnG,IAAM,eAAe,GAArB,MAAM,eAA2E,SAAQ,YAAe;IAG7G,YAAY,KAAqB;QAC/B,KAAK,CAAC,KAAK,CAAC,CAAA;QAEZ,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;IACnD,CAAC;IAED,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,OAAiC,CAAA;QAElD,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC/C,OAAO,GAAG,CAAC,KAAK,CAAA;QAClB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;QAChB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,CAAA;QACjC,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS,EAAE,CAAA;QACnD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,KAAK,CAAA;QAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YAC/E,IAAI,SAAS,EAAE,CAAC;gBACd,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;YACrB,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;CACF,CAAA;AApCY,eAAe;IAD3B,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC;GAChC,eAAe,CAoC3B","sourcesContent":["import { Decorators, EditorProps, SelectEditor, SelectEditorOptions, indexOf } from '@serenity-is/corelib'\n\n@Decorators.registerEditor('DateMonthEditor')\nexport class DateMonthEditor<P extends DateMonthEditorOptions = DateMonthEditorOptions> extends SelectEditor<P> {\n private months: string[]\n\n constructor(props: EditorProps<P>) {\n super(props)\n\n this.updateItems()\n }\n\n get valueAsMonth() {\n return indexOf(this.months, x => x == this.value)\n }\n\n getItems() {\n const opt = this.options as DateMonthEditorOptions\n\n if (opt.items != null && opt.items.length >= 1) {\n return opt.items\n }\n\n const today = new Date()\n this.months = []\n const locale = opt.locale ?? 'en'\n const options = { month: opt.display ?? '2-digit' }\n const upperCase = opt.upperCase ?? false\n\n for (let i = 0; i <= 11; i++) {\n let m = new Date(today.getFullYear(), i, 1).toLocaleDateString(locale, options)\n if (upperCase) {\n m = m.toUpperCase()\n }\n this.months.push(m)\n }\n\n return this.months\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport interface DateMonthEditorOptions extends SelectEditorOptions {\n display?: '2-digit' | 'short' | 'long'\n locale?: 'en' | 'th'\n upperCase?: boolean\n}\n"]}
@@ -8,11 +8,10 @@ import { Decorators } from '@serenity-is/corelib';
8
8
  import { getLookup, htmlEncode } from '@serenity-is/corelib';
9
9
  let ZeroDisplayFormatter = class ZeroDisplayFormatter {
10
10
  constructor(props = {}) {
11
- var _a, _b;
12
- var _c;
11
+ var _a;
13
12
  this.props = props;
14
- (_a = this.props) !== null && _a !== void 0 ? _a : (this.props = {});
15
- (_b = (_c = this.props).displayText) !== null && _b !== void 0 ? _b : (_c.displayText = '');
13
+ this.props ?? (this.props = {});
14
+ (_a = this.props).displayText ?? (_a.displayText = '');
16
15
  }
17
16
  format(ctx) {
18
17
  const src = ctx.value;
@@ -30,13 +29,12 @@ export { ZeroDisplayFormatter };
30
29
  let CheckboxFormatter = class CheckboxFormatter {
31
30
  constructor(props) {
32
31
  var _a, _b, _c, _d, _e;
33
- var _f, _g, _h, _j, _k;
34
32
  this.props = props;
35
- (_a = (_f = this.props).cssClass) !== null && _a !== void 0 ? _a : (_f.cssClass = 'text-center fs-2 text-gray-1');
36
- (_b = (_g = this.props).trueText) !== null && _b !== void 0 ? _b : (_g.trueText = '1');
37
- (_c = (_h = this.props).falseText) !== null && _c !== void 0 ? _c : (_h.falseText = '0');
38
- (_d = (_j = this.props).trueValueIcon) !== null && _d !== void 0 ? _d : (_j.trueValueIcon = 'mdi mdi-checkbox-marked-outline');
39
- (_e = (_k = this.props).falseValueIcon) !== null && _e !== void 0 ? _e : (_k.falseValueIcon = 'mdi mdi-checkbox-blank-outline');
33
+ (_a = this.props).cssClass ?? (_a.cssClass = 'text-center fs-2 text-gray-1');
34
+ (_b = this.props).trueText ?? (_b.trueText = '1');
35
+ (_c = this.props).falseText ?? (_c.falseText = '0');
36
+ (_d = this.props).trueValueIcon ?? (_d.trueValueIcon = 'mdi mdi-checkbox-marked-outline');
37
+ (_e = this.props).falseValueIcon ?? (_e.falseValueIcon = 'mdi mdi-checkbox-blank-outline');
40
38
  }
41
39
  format(ctx) {
42
40
  const src = ctx.value;
@@ -87,12 +85,11 @@ LookupFormatter = __decorate([
87
85
  export { LookupFormatter };
88
86
  let DateMonthFormatter = class DateMonthFormatter {
89
87
  format(ctx) {
90
- var _a, _b;
91
88
  const src = ctx.value;
92
89
  if (!src)
93
90
  return '';
94
- const locale = (_a = this.locale) !== null && _a !== void 0 ? _a : 'en';
95
- const options = { month: (_b = this.display) !== null && _b !== void 0 ? _b : '2-digit' };
91
+ const locale = this.locale ?? 'en';
92
+ const options = { month: this.display ?? '2-digit' };
96
93
  return new Date(2000, src - 1, 1).toLocaleDateString(locale, options);
97
94
  }
98
95
  };
@@ -1 +1 @@
1
- {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/formatters/formatters.ts"],"names":[],"mappings":"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","sourcesContent":["import { Decorators } from '@serenity-is/corelib'\nimport { FormatterContext } from '@serenity-is/sleekgrid'\nimport { getLookup, htmlEncode } from '@serenity-is/corelib'\n\nexport type Formatter = {\n format(ctx: FormatterContext): string\n}\n\n@Decorators.registerFormatter('Idevs.ZeroDisplayFormatter')\nexport class ZeroDisplayFormatter implements Formatter {\n constructor(public readonly props: { displayText?: string } = {}) {\n this.props ??= {}\n this.props.displayText ??= ''\n }\n\n format(ctx: FormatterContext): string {\n const src = ctx.value as string\n\n const value = parseFloat(String(src || '0').replace(',', ''))\n if (value == 0) {\n return htmlEncode(this.props.displayText)\n }\n\n return htmlEncode(src)\n }\n}\n\n@Decorators.registerFormatter('Idevs.CheckboxFormatter')\nexport class CheckboxFormatter implements Formatter {\n constructor(\n public readonly props: {\n trueText?: string\n falseText?: string\n cssClass?: string\n trueValueIcon?: string\n falseValueIcon?: string\n },\n ) {\n this.props.cssClass ??= 'text-center fs-2 text-gray-1'\n this.props.trueText ??= '1'\n this.props.falseText ??= '0'\n this.props.trueValueIcon ??= 'mdi mdi-checkbox-marked-outline'\n this.props.falseValueIcon ??= 'mdi mdi-checkbox-blank-outline'\n }\n\n format(ctx: FormatterContext): string {\n const src = ctx.value as string\n if (src == this.props.trueText) {\n return `<i class=\"${this.props.trueValueIcon} ${this.props.cssClass}\"></i>`\n } else if (src == this.props.falseText) {\n return `<i class=\"${this.props.falseValueIcon} ${this.props.cssClass}\"></i>`\n } else {\n return htmlEncode(src)\n }\n }\n}\n\n@Decorators.registerFormatter('Idevs.LookupFormatter')\nexport class LookupFormatter implements Formatter {\n @Decorators.option()\n public lookupKey: string\n\n format(ctx: FormatterContext): string {\n const src = ctx.value as string\n if (!src) return ''\n\n if (!this.lookupKey) return src\n\n const lookup = getLookup(this.lookupKey)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items = lookup.items as Array<{ [key: string]: any }>\n const idField = lookup.idField\n const textField = lookup.textField\n const idList = src.toString().split(',')\n\n return idList\n .map(x => {\n const g = items.find(i => i[idField] == x)\n if (!g) return x\n\n return htmlEncode(g[textField])\n })\n .join(', ')\n }\n}\n\n@Decorators.registerFormatter('Idevs.DateMonthFormatter')\nexport class DateMonthFormatter implements Formatter {\n @Decorators.option()\n public display: '2-digit' | 'short' | 'long'\n\n @Decorators.option()\n public locale: 'en' | 'th'\n\n format(ctx: FormatterContext): string {\n const src = ctx.value as number\n if (!src) return ''\n\n const locale = this.locale ?? 'en'\n const options = { month: this.display ?? '2-digit' }\n\n return new Date(2000, src - 1, 1).toLocaleDateString(locale, options)\n }\n}\n\nexport class idevsFormatters {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public static load() {}\n}\n"]}
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/formatters/formatters.ts"],"names":[],"mappings":"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","sourcesContent":["import { Decorators } from '@serenity-is/corelib'\nimport { FormatterContext } from '@serenity-is/sleekgrid'\nimport { getLookup, htmlEncode } from '@serenity-is/corelib'\n\nexport type Formatter = {\n format(ctx: FormatterContext): string\n}\n\n@Decorators.registerFormatter('Idevs.ZeroDisplayFormatter')\nexport class ZeroDisplayFormatter implements Formatter {\n constructor(public readonly props: { displayText?: string } = {}) {\n this.props ??= {}\n this.props.displayText ??= ''\n }\n\n format(ctx: FormatterContext): string {\n const src = ctx.value as string\n\n const value = parseFloat(String(src || '0').replace(',', ''))\n if (value == 0) {\n return htmlEncode(this.props.displayText)\n }\n\n return htmlEncode(src)\n }\n}\n\n@Decorators.registerFormatter('Idevs.CheckboxFormatter')\nexport class CheckboxFormatter implements Formatter {\n constructor(\n public readonly props: {\n trueText?: string\n falseText?: string\n cssClass?: string\n trueValueIcon?: string\n falseValueIcon?: string\n },\n ) {\n this.props.cssClass ??= 'text-center fs-2 text-gray-1'\n this.props.trueText ??= '1'\n this.props.falseText ??= '0'\n this.props.trueValueIcon ??= 'mdi mdi-checkbox-marked-outline'\n this.props.falseValueIcon ??= 'mdi mdi-checkbox-blank-outline'\n }\n\n format(ctx: FormatterContext): string {\n const src = ctx.value as string\n if (src == this.props.trueText) {\n return `<i class=\"${this.props.trueValueIcon} ${this.props.cssClass}\"></i>`\n } else if (src == this.props.falseText) {\n return `<i class=\"${this.props.falseValueIcon} ${this.props.cssClass}\"></i>`\n } else {\n return htmlEncode(src)\n }\n }\n}\n\n@Decorators.registerFormatter('Idevs.LookupFormatter')\nexport class LookupFormatter implements Formatter {\n @Decorators.option()\n public lookupKey: string\n\n format(ctx: FormatterContext): string {\n const src = ctx.value as string\n if (!src) return ''\n\n if (!this.lookupKey) return src\n\n const lookup = getLookup(this.lookupKey)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items = lookup.items as Array<{ [key: string]: any }>\n const idField = lookup.idField\n const textField = lookup.textField\n const idList = src.toString().split(',')\n\n return idList\n .map(x => {\n const g = items.find(i => i[idField] == x)\n if (!g) return x\n\n return htmlEncode(g[textField])\n })\n .join(', ')\n }\n}\n\n@Decorators.registerFormatter('Idevs.DateMonthFormatter')\nexport class DateMonthFormatter implements Formatter {\n @Decorators.option()\n public display: '2-digit' | 'short' | 'long'\n\n @Decorators.option()\n public locale: 'en' | 'th'\n\n format(ctx: FormatterContext): string {\n const src = ctx.value as number\n if (!src) return ''\n\n const locale = this.locale ?? 'en'\n const options = { month: this.display ?? '2-digit' }\n\n return new Date(2000, src - 1, 1).toLocaleDateString(locale, options)\n }\n}\n\nexport class idevsFormatters {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public static load() {}\n}\n"]}
@@ -202,7 +202,7 @@ export function updateDateProxyValue(name, dateValue, locale) {
202
202
  if (!target) {
203
203
  target = document.querySelector(`input[name=${name}-2]`);
204
204
  }
205
- if (isEmptyOrNull(dateValue === null || dateValue === void 0 ? void 0 : dateValue.toString())) {
205
+ if (isEmptyOrNull(dateValue?.toString())) {
206
206
  target.value = '';
207
207
  }
208
208
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/globals/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { DataGrid, ListRequest, ToolButton } from '@serenity-is/corelib'\nimport { isEmptyOrNull } from '@serenity-is/corelib'\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/consistent-type-definitions\n interface Number {\n toDecimal(precision?: number): string\n toTimeString(): string\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-definitions\n interface String {\n truncate(maxLength?: number): string\n toNumber(): number\n toMethodRound(method?: number): number\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-definitions\n interface Date {\n toSqlDate(): string\n toNumber(): number\n }\n\n type IModalOptions = {\n events?: IEvent[]\n }\n\n type IEvent = {\n event: string\n callback: (e: Event) => Promise<unknown>\n }\n}\n\nDate.prototype.toSqlDate = function (): string {\n const date = this.valueOf()\n return new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString()\n}\n\nDate.prototype.toNumber = function (): number {\n const date = this.valueOf()\n const hours = date.getHours()\n const minutes = date.getMinutes()\n const seconds = date.getSeconds()\n return hours * 60 + minutes + seconds / 60\n}\n\nNumber.prototype.toTimeString = function (): string {\n const value = this.valueOf()\n const hours = `0${Math.floor(value / 60)}`.slice(-2)\n const minutes = `0${value % 60}`.slice(-2)\n return `${hours}:${minutes}`\n}\n\nNumber.prototype.toDecimal = function (precision?: number): string {\n const numb = precision || 0\n const options = {\n style: 'decimal',\n minimumFractionDigits: numb,\n maximumFractionDigits: numb,\n }\n let value = Intl.NumberFormat('en-US', options).format(this.valueOf())\n value = parseFloat(value.replace(/,/g, '')).toString()\n return Intl.NumberFormat('en-US', options).format(parseFloat(value))\n}\n\nString.prototype.truncate = function (maxLength: number) {\n const str = String(this)\n return str.length > maxLength ? str.substring(0, maxLength - 1) + '&hellip;' : str\n}\n\nString.prototype.toNumber = function () {\n return this.valueOf() ? parseFloat(this.valueOf().replace(/,/g, '')) : 0\n}\n\nString.prototype.toMethodRound = function (method: number): number {\n const input = parseFloat(this.valueOf())\n let value = isNaN(input) ? 0 : input\n if (value == 0) return 0\n\n const r = parseFloat(value.toFixed(2))\n switch (method) {\n case 1:\n value = r - (parseFloat(((r % 1) * 100).toFixed(2)) % 25) / 100\n break\n\n case 2:\n value = r - (parseFloat(((r % 1) * 100).toFixed(2)) % 50) / 100\n break\n\n case 3:\n value = Math.floor(r)\n break\n\n case 4:\n value = Math.floor(r) + (Math.floor((r % 1) * 100) + (25 - (Math.floor((r % 1) * 100) % 25))) / 100\n break\n\n case 5:\n value = Math.floor(r) + (Math.floor((r % 1) * 100) + (50 - (Math.floor((r % 1) * 100) % 50))) / 100\n break\n\n case 6:\n value = Math.ceil(r)\n break\n\n case 7:\n value = Math.floor(r) + (parseFloat((parseFloat(((r % 1) * 100).toString()) / 25).toFixed(0)) * 25) / 100\n break\n\n case 8:\n value = Math.floor(r) + (parseFloat((parseFloat(((r % 1) * 100).toString()) / 50).toFixed(0)) * 50) / 100\n break\n\n case 9:\n value = parseFloat(r.toFixed(0))\n break\n\n default:\n value = r\n break\n }\n\n return value\n}\n\nexport function ToTimeString(value: number): string {\n const hours = `0${Math.floor(value / 60)}`.slice(-2)\n const minutes = `0${value % 60}`.slice(-2)\n return `${hours}:${minutes}`\n}\n\nexport function ToNumber(date: Date): number {\n const hours = date.getHours()\n const minutes = date.getMinutes()\n const seconds = date.getSeconds()\n return hours * 60 + minutes * 60 + seconds\n}\n\nexport function GetElementWidth(element?: HTMLElement): number {\n if (element) {\n return element.clientWidth\n }\n\n return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth\n}\n\nexport function GetElementHeight(element?: HTMLElement): number {\n if (element) {\n return element.clientHeight\n }\n\n return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\n}\n\nexport function RemoveChildren(parent?: HTMLElement): void {\n if (!parent) {\n return\n }\n\n while (parent.firstChild) {\n parent.removeChild(parent.firstChild)\n }\n}\n\nexport function IsOverflow(el: HTMLElement): boolean {\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth\n}\n\nexport function IsOverflowY(el: HTMLElement): boolean {\n return el.scrollHeight > el.clientHeight\n}\n\nexport function IsOverflowX(el: HTMLElement): boolean {\n return el.scrollWidth > el.clientWidth\n}\n\nexport function InnerDimensions(el: HTMLElement | null): [number, number] {\n if (!el) {\n return [0, 0]\n }\n\n const style = getComputedStyle(el)\n let width = el.clientWidth\n let height = el.clientHeight\n\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight)\n\n return [height, width]\n}\n\nexport function neededTarget(el: HTMLElement, target: string): HTMLElement {\n if (target.slice(0, 1) == '.') {\n if (el.classList.contains(target.slice(1)) === false) {\n el = el.closest(target) as HTMLElement\n }\n } else {\n if (el.tagName.toLowerCase() !== target.toLowerCase()) {\n el = el.closest(target) as HTMLElement\n }\n }\n return el\n}\n\nexport function dateStringOption(): Intl.DateTimeFormatOptions {\n return {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n }\n}\n\nexport function toDateString(date: Date): string {\n return date.toLocaleString('en-GB', dateStringOption())\n}\n\n// export function GetModal(name: string, options?: IModalOptions): Modal {\n// const el = document.querySelector(name) as HTMLElement\n// if (options?.events?.length) {\n// options.events.forEach(callback => {\n// el.addEventListener(\n// callback.event,\n// (e: Event) => {\n// callback.callback(e)\n// },\n// { once: true },\n// )\n// })\n// }\n\n// return Modal.getOrCreateInstance(el, { backdrop: 'static' })\n// }\n\nexport const setCookie = (name: string, value: string, expires?: number): void => {\n let cookie = `${name}=${value}`\n if (expires) {\n const date = new Date()\n date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000)\n const exp = `expires=${date.toUTCString()}`\n cookie = `${cookie}; ${exp}`\n }\n document.cookie = `${cookie}; path=/`\n}\n\nexport type dateProxyInputOption = {\n name: string\n readOnly?: boolean\n width?: number\n}\n\nexport function addDateProxyInput(opt: dateProxyInputOption): HTMLInputElement {\n const input: HTMLInputElement = document.querySelector(`input[name=\"${opt.name}\"]`)\n const cloneInput: HTMLInputElement = input.cloneNode(true) as HTMLInputElement\n cloneInput.setAttribute('name', `${opt.name}-2`)\n cloneInput.setAttribute('id', `${input.getAttribute('id')}-2`)\n cloneInput.setAttribute('readonly', 'readonly')\n cloneInput.classList.remove('customValidate')\n cloneInput.classList.remove('s-DateEditor')\n cloneInput.classList.remove('s-Serenity-DateEditor')\n cloneInput.classList.remove('dateQ')\n cloneInput.classList.remove('hasDatepicker')\n if (opt.readOnly) {\n cloneInput.style.backgroundColor = 'rgba(var(--s-bright-rgb), 0.02)'\n } else {\n cloneInput.style.backgroundColor = 'white'\n }\n if (opt.width) {\n cloneInput.style.width = `${opt.width}px`\n }\n\n input.parentNode.insertBefore(cloneInput, input.nextSibling)\n input.classList.add('d-none')\n\n return cloneInput\n}\n\nexport function updateDateProxyValue(name: string, dateValue: string | Date | null, locale?: string): void {\n let target = document.querySelector(`#${name}-2`) as HTMLInputElement\n if (!target) {\n target = document.querySelector(`input[name=${name}-2]`) as HTMLInputElement\n }\n if (isEmptyOrNull(dateValue?.toString())) {\n target.value = ''\n } else {\n if (!locale) {\n locale = 'en-GB'\n }\n target.value = (dateValue.constructor == Date ? dateValue : new Date(dateValue)).toLocaleString(\n locale,\n dateStringOption(),\n )\n }\n}\n\nexport function toSqlDateString(date: Date): string {\n const offset = date.getTimezoneOffset()\n date = new Date(date.getTime() - offset * 60 * 1000)\n return date.toISOString().split('T')[0]\n}\n\nexport enum PageSizes {\n A4 = 0,\n A3 = 1,\n}\n\nexport enum PageOrientations {\n Portrait = 0,\n Landscape = 1,\n}\n\nexport type PageSize = {\n Size: PageSize\n Orientation: PageOrientations\n}\n\nexport type PageMargin = {\n MarginLeft: string\n MarginTop: string\n MarginRight: string\n MarginBottom: string\n}\n\nexport type IdevsExportRequest = ListRequest & {\n viewName?: string\n companyName?: string\n reportName?: string\n selectionRange?: string\n conditionRange?: string\n logo?: string\n pageSize?: PageSize\n margin?: PageMargin\n entity?: unknown\n}\n\nexport type IdevsExportOptions = IdevsExportRequest & {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n grid: DataGrid<any, any>\n service: string\n}\n\nexport type ExportOptions = IdevsExportOptions & {\n title?: string\n hint?: string\n separator?: boolean\n exportType: 'PDF' | 'XLSX'\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onClick?: (e: any) => void\n}\n\nexport function createExportToolButton(options: ExportOptions): ToolButton {\n return {\n hint: options.hint || options.exportType,\n title: options.title || '',\n cssClass: `export-${options.exportType.toLowerCase()}-button`,\n onClick: options.onClick,\n separator: options.separator,\n }\n}\n\nexport function toBeginMonth(date: string): string {\n if (isEmptyOrNull(date)) {\n return date\n }\n\n return `${date.substring(0, 8)}01`\n}\n\nexport function toEndMonth(date: string): string {\n if (isEmptyOrNull(date)) {\n return date\n }\n\n const dateArr = date.split('-')\n const d = new Date(parseInt(dateArr[0]), parseInt(dateArr[1]), 0)\n\n return `${date.substring(0, 8)}${d.getDate()}`\n}\n\nexport class globals {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public static load() {}\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/globals/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { DataGrid, ListRequest, ToolButton } from '@serenity-is/corelib'\nimport { isEmptyOrNull } from '@serenity-is/corelib'\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/consistent-type-definitions\n interface Number {\n toDecimal(precision?: number): string\n toTimeString(): string\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-definitions\n interface String {\n truncate(maxLength?: number): string\n toNumber(): number\n toMethodRound(method?: number): number\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-definitions\n interface Date {\n toSqlDate(): string\n toNumber(): number\n }\n\n type IModalOptions = {\n events?: IEvent[]\n }\n\n type IEvent = {\n event: string\n callback: (e: Event) => Promise<unknown>\n }\n}\n\nDate.prototype.toSqlDate = function (): string {\n const date = this.valueOf()\n return new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString()\n}\n\nDate.prototype.toNumber = function (): number {\n const date = this.valueOf()\n const hours = date.getHours()\n const minutes = date.getMinutes()\n const seconds = date.getSeconds()\n return hours * 60 + minutes + seconds / 60\n}\n\nNumber.prototype.toTimeString = function (): string {\n const value = this.valueOf()\n const hours = `0${Math.floor(value / 60)}`.slice(-2)\n const minutes = `0${value % 60}`.slice(-2)\n return `${hours}:${minutes}`\n}\n\nNumber.prototype.toDecimal = function (precision?: number): string {\n const numb = precision || 0\n const options = {\n style: 'decimal',\n minimumFractionDigits: numb,\n maximumFractionDigits: numb,\n }\n let value = Intl.NumberFormat('en-US', options).format(this.valueOf())\n value = parseFloat(value.replace(/,/g, '')).toString()\n return Intl.NumberFormat('en-US', options).format(parseFloat(value))\n}\n\nString.prototype.truncate = function (maxLength: number) {\n const str = String(this)\n return str.length > maxLength ? str.substring(0, maxLength - 1) + '&hellip;' : str\n}\n\nString.prototype.toNumber = function () {\n return this.valueOf() ? parseFloat(this.valueOf().replace(/,/g, '')) : 0\n}\n\nString.prototype.toMethodRound = function (method: number): number {\n const input = parseFloat(this.valueOf())\n let value = isNaN(input) ? 0 : input\n if (value == 0) return 0\n\n const r = parseFloat(value.toFixed(2))\n switch (method) {\n case 1:\n value = r - (parseFloat(((r % 1) * 100).toFixed(2)) % 25) / 100\n break\n\n case 2:\n value = r - (parseFloat(((r % 1) * 100).toFixed(2)) % 50) / 100\n break\n\n case 3:\n value = Math.floor(r)\n break\n\n case 4:\n value = Math.floor(r) + (Math.floor((r % 1) * 100) + (25 - (Math.floor((r % 1) * 100) % 25))) / 100\n break\n\n case 5:\n value = Math.floor(r) + (Math.floor((r % 1) * 100) + (50 - (Math.floor((r % 1) * 100) % 50))) / 100\n break\n\n case 6:\n value = Math.ceil(r)\n break\n\n case 7:\n value = Math.floor(r) + (parseFloat((parseFloat(((r % 1) * 100).toString()) / 25).toFixed(0)) * 25) / 100\n break\n\n case 8:\n value = Math.floor(r) + (parseFloat((parseFloat(((r % 1) * 100).toString()) / 50).toFixed(0)) * 50) / 100\n break\n\n case 9:\n value = parseFloat(r.toFixed(0))\n break\n\n default:\n value = r\n break\n }\n\n return value\n}\n\nexport function ToTimeString(value: number): string {\n const hours = `0${Math.floor(value / 60)}`.slice(-2)\n const minutes = `0${value % 60}`.slice(-2)\n return `${hours}:${minutes}`\n}\n\nexport function ToNumber(date: Date): number {\n const hours = date.getHours()\n const minutes = date.getMinutes()\n const seconds = date.getSeconds()\n return hours * 60 + minutes * 60 + seconds\n}\n\nexport function GetElementWidth(element?: HTMLElement): number {\n if (element) {\n return element.clientWidth\n }\n\n return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth\n}\n\nexport function GetElementHeight(element?: HTMLElement): number {\n if (element) {\n return element.clientHeight\n }\n\n return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\n}\n\nexport function RemoveChildren(parent?: HTMLElement): void {\n if (!parent) {\n return\n }\n\n while (parent.firstChild) {\n parent.removeChild(parent.firstChild)\n }\n}\n\nexport function IsOverflow(el: HTMLElement): boolean {\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth\n}\n\nexport function IsOverflowY(el: HTMLElement): boolean {\n return el.scrollHeight > el.clientHeight\n}\n\nexport function IsOverflowX(el: HTMLElement): boolean {\n return el.scrollWidth > el.clientWidth\n}\n\nexport function InnerDimensions(el: HTMLElement | null): [number, number] {\n if (!el) {\n return [0, 0]\n }\n\n const style = getComputedStyle(el)\n let width = el.clientWidth\n let height = el.clientHeight\n\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight)\n\n return [height, width]\n}\n\nexport function neededTarget(el: HTMLElement, target: string): HTMLElement {\n if (target.slice(0, 1) == '.') {\n if (el.classList.contains(target.slice(1)) === false) {\n el = el.closest(target) as HTMLElement\n }\n } else {\n if (el.tagName.toLowerCase() !== target.toLowerCase()) {\n el = el.closest(target) as HTMLElement\n }\n }\n return el\n}\n\nexport function dateStringOption(): Intl.DateTimeFormatOptions {\n return {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n }\n}\n\nexport function toDateString(date: Date): string {\n return date.toLocaleString('en-GB', dateStringOption())\n}\n\n// export function GetModal(name: string, options?: IModalOptions): Modal {\n// const el = document.querySelector(name) as HTMLElement\n// if (options?.events?.length) {\n// options.events.forEach(callback => {\n// el.addEventListener(\n// callback.event,\n// (e: Event) => {\n// callback.callback(e)\n// },\n// { once: true },\n// )\n// })\n// }\n\n// return Modal.getOrCreateInstance(el, { backdrop: 'static' })\n// }\n\nexport const setCookie = (name: string, value: string, expires?: number): void => {\n let cookie = `${name}=${value}`\n if (expires) {\n const date = new Date()\n date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000)\n const exp = `expires=${date.toUTCString()}`\n cookie = `${cookie}; ${exp}`\n }\n document.cookie = `${cookie}; path=/`\n}\n\nexport type dateProxyInputOption = {\n name: string\n readOnly?: boolean\n width?: number\n}\n\nexport function addDateProxyInput(opt: dateProxyInputOption): HTMLInputElement {\n const input: HTMLInputElement = document.querySelector(`input[name=\"${opt.name}\"]`)\n const cloneInput: HTMLInputElement = input.cloneNode(true) as HTMLInputElement\n cloneInput.setAttribute('name', `${opt.name}-2`)\n cloneInput.setAttribute('id', `${input.getAttribute('id')}-2`)\n cloneInput.setAttribute('readonly', 'readonly')\n cloneInput.classList.remove('customValidate')\n cloneInput.classList.remove('s-DateEditor')\n cloneInput.classList.remove('s-Serenity-DateEditor')\n cloneInput.classList.remove('dateQ')\n cloneInput.classList.remove('hasDatepicker')\n if (opt.readOnly) {\n cloneInput.style.backgroundColor = 'rgba(var(--s-bright-rgb), 0.02)'\n } else {\n cloneInput.style.backgroundColor = 'white'\n }\n if (opt.width) {\n cloneInput.style.width = `${opt.width}px`\n }\n\n input.parentNode.insertBefore(cloneInput, input.nextSibling)\n input.classList.add('d-none')\n\n return cloneInput\n}\n\nexport function updateDateProxyValue(name: string, dateValue: string | Date | null, locale?: string): void {\n let target = document.querySelector(`#${name}-2`) as HTMLInputElement\n if (!target) {\n target = document.querySelector(`input[name=${name}-2]`) as HTMLInputElement\n }\n if (isEmptyOrNull(dateValue?.toString())) {\n target.value = ''\n } else {\n if (!locale) {\n locale = 'en-GB'\n }\n target.value = (dateValue.constructor == Date ? dateValue : new Date(dateValue)).toLocaleString(\n locale,\n dateStringOption(),\n )\n }\n}\n\nexport function toSqlDateString(date: Date): string {\n const offset = date.getTimezoneOffset()\n date = new Date(date.getTime() - offset * 60 * 1000)\n return date.toISOString().split('T')[0]\n}\n\nexport enum PageSizes {\n A4 = 0,\n A3 = 1,\n}\n\nexport enum PageOrientations {\n Portrait = 0,\n Landscape = 1,\n}\n\nexport type PageSize = {\n Size: PageSize\n Orientation: PageOrientations\n}\n\nexport type PageMargin = {\n MarginLeft: string\n MarginTop: string\n MarginRight: string\n MarginBottom: string\n}\n\nexport type IdevsExportRequest = ListRequest & {\n viewName?: string\n companyName?: string\n reportName?: string\n selectionRange?: string\n conditionRange?: string\n logo?: string\n pageSize?: PageSize\n margin?: PageMargin\n entity?: unknown\n}\n\nexport type IdevsExportOptions = IdevsExportRequest & {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n grid: DataGrid<any, any>\n service: string\n}\n\nexport type ExportOptions = IdevsExportOptions & {\n title?: string\n hint?: string\n separator?: boolean\n exportType: 'PDF' | 'XLSX'\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onClick?: (e: any) => void\n}\n\nexport function createExportToolButton(options: ExportOptions): ToolButton {\n return {\n hint: options.hint || options.exportType,\n title: options.title || '',\n cssClass: `export-${options.exportType.toLowerCase()}-button`,\n onClick: options.onClick,\n separator: options.separator,\n }\n}\n\nexport function toBeginMonth(date: string): string {\n if (isEmptyOrNull(date)) {\n return date\n }\n\n return `${date.substring(0, 8)}01`\n}\n\nexport function toEndMonth(date: string): string {\n if (isEmptyOrNull(date)) {\n return date\n }\n\n const dateArr = date.split('-')\n const d = new Date(parseInt(dateArr[0]), parseInt(dateArr[1]), 0)\n\n return `${date.substring(0, 8)}${d.getDate()}`\n}\n\nexport class globals {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public static load() {}\n}\n"]}
@@ -4,9 +4,8 @@
4
4
  * @constructor
5
5
  */
6
6
  export function RemoveSelect2ClearButton(...targets) {
7
- var _a;
8
7
  for (let i = 0; i < targets.length; i++) {
9
- (_a = $(`.${targets[i]} .select2-search-choice-close`)) === null || _a === void 0 ? void 0 : _a.remove();
8
+ $(`.${targets[i]} .select2-search-choice-close`)?.remove();
10
9
  }
11
10
  }
12
11
  export function EmailValidator(value) {
@@ -110,14 +109,13 @@ export class DialogHelper {
110
109
  * @param options
111
110
  */
112
111
  setDialogSize(dialog, options) {
113
- var _a;
114
112
  let name = dialog.constructor.name;
115
113
  name = `.s-${name}`;
116
- const optionH = (options === null || options === void 0 ? void 0 : options.height) || 0;
114
+ const optionH = options?.height || 0;
117
115
  const titleH = $(`${name} .ui-dialog-titlebar`).innerHeight() || 0;
118
116
  const dialogH = $(`${name} .s-TemplatedDialog`).css('height', '').innerHeight() || 0;
119
117
  const h = optionH > 0 ? optionH : titleH + dialogH + 2;
120
- const w = (_a = options === null || options === void 0 ? void 0 : options.width) !== null && _a !== void 0 ? _a : 420;
118
+ const w = options?.width ?? 420;
121
119
  $(name)
122
120
  .css({ width: `${w}px`, height: `${h}px` })
123
121
  .position({
@@ -1 +1 @@
1
- {"version":3,"file":"dialogHelper.js","sourceRoot":"","sources":["../../src/helpers/dialogHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { StringEditor, ToolButton } from '@serenity-is/corelib'\n\n/**\n * Use this function within updateInterface()\n * @param targets\n * @constructor\n */\nexport function RemoveSelect2ClearButton(...targets: string[]): void {\n for (let i = 0; i < targets.length; i++) {\n $(`.${targets[i]} .select2-search-choice-close`)?.remove()\n }\n}\n\nexport function EmailValidator(value: string): string | null {\n // eslint-disable-next-line no-useless-escape\n const filter = /^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$/\n return filter.test(value) ? null : 'Invalid email address'\n}\n\nexport function NumberOnly(e: Event): boolean {\n const ev = e as KeyboardEvent\n if ('0123456789'.includes(ev.key)) {\n return true\n }\n\n e.preventDefault()\n return false\n}\n\n/**\n * Use GetDialogHelper function within function initToolbar()\n * @param helper\n * @constructor\n */\nexport function GetDialogHelper(helper: DialogHelper): DialogHelper {\n if (helper) {\n return helper\n }\n\n return new DialogHelper()\n}\n\nexport class DialogHelper {\n /**\n * Use this function within function getToolbarButtons()\n * @param buttons\n */\n public getToolbarButtons(buttons: ToolButton[]): ToolButton[] {\n const applyButton = buttons.find(b => b.cssClass === 'apply-changes-button')\n if (applyButton) {\n applyButton.visible = false\n }\n\n return buttons\n }\n\n /**\n * Use this function within constructor\n * @param targets\n */\n public inputNumberOnly(...targets: StringEditor[]): void {\n for (let i = 0; i < targets.length; i++) {\n targets[i].element.on('keypress', NumberOnly)\n }\n }\n\n private NumberOnly(e: Event): boolean {\n const ev = e as KeyboardEvent\n if ('0123456789'.includes(ev.key)) {\n return true\n }\n\n e.preventDefault()\n return false\n }\n\n public enabledEditItem<T>(form: T, ...targets: string[]): void {\n const frm = form as { [key: string]: object }\n for (let i = 0; i < targets.length; i++) {\n if (frm[targets[i]].constructor.name == 'LookupEditor') {\n ;(frm[targets[i]] as HTMLInputElement).readOnly = false\n } else {\n $(`input[name=\"${targets[i]}\"]`).prop('disabled', false).removeClass('readonly')\n }\n }\n }\n\n public disabledEditItem<T>(form: T, ...targets: string[]): void {\n const frm = form as { [key: string]: object }\n for (let i = 0; i < targets.length; i++) {\n if (!frm[targets[i]]) {\n continue\n }\n\n if (frm[targets[i]].constructor.name == 'LookupEditor') {\n ;(frm[targets[i]] as HTMLInputElement).readOnly = true\n } else {\n $(`input[name=\"${targets[i]}\"]`).prop('disabled', true).addClass('readonly')\n }\n }\n }\n\n public disabledAndClearEditItem<T>(form: T, ...targets: string[]): void {\n const frm = form as { [key: string]: object }\n for (let i = 0; i < targets.length; i++) {\n const className = frm[targets[i]].constructor.name\n if (className == 'LookupEditor') {\n ;(frm[targets[i]] as HTMLInputElement).readOnly = true\n } else {\n $(`input[name=\"${targets[i]}\"]`).val('')\n $(`input[name=\"${targets[i]}\"]`).addClass('readonly').prop('disabled', true)\n }\n }\n }\n\n /**\n * Use this function within function onDialogOpen()\n * Put after super.onDialogOpen() line\n * @param dialog\n * @param options\n */\n public setDialogSize(dialog: object, options?: IDialogSize) {\n let name = dialog.constructor.name\n name = `.s-${name}`\n const optionH = options?.height || 0\n const titleH = $(`${name} .ui-dialog-titlebar`).innerHeight() || 0\n const dialogH = $(`${name} .s-TemplatedDialog`).css('height', '').innerHeight() || 0\n const h = optionH > 0 ? optionH : titleH + dialogH + 2\n const w = options?.width ?? 420\n $(name)\n .css({ width: `${w}px`, height: `${h}px` })\n .position({\n of: window,\n my: 'center center',\n at: 'center center',\n })\n }\n}\n\nexport type IDialogSize = {\n width?: number\n height?: number\n}\n"]}
1
+ {"version":3,"file":"dialogHelper.js","sourceRoot":"","sources":["../../src/helpers/dialogHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { StringEditor, ToolButton } from '@serenity-is/corelib'\n\n/**\n * Use this function within updateInterface()\n * @param targets\n * @constructor\n */\nexport function RemoveSelect2ClearButton(...targets: string[]): void {\n for (let i = 0; i < targets.length; i++) {\n $(`.${targets[i]} .select2-search-choice-close`)?.remove()\n }\n}\n\nexport function EmailValidator(value: string): string | null {\n // eslint-disable-next-line no-useless-escape\n const filter = /^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$/\n return filter.test(value) ? null : 'Invalid email address'\n}\n\nexport function NumberOnly(e: Event): boolean {\n const ev = e as KeyboardEvent\n if ('0123456789'.includes(ev.key)) {\n return true\n }\n\n e.preventDefault()\n return false\n}\n\n/**\n * Use GetDialogHelper function within function initToolbar()\n * @param helper\n * @constructor\n */\nexport function GetDialogHelper(helper: DialogHelper): DialogHelper {\n if (helper) {\n return helper\n }\n\n return new DialogHelper()\n}\n\nexport class DialogHelper {\n /**\n * Use this function within function getToolbarButtons()\n * @param buttons\n */\n public getToolbarButtons(buttons: ToolButton[]): ToolButton[] {\n const applyButton = buttons.find(b => b.cssClass === 'apply-changes-button')\n if (applyButton) {\n applyButton.visible = false\n }\n\n return buttons\n }\n\n /**\n * Use this function within constructor\n * @param targets\n */\n public inputNumberOnly(...targets: StringEditor[]): void {\n for (let i = 0; i < targets.length; i++) {\n targets[i].element.on('keypress', NumberOnly)\n }\n }\n\n private NumberOnly(e: Event): boolean {\n const ev = e as KeyboardEvent\n if ('0123456789'.includes(ev.key)) {\n return true\n }\n\n e.preventDefault()\n return false\n }\n\n public enabledEditItem<T>(form: T, ...targets: string[]): void {\n const frm = form as { [key: string]: object }\n for (let i = 0; i < targets.length; i++) {\n if (frm[targets[i]].constructor.name == 'LookupEditor') {\n ;(frm[targets[i]] as HTMLInputElement).readOnly = false\n } else {\n $(`input[name=\"${targets[i]}\"]`).prop('disabled', false).removeClass('readonly')\n }\n }\n }\n\n public disabledEditItem<T>(form: T, ...targets: string[]): void {\n const frm = form as { [key: string]: object }\n for (let i = 0; i < targets.length; i++) {\n if (!frm[targets[i]]) {\n continue\n }\n\n if (frm[targets[i]].constructor.name == 'LookupEditor') {\n ;(frm[targets[i]] as HTMLInputElement).readOnly = true\n } else {\n $(`input[name=\"${targets[i]}\"]`).prop('disabled', true).addClass('readonly')\n }\n }\n }\n\n public disabledAndClearEditItem<T>(form: T, ...targets: string[]): void {\n const frm = form as { [key: string]: object }\n for (let i = 0; i < targets.length; i++) {\n const className = frm[targets[i]].constructor.name\n if (className == 'LookupEditor') {\n ;(frm[targets[i]] as HTMLInputElement).readOnly = true\n } else {\n $(`input[name=\"${targets[i]}\"]`).val('')\n $(`input[name=\"${targets[i]}\"]`).addClass('readonly').prop('disabled', true)\n }\n }\n }\n\n /**\n * Use this function within function onDialogOpen()\n * Put after super.onDialogOpen() line\n * @param dialog\n * @param options\n */\n public setDialogSize(dialog: object, options?: IDialogSize) {\n let name = dialog.constructor.name\n name = `.s-${name}`\n const optionH = options?.height || 0\n const titleH = $(`${name} .ui-dialog-titlebar`).innerHeight() || 0\n const dialogH = $(`${name} .s-TemplatedDialog`).css('height', '').innerHeight() || 0\n const h = optionH > 0 ? optionH : titleH + dialogH + 2\n const w = options?.width ?? 420\n $(name)\n .css({ width: `${w}px`, height: `${h}px` })\n .position({\n of: window,\n my: 'center center',\n at: 'center center',\n })\n }\n}\n\nexport type IDialogSize = {\n width?: number\n height?: number\n}\n"]}
@@ -62,14 +62,13 @@ export class GridHelper {
62
62
  * @param options
63
63
  */
64
64
  initGrid(grid, options) {
65
- var _a, _b;
66
65
  // Set auto column width
67
- if ((_a = options === null || options === void 0 ? void 0 : options.autoColumnWidth) !== null && _a !== void 0 ? _a : true) {
66
+ if (options?.autoColumnWidth ?? true) {
68
67
  const g = grid.getGrid();
69
68
  g.autosizeColumns();
70
69
  }
71
70
  // get dialog mode
72
- grid.openDialogsAsPanel = ((_b = options === null || options === void 0 ? void 0 : options.dialogMode) !== null && _b !== void 0 ? _b : true) == false;
71
+ grid.openDialogsAsPanel = (options?.dialogMode ?? true) == false;
73
72
  }
74
73
  }
75
74
  export var HeaderTextAlignments;
@@ -1 +1 @@
1
- {"version":3,"file":"gridHelper.js","sourceRoot":"","sources":["../../src/helpers/gridHelper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAGxD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,MAAkB;IAC9C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,IAAI,UAAU,EAAE,CAAA;AACzB,CAAC;AAED,MAAM,OAAO,UAAU;IACrB;;;;OAIG;IACI,UAAU,CAAC,OAAiB,EAAE,GAAG,aAAuB;QAC7D,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,OAAO,CAAC,MAAM,CACZ,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,EACzC,CAAC,CACF,CAAA;QACH,CAAC;QAED,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAA;QACnD,IAAI,EAAE,EAAE,CAAC;YACP,OAAO,CAAC,MAAM,CACZ,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,EACvC,CAAC,CACF,CAAA;QACH,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;;OAIG;IACI,UAAU,CAAC,OAAqB,EAAE,GAAG,aAAuB;QACjE,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAA;YACnD,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBACZ,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YACvB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;;OAIG;IACI,kBAAkB,CAAC,GAAG,OAA2B;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,MAAM,GAAqB,OAAO,CAAC,CAAC,CAAC,CAAA;YAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,kCAAkC,MAAM,CAAC,MAAM,uBAAuB,CAAC,CAAA;YAC7G,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAkB,IAAiC,EAAE,OAA0B;;QAC5F,wBAAwB;QACxB,IAAI,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,mCAAI,IAAI,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;YACxB,CAAC,CAAC,eAAe,EAAE,CAAA;QACrB,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,kBAAkB,GAAG,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,mCAAI,IAAI,CAAC,IAAI,KAAK,CAAA;IAClE,CAAC;CACF;AAYD,MAAM,CAAN,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,+DAAQ,CAAA;IACR,mEAAU,CAAA;IACV,iEAAS,CAAA;AACX,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B","sourcesContent":["import { Column } from '@serenity-is/sleekgrid'\nimport { indexOf, tryFirst } from '@serenity-is/corelib'\nimport { EntityGrid, ToolButton } from '@serenity-is/corelib'\n\n/**\n * Use GetGridHelper within function layout()\n * Put the line before super.layout()\n * In case of master/detail form use this function within function getButtons() or getColumns()\n * @param helper\n * @constructor\n */\nexport function GetGridHelper(helper: GridHelper): GridHelper {\n if (helper) {\n return helper\n }\n\n return new GridHelper()\n}\n\nexport class GridHelper {\n /**\n * Use this function within function getColumns()\n * @param columns\n * @param removeColumns\n */\n public getColumns(columns: Column[], ...removeColumns: string[]): Column[] {\n for (const column of removeColumns) {\n columns.splice(\n indexOf(columns, c => c.field === column),\n 1,\n )\n }\n\n const id = tryFirst(columns, c => c.field === 'Id')\n if (id) {\n columns.splice(\n indexOf(columns, c => c.field === 'Id'),\n 1,\n )\n }\n\n return columns\n }\n\n /**\n * Use this function within function getButtons()\n * @param buttons\n * @param removeButtons\n */\n public getButtons(buttons: ToolButton[], ...removeButtons: string[]): ToolButton[] {\n for (const btn of removeButtons) {\n const id = indexOf(buttons, x => x.cssClass == btn)\n if (id >= 0) {\n buttons.splice(id, 1)\n }\n }\n\n return buttons\n }\n\n /**\n * Use this function within updateInterface method\n * Put below super.updateInterface() line\n * @param columns\n */\n public setHeaderAlignment(...columns: IHeaderAlignment[]): void {\n for (let c = 0; c < columns.length; c++) {\n const column: IHeaderAlignment = columns[c]\n const header = document.querySelector(`.slick-header-columns div[id$=\"${column.column}\"] .slick-column-name`)\n if (header) {\n header.classList.add('text-center')\n }\n }\n }\n\n /**\n * Use this function within constructor\n * @param grid\n * @param options\n */\n public initGrid<TItem, TOptions>(grid: EntityGrid<TItem, TOptions>, options?: IInitGridOptions): void {\n // Set auto column width\n if (options?.autoColumnWidth ?? true) {\n const g = grid.getGrid()\n g.autosizeColumns()\n }\n\n // get dialog mode\n grid.openDialogsAsPanel = (options?.dialogMode ?? true) == false\n }\n}\n\nexport type IInitGridOptions = {\n autoColumnWidth?: boolean\n dialogMode?: boolean\n}\n\nexport type IHeaderAlignment = {\n column: string\n textAlign: HeaderTextAlignments\n}\n\nexport enum HeaderTextAlignments {\n Left = 0,\n Center = 1,\n Right = 2,\n}\n"]}
1
+ {"version":3,"file":"gridHelper.js","sourceRoot":"","sources":["../../src/helpers/gridHelper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAGxD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,MAAkB;IAC9C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,IAAI,UAAU,EAAE,CAAA;AACzB,CAAC;AAED,MAAM,OAAO,UAAU;IACrB;;;;OAIG;IACI,UAAU,CAAC,OAAiB,EAAE,GAAG,aAAuB;QAC7D,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,OAAO,CAAC,MAAM,CACZ,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,EACzC,CAAC,CACF,CAAA;QACH,CAAC;QAED,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAA;QACnD,IAAI,EAAE,EAAE,CAAC;YACP,OAAO,CAAC,MAAM,CACZ,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,EACvC,CAAC,CACF,CAAA;QACH,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;;OAIG;IACI,UAAU,CAAC,OAAqB,EAAE,GAAG,aAAuB;QACjE,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAA;YACnD,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBACZ,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YACvB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;;OAIG;IACI,kBAAkB,CAAC,GAAG,OAA2B;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,MAAM,GAAqB,OAAO,CAAC,CAAC,CAAC,CAAA;YAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,kCAAkC,MAAM,CAAC,MAAM,uBAAuB,CAAC,CAAA;YAC7G,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAkB,IAAiC,EAAE,OAA0B;QAC5F,wBAAwB;QACxB,IAAI,OAAO,EAAE,eAAe,IAAI,IAAI,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;YACxB,CAAC,CAAC,eAAe,EAAE,CAAA;QACrB,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,kBAAkB,GAAG,CAAC,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,CAAA;IAClE,CAAC;CACF;AAYD,MAAM,CAAN,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,+DAAQ,CAAA;IACR,mEAAU,CAAA;IACV,iEAAS,CAAA;AACX,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B","sourcesContent":["import { Column } from '@serenity-is/sleekgrid'\nimport { indexOf, tryFirst } from '@serenity-is/corelib'\nimport { EntityGrid, ToolButton } from '@serenity-is/corelib'\n\n/**\n * Use GetGridHelper within function layout()\n * Put the line before super.layout()\n * In case of master/detail form use this function within function getButtons() or getColumns()\n * @param helper\n * @constructor\n */\nexport function GetGridHelper(helper: GridHelper): GridHelper {\n if (helper) {\n return helper\n }\n\n return new GridHelper()\n}\n\nexport class GridHelper {\n /**\n * Use this function within function getColumns()\n * @param columns\n * @param removeColumns\n */\n public getColumns(columns: Column[], ...removeColumns: string[]): Column[] {\n for (const column of removeColumns) {\n columns.splice(\n indexOf(columns, c => c.field === column),\n 1,\n )\n }\n\n const id = tryFirst(columns, c => c.field === 'Id')\n if (id) {\n columns.splice(\n indexOf(columns, c => c.field === 'Id'),\n 1,\n )\n }\n\n return columns\n }\n\n /**\n * Use this function within function getButtons()\n * @param buttons\n * @param removeButtons\n */\n public getButtons(buttons: ToolButton[], ...removeButtons: string[]): ToolButton[] {\n for (const btn of removeButtons) {\n const id = indexOf(buttons, x => x.cssClass == btn)\n if (id >= 0) {\n buttons.splice(id, 1)\n }\n }\n\n return buttons\n }\n\n /**\n * Use this function within updateInterface method\n * Put below super.updateInterface() line\n * @param columns\n */\n public setHeaderAlignment(...columns: IHeaderAlignment[]): void {\n for (let c = 0; c < columns.length; c++) {\n const column: IHeaderAlignment = columns[c]\n const header = document.querySelector(`.slick-header-columns div[id$=\"${column.column}\"] .slick-column-name`)\n if (header) {\n header.classList.add('text-center')\n }\n }\n }\n\n /**\n * Use this function within constructor\n * @param grid\n * @param options\n */\n public initGrid<TItem, TOptions>(grid: EntityGrid<TItem, TOptions>, options?: IInitGridOptions): void {\n // Set auto column width\n if (options?.autoColumnWidth ?? true) {\n const g = grid.getGrid()\n g.autosizeColumns()\n }\n\n // get dialog mode\n grid.openDialogsAsPanel = (options?.dialogMode ?? true) == false\n }\n}\n\nexport type IInitGridOptions = {\n autoColumnWidth?: boolean\n dialogMode?: boolean\n}\n\nexport type IHeaderAlignment = {\n column: string\n textAlign: HeaderTextAlignments\n}\n\nexport enum HeaderTextAlignments {\n Left = 0,\n Center = 1,\n Right = 2,\n}\n"]}
@@ -32,15 +32,14 @@ export class DropdownToolButton {
32
32
  });
33
33
  }
34
34
  buildBaseDropdown() {
35
- var _a, _b;
36
35
  const dropdownTemplate = `<div class="buttons-inner dropdown" style="overflow: visible">
37
- <div class="idevs-tool-dropdown-button tool-button icon-tool-button ${(_a = this.options.cssClass) !== null && _a !== void 0 ? _a : ''} ${this.options.isDropUp ? 'dropup' : ''} ${this.isDisabled ? 'disabled' : ''}" style="cursor: unset;">
36
+ <div class="idevs-tool-dropdown-button tool-button icon-tool-button ${this.options.cssClass ?? ''} ${this.options.isDropUp ? 'dropup' : ''} ${this.isDisabled ? 'disabled' : ''}" style="cursor: unset;">
38
37
  <div class="button-outer dropdown-toggle ${this.isDisabled ? 'disabled' : ''}"
39
38
  data-bs-toggle="dropdown"
40
39
  style="cursor: pointer;">
41
40
  <span class="button-inner">
42
41
  <i class="${this.options.icon}"></i>
43
- ${(_b = this.options.title) !== null && _b !== void 0 ? _b : ''}
42
+ ${this.options.title ?? ''}
44
43
  </span>
45
44
  <i class="caret"></i>
46
45
  </div>
@@ -57,7 +56,6 @@ export class DropdownToolButton {
57
56
  }
58
57
  }
59
58
  addDropdownItem(button, idx) {
60
- var _a, _b, _c, _d, _e;
61
59
  if (!isEmptyOrNull(button.key)) {
62
60
  if (this.itemDisablingState.map(x => x.key).indexOf(button.key) > -1) {
63
61
  alert(`Dropdown has existed key: ${button.key}`);
@@ -67,7 +65,7 @@ export class DropdownToolButton {
67
65
  }
68
66
  let dropdownItemElement;
69
67
  if (button.isDropdownHeader && !isEmptyOrNull(button.dropdownHeaderTitle)) {
70
- dropdownItemElement = $(`<li class="dropdown-header ${(_a = button.cssClass) !== null && _a !== void 0 ? _a : ''}">${button.dropdownHeaderTitle}</li>`);
68
+ dropdownItemElement = $(`<li class="dropdown-header ${button.cssClass ?? ''}">${button.dropdownHeaderTitle}</li>`);
71
69
  }
72
70
  else {
73
71
  if (button.isSeparator) {
@@ -75,10 +73,10 @@ export class DropdownToolButton {
75
73
  }
76
74
  else {
77
75
  dropdownItemElement = $(`<li class="${button.disabled ? 'disabled' : ''}"
78
- title="${(_b = button.hint) !== null && _b !== void 0 ? _b : ''}"
79
- data-idevs-key="${(_c = button.key) !== null && _c !== void 0 ? _c : ''}">
80
- <a href="#" class="${(_d = button.cssClass) !== null && _d !== void 0 ? _d : 'dropdown-item'}">
81
- <i class="${(_e = button.icon) !== null && _e !== void 0 ? _e : ''}"></i>
76
+ title="${button.hint ?? ''}"
77
+ data-idevs-key="${button.key ?? ''}">
78
+ <a href="#" class="${button.cssClass ?? 'dropdown-item'}">
79
+ <i class="${button.icon ?? ''}"></i>
82
80
  ${button.title}
83
81
  </a>
84
82
  </li>`);
@@ -182,7 +180,6 @@ export class DropdownToolButton {
182
180
  this.removeDisablingStateItem(key);
183
181
  }
184
182
  addSideButtonItem(button, idx) {
185
- var _a, _b, _c, _d;
186
183
  if (!isEmptyOrNull(button.key)) {
187
184
  if (this.itemDisablingState.map(x => x.key).indexOf(button.key) > -1) {
188
185
  alert(`Dropdown has existed key: ${button.key}`);
@@ -190,12 +187,12 @@ export class DropdownToolButton {
190
187
  }
191
188
  this.setDisablingStateItem(button.key, button.disabled || false);
192
189
  }
193
- const sideButtonTemplate = `<div class="tool-button add-button icon-tool-button ${(_a = button.cssClass) !== null && _a !== void 0 ? _a : ''} ${button.disabled ? 'disabled' : ''}"
194
- data-idevs-key="${(_b = button.key) !== null && _b !== void 0 ? _b : ''}"
195
- title="${(_c = button.title) !== null && _c !== void 0 ? _c : ''}">
190
+ const sideButtonTemplate = `<div class="tool-button add-button icon-tool-button ${button.cssClass ?? ''} ${button.disabled ? 'disabled' : ''}"
191
+ data-idevs-key="${button.key ?? ''}"
192
+ title="${button.title ?? ''}">
196
193
  <div class="button-outer">
197
194
  <span class="button-inner">
198
- <i class="${(_d = button.icon) !== null && _d !== void 0 ? _d : ''}"></i>
195
+ <i class="${button.icon ?? ''}"></i>
199
196
  </span>
200
197
  </div>
201
198
  </div>`;
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownToolButton.js","sourceRoot":"","sources":["../../src/ui/DropdownToolButton.ts"],"names":[],"mappings":"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","sourcesContent":["import { first, isEmptyOrNull, tryFirst } from '@serenity-is/corelib'\n\nexport type DropdownToolButtonOptions = {\n title?: string\n cssClass?: string\n icon?: string\n disabled?: boolean\n dropdownMenuPosition?: 'right'\n isDropUp?: boolean\n}\n\nexport type DropdownToolButtonItem = {\n key: string\n title?: string\n hint?: string\n cssClass?: string\n icon?: string\n onClick?: (e: Event) => void\n isSeparator?: boolean\n disabled?: boolean\n isDropdownHeader?: boolean\n dropdownHeaderTitle?: string\n}\n\nexport type ToolDropdownSideButtonItem = {\n key: string\n title?: string\n hint?: string\n cssClass?: string\n icon?: string\n onClick?: (e: Event) => void\n disabled?: boolean\n}\n\nexport class DropdownToolButton {\n public element: JQuery = null\n private isDisabled = false\n private itemDisablingState: { key: string; disabled: boolean }[] = []\n private options: DropdownToolButtonOptions\n\n public constructor(container: JQuery, buttons: DropdownToolButtonItem[], opt?: DropdownToolButtonOptions) {\n this.options = opt || {}\n this.isDisabled = this.options.disabled || false\n this.element = this.buildBaseDropdown()\n this.addDropdownItems(buttons)\n\n container.append(this.element)\n }\n\n private getDisablingStateItem(key: string): boolean {\n if (tryFirst(this.itemDisablingState, x => x.key == key) != null) {\n return first(this.itemDisablingState, x => x.key == key).disabled || false\n }\n\n return false\n }\n\n private setDisablingStateItem(key: string, value: boolean) {\n if (tryFirst(this.itemDisablingState, x => x.key == key) != null) {\n first(this.itemDisablingState, x => x.key == key).disabled = value || false\n return\n }\n\n this.itemDisablingState.push({ key: key, disabled: value || false })\n }\n\n private removeDisablingStateItem(key: string) {\n this.itemDisablingState.some((item, idx) => {\n if (item.key == key) {\n this.itemDisablingState.splice(idx, 1)\n\n return true\n }\n })\n }\n\n private buildBaseDropdown(): JQuery {\n const dropdownTemplate = `<div class=\"buttons-inner dropdown\" style=\"overflow: visible\">\n <div class=\"idevs-tool-dropdown-button tool-button icon-tool-button ${this.options.cssClass ?? ''} ${\n this.options.isDropUp ? 'dropup' : ''\n } ${this.isDisabled ? 'disabled' : ''}\" style=\"cursor: unset;\">\n <div class=\"button-outer dropdown-toggle ${this.isDisabled ? 'disabled' : ''}\"\n data-bs-toggle=\"dropdown\"\n style=\"cursor: pointer;\">\n <span class=\"button-inner\">\n <i class=\"${this.options.icon}\"></i>\n ${this.options.title ?? ''}\n </span>\n <i class=\"caret\"></i>\n </div>\n <ul class=\"dropdown-menu ${this.options.dropdownMenuPosition == 'right' ? 'dropdown-menu-right' : ''}\"></ul>\n </div>\n</div>`\n\n return $(dropdownTemplate)\n }\n\n public addDropdownItems(buttons: DropdownToolButtonItem[]) {\n if (buttons && buttons.length > 0) {\n buttons.forEach(button => {\n this.addDropdownItem(button)\n })\n }\n }\n\n public addDropdownItem(button: DropdownToolButtonItem, idx?: number) {\n if (!isEmptyOrNull(button.key)) {\n if (this.itemDisablingState.map(x => x.key).indexOf(button.key) > -1) {\n alert(`Dropdown has existed key: ${button.key}`)\n return\n }\n\n this.setDisablingStateItem(button.key, button.disabled || false)\n }\n\n let dropdownItemElement: JQuery\n\n if (button.isDropdownHeader && !isEmptyOrNull(button.dropdownHeaderTitle)) {\n dropdownItemElement = $(`<li class=\"dropdown-header ${button.cssClass ?? ''}\">${button.dropdownHeaderTitle}</li>`)\n } else {\n if (button.isSeparator) {\n dropdownItemElement = $(`<li class=\"dropdown-divider\"></li>`)\n } else {\n dropdownItemElement = $(`<li class=\"${button.disabled ? 'disabled' : ''}\"\n title=\"${button.hint ?? ''}\"\n data-idevs-key=\"${button.key ?? ''}\">\n <a href=\"#\" class=\"${button.cssClass ?? 'dropdown-item'}\">\n <i class=\"${button.icon ?? ''}\"></i>\n ${button.title}\n </a>\n </li>`)\n\n dropdownItemElement.on('click', (e: Event) => {\n e.preventDefault()\n\n if (this.isDisabled) {\n return\n }\n\n let buttonIsDisabled = button.disabled\n\n if (!isEmptyOrNull(button.key)) {\n buttonIsDisabled = this.getDisablingStateItem(button.key)\n }\n if (buttonIsDisabled) {\n return\n }\n\n button.onClick(e)\n })\n }\n }\n\n if (idx === null || typeof idx === 'undefined') {\n this.element.find('.dropdown-menu').append(dropdownItemElement)\n return\n }\n\n if (idx <= 0) {\n this.element.find('.dropdown-menu').prepend(dropdownItemElement)\n return\n }\n\n const nbrOfButtons = this.element.find(`.dropdown-menu > li`).length\n\n if (idx > nbrOfButtons) {\n idx = nbrOfButtons\n }\n\n this.element.find(`.dropdown-menu > li:nth-child(${idx})`).after(dropdownItemElement)\n }\n\n public enableDropdown(enable: boolean) {\n const drd = this.element.find('.dropdown').first()\n if (drd) {\n if (enable) {\n if (drd.hasClass('disabled')) {\n drd.removeClass('disabled')\n }\n } else {\n if (!drd.hasClass('disabled')) {\n drd.addClass('disabled')\n }\n }\n }\n\n const drdToggle = this.element.find('.dropdown-toggle').first()\n if (drdToggle) {\n if (enable) {\n if (drdToggle.hasClass('disabled')) {\n drd.removeClass('disabled')\n } else {\n if (!drdToggle.hasClass('disabled')) {\n drdToggle.addClass('disabled')\n }\n }\n }\n }\n\n this.isDisabled = !enable\n }\n\n public enableDropdownItemByKey(key: string, enable: boolean) {\n const drdItem = this.element.find(`.dropdown-menu li[data-idevs-key=\"${key}\"]`).first()\n if (drdItem) {\n if (enable) {\n if (drdItem.hasClass('disabled')) {\n drdItem.removeClass('disabled')\n }\n } else {\n if (!drdItem.hasClass('disabled')) {\n drdItem.addClass('disabled')\n }\n }\n }\n\n this.setDisablingStateItem(key, !enable)\n }\n\n public enableSideButtonByKey(key: string, enable: boolean) {\n const tButton = this.element.find(`.tool-button[data-idevs-key=\"${key}\"]`).first()\n if (tButton) {\n if (enable) {\n if (tButton.hasClass('disabled')) {\n tButton.removeClass('disabled')\n }\n } else {\n if (!tButton.hasClass('disabled')) {\n tButton.addClass('disabled')\n }\n }\n }\n\n this.setDisablingStateItem(key, !enable)\n }\n\n public removeDropdownItem(key: string) {\n this.element.find(`.dropdown-menu li[data-idevs-key=\"${key}\"]`).remove()\n this.removeDisablingStateItem(key)\n }\n\n public removeSideButtonItem(key: string) {\n this.element.find(`.tool-button[data-idevs-key=\"${key}\"]`).remove()\n this.removeDisablingStateItem(key)\n }\n\n public addSideButtonItem(button: ToolDropdownSideButtonItem, idx?: number) {\n if (!isEmptyOrNull(button.key)) {\n if (this.itemDisablingState.map(x => x.key).indexOf(button.key) > -1) {\n alert(`Dropdown has existed key: ${button.key}`)\n return\n }\n\n this.setDisablingStateItem(button.key, button.disabled || false)\n }\n\n const sideButtonTemplate = `<div class=\"tool-button add-button icon-tool-button ${button.cssClass ?? ''} ${\n button.disabled ? 'disabled' : ''\n }\"\n data-idevs-key=\"${button.key ?? ''}\"\n title=\"${button.title ?? ''}\">\n <div class=\"button-outer\">\n <span class=\"button-inner\">\n <i class=\"${button.icon ?? ''}\"></i>\n </span>\n </div>\n </div>`\n\n const sideButton = $(sideButtonTemplate)\n\n sideButton.on('click', (e: Event) => {\n e.preventDefault()\n\n let buttonIsDisabled = button.disabled\n\n if (!isEmptyOrNull(button.key)) {\n buttonIsDisabled = this.getDisablingStateItem(button.key)\n }\n\n if (buttonIsDisabled) {\n return\n }\n\n button.onClick(e)\n })\n\n if (idx === null || typeof idx === 'undefined') {\n this.element.append(sideButton)\n return\n }\n\n if (idx <= 0) {\n this.element.prepend(sideButton)\n return\n }\n\n const nbrOfButtons = this.element.find(`div.tool-button`).length\n\n if (idx > nbrOfButtons) {\n idx = nbrOfButtons\n }\n\n this.element.find(`div.tool-button:nth-child(${idx})`).after(sideButton)\n }\n}\n"]}
1
+ {"version":3,"file":"DropdownToolButton.js","sourceRoot":"","sources":["../../src/ui/DropdownToolButton.ts"],"names":[],"mappings":"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","sourcesContent":["import { first, isEmptyOrNull, tryFirst } from '@serenity-is/corelib'\n\nexport type DropdownToolButtonOptions = {\n title?: string\n cssClass?: string\n icon?: string\n disabled?: boolean\n dropdownMenuPosition?: 'right'\n isDropUp?: boolean\n}\n\nexport type DropdownToolButtonItem = {\n key: string\n title?: string\n hint?: string\n cssClass?: string\n icon?: string\n onClick?: (e: Event) => void\n isSeparator?: boolean\n disabled?: boolean\n isDropdownHeader?: boolean\n dropdownHeaderTitle?: string\n}\n\nexport type ToolDropdownSideButtonItem = {\n key: string\n title?: string\n hint?: string\n cssClass?: string\n icon?: string\n onClick?: (e: Event) => void\n disabled?: boolean\n}\n\nexport class DropdownToolButton {\n public element: JQuery = null\n private isDisabled = false\n private itemDisablingState: { key: string; disabled: boolean }[] = []\n private options: DropdownToolButtonOptions\n\n public constructor(container: JQuery, buttons: DropdownToolButtonItem[], opt?: DropdownToolButtonOptions) {\n this.options = opt || {}\n this.isDisabled = this.options.disabled || false\n this.element = this.buildBaseDropdown()\n this.addDropdownItems(buttons)\n\n container.append(this.element)\n }\n\n private getDisablingStateItem(key: string): boolean {\n if (tryFirst(this.itemDisablingState, x => x.key == key) != null) {\n return first(this.itemDisablingState, x => x.key == key).disabled || false\n }\n\n return false\n }\n\n private setDisablingStateItem(key: string, value: boolean) {\n if (tryFirst(this.itemDisablingState, x => x.key == key) != null) {\n first(this.itemDisablingState, x => x.key == key).disabled = value || false\n return\n }\n\n this.itemDisablingState.push({ key: key, disabled: value || false })\n }\n\n private removeDisablingStateItem(key: string) {\n this.itemDisablingState.some((item, idx) => {\n if (item.key == key) {\n this.itemDisablingState.splice(idx, 1)\n\n return true\n }\n })\n }\n\n private buildBaseDropdown(): JQuery {\n const dropdownTemplate = `<div class=\"buttons-inner dropdown\" style=\"overflow: visible\">\n <div class=\"idevs-tool-dropdown-button tool-button icon-tool-button ${this.options.cssClass ?? ''} ${\n this.options.isDropUp ? 'dropup' : ''\n } ${this.isDisabled ? 'disabled' : ''}\" style=\"cursor: unset;\">\n <div class=\"button-outer dropdown-toggle ${this.isDisabled ? 'disabled' : ''}\"\n data-bs-toggle=\"dropdown\"\n style=\"cursor: pointer;\">\n <span class=\"button-inner\">\n <i class=\"${this.options.icon}\"></i>\n ${this.options.title ?? ''}\n </span>\n <i class=\"caret\"></i>\n </div>\n <ul class=\"dropdown-menu ${this.options.dropdownMenuPosition == 'right' ? 'dropdown-menu-right' : ''}\"></ul>\n </div>\n</div>`\n\n return $(dropdownTemplate)\n }\n\n public addDropdownItems(buttons: DropdownToolButtonItem[]) {\n if (buttons && buttons.length > 0) {\n buttons.forEach(button => {\n this.addDropdownItem(button)\n })\n }\n }\n\n public addDropdownItem(button: DropdownToolButtonItem, idx?: number) {\n if (!isEmptyOrNull(button.key)) {\n if (this.itemDisablingState.map(x => x.key).indexOf(button.key) > -1) {\n alert(`Dropdown has existed key: ${button.key}`)\n return\n }\n\n this.setDisablingStateItem(button.key, button.disabled || false)\n }\n\n let dropdownItemElement: JQuery\n\n if (button.isDropdownHeader && !isEmptyOrNull(button.dropdownHeaderTitle)) {\n dropdownItemElement = $(`<li class=\"dropdown-header ${button.cssClass ?? ''}\">${button.dropdownHeaderTitle}</li>`)\n } else {\n if (button.isSeparator) {\n dropdownItemElement = $(`<li class=\"dropdown-divider\"></li>`)\n } else {\n dropdownItemElement = $(`<li class=\"${button.disabled ? 'disabled' : ''}\"\n title=\"${button.hint ?? ''}\"\n data-idevs-key=\"${button.key ?? ''}\">\n <a href=\"#\" class=\"${button.cssClass ?? 'dropdown-item'}\">\n <i class=\"${button.icon ?? ''}\"></i>\n ${button.title}\n </a>\n </li>`)\n\n dropdownItemElement.on('click', (e: Event) => {\n e.preventDefault()\n\n if (this.isDisabled) {\n return\n }\n\n let buttonIsDisabled = button.disabled\n\n if (!isEmptyOrNull(button.key)) {\n buttonIsDisabled = this.getDisablingStateItem(button.key)\n }\n if (buttonIsDisabled) {\n return\n }\n\n button.onClick(e)\n })\n }\n }\n\n if (idx === null || typeof idx === 'undefined') {\n this.element.find('.dropdown-menu').append(dropdownItemElement)\n return\n }\n\n if (idx <= 0) {\n this.element.find('.dropdown-menu').prepend(dropdownItemElement)\n return\n }\n\n const nbrOfButtons = this.element.find(`.dropdown-menu > li`).length\n\n if (idx > nbrOfButtons) {\n idx = nbrOfButtons\n }\n\n this.element.find(`.dropdown-menu > li:nth-child(${idx})`).after(dropdownItemElement)\n }\n\n public enableDropdown(enable: boolean) {\n const drd = this.element.find('.dropdown').first()\n if (drd) {\n if (enable) {\n if (drd.hasClass('disabled')) {\n drd.removeClass('disabled')\n }\n } else {\n if (!drd.hasClass('disabled')) {\n drd.addClass('disabled')\n }\n }\n }\n\n const drdToggle = this.element.find('.dropdown-toggle').first()\n if (drdToggle) {\n if (enable) {\n if (drdToggle.hasClass('disabled')) {\n drd.removeClass('disabled')\n } else {\n if (!drdToggle.hasClass('disabled')) {\n drdToggle.addClass('disabled')\n }\n }\n }\n }\n\n this.isDisabled = !enable\n }\n\n public enableDropdownItemByKey(key: string, enable: boolean) {\n const drdItem = this.element.find(`.dropdown-menu li[data-idevs-key=\"${key}\"]`).first()\n if (drdItem) {\n if (enable) {\n if (drdItem.hasClass('disabled')) {\n drdItem.removeClass('disabled')\n }\n } else {\n if (!drdItem.hasClass('disabled')) {\n drdItem.addClass('disabled')\n }\n }\n }\n\n this.setDisablingStateItem(key, !enable)\n }\n\n public enableSideButtonByKey(key: string, enable: boolean) {\n const tButton = this.element.find(`.tool-button[data-idevs-key=\"${key}\"]`).first()\n if (tButton) {\n if (enable) {\n if (tButton.hasClass('disabled')) {\n tButton.removeClass('disabled')\n }\n } else {\n if (!tButton.hasClass('disabled')) {\n tButton.addClass('disabled')\n }\n }\n }\n\n this.setDisablingStateItem(key, !enable)\n }\n\n public removeDropdownItem(key: string) {\n this.element.find(`.dropdown-menu li[data-idevs-key=\"${key}\"]`).remove()\n this.removeDisablingStateItem(key)\n }\n\n public removeSideButtonItem(key: string) {\n this.element.find(`.tool-button[data-idevs-key=\"${key}\"]`).remove()\n this.removeDisablingStateItem(key)\n }\n\n public addSideButtonItem(button: ToolDropdownSideButtonItem, idx?: number) {\n if (!isEmptyOrNull(button.key)) {\n if (this.itemDisablingState.map(x => x.key).indexOf(button.key) > -1) {\n alert(`Dropdown has existed key: ${button.key}`)\n return\n }\n\n this.setDisablingStateItem(button.key, button.disabled || false)\n }\n\n const sideButtonTemplate = `<div class=\"tool-button add-button icon-tool-button ${button.cssClass ?? ''} ${\n button.disabled ? 'disabled' : ''\n }\"\n data-idevs-key=\"${button.key ?? ''}\"\n title=\"${button.title ?? ''}\">\n <div class=\"button-outer\">\n <span class=\"button-inner\">\n <i class=\"${button.icon ?? ''}\"></i>\n </span>\n </div>\n </div>`\n\n const sideButton = $(sideButtonTemplate)\n\n sideButton.on('click', (e: Event) => {\n e.preventDefault()\n\n let buttonIsDisabled = button.disabled\n\n if (!isEmptyOrNull(button.key)) {\n buttonIsDisabled = this.getDisablingStateItem(button.key)\n }\n\n if (buttonIsDisabled) {\n return\n }\n\n button.onClick(e)\n })\n\n if (idx === null || typeof idx === 'undefined') {\n this.element.append(sideButton)\n return\n }\n\n if (idx <= 0) {\n this.element.prepend(sideButton)\n return\n }\n\n const nbrOfButtons = this.element.find(`div.tool-button`).length\n\n if (idx > nbrOfButtons) {\n idx = nbrOfButtons\n }\n\n this.element.find(`div.tool-button:nth-child(${idx})`).after(sideButton)\n }\n}\n"]}
@@ -34,14 +34,13 @@ export class ToggleToolButton {
34
34
  container.append(this.element);
35
35
  }
36
36
  buildBaseButton() {
37
- var _a, _b;
38
37
  const buttonTemplate = `<div class="buttons-inner" style="overflow: visible">
39
- <div class="idevs-toggle-button tool-button icon-tool-button ${(_a = this.options.cssClass) !== null && _a !== void 0 ? _a : ''} ${this.isDisabled ? 'disabled' : ''}" style="cursor: unset;">
38
+ <div class="idevs-toggle-button tool-button icon-tool-button ${this.options.cssClass ?? ''} ${this.isDisabled ? 'disabled' : ''}" style="cursor: unset;">
40
39
  <div class="button-outer ${this.isDisabled ? 'disabled' : ''}"
41
40
  style="cursor: pointer;">
42
41
  <span class="button-inner">
43
42
  <i class="${this.options.icon}"></i>
44
- ${(_b = this.options.title) !== null && _b !== void 0 ? _b : ''}
43
+ ${this.options.title ?? ''}
45
44
  </span>
46
45
  <i class="caret"></i>
47
46
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleToolButton.js","sourceRoot":"","sources":["../../src/ui/ToggleToolButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAazC,MAAM,OAAO,gBAAgB;IAK3B,YAAmB,SAAiB,EAAE,GAA6B;QAJ5D,YAAO,GAAW,IAAI,CAAA;QACrB,eAAU,GAAG,KAAK,CAAA;QAIxB,IAAI,CAAC,OAAO,GAAG,GAAG,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAA;QAChD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAErC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;YAC3B,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAM;YAE3B,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,MAAqB,EAAE,sBAAsB,CAAC,CAAA;YAC5E,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;gBACtC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;gBACvC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;gBACpC,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBACtD,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACrD,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;gBAC9F,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAC9F,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YACzB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IAEO,eAAe;;QACrB,MAAM,cAAc,GAAG;mEACwC,MAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,mCAAI,EAAE,IACxF,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EACjC;mCAC+B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;;;4BAGxC,IAAI,CAAC,OAAO,CAAC,IAAI;kBAC3B,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,mCAAI,EAAE;;;;;OAKnC,CAAA;QAEH,OAAO,CAAC,CAAC,cAAc,CAAC,CAAA;IAC1B,CAAC;CACF","sourcesContent":["import { neededTarget } from '../globals'\n\nexport type ToggleToolButtonOptions = {\n title?: string\n hint?: string\n cssClass?: string\n altCssClass?: string\n icon?: string\n altIcon?: string\n onClick?: (e: JQuery.ClickEvent<HTMLElement, null, HTMLElement, HTMLElement>) => void\n disabled?: boolean\n}\n\nexport class ToggleToolButton {\n public element: JQuery = null\n private isDisabled = false\n private options: ToggleToolButtonOptions\n\n public constructor(container: JQuery, opt?: ToggleToolButtonOptions) {\n this.options = opt || {}\n this.isDisabled = this.options.disabled || false\n this.element = this.buildBaseButton()\n\n this.element.on('click', e => {\n if (this.isDisabled) return\n\n const target = neededTarget(e.target as HTMLElement, '.idevs-toggle-button')\n if (this.options.altIcon) {\n const icon = target.querySelector(`i`)\n if (icon.className == this.options.icon) {\n icon.className = this.options.altIcon\n } else {\n icon.className = this.options.icon\n }\n }\n\n if (this.options.cssClass && this.options.altCssClass) {\n if (target.className.includes(this.options.cssClass)) {\n target.className = target.className.replace(this.options.cssClass, this.options.altCssClass)\n } else {\n target.className = target.className.replace(this.options.altCssClass, this.options.cssClass)\n }\n }\n\n if (this.options.onClick) {\n this.options.onClick(e)\n }\n })\n\n container.append(this.element)\n }\n\n private buildBaseButton(): JQuery {\n const buttonTemplate = `<div class=\"buttons-inner\" style=\"overflow: visible\">\n <div class=\"idevs-toggle-button tool-button icon-tool-button ${this.options.cssClass ?? ''} ${\n this.isDisabled ? 'disabled' : ''\n }\" style=\"cursor: unset;\">\n <div class=\"button-outer ${this.isDisabled ? 'disabled' : ''}\"\n style=\"cursor: pointer;\">\n <span class=\"button-inner\">\n <i class=\"${this.options.icon}\"></i>\n ${this.options.title ?? ''}\n </span>\n <i class=\"caret\"></i>\n </div>\n </div>\n</div>`\n\n return $(buttonTemplate)\n }\n}\n"]}
1
+ {"version":3,"file":"ToggleToolButton.js","sourceRoot":"","sources":["../../src/ui/ToggleToolButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAazC,MAAM,OAAO,gBAAgB;IAK3B,YAAmB,SAAiB,EAAE,GAA6B;QAJ5D,YAAO,GAAW,IAAI,CAAA;QACrB,eAAU,GAAG,KAAK,CAAA;QAIxB,IAAI,CAAC,OAAO,GAAG,GAAG,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAA;QAChD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAErC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;YAC3B,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAM;YAE3B,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,MAAqB,EAAE,sBAAsB,CAAC,CAAA;YAC5E,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;gBACtC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;gBACvC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;gBACpC,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBACtD,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACrD,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;gBAC9F,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAC9F,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YACzB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IAEO,eAAe;QACrB,MAAM,cAAc,GAAG;mEACwC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,IACxF,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EACjC;mCAC+B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;;;4BAGxC,IAAI,CAAC,OAAO,CAAC,IAAI;kBAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;;;;;OAKnC,CAAA;QAEH,OAAO,CAAC,CAAC,cAAc,CAAC,CAAA;IAC1B,CAAC;CACF","sourcesContent":["import { neededTarget } from '../globals'\n\nexport type ToggleToolButtonOptions = {\n title?: string\n hint?: string\n cssClass?: string\n altCssClass?: string\n icon?: string\n altIcon?: string\n onClick?: (e: JQuery.ClickEvent<HTMLElement, null, HTMLElement, HTMLElement>) => void\n disabled?: boolean\n}\n\nexport class ToggleToolButton {\n public element: JQuery = null\n private isDisabled = false\n private options: ToggleToolButtonOptions\n\n public constructor(container: JQuery, opt?: ToggleToolButtonOptions) {\n this.options = opt || {}\n this.isDisabled = this.options.disabled || false\n this.element = this.buildBaseButton()\n\n this.element.on('click', e => {\n if (this.isDisabled) return\n\n const target = neededTarget(e.target as HTMLElement, '.idevs-toggle-button')\n if (this.options.altIcon) {\n const icon = target.querySelector(`i`)\n if (icon.className == this.options.icon) {\n icon.className = this.options.altIcon\n } else {\n icon.className = this.options.icon\n }\n }\n\n if (this.options.cssClass && this.options.altCssClass) {\n if (target.className.includes(this.options.cssClass)) {\n target.className = target.className.replace(this.options.cssClass, this.options.altCssClass)\n } else {\n target.className = target.className.replace(this.options.altCssClass, this.options.cssClass)\n }\n }\n\n if (this.options.onClick) {\n this.options.onClick(e)\n }\n })\n\n container.append(this.element)\n }\n\n private buildBaseButton(): JQuery {\n const buttonTemplate = `<div class=\"buttons-inner\" style=\"overflow: visible\">\n <div class=\"idevs-toggle-button tool-button icon-tool-button ${this.options.cssClass ?? ''} ${\n this.isDisabled ? 'disabled' : ''\n }\" style=\"cursor: unset;\">\n <div class=\"button-outer ${this.isDisabled ? 'disabled' : ''}\"\n style=\"cursor: pointer;\">\n <span class=\"button-inner\">\n <i class=\"${this.options.icon}\"></i>\n ${this.options.title ?? ''}\n </span>\n <i class=\"caret\"></i>\n </div>\n </div>\n</div>`\n\n return $(buttonTemplate)\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idevs/corelib",
3
- "version": "0.0.91",
3
+ "version": "0.0.93",
4
4
  "description": "Extended library for Serenity Framework",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -30,21 +30,21 @@
30
30
  "url": "git+https://github.com/klomkling/idevs.corelib"
31
31
  },
32
32
  "dependencies": {
33
- "@serenity-is/corelib": "^8.2.2",
34
- "@serenity-is/sleekgrid": "^1.6.4",
33
+ "@serenity-is/corelib": "^8.4.3",
34
+ "@serenity-is/sleekgrid": "^1.7.0",
35
35
  "@types/jquery": "^3.5.29",
36
36
  "@types/jquery.validation": "^1.16.10",
37
- "@types/jqueryui": "^1.12.21",
38
- "@types/toastr": "^2.1.43",
39
- "bootstrap": "^5.3.2"
37
+ "@types/jqueryui": "^1.12.22",
38
+ "@types/toastr": "^2.1.43"
40
39
  },
41
40
  "devDependencies": {
42
41
  "@serenity-is/tsbuild": "^8.0.1",
43
42
  "@typescript-eslint/eslint-plugin": "^5.62.0",
44
43
  "@typescript-eslint/parser": "^5.62.0",
45
- "eslint": "^8.56.0",
44
+ "bootstrap": "^5.3.3",
45
+ "eslint": "^8.57.0",
46
46
  "eslint-config-prettier": "^8.10.0",
47
47
  "prettier": "^2.8.8",
48
- "typescript": "^5.3.3"
48
+ "typescript": "^5.4.4"
49
49
  }
50
50
  }
@@ -13,7 +13,6 @@ import {
13
13
  IReadOnly,
14
14
  getCustomAttributes,
15
15
  getLookup,
16
- isArray,
17
16
  isEmptyOrNull,
18
17
  toId,
19
18
  tryGetText,
@@ -148,7 +147,7 @@ export class CheckboxButtonEditor<P extends CheckboxButtonEditorOptions = Checkb
148
147
  values.forEach(v => {
149
148
  const checks = Array.from(inputs).filter(input => (input as HTMLInputElement).value === v)
150
149
  if (checks.length > 0) {
151
- (checks[0] as HTMLInputElement).checked = true
150
+ ;(checks[0] as HTMLInputElement).checked = true
152
151
  }
153
152
  })
154
153
  }
package/src/tsconfig.json CHANGED
@@ -17,7 +17,7 @@
17
17
  "skipLibCheck": true,
18
18
  "types": ["jquery", "jquery.validation", "jqueryui", "toastr"],
19
19
  "outDir": "../dist",
20
- "target": "ES6",
20
+ "target": "ES2020",
21
21
  "lib": ["ES6", "ES2020", "DOM"],
22
22
  "noEmitHelpers": false,
23
23
  "importHelpers": false,