@idevs/corelib 0.0.91 → 0.0.93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/editors/checkboxButtonEditor.js +2 -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.js +10 -13
- package/dist/formatters/formatters.js.map +1 -1
- package/dist/globals/index.js +1 -1
- 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.js +2 -3
- package/dist/ui/ToggleToolButton.js.map +1 -1
- package/package.json +8 -8
- package/src/editors/checkboxButtonEditor.ts +1 -2
- package/src/tsconfig.json +1 -1
|
@@ -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');
|
|
@@ -103,6 +102,7 @@ let CheckboxButtonEditor = class CheckboxButtonEditor extends EditorWidget {
|
|
|
103
102
|
values.forEach(v => {
|
|
104
103
|
const checks = Array.from(inputs).filter(input => input.value === v);
|
|
105
104
|
if (checks.length > 0) {
|
|
105
|
+
;
|
|
106
106
|
checks[0].checked = true;
|
|
107
107
|
}
|
|
108
108
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkboxButtonEditor.js","sourceRoot":"","sources":["../../src/editors/checkboxButtonEditor.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/adjacent-overload-signatures */\n// reference: https://github-wiki-see.page/m/serenity-is/Serenity/wiki/CheckBox-Group-Editor\n\nimport {\n Decorators,\n EditorProps,\n EditorWidget,\n Enum,\n EnumKeyAttribute,\n EnumTypeRegistry,\n Fluent,\n IReadOnly,\n getCustomAttributes,\n getLookup,\n isArray,\n isEmptyOrNull,\n toId,\n tryGetText,\n} from '@serenity-is/corelib'\n\nexport type CheckboxButtonEditorOptions = {\n enumKey?: string\n enumType?: any\n lookupKey?: string\n isStringId?: boolean\n}\n\n@Decorators.registerEditor('CheckboxButtonEditor')\nexport class CheckboxButtonEditor<P extends CheckboxButtonEditorOptions = CheckboxButtonEditorOptions>\n extends EditorWidget<P>\n implements IReadOnly\n{\n private _items: Array<{ [key: string]: any }>\n private readonly _idField: string\n private readonly _textField: string\n private readonly _isStringId: boolean\n\n static override createDefaultElement() {\n return Fluent('div').getNode()\n }\n declare readonly domNode: HTMLElement\n\n constructor(props: EditorProps<P>) {\n super(props)\n\n if (isEmptyOrNull(this.options.enumKey) && this.options.enumType == null && isEmptyOrNull(this.options.lookupKey)) {\n return\n }\n\n this._isStringId = this.options.isStringId\n\n if (!isEmptyOrNull(this.options.lookupKey)) {\n const lookup = getLookup(this.options.lookupKey)\n this._idField = lookup.idField\n this._textField = lookup.textField\n this.set_items(lookup.items as Array<{ [key: string]: any }>)\n } else {\n const enumType = this.options.enumType || EnumTypeRegistry.get(this.options.enumKey)\n let enumKey = this.options.enumKey\n\n if (enumKey == null && enumType != null) {\n const enumKeyAttr = getCustomAttributes(enumType, EnumKeyAttribute, false)\n if (enumKeyAttr.length > 0) {\n enumKey = enumKeyAttr[0].value\n }\n }\n const values = Enum.getValues(enumType)\n for (const x of values) {\n const name = Enum.toString(enumType, x)\n this.addCheckbox(x.toString(), tryGetText('Enums.' + enumKey + '.' + name) ?? name)\n }\n }\n\n this.domNode.classList.add('d-flex', 'flex-wrap')\n }\n\n protected renderCheckboxes() {\n const childDivs = this.domNode.querySelectorAll('div')\n childDivs.forEach(function (child) {\n this.domNode.removeChild(child)\n })\n\n for (const item of this._items) {\n const textValue = item[this._textField]\n const text = textValue == null ? '' : textValue.toString()\n const idValue = item[this._idField]\n const id = idValue == null ? '' : idValue.toString()\n this.addCheckbox(id, text)\n }\n }\n\n protected addCheckbox(value: string, text: string) {\n const div = $('<div class=\"col-12 col-sm-6 col-md-4 col-xl-3\" />')\n const label = $('<label/>').text(text.replace(/, /g, ',').replace(/,/g, ', '))\n $('<input type=\"checkbox\" class=\"me-2\" />')\n .attr('name', this.uniqueName)\n .attr('id', this.uniqueName + '_' + value)\n .attr('value', value)\n .prependTo(label)\n label.appendTo(div)\n div.appendTo(this.domNode)\n }\n\n get_items(): Array<{ [key: string]: any }> {\n return this._items\n }\n\n get items(): Array<{ [key: string]: any }> {\n return this.get_items()\n }\n\n set_items(value: Array<{ [key: string]: any }>) {\n this._items = value\n this.renderCheckboxes()\n }\n\n set items(v: Array<{ [key: string]: any }>) {\n this.set_items(v)\n }\n\n get_value() {\n const val: string[] = []\n const inputs = this.domNode.querySelectorAll('input:checked')\n\n inputs.forEach((input: HTMLInputElement) => {\n val.push(this._isStringId ? input.value : toId(input.value))\n })\n\n return val.join(',')\n }\n\n get value(): string {\n return this.get_value()\n }\n\n set_value(value: string): void {\n if (value !== this.get_value()) {\n let values: unknown[] = []\n if (!isEmptyOrNull(value)) {\n values = this._isStringId ? value.split(',') : value.split(',').map(p => Number(p))\n }\n const inputs = this.domNode.querySelectorAll<HTMLInputElement>('input')\n inputs.forEach(input => {\n input.checked = false\n })\n\n values.forEach(v => {\n const checks = Array.from(inputs).filter(input => (input as HTMLInputElement).value === v)\n if (checks.length > 0) {\n (checks[0] as HTMLInputElement).checked = true\n }\n })\n }\n }\n\n set value(v: string) {\n this.set_value(v)\n }\n\n get_readOnly(): boolean {\n return this.domNode.getAttribute('disabled') != null\n }\n\n set_readOnly(value: boolean): void {\n if (this.get_readOnly() !== value) {\n if (value) {\n this.domNode.setAttribute('disabled', 'disabled')\n this.domNode.querySelectorAll<HTMLInputElement>('input').forEach(input => {\n input.setAttribute('disabled', 'disabled')\n })\n } else {\n this.domNode.removeAttribute('disabled')\n this.domNode.querySelectorAll<HTMLInputElement>('input').forEach(input => {\n input.removeAttribute('disabled')\n })\n }\n }\n }\n}\n\nexport class idevsEditors {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public static load() {}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"checkboxButtonEditor.js","sourceRoot":"","sources":["../../src/editors/checkboxButtonEditor.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/adjacent-overload-signatures */\n// reference: https://github-wiki-see.page/m/serenity-is/Serenity/wiki/CheckBox-Group-Editor\n\nimport {\n Decorators,\n EditorProps,\n EditorWidget,\n Enum,\n EnumKeyAttribute,\n EnumTypeRegistry,\n Fluent,\n IReadOnly,\n getCustomAttributes,\n getLookup,\n isEmptyOrNull,\n toId,\n tryGetText,\n} from '@serenity-is/corelib'\n\nexport type CheckboxButtonEditorOptions = {\n enumKey?: string\n enumType?: any\n lookupKey?: string\n isStringId?: boolean\n}\n\n@Decorators.registerEditor('CheckboxButtonEditor')\nexport class CheckboxButtonEditor<P extends CheckboxButtonEditorOptions = CheckboxButtonEditorOptions>\n extends EditorWidget<P>\n implements IReadOnly\n{\n private _items: Array<{ [key: string]: any }>\n private readonly _idField: string\n private readonly _textField: string\n private readonly _isStringId: boolean\n\n static override createDefaultElement() {\n return Fluent('div').getNode()\n }\n declare readonly domNode: HTMLElement\n\n constructor(props: EditorProps<P>) {\n super(props)\n\n if (isEmptyOrNull(this.options.enumKey) && this.options.enumType == null && isEmptyOrNull(this.options.lookupKey)) {\n return\n }\n\n this._isStringId = this.options.isStringId\n\n if (!isEmptyOrNull(this.options.lookupKey)) {\n const lookup = getLookup(this.options.lookupKey)\n this._idField = lookup.idField\n this._textField = lookup.textField\n this.set_items(lookup.items as Array<{ [key: string]: any }>)\n } else {\n const enumType = this.options.enumType || EnumTypeRegistry.get(this.options.enumKey)\n let enumKey = this.options.enumKey\n\n if (enumKey == null && enumType != null) {\n const enumKeyAttr = getCustomAttributes(enumType, EnumKeyAttribute, false)\n if (enumKeyAttr.length > 0) {\n enumKey = enumKeyAttr[0].value\n }\n }\n const values = Enum.getValues(enumType)\n for (const x of values) {\n const name = Enum.toString(enumType, x)\n this.addCheckbox(x.toString(), tryGetText('Enums.' + enumKey + '.' + name) ?? name)\n }\n }\n\n this.domNode.classList.add('d-flex', 'flex-wrap')\n }\n\n protected renderCheckboxes() {\n const childDivs = this.domNode.querySelectorAll('div')\n childDivs.forEach(function (child) {\n this.domNode.removeChild(child)\n })\n\n for (const item of this._items) {\n const textValue = item[this._textField]\n const text = textValue == null ? '' : textValue.toString()\n const idValue = item[this._idField]\n const id = idValue == null ? '' : idValue.toString()\n this.addCheckbox(id, text)\n }\n }\n\n protected addCheckbox(value: string, text: string) {\n const div = $('<div class=\"col-12 col-sm-6 col-md-4 col-xl-3\" />')\n const label = $('<label/>').text(text.replace(/, /g, ',').replace(/,/g, ', '))\n $('<input type=\"checkbox\" class=\"me-2\" />')\n .attr('name', this.uniqueName)\n .attr('id', this.uniqueName + '_' + value)\n .attr('value', value)\n .prependTo(label)\n label.appendTo(div)\n div.appendTo(this.domNode)\n }\n\n get_items(): Array<{ [key: string]: any }> {\n return this._items\n }\n\n get items(): Array<{ [key: string]: any }> {\n return this.get_items()\n }\n\n set_items(value: Array<{ [key: string]: any }>) {\n this._items = value\n this.renderCheckboxes()\n }\n\n set items(v: Array<{ [key: string]: any }>) {\n this.set_items(v)\n }\n\n get_value() {\n const val: string[] = []\n const inputs = this.domNode.querySelectorAll('input:checked')\n\n inputs.forEach((input: HTMLInputElement) => {\n val.push(this._isStringId ? input.value : toId(input.value))\n })\n\n return val.join(',')\n }\n\n get value(): string {\n return this.get_value()\n }\n\n set_value(value: string): void {\n if (value !== this.get_value()) {\n let values: unknown[] = []\n if (!isEmptyOrNull(value)) {\n values = this._isStringId ? value.split(',') : value.split(',').map(p => Number(p))\n }\n const inputs = this.domNode.querySelectorAll<HTMLInputElement>('input')\n inputs.forEach(input => {\n input.checked = false\n })\n\n values.forEach(v => {\n const checks = Array.from(inputs).filter(input => (input as HTMLInputElement).value === v)\n if (checks.length > 0) {\n ;(checks[0] as HTMLInputElement).checked = true\n }\n })\n }\n }\n\n set value(v: string) {\n this.set_value(v)\n }\n\n get_readOnly(): boolean {\n return this.domNode.getAttribute('disabled') != null\n }\n\n set_readOnly(value: boolean): void {\n if (this.get_readOnly() !== value) {\n if (value) {\n this.domNode.setAttribute('disabled', 'disabled')\n this.domNode.querySelectorAll<HTMLInputElement>('input').forEach(input => {\n input.setAttribute('disabled', 'disabled')\n })\n } else {\n this.domNode.removeAttribute('disabled')\n this.domNode.querySelectorAll<HTMLInputElement>('input').forEach(input => {\n input.removeAttribute('disabled')\n })\n }\n }\n }\n}\n\nexport class idevsEditors {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public static load() {}\n}\n"]}
|
|
@@ -14,16 +14,15 @@ let DateMonthEditor = class DateMonthEditor extends SelectEditor {
|
|
|
14
14
|
return indexOf(this.months, x => x == this.value);
|
|
15
15
|
}
|
|
16
16
|
getItems() {
|
|
17
|
-
var _a, _b, _c;
|
|
18
17
|
const opt = this.options;
|
|
19
18
|
if (opt.items != null && opt.items.length >= 1) {
|
|
20
19
|
return opt.items;
|
|
21
20
|
}
|
|
22
21
|
const today = new Date();
|
|
23
22
|
this.months = [];
|
|
24
|
-
const locale =
|
|
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"]}
|
|
@@ -8,11 +8,10 @@ import { Decorators } from '@serenity-is/corelib';
|
|
|
8
8
|
import { getLookup, htmlEncode } from '@serenity-is/corelib';
|
|
9
9
|
let ZeroDisplayFormatter = class ZeroDisplayFormatter {
|
|
10
10
|
constructor(props = {}) {
|
|
11
|
-
var _a
|
|
12
|
-
var _c;
|
|
11
|
+
var _a;
|
|
13
12
|
this.props = props;
|
|
14
|
-
|
|
15
|
-
(
|
|
13
|
+
this.props ?? (this.props = {});
|
|
14
|
+
(_a = this.props).displayText ?? (_a.displayText = '');
|
|
16
15
|
}
|
|
17
16
|
format(ctx) {
|
|
18
17
|
const src = ctx.value;
|
|
@@ -30,13 +29,12 @@ export { ZeroDisplayFormatter };
|
|
|
30
29
|
let CheckboxFormatter = class CheckboxFormatter {
|
|
31
30
|
constructor(props) {
|
|
32
31
|
var _a, _b, _c, _d, _e;
|
|
33
|
-
var _f, _g, _h, _j, _k;
|
|
34
32
|
this.props = props;
|
|
35
|
-
(_a =
|
|
36
|
-
(_b =
|
|
37
|
-
(_c =
|
|
38
|
-
(_d =
|
|
39
|
-
(_e =
|
|
33
|
+
(_a = this.props).cssClass ?? (_a.cssClass = 'text-center fs-2 text-gray-1');
|
|
34
|
+
(_b = this.props).trueText ?? (_b.trueText = '1');
|
|
35
|
+
(_c = this.props).falseText ?? (_c.falseText = '0');
|
|
36
|
+
(_d = this.props).trueValueIcon ?? (_d.trueValueIcon = 'mdi mdi-checkbox-marked-outline');
|
|
37
|
+
(_e = this.props).falseValueIcon ?? (_e.falseValueIcon = 'mdi mdi-checkbox-blank-outline');
|
|
40
38
|
}
|
|
41
39
|
format(ctx) {
|
|
42
40
|
const src = ctx.value;
|
|
@@ -87,12 +85,11 @@ LookupFormatter = __decorate([
|
|
|
87
85
|
export { LookupFormatter };
|
|
88
86
|
let DateMonthFormatter = class DateMonthFormatter {
|
|
89
87
|
format(ctx) {
|
|
90
|
-
var _a, _b;
|
|
91
88
|
const src = ctx.value;
|
|
92
89
|
if (!src)
|
|
93
90
|
return '';
|
|
94
|
-
const locale =
|
|
95
|
-
const options = { month:
|
|
91
|
+
const locale = this.locale ?? 'en';
|
|
92
|
+
const options = { month: this.display ?? '2-digit' };
|
|
96
93
|
return new Date(2000, src - 1, 1).toLocaleDateString(locale, options);
|
|
97
94
|
}
|
|
98
95
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/formatters/formatters.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAOrD,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,YAA4B,QAAkC,EAAE
|
|
1
|
+
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/formatters/formatters.ts"],"names":[],"mappings":"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","sourcesContent":["import { Decorators } from '@serenity-is/corelib'\nimport { FormatterContext } from '@serenity-is/sleekgrid'\nimport { getLookup, htmlEncode } from '@serenity-is/corelib'\n\nexport type Formatter = {\n format(ctx: FormatterContext): string\n}\n\n@Decorators.registerFormatter('Idevs.ZeroDisplayFormatter')\nexport class ZeroDisplayFormatter implements Formatter {\n constructor(public readonly props: { displayText?: string } = {}) {\n this.props ??= {}\n this.props.displayText ??= ''\n }\n\n format(ctx: FormatterContext): string {\n const src = ctx.value as string\n\n const value = parseFloat(String(src || '0').replace(',', ''))\n if (value == 0) {\n return htmlEncode(this.props.displayText)\n }\n\n return htmlEncode(src)\n }\n}\n\n@Decorators.registerFormatter('Idevs.CheckboxFormatter')\nexport class CheckboxFormatter implements Formatter {\n constructor(\n public readonly props: {\n trueText?: string\n falseText?: string\n cssClass?: string\n trueValueIcon?: string\n falseValueIcon?: string\n },\n ) {\n this.props.cssClass ??= 'text-center fs-2 text-gray-1'\n this.props.trueText ??= '1'\n this.props.falseText ??= '0'\n this.props.trueValueIcon ??= 'mdi mdi-checkbox-marked-outline'\n this.props.falseValueIcon ??= 'mdi mdi-checkbox-blank-outline'\n }\n\n format(ctx: FormatterContext): string {\n const src = ctx.value as string\n if (src == this.props.trueText) {\n return `<i class=\"${this.props.trueValueIcon} ${this.props.cssClass}\"></i>`\n } else if (src == this.props.falseText) {\n return `<i class=\"${this.props.falseValueIcon} ${this.props.cssClass}\"></i>`\n } else {\n return htmlEncode(src)\n }\n }\n}\n\n@Decorators.registerFormatter('Idevs.LookupFormatter')\nexport class LookupFormatter implements Formatter {\n @Decorators.option()\n public lookupKey: string\n\n format(ctx: FormatterContext): string {\n const src = ctx.value as string\n if (!src) return ''\n\n if (!this.lookupKey) return src\n\n const lookup = getLookup(this.lookupKey)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items = lookup.items as Array<{ [key: string]: any }>\n const idField = lookup.idField\n const textField = lookup.textField\n const idList = src.toString().split(',')\n\n return idList\n .map(x => {\n const g = items.find(i => i[idField] == x)\n if (!g) return x\n\n return htmlEncode(g[textField])\n })\n .join(', ')\n }\n}\n\n@Decorators.registerFormatter('Idevs.DateMonthFormatter')\nexport class DateMonthFormatter implements Formatter {\n @Decorators.option()\n public display: '2-digit' | 'short' | 'long'\n\n @Decorators.option()\n public locale: 'en' | 'th'\n\n format(ctx: FormatterContext): string {\n const src = ctx.value as number\n if (!src) return ''\n\n const locale = this.locale ?? 'en'\n const options = { month: this.display ?? '2-digit' }\n\n return new Date(2000, src - 1, 1).toLocaleDateString(locale, options)\n }\n}\n\nexport class idevsFormatters {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public static load() {}\n}\n"]}
|
package/dist/globals/index.js
CHANGED
|
@@ -202,7 +202,7 @@ export function updateDateProxyValue(name, dateValue, locale) {
|
|
|
202
202
|
if (!target) {
|
|
203
203
|
target = document.querySelector(`input[name=${name}-2]`);
|
|
204
204
|
}
|
|
205
|
-
if (isEmptyOrNull(dateValue
|
|
205
|
+
if (isEmptyOrNull(dateValue?.toString())) {
|
|
206
206
|
target.value = '';
|
|
207
207
|
}
|
|
208
208
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/globals/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { DataGrid, ListRequest, ToolButton } from '@serenity-is/corelib'\nimport { isEmptyOrNull } from '@serenity-is/corelib'\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/consistent-type-definitions\n interface Number {\n toDecimal(precision?: number): string\n toTimeString(): string\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-definitions\n interface String {\n truncate(maxLength?: number): string\n toNumber(): number\n toMethodRound(method?: number): number\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-definitions\n interface Date {\n toSqlDate(): string\n toNumber(): number\n }\n\n type IModalOptions = {\n events?: IEvent[]\n }\n\n type IEvent = {\n event: string\n callback: (e: Event) => Promise<unknown>\n }\n}\n\nDate.prototype.toSqlDate = function (): string {\n const date = this.valueOf()\n return new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString()\n}\n\nDate.prototype.toNumber = function (): number {\n const date = this.valueOf()\n const hours = date.getHours()\n const minutes = date.getMinutes()\n const seconds = date.getSeconds()\n return hours * 60 + minutes + seconds / 60\n}\n\nNumber.prototype.toTimeString = function (): string {\n const value = this.valueOf()\n const hours = `0${Math.floor(value / 60)}`.slice(-2)\n const minutes = `0${value % 60}`.slice(-2)\n return `${hours}:${minutes}`\n}\n\nNumber.prototype.toDecimal = function (precision?: number): string {\n const numb = precision || 0\n const options = {\n style: 'decimal',\n minimumFractionDigits: numb,\n maximumFractionDigits: numb,\n }\n let value = Intl.NumberFormat('en-US', options).format(this.valueOf())\n value = parseFloat(value.replace(/,/g, '')).toString()\n return Intl.NumberFormat('en-US', options).format(parseFloat(value))\n}\n\nString.prototype.truncate = function (maxLength: number) {\n const str = String(this)\n return str.length > maxLength ? str.substring(0, maxLength - 1) + '…' : str\n}\n\nString.prototype.toNumber = function () {\n return this.valueOf() ? parseFloat(this.valueOf().replace(/,/g, '')) : 0\n}\n\nString.prototype.toMethodRound = function (method: number): number {\n const input = parseFloat(this.valueOf())\n let value = isNaN(input) ? 0 : input\n if (value == 0) return 0\n\n const r = parseFloat(value.toFixed(2))\n switch (method) {\n case 1:\n value = r - (parseFloat(((r % 1) * 100).toFixed(2)) % 25) / 100\n break\n\n case 2:\n value = r - (parseFloat(((r % 1) * 100).toFixed(2)) % 50) / 100\n break\n\n case 3:\n value = Math.floor(r)\n break\n\n case 4:\n value = Math.floor(r) + (Math.floor((r % 1) * 100) + (25 - (Math.floor((r % 1) * 100) % 25))) / 100\n break\n\n case 5:\n value = Math.floor(r) + (Math.floor((r % 1) * 100) + (50 - (Math.floor((r % 1) * 100) % 50))) / 100\n break\n\n case 6:\n value = Math.ceil(r)\n break\n\n case 7:\n value = Math.floor(r) + (parseFloat((parseFloat(((r % 1) * 100).toString()) / 25).toFixed(0)) * 25) / 100\n break\n\n case 8:\n value = Math.floor(r) + (parseFloat((parseFloat(((r % 1) * 100).toString()) / 50).toFixed(0)) * 50) / 100\n break\n\n case 9:\n value = parseFloat(r.toFixed(0))\n break\n\n default:\n value = r\n break\n }\n\n return value\n}\n\nexport function ToTimeString(value: number): string {\n const hours = `0${Math.floor(value / 60)}`.slice(-2)\n const minutes = `0${value % 60}`.slice(-2)\n return `${hours}:${minutes}`\n}\n\nexport function ToNumber(date: Date): number {\n const hours = date.getHours()\n const minutes = date.getMinutes()\n const seconds = date.getSeconds()\n return hours * 60 + minutes * 60 + seconds\n}\n\nexport function GetElementWidth(element?: HTMLElement): number {\n if (element) {\n return element.clientWidth\n }\n\n return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth\n}\n\nexport function GetElementHeight(element?: HTMLElement): number {\n if (element) {\n return element.clientHeight\n }\n\n return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\n}\n\nexport function RemoveChildren(parent?: HTMLElement): void {\n if (!parent) {\n return\n }\n\n while (parent.firstChild) {\n parent.removeChild(parent.firstChild)\n }\n}\n\nexport function IsOverflow(el: HTMLElement): boolean {\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth\n}\n\nexport function IsOverflowY(el: HTMLElement): boolean {\n return el.scrollHeight > el.clientHeight\n}\n\nexport function IsOverflowX(el: HTMLElement): boolean {\n return el.scrollWidth > el.clientWidth\n}\n\nexport function InnerDimensions(el: HTMLElement | null): [number, number] {\n if (!el) {\n return [0, 0]\n }\n\n const style = getComputedStyle(el)\n let width = el.clientWidth\n let height = el.clientHeight\n\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight)\n\n return [height, width]\n}\n\nexport function neededTarget(el: HTMLElement, target: string): HTMLElement {\n if (target.slice(0, 1) == '.') {\n if (el.classList.contains(target.slice(1)) === false) {\n el = el.closest(target) as HTMLElement\n }\n } else {\n if (el.tagName.toLowerCase() !== target.toLowerCase()) {\n el = el.closest(target) as HTMLElement\n }\n }\n return el\n}\n\nexport function dateStringOption(): Intl.DateTimeFormatOptions {\n return {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n }\n}\n\nexport function toDateString(date: Date): string {\n return date.toLocaleString('en-GB', dateStringOption())\n}\n\n// export function GetModal(name: string, options?: IModalOptions): Modal {\n// const el = document.querySelector(name) as HTMLElement\n// if (options?.events?.length) {\n// options.events.forEach(callback => {\n// el.addEventListener(\n// callback.event,\n// (e: Event) => {\n// callback.callback(e)\n// },\n// { once: true },\n// )\n// })\n// }\n\n// return Modal.getOrCreateInstance(el, { backdrop: 'static' })\n// }\n\nexport const setCookie = (name: string, value: string, expires?: number): void => {\n let cookie = `${name}=${value}`\n if (expires) {\n const date = new Date()\n date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000)\n const exp = `expires=${date.toUTCString()}`\n cookie = `${cookie}; ${exp}`\n }\n document.cookie = `${cookie}; path=/`\n}\n\nexport type dateProxyInputOption = {\n name: string\n readOnly?: boolean\n width?: number\n}\n\nexport function addDateProxyInput(opt: dateProxyInputOption): HTMLInputElement {\n const input: HTMLInputElement = document.querySelector(`input[name=\"${opt.name}\"]`)\n const cloneInput: HTMLInputElement = input.cloneNode(true) as HTMLInputElement\n cloneInput.setAttribute('name', `${opt.name}-2`)\n cloneInput.setAttribute('id', `${input.getAttribute('id')}-2`)\n cloneInput.setAttribute('readonly', 'readonly')\n cloneInput.classList.remove('customValidate')\n cloneInput.classList.remove('s-DateEditor')\n cloneInput.classList.remove('s-Serenity-DateEditor')\n cloneInput.classList.remove('dateQ')\n cloneInput.classList.remove('hasDatepicker')\n if (opt.readOnly) {\n cloneInput.style.backgroundColor = 'rgba(var(--s-bright-rgb), 0.02)'\n } else {\n cloneInput.style.backgroundColor = 'white'\n }\n if (opt.width) {\n cloneInput.style.width = `${opt.width}px`\n }\n\n input.parentNode.insertBefore(cloneInput, input.nextSibling)\n input.classList.add('d-none')\n\n return cloneInput\n}\n\nexport function updateDateProxyValue(name: string, dateValue: string | Date | null, locale?: string): void {\n let target = document.querySelector(`#${name}-2`) as HTMLInputElement\n if (!target) {\n target = document.querySelector(`input[name=${name}-2]`) as HTMLInputElement\n }\n if (isEmptyOrNull(dateValue?.toString())) {\n target.value = ''\n } else {\n if (!locale) {\n locale = 'en-GB'\n }\n target.value = (dateValue.constructor == Date ? dateValue : new Date(dateValue)).toLocaleString(\n locale,\n dateStringOption(),\n )\n }\n}\n\nexport function toSqlDateString(date: Date): string {\n const offset = date.getTimezoneOffset()\n date = new Date(date.getTime() - offset * 60 * 1000)\n return date.toISOString().split('T')[0]\n}\n\nexport enum PageSizes {\n A4 = 0,\n A3 = 1,\n}\n\nexport enum PageOrientations {\n Portrait = 0,\n Landscape = 1,\n}\n\nexport type PageSize = {\n Size: PageSize\n Orientation: PageOrientations\n}\n\nexport type PageMargin = {\n MarginLeft: string\n MarginTop: string\n MarginRight: string\n MarginBottom: string\n}\n\nexport type IdevsExportRequest = ListRequest & {\n viewName?: string\n companyName?: string\n reportName?: string\n selectionRange?: string\n conditionRange?: string\n logo?: string\n pageSize?: PageSize\n margin?: PageMargin\n entity?: unknown\n}\n\nexport type IdevsExportOptions = IdevsExportRequest & {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n grid: DataGrid<any, any>\n service: string\n}\n\nexport type ExportOptions = IdevsExportOptions & {\n title?: string\n hint?: string\n separator?: boolean\n exportType: 'PDF' | 'XLSX'\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onClick?: (e: any) => void\n}\n\nexport function createExportToolButton(options: ExportOptions): ToolButton {\n return {\n hint: options.hint || options.exportType,\n title: options.title || '',\n cssClass: `export-${options.exportType.toLowerCase()}-button`,\n onClick: options.onClick,\n separator: options.separator,\n }\n}\n\nexport function toBeginMonth(date: string): string {\n if (isEmptyOrNull(date)) {\n return date\n }\n\n return `${date.substring(0, 8)}01`\n}\n\nexport function toEndMonth(date: string): string {\n if (isEmptyOrNull(date)) {\n return date\n }\n\n const dateArr = date.split('-')\n const d = new Date(parseInt(dateArr[0]), parseInt(dateArr[1]), 0)\n\n return `${date.substring(0, 8)}${d.getDate()}`\n}\n\nexport class globals {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public static load() {}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/globals/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { DataGrid, ListRequest, ToolButton } from '@serenity-is/corelib'\nimport { isEmptyOrNull } from '@serenity-is/corelib'\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/consistent-type-definitions\n interface Number {\n toDecimal(precision?: number): string\n toTimeString(): string\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-definitions\n interface String {\n truncate(maxLength?: number): string\n toNumber(): number\n toMethodRound(method?: number): number\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-definitions\n interface Date {\n toSqlDate(): string\n toNumber(): number\n }\n\n type IModalOptions = {\n events?: IEvent[]\n }\n\n type IEvent = {\n event: string\n callback: (e: Event) => Promise<unknown>\n }\n}\n\nDate.prototype.toSqlDate = function (): string {\n const date = this.valueOf()\n return new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString()\n}\n\nDate.prototype.toNumber = function (): number {\n const date = this.valueOf()\n const hours = date.getHours()\n const minutes = date.getMinutes()\n const seconds = date.getSeconds()\n return hours * 60 + minutes + seconds / 60\n}\n\nNumber.prototype.toTimeString = function (): string {\n const value = this.valueOf()\n const hours = `0${Math.floor(value / 60)}`.slice(-2)\n const minutes = `0${value % 60}`.slice(-2)\n return `${hours}:${minutes}`\n}\n\nNumber.prototype.toDecimal = function (precision?: number): string {\n const numb = precision || 0\n const options = {\n style: 'decimal',\n minimumFractionDigits: numb,\n maximumFractionDigits: numb,\n }\n let value = Intl.NumberFormat('en-US', options).format(this.valueOf())\n value = parseFloat(value.replace(/,/g, '')).toString()\n return Intl.NumberFormat('en-US', options).format(parseFloat(value))\n}\n\nString.prototype.truncate = function (maxLength: number) {\n const str = String(this)\n return str.length > maxLength ? str.substring(0, maxLength - 1) + '…' : 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.93",
|
|
4
4
|
"description": "Extended library for Serenity Framework",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -30,21 +30,21 @@
|
|
|
30
30
|
"url": "git+https://github.com/klomkling/idevs.corelib"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@serenity-is/corelib": "^8.
|
|
34
|
-
"@serenity-is/sleekgrid": "^1.
|
|
33
|
+
"@serenity-is/corelib": "^8.4.3",
|
|
34
|
+
"@serenity-is/sleekgrid": "^1.7.0",
|
|
35
35
|
"@types/jquery": "^3.5.29",
|
|
36
36
|
"@types/jquery.validation": "^1.16.10",
|
|
37
|
-
"@types/jqueryui": "^1.12.
|
|
38
|
-
"@types/toastr": "^2.1.43"
|
|
39
|
-
"bootstrap": "^5.3.2"
|
|
37
|
+
"@types/jqueryui": "^1.12.22",
|
|
38
|
+
"@types/toastr": "^2.1.43"
|
|
40
39
|
},
|
|
41
40
|
"devDependencies": {
|
|
42
41
|
"@serenity-is/tsbuild": "^8.0.1",
|
|
43
42
|
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
|
44
43
|
"@typescript-eslint/parser": "^5.62.0",
|
|
45
|
-
"
|
|
44
|
+
"bootstrap": "^5.3.3",
|
|
45
|
+
"eslint": "^8.57.0",
|
|
46
46
|
"eslint-config-prettier": "^8.10.0",
|
|
47
47
|
"prettier": "^2.8.8",
|
|
48
|
-
"typescript": "^5.
|
|
48
|
+
"typescript": "^5.4.4"
|
|
49
49
|
}
|
|
50
50
|
}
|
|
@@ -13,7 +13,6 @@ import {
|
|
|
13
13
|
IReadOnly,
|
|
14
14
|
getCustomAttributes,
|
|
15
15
|
getLookup,
|
|
16
|
-
isArray,
|
|
17
16
|
isEmptyOrNull,
|
|
18
17
|
toId,
|
|
19
18
|
tryGetText,
|
|
@@ -148,7 +147,7 @@ export class CheckboxButtonEditor<P extends CheckboxButtonEditorOptions = Checkb
|
|
|
148
147
|
values.forEach(v => {
|
|
149
148
|
const checks = Array.from(inputs).filter(input => (input as HTMLInputElement).value === v)
|
|
150
149
|
if (checks.length > 0) {
|
|
151
|
-
(checks[0] as HTMLInputElement).checked = true
|
|
150
|
+
;(checks[0] as HTMLInputElement).checked = true
|
|
152
151
|
}
|
|
153
152
|
})
|
|
154
153
|
}
|
package/src/tsconfig.json
CHANGED