@idevs/corelib 0.0.92 → 0.0.94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/editors/checkboxButtonEditor.js +1 -2
- package/dist/editors/checkboxButtonEditor.js.map +1 -1
- package/dist/editors/dateMonthEditor.js +3 -4
- package/dist/editors/dateMonthEditor.js.map +1 -1
- package/dist/formatters/formatters.d.ts +23 -1
- package/dist/formatters/formatters.js +80 -33
- package/dist/formatters/formatters.js.map +1 -1
- package/dist/globals/index.js +1 -2
- package/dist/globals/index.js.map +1 -1
- package/dist/helpers/dialogHelper.js +3 -5
- package/dist/helpers/dialogHelper.js.map +1 -1
- package/dist/helpers/gridHelper.js +2 -3
- package/dist/helpers/gridHelper.js.map +1 -1
- package/dist/ui/DropdownToolButton.js +11 -14
- package/dist/ui/DropdownToolButton.js.map +1 -1
- package/dist/ui/ToggleToolButton.d.ts +1 -2
- package/dist/ui/ToggleToolButton.js +2 -3
- package/dist/ui/ToggleToolButton.js.map +1 -1
- package/package.json +7 -6
- package/src/formatters/formatters.ts +85 -13
- package/src/globals/index.ts +0 -1
- package/src/tsconfig.json +2 -2
|
@@ -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(),
|
|
39
|
+
this.addCheckbox(x.toString(), tryGetText('Enums.' + enumKey + '.' + name) ?? name);
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
42
|
this.domNode.classList.add('d-flex', 'flex-wrap');
|
|
@@ -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 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 =
|
|
25
|
-
const options = { month:
|
|
26
|
-
const upperCase =
|
|
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
|
|
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"]}
|
|
@@ -9,7 +9,10 @@ export declare class ZeroDisplayFormatter implements Formatter {
|
|
|
9
9
|
constructor(props?: {
|
|
10
10
|
displayText?: string;
|
|
11
11
|
});
|
|
12
|
+
get displayText(): string;
|
|
13
|
+
set displayText(value: string);
|
|
12
14
|
format(ctx: FormatterContext): string;
|
|
15
|
+
static format(src: string, displayText?: string): string;
|
|
13
16
|
}
|
|
14
17
|
export declare class CheckboxFormatter implements Formatter {
|
|
15
18
|
readonly props: {
|
|
@@ -26,11 +29,30 @@ export declare class CheckboxFormatter implements Formatter {
|
|
|
26
29
|
trueValueIcon?: string;
|
|
27
30
|
falseValueIcon?: string;
|
|
28
31
|
});
|
|
32
|
+
get cssClass(): string;
|
|
33
|
+
set cssClass(value: string);
|
|
34
|
+
get trueText(): string;
|
|
35
|
+
set trueText(value: string);
|
|
36
|
+
get falseText(): string;
|
|
37
|
+
set falseText(value: string);
|
|
38
|
+
get trueValueIcon(): string;
|
|
39
|
+
set trueValueIcon(value: string);
|
|
40
|
+
get falseValueIcon(): string;
|
|
41
|
+
set falseValueIcon(value: string);
|
|
29
42
|
format(ctx: FormatterContext): string;
|
|
43
|
+
static format(src: string, cssClass?: string, trueText?: string, falseText?: string, trueValueIcon?: string, falseValueIcon?: string): string;
|
|
30
44
|
}
|
|
31
45
|
export declare class LookupFormatter implements Formatter {
|
|
32
|
-
|
|
46
|
+
readonly props: {
|
|
47
|
+
lookupKey?: string;
|
|
48
|
+
};
|
|
49
|
+
constructor(props?: {
|
|
50
|
+
lookupKey?: string;
|
|
51
|
+
});
|
|
52
|
+
get lookupKey(): string;
|
|
53
|
+
set lookupKey(value: string);
|
|
33
54
|
format(ctx: FormatterContext): string;
|
|
55
|
+
static format(src: any, lookupKey?: string): string;
|
|
34
56
|
}
|
|
35
57
|
export declare class DateMonthFormatter implements Formatter {
|
|
36
58
|
display: '2-digit' | 'short' | 'long';
|
|
@@ -4,72 +4,123 @@
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
+
var ZeroDisplayFormatter_1, CheckboxFormatter_1, LookupFormatter_1;
|
|
7
8
|
import { Decorators } from '@serenity-is/corelib';
|
|
8
9
|
import { getLookup, htmlEncode } from '@serenity-is/corelib';
|
|
9
|
-
let ZeroDisplayFormatter = class ZeroDisplayFormatter {
|
|
10
|
+
let ZeroDisplayFormatter = ZeroDisplayFormatter_1 = class ZeroDisplayFormatter {
|
|
10
11
|
constructor(props = {}) {
|
|
11
|
-
var _a
|
|
12
|
-
var _c;
|
|
12
|
+
var _a;
|
|
13
13
|
this.props = props;
|
|
14
|
-
|
|
15
|
-
(
|
|
14
|
+
this.props ?? (this.props = {});
|
|
15
|
+
(_a = this.props).displayText ?? (_a.displayText = '');
|
|
16
|
+
}
|
|
17
|
+
get displayText() {
|
|
18
|
+
return this.props.displayText;
|
|
19
|
+
}
|
|
20
|
+
set displayText(value) {
|
|
21
|
+
this.props.displayText = value;
|
|
16
22
|
}
|
|
17
23
|
format(ctx) {
|
|
18
|
-
|
|
24
|
+
return ZeroDisplayFormatter_1.format(ctx.value, this.displayText);
|
|
25
|
+
}
|
|
26
|
+
static format(src, displayText) {
|
|
19
27
|
const value = parseFloat(String(src || '0').replace(',', ''));
|
|
20
28
|
if (value == 0) {
|
|
21
|
-
return htmlEncode(
|
|
29
|
+
return htmlEncode(displayText);
|
|
22
30
|
}
|
|
23
31
|
return htmlEncode(src);
|
|
24
32
|
}
|
|
25
33
|
};
|
|
26
|
-
ZeroDisplayFormatter = __decorate([
|
|
34
|
+
ZeroDisplayFormatter = ZeroDisplayFormatter_1 = __decorate([
|
|
27
35
|
Decorators.registerFormatter('Idevs.ZeroDisplayFormatter')
|
|
28
36
|
], ZeroDisplayFormatter);
|
|
29
37
|
export { ZeroDisplayFormatter };
|
|
30
|
-
let CheckboxFormatter = class CheckboxFormatter {
|
|
38
|
+
let CheckboxFormatter = CheckboxFormatter_1 = class CheckboxFormatter {
|
|
31
39
|
constructor(props) {
|
|
32
40
|
var _a, _b, _c, _d, _e;
|
|
33
|
-
var _f, _g, _h, _j, _k;
|
|
34
41
|
this.props = props;
|
|
35
|
-
(_a =
|
|
36
|
-
(_b =
|
|
37
|
-
(_c =
|
|
38
|
-
(_d =
|
|
39
|
-
(_e =
|
|
42
|
+
(_a = this.props).cssClass ?? (_a.cssClass = 'text-center fs-2 text-gray-1');
|
|
43
|
+
(_b = this.props).trueText ?? (_b.trueText = '1');
|
|
44
|
+
(_c = this.props).falseText ?? (_c.falseText = '0');
|
|
45
|
+
(_d = this.props).trueValueIcon ?? (_d.trueValueIcon = 'mdi mdi-checkbox-marked-outline');
|
|
46
|
+
(_e = this.props).falseValueIcon ?? (_e.falseValueIcon = 'mdi mdi-checkbox-blank-outline');
|
|
47
|
+
}
|
|
48
|
+
get cssClass() {
|
|
49
|
+
return this.props.cssClass;
|
|
50
|
+
}
|
|
51
|
+
set cssClass(value) {
|
|
52
|
+
this.props.cssClass = value;
|
|
53
|
+
}
|
|
54
|
+
get trueText() {
|
|
55
|
+
return this.props.trueText;
|
|
56
|
+
}
|
|
57
|
+
set trueText(value) {
|
|
58
|
+
this.props.trueText = value;
|
|
59
|
+
}
|
|
60
|
+
get falseText() {
|
|
61
|
+
return this.props.falseText;
|
|
62
|
+
}
|
|
63
|
+
set falseText(value) {
|
|
64
|
+
this.props.falseText = value;
|
|
65
|
+
}
|
|
66
|
+
get trueValueIcon() {
|
|
67
|
+
return this.props.trueValueIcon;
|
|
68
|
+
}
|
|
69
|
+
set trueValueIcon(value) {
|
|
70
|
+
this.props.trueValueIcon = value;
|
|
71
|
+
}
|
|
72
|
+
get falseValueIcon() {
|
|
73
|
+
return this.props.falseValueIcon;
|
|
74
|
+
}
|
|
75
|
+
set falseValueIcon(value) {
|
|
76
|
+
this.props.falseValueIcon = value;
|
|
40
77
|
}
|
|
41
78
|
format(ctx) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
79
|
+
return CheckboxFormatter_1.format(ctx.value, this.cssClass, this.trueText, this.falseText, this.trueValueIcon, this.falseValueIcon);
|
|
80
|
+
}
|
|
81
|
+
static format(src, cssClass, trueText, falseText, trueValueIcon, falseValueIcon) {
|
|
82
|
+
if (src == trueText) {
|
|
83
|
+
return `<i class="${trueValueIcon} ${cssClass}"></i>`;
|
|
45
84
|
}
|
|
46
|
-
else if (src ==
|
|
47
|
-
return `<i class="${
|
|
85
|
+
else if (src == falseText) {
|
|
86
|
+
return `<i class="${falseValueIcon} ${cssClass}"></i>`;
|
|
48
87
|
}
|
|
49
88
|
else {
|
|
50
89
|
return htmlEncode(src);
|
|
51
90
|
}
|
|
52
91
|
}
|
|
53
92
|
};
|
|
54
|
-
CheckboxFormatter = __decorate([
|
|
93
|
+
CheckboxFormatter = CheckboxFormatter_1 = __decorate([
|
|
55
94
|
Decorators.registerFormatter('Idevs.CheckboxFormatter')
|
|
56
95
|
], CheckboxFormatter);
|
|
57
96
|
export { CheckboxFormatter };
|
|
58
|
-
let LookupFormatter = class LookupFormatter {
|
|
97
|
+
let LookupFormatter = LookupFormatter_1 = class LookupFormatter {
|
|
98
|
+
constructor(props = {}) {
|
|
99
|
+
this.props = props;
|
|
100
|
+
this.props ?? (this.props = {});
|
|
101
|
+
}
|
|
102
|
+
get lookupKey() {
|
|
103
|
+
return this.props.lookupKey;
|
|
104
|
+
}
|
|
105
|
+
set lookupKey(value) {
|
|
106
|
+
this.props.lookupKey = value;
|
|
107
|
+
}
|
|
59
108
|
format(ctx) {
|
|
60
|
-
|
|
109
|
+
return LookupFormatter_1.format(ctx.value, this.lookupKey);
|
|
110
|
+
}
|
|
111
|
+
static format(src, lookupKey) {
|
|
61
112
|
if (!src)
|
|
62
113
|
return '';
|
|
63
|
-
if (!
|
|
114
|
+
if (!lookupKey)
|
|
64
115
|
return src;
|
|
65
|
-
const lookup = getLookup(
|
|
116
|
+
const lookup = getLookup(lookupKey);
|
|
66
117
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
67
118
|
const items = lookup.items;
|
|
68
119
|
const idField = lookup.idField;
|
|
69
120
|
const textField = lookup.textField;
|
|
70
121
|
const idList = src.toString().split(',');
|
|
71
122
|
return idList
|
|
72
|
-
.map(x => {
|
|
123
|
+
.map((x) => {
|
|
73
124
|
const g = items.find(i => i[idField] == x);
|
|
74
125
|
if (!g)
|
|
75
126
|
return x;
|
|
@@ -78,21 +129,17 @@ let LookupFormatter = class LookupFormatter {
|
|
|
78
129
|
.join(', ');
|
|
79
130
|
}
|
|
80
131
|
};
|
|
81
|
-
__decorate([
|
|
82
|
-
Decorators.option()
|
|
83
|
-
], LookupFormatter.prototype, "lookupKey", void 0);
|
|
84
|
-
LookupFormatter = __decorate([
|
|
132
|
+
LookupFormatter = LookupFormatter_1 = __decorate([
|
|
85
133
|
Decorators.registerFormatter('Idevs.LookupFormatter')
|
|
86
134
|
], LookupFormatter);
|
|
87
135
|
export { LookupFormatter };
|
|
88
136
|
let DateMonthFormatter = class DateMonthFormatter {
|
|
89
137
|
format(ctx) {
|
|
90
|
-
var _a, _b;
|
|
91
138
|
const src = ctx.value;
|
|
92
139
|
if (!src)
|
|
93
140
|
return '';
|
|
94
|
-
const locale =
|
|
95
|
-
const options = { month:
|
|
141
|
+
const locale = this.locale ?? 'en';
|
|
142
|
+
const options = { month: this.display ?? '2-digit' };
|
|
96
143
|
return new Date(2000, src - 1, 1).toLocaleDateString(locale, options);
|
|
97
144
|
}
|
|
98
145
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/formatters/formatters.ts"],"names":[],"mappings":"
|
|
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 get displayText() {\n return this.props.displayText\n }\n set displayText(value: string) {\n this.props.displayText = value\n }\n\n format(ctx: FormatterContext): string {\n return ZeroDisplayFormatter.format(ctx.value, this.displayText)\n }\n\n static format(src: string, displayText?: string): string {\n const value = parseFloat(String(src || '0').replace(',', ''))\n if (value == 0) {\n return htmlEncode(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 get cssClass() {\n return this.props.cssClass\n }\n set cssClass(value: string) {\n this.props.cssClass = value\n }\n\n get trueText() {\n return this.props.trueText\n }\n set trueText(value: string) {\n this.props.trueText = value\n }\n\n get falseText() {\n return this.props.falseText\n }\n set falseText(value: string) {\n this.props.falseText = value\n }\n\n get trueValueIcon() {\n return this.props.trueValueIcon\n }\n set trueValueIcon(value: string) {\n this.props.trueValueIcon = value\n }\n\n get falseValueIcon() {\n return this.props.falseValueIcon\n }\n set falseValueIcon(value: string) {\n this.props.falseValueIcon = value\n }\n\n format(ctx: FormatterContext): string {\n return CheckboxFormatter.format(\n ctx.value,\n this.cssClass,\n this.trueText,\n this.falseText,\n this.trueValueIcon,\n this.falseValueIcon,\n )\n }\n\n static format(\n src: string,\n cssClass?: string,\n trueText?: string,\n falseText?: string,\n trueValueIcon?: string,\n falseValueIcon?: string,\n ): string {\n if (src == trueText) {\n return `<i class=\"${trueValueIcon} ${cssClass}\"></i>`\n } else if (src == falseText) {\n return `<i class=\"${falseValueIcon} ${cssClass}\"></i>`\n } else {\n return htmlEncode(src)\n }\n }\n}\n\n@Decorators.registerFormatter('Idevs.LookupFormatter')\nexport class LookupFormatter implements Formatter {\n constructor(public readonly props: { lookupKey?: string } = {}) {\n this.props ??= {}\n }\n\n get lookupKey() {\n return this.props.lookupKey\n }\n set lookupKey(value: string) {\n this.props.lookupKey = value\n }\n\n format(ctx: FormatterContext): string {\n return LookupFormatter.format(ctx.value, this.lookupKey)\n }\n\n static format(src: any, lookupKey?: string): string {\n if (!src) return ''\n\n if (!lookupKey) return src\n\n const lookup = getLookup(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: any) => {\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"]}
|
package/dist/globals/index.js
CHANGED
|
@@ -19,7 +19,6 @@ Number.prototype.toTimeString = function () {
|
|
|
19
19
|
Number.prototype.toDecimal = function (precision) {
|
|
20
20
|
const numb = precision || 0;
|
|
21
21
|
const options = {
|
|
22
|
-
style: 'decimal',
|
|
23
22
|
minimumFractionDigits: numb,
|
|
24
23
|
maximumFractionDigits: numb,
|
|
25
24
|
};
|
|
@@ -202,7 +201,7 @@ export function updateDateProxyValue(name, dateValue, locale) {
|
|
|
202
201
|
if (!target) {
|
|
203
202
|
target = document.querySelector(`input[name=${name}-2]`);
|
|
204
203
|
}
|
|
205
|
-
if (isEmptyOrNull(dateValue
|
|
204
|
+
if (isEmptyOrNull(dateValue?.toString())) {
|
|
206
205
|
target.value = '';
|
|
207
206
|
}
|
|
208
207
|
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) + '…' : 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 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) + '…' : 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
|
-
|
|
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 =
|
|
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 =
|
|
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":"AAEA;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAG,OAAiB
|
|
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 (
|
|
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 = (
|
|
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
|
|
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 ${
|
|
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
|
-
${
|
|
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 ${
|
|
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="${
|
|
79
|
-
data-idevs-key="${
|
|
80
|
-
<a href="#" class="${
|
|
81
|
-
<i class="${
|
|
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 ${
|
|
194
|
-
data-idevs-key="${
|
|
195
|
-
title="${
|
|
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="${
|
|
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 ${
|
|
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
|
-
${
|
|
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
|
|
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.
|
|
3
|
+
"version": "0.0.94",
|
|
4
4
|
"description": "Extended library for Serenity Framework",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -30,21 +30,22 @@
|
|
|
30
30
|
"url": "git+https://github.com/klomkling/idevs.corelib"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@serenity-is/corelib": "^8.
|
|
34
|
-
"@serenity-is/sleekgrid": "^1.
|
|
33
|
+
"@serenity-is/corelib": "^8.6.2",
|
|
34
|
+
"@serenity-is/sleekgrid": "^1.9.0",
|
|
35
35
|
"@types/jquery": "^3.5.29",
|
|
36
36
|
"@types/jquery.validation": "^1.16.10",
|
|
37
37
|
"@types/jqueryui": "^1.12.22",
|
|
38
|
-
"@types/toastr": "^2.1.43"
|
|
38
|
+
"@types/toastr": "^2.1.43",
|
|
39
|
+
"@typescript-eslint/typescript-estree": "^8.1.0"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
|
41
|
-
"@serenity-is/tsbuild": "^8.0
|
|
42
|
+
"@serenity-is/tsbuild": "^8.6.0",
|
|
42
43
|
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
|
43
44
|
"@typescript-eslint/parser": "^5.62.0",
|
|
44
45
|
"bootstrap": "^5.3.3",
|
|
45
46
|
"eslint": "^8.57.0",
|
|
46
47
|
"eslint-config-prettier": "^8.10.0",
|
|
47
48
|
"prettier": "^2.8.8",
|
|
48
|
-
"typescript": "^5.
|
|
49
|
+
"typescript": "^5.5.4"
|
|
49
50
|
}
|
|
50
51
|
}
|
|
@@ -13,12 +13,21 @@ export class ZeroDisplayFormatter implements Formatter {
|
|
|
13
13
|
this.props.displayText ??= ''
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
get displayText() {
|
|
17
|
+
return this.props.displayText
|
|
18
|
+
}
|
|
19
|
+
set displayText(value: string) {
|
|
20
|
+
this.props.displayText = value
|
|
21
|
+
}
|
|
22
|
+
|
|
16
23
|
format(ctx: FormatterContext): string {
|
|
17
|
-
|
|
24
|
+
return ZeroDisplayFormatter.format(ctx.value, this.displayText)
|
|
25
|
+
}
|
|
18
26
|
|
|
27
|
+
static format(src: string, displayText?: string): string {
|
|
19
28
|
const value = parseFloat(String(src || '0').replace(',', ''))
|
|
20
29
|
if (value == 0) {
|
|
21
|
-
return htmlEncode(
|
|
30
|
+
return htmlEncode(displayText)
|
|
22
31
|
}
|
|
23
32
|
|
|
24
33
|
return htmlEncode(src)
|
|
@@ -43,12 +52,64 @@ export class CheckboxFormatter implements Formatter {
|
|
|
43
52
|
this.props.falseValueIcon ??= 'mdi mdi-checkbox-blank-outline'
|
|
44
53
|
}
|
|
45
54
|
|
|
55
|
+
get cssClass() {
|
|
56
|
+
return this.props.cssClass
|
|
57
|
+
}
|
|
58
|
+
set cssClass(value: string) {
|
|
59
|
+
this.props.cssClass = value
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
get trueText() {
|
|
63
|
+
return this.props.trueText
|
|
64
|
+
}
|
|
65
|
+
set trueText(value: string) {
|
|
66
|
+
this.props.trueText = value
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
get falseText() {
|
|
70
|
+
return this.props.falseText
|
|
71
|
+
}
|
|
72
|
+
set falseText(value: string) {
|
|
73
|
+
this.props.falseText = value
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
get trueValueIcon() {
|
|
77
|
+
return this.props.trueValueIcon
|
|
78
|
+
}
|
|
79
|
+
set trueValueIcon(value: string) {
|
|
80
|
+
this.props.trueValueIcon = value
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
get falseValueIcon() {
|
|
84
|
+
return this.props.falseValueIcon
|
|
85
|
+
}
|
|
86
|
+
set falseValueIcon(value: string) {
|
|
87
|
+
this.props.falseValueIcon = value
|
|
88
|
+
}
|
|
89
|
+
|
|
46
90
|
format(ctx: FormatterContext): string {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
91
|
+
return CheckboxFormatter.format(
|
|
92
|
+
ctx.value,
|
|
93
|
+
this.cssClass,
|
|
94
|
+
this.trueText,
|
|
95
|
+
this.falseText,
|
|
96
|
+
this.trueValueIcon,
|
|
97
|
+
this.falseValueIcon,
|
|
98
|
+
)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
static format(
|
|
102
|
+
src: string,
|
|
103
|
+
cssClass?: string,
|
|
104
|
+
trueText?: string,
|
|
105
|
+
falseText?: string,
|
|
106
|
+
trueValueIcon?: string,
|
|
107
|
+
falseValueIcon?: string,
|
|
108
|
+
): string {
|
|
109
|
+
if (src == trueText) {
|
|
110
|
+
return `<i class="${trueValueIcon} ${cssClass}"></i>`
|
|
111
|
+
} else if (src == falseText) {
|
|
112
|
+
return `<i class="${falseValueIcon} ${cssClass}"></i>`
|
|
52
113
|
} else {
|
|
53
114
|
return htmlEncode(src)
|
|
54
115
|
}
|
|
@@ -57,16 +118,27 @@ export class CheckboxFormatter implements Formatter {
|
|
|
57
118
|
|
|
58
119
|
@Decorators.registerFormatter('Idevs.LookupFormatter')
|
|
59
120
|
export class LookupFormatter implements Formatter {
|
|
60
|
-
|
|
61
|
-
|
|
121
|
+
constructor(public readonly props: { lookupKey?: string } = {}) {
|
|
122
|
+
this.props ??= {}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
get lookupKey() {
|
|
126
|
+
return this.props.lookupKey
|
|
127
|
+
}
|
|
128
|
+
set lookupKey(value: string) {
|
|
129
|
+
this.props.lookupKey = value
|
|
130
|
+
}
|
|
62
131
|
|
|
63
132
|
format(ctx: FormatterContext): string {
|
|
64
|
-
|
|
133
|
+
return LookupFormatter.format(ctx.value, this.lookupKey)
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
static format(src: any, lookupKey?: string): string {
|
|
65
137
|
if (!src) return ''
|
|
66
138
|
|
|
67
|
-
if (!
|
|
139
|
+
if (!lookupKey) return src
|
|
68
140
|
|
|
69
|
-
const lookup = getLookup(
|
|
141
|
+
const lookup = getLookup(lookupKey)
|
|
70
142
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
71
143
|
const items = lookup.items as Array<{ [key: string]: any }>
|
|
72
144
|
const idField = lookup.idField
|
|
@@ -74,7 +146,7 @@ export class LookupFormatter implements Formatter {
|
|
|
74
146
|
const idList = src.toString().split(',')
|
|
75
147
|
|
|
76
148
|
return idList
|
|
77
|
-
.map(x => {
|
|
149
|
+
.map((x: any) => {
|
|
78
150
|
const g = items.find(i => i[idField] == x)
|
|
79
151
|
if (!g) return x
|
|
80
152
|
|
package/src/globals/index.ts
CHANGED
|
@@ -54,7 +54,6 @@ Number.prototype.toTimeString = function (): string {
|
|
|
54
54
|
Number.prototype.toDecimal = function (precision?: number): string {
|
|
55
55
|
const numb = precision || 0
|
|
56
56
|
const options = {
|
|
57
|
-
style: 'decimal',
|
|
58
57
|
minimumFractionDigits: numb,
|
|
59
58
|
maximumFractionDigits: numb,
|
|
60
59
|
}
|
package/src/tsconfig.json
CHANGED
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
"skipLibCheck": true,
|
|
18
18
|
"types": ["jquery", "jquery.validation", "jqueryui", "toastr"],
|
|
19
19
|
"outDir": "../dist",
|
|
20
|
-
"target": "
|
|
21
|
-
"lib": ["ES6", "
|
|
20
|
+
"target": "ES2020",
|
|
21
|
+
"lib": ["ES6", "ES2020", "DOM"],
|
|
22
22
|
"noEmitHelpers": false,
|
|
23
23
|
"importHelpers": false,
|
|
24
24
|
"jsx": "react",
|