@idevs/corelib 0.0.97 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/CHANGELOG.md +737 -0
  2. package/README.md +221 -24
  3. package/dist/editors/checkboxButtonEditor.d.ts +3 -1
  4. package/dist/editors/checkboxButtonEditor.d.ts.map +1 -0
  5. package/dist/editors/checkboxButtonEditor.js +28 -18
  6. package/dist/editors/checkboxButtonEditor.js.map +1 -1
  7. package/dist/editors/dateMonthEditor.d.ts +3 -1
  8. package/dist/editors/dateMonthEditor.d.ts.map +1 -0
  9. package/dist/editors/dateMonthEditor.js +14 -7
  10. package/dist/editors/dateMonthEditor.js.map +1 -1
  11. package/dist/editors/index.d.ts +2 -1
  12. package/dist/editors/index.d.ts.map +1 -0
  13. package/dist/editors/index.js +18 -2
  14. package/dist/editors/index.js.map +1 -1
  15. package/dist/formatters/formatters.d.ts +2 -1
  16. package/dist/formatters/formatters.d.ts.map +1 -0
  17. package/dist/formatters/formatters.js +35 -23
  18. package/dist/formatters/formatters.js.map +1 -1
  19. package/dist/formatters/index.d.ts +2 -1
  20. package/dist/formatters/index.d.ts.map +1 -0
  21. package/dist/formatters/index.js +17 -1
  22. package/dist/formatters/index.js.map +1 -1
  23. package/dist/globals/index.d.ts +16 -9
  24. package/dist/globals/index.d.ts.map +1 -0
  25. package/dist/globals/index.js +65 -105
  26. package/dist/globals/index.js.map +1 -1
  27. package/dist/helpers/custom-fonts.d.ts +2 -1
  28. package/dist/helpers/custom-fonts.d.ts.map +1 -0
  29. package/dist/helpers/custom-fonts.js +4 -1
  30. package/dist/helpers/custom-fonts.js.map +1 -1
  31. package/dist/helpers/dialogHelper.d.ts +6 -9
  32. package/dist/helpers/dialogHelper.d.ts.map +1 -0
  33. package/dist/helpers/dialogHelper.js +17 -10
  34. package/dist/helpers/dialogHelper.js.map +1 -1
  35. package/dist/helpers/excelExportHelper.d.ts +2 -1
  36. package/dist/helpers/excelExportHelper.d.ts.map +1 -0
  37. package/dist/helpers/excelExportHelper.js +7 -4
  38. package/dist/helpers/excelExportHelper.js.map +1 -1
  39. package/dist/helpers/gridHelper.d.ts +2 -1
  40. package/dist/helpers/gridHelper.d.ts.map +1 -0
  41. package/dist/helpers/gridHelper.js +14 -9
  42. package/dist/helpers/gridHelper.js.map +1 -1
  43. package/dist/helpers/index.d.ts +2 -1
  44. package/dist/helpers/index.d.ts.map +1 -0
  45. package/dist/helpers/index.js +20 -4
  46. package/dist/helpers/index.js.map +1 -1
  47. package/dist/helpers/pdfExportHelper.d.ts +2 -1
  48. package/dist/helpers/pdfExportHelper.d.ts.map +1 -0
  49. package/dist/helpers/pdfExportHelper.js +83 -17
  50. package/dist/helpers/pdfExportHelper.js.map +1 -1
  51. package/dist/index.d.ts +5 -2
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +26 -5
  54. package/dist/index.js.map +1 -1
  55. package/dist/types/common.d.ts +12 -0
  56. package/dist/types/common.d.ts.map +1 -0
  57. package/dist/types/common.js +3 -0
  58. package/dist/types/common.js.map +1 -0
  59. package/dist/types/export.d.ts +50 -0
  60. package/dist/types/export.d.ts.map +1 -0
  61. package/dist/types/export.js +24 -0
  62. package/dist/types/export.js.map +1 -0
  63. package/dist/types/index.d.ts +3 -0
  64. package/dist/types/index.d.ts.map +1 -0
  65. package/dist/types/index.js +19 -0
  66. package/dist/types/index.js.map +1 -0
  67. package/dist/ui/DropdownToolButton.d.ts +2 -1
  68. package/dist/ui/DropdownToolButton.d.ts.map +1 -0
  69. package/dist/ui/DropdownToolButton.js +15 -11
  70. package/dist/ui/DropdownToolButton.js.map +1 -1
  71. package/dist/ui/ToggleToolButton.d.ts +2 -1
  72. package/dist/ui/ToggleToolButton.d.ts.map +1 -0
  73. package/dist/ui/ToggleToolButton.js +7 -3
  74. package/dist/ui/ToggleToolButton.js.map +1 -1
  75. package/dist/ui/index.d.ts +2 -1
  76. package/dist/ui/index.d.ts.map +1 -0
  77. package/dist/ui/index.js +18 -2
  78. package/dist/ui/index.js.map +1 -1
  79. package/dist/utils/date.d.ts +16 -0
  80. package/dist/utils/date.d.ts.map +1 -0
  81. package/dist/utils/date.js +85 -0
  82. package/dist/utils/date.js.map +1 -0
  83. package/dist/utils/dom.d.ts +13 -0
  84. package/dist/utils/dom.d.ts.map +1 -0
  85. package/dist/utils/dom.js +78 -0
  86. package/dist/utils/dom.js.map +1 -0
  87. package/dist/utils/format.d.ts +22 -0
  88. package/dist/utils/format.d.ts.map +1 -0
  89. package/dist/utils/format.js +100 -0
  90. package/dist/utils/format.js.map +1 -0
  91. package/dist/utils/index.d.ts +4 -0
  92. package/dist/utils/index.d.ts.map +1 -0
  93. package/dist/utils/index.js +20 -0
  94. package/dist/utils/index.js.map +1 -0
  95. package/package.json +48 -29
  96. package/dist/ui/ToolDropdownButton.d.ts +0 -49
  97. package/dist/ui/ToolDropdownButton.js +0 -230
  98. package/dist/ui/ToolDropdownButton.js.map +0 -1
  99. package/src/editors/checkboxButtonEditor.ts +0 -184
  100. package/src/editors/dateMonthEditor.ts +0 -47
  101. package/src/editors/index.ts +0 -2
  102. package/src/formatters/formatters.ts +0 -185
  103. package/src/formatters/index.ts +0 -1
  104. package/src/globals/index.ts +0 -385
  105. package/src/helpers/custom-fonts.d.ts +0 -5
  106. package/src/helpers/custom-fonts.ts +0 -18
  107. package/src/helpers/dialogHelper.ts +0 -143
  108. package/src/helpers/excelExportHelper.ts +0 -29
  109. package/src/helpers/gridHelper.ts +0 -107
  110. package/src/helpers/html2pdf.d.ts +0 -19
  111. package/src/helpers/index.ts +0 -4
  112. package/src/helpers/pdfExportHelper.ts +0 -179
  113. package/src/index.ts +0 -5
  114. package/src/tsconfig.json +0 -29
  115. package/src/ui/DropdownToolButton.ts +0 -305
  116. package/src/ui/ToggleToolButton.ts +0 -71
  117. package/src/ui/index.ts +0 -2
  118. /package/{css → dist/css}/idevs.dropdown.css +0 -0
  119. /package/{css → dist/css}/idevs.print.css +0 -0
package/README.md CHANGED
@@ -1,47 +1,244 @@
1
-
2
1
  # @idevs/corelib
3
2
 
4
- A library to extended Serenity Framework.
5
-
3
+ ![npm version](https://img.shields.io/npm/v/@idevs/corelib.svg)
4
+ ![license](https://img.shields.io/npm/l/@idevs/corelib.svg)
6
5
 
6
+ A comprehensive library of extended components and utilities for the Serenity Framework. This library provides additional editors, formatters, UI components, and helper functions to enhance your Serenity applications.
7
7
 
8
+ ## Features
8
9
 
10
+ - 🎛️ **Extended Editors**: Additional input editors like CheckboxButton and DateMonth
11
+ - 📊 **Custom Formatters**: Specialized data formatters for grids and displays
12
+ - 🎨 **UI Components**: Enhanced toolbar buttons and UI widgets
13
+ - 🛠️ **Utility Functions**: Date, DOM, and formatting utilities
14
+ - 📄 **Export Helpers**: PDF and Excel export functionality
15
+ - 🌐 **TypeScript**: Full TypeScript support with type definitions
9
16
 
10
17
  ## Installation
11
18
 
12
- To install this module, run the following command in your computer terminal:
19
+ ```bash
20
+ npm install @idevs/corelib
21
+ ```
13
22
 
14
- ```console
15
- npm install --save-dev @idevs/corelib
23
+ ## Quick Start
24
+
25
+ ### Basic Usage
26
+
27
+ ```typescript
28
+ import {
29
+ CheckboxButtonEditor,
30
+ ZeroDisplayFormatter,
31
+ DropdownToolButton,
32
+ // Utility functions
33
+ toDateString,
34
+ getElementWidth,
35
+ createExportToolButton,
36
+ } from '@idevs/corelib'
37
+
38
+ // The library also extends global prototypes for convenience
39
+ // (though we recommend using the utility functions directly)
40
+ const timeStr = (120).toTimeString() // "02:00"
41
+ const truncated = 'Hello World'.truncate(5) // "Hell…"
16
42
  ```
17
43
 
18
- ### Modify tsconfig.json
44
+ ### TypeScript Configuration
19
45
 
20
- After install this module you have to update file tsconfig.json with the following content:
21
-
22
- ```console
46
+ After installing, update your `tsconfig.json`:
47
+
48
+ ```json
23
49
  {
24
- "compileOnSave": true,
25
50
  "compilerOptions": {
26
- --- ommited ---
27
- "paths": [
28
- --- ommited ---
29
- "@idevs/*": [ "node_modules/@idevs/*/dist/index" ]
30
- ],
31
- --- ommited ---
32
- "include": [
33
- --- ommited ---
34
- "./node_modules/@idevs/corelib/src/**/*"
35
- ],
51
+ "paths": {
52
+ "@idevs/*": ["node_modules/@idevs/*/dist/index"]
53
+ }
36
54
  }
37
55
  }
38
56
  ```
57
+
58
+ > **Note**: Since version 1.0.0, the package only ships with built files. The TypeScript definitions are automatically available from the `dist/` folder.
59
+
60
+ ### Editors
61
+
62
+ #### CheckboxButtonEditor
63
+
64
+ A multi-checkbox editor that displays options as button-style checkboxes.
65
+
66
+ ```typescript
67
+ @Decorators.registerEditor()
68
+ export class MyForm extends EntityDialog {
69
+ protected form = {
70
+ categories: new CheckboxButtonEditor({
71
+ lookupKey: 'MyModule.CategoryLookup',
72
+ }),
73
+ }
74
+ }
75
+ ```
76
+
77
+ ### Formatters
78
+
79
+ #### ZeroDisplayFormatter
80
+
81
+ Displays custom text when value is zero.
82
+
83
+ ```typescript
84
+ columns.push({
85
+ field: 'Amount',
86
+ formatter: ZeroDisplayFormatter,
87
+ formatterParams: { displayText: 'N/A' },
88
+ })
89
+ ```
90
+
91
+ #### CheckboxFormatter
92
+
93
+ Displays checkboxes with customizable icons.
94
+
95
+ ```typescript
96
+ columns.push({
97
+ field: 'IsActive',
98
+ formatter: CheckboxFormatter,
99
+ formatterParams: {
100
+ trueValueIcon: 'mdi mdi-check-circle',
101
+ falseValueIcon: 'mdi mdi-close-circle',
102
+ },
103
+ })
104
+ ```
105
+
106
+ ### UI Components
107
+
108
+ #### DropdownToolButton
109
+
110
+ A toolbar button with dropdown menu functionality.
111
+
112
+ ```typescript
113
+ const exportButton = new DropdownToolButton({
114
+ title: 'Export',
115
+ cssClass: 'export-dropdown',
116
+ items: [
117
+ { text: 'Export PDF', onClick: () => exportToPDF() },
118
+ { text: 'Export Excel', onClick: () => exportToExcel() },
119
+ ],
120
+ })
121
+ ```
122
+
123
+ ### Utility Functions
124
+
125
+ #### Date Utilities
126
+
127
+ ```typescript
128
+ import { toDateString, toSqlDateString, toBeginMonth, toEndMonth } from '@idevs/corelib'
129
+
130
+ const formatted = toDateString(new Date()) // "31/12/2024"
131
+ const sqlDate = toSqlDateString(new Date()) // "2024-12-31"
132
+ const monthStart = toBeginMonth('2024-06-15') // "2024-06-01"
133
+ const monthEnd = toEndMonth('2024-06-15') // "2024-06-30"
134
+ ```
135
+
136
+ #### DOM Utilities
137
+
138
+ ```typescript
139
+ import { getElementWidth, removeChildren, isOverflow } from '@idevs/corelib'
140
+
141
+ const width = getElementWidth(element)
142
+ removeChildren(containerElement)
143
+ const hasOverflow = isOverflow(element)
144
+ ```
145
+
146
+ #### Format Utilities
147
+
148
+ ```typescript
149
+ import {
150
+ toTimeString,
151
+ toDecimalString,
152
+ truncateString,
153
+ RoundingMethod,
154
+ roundByMethod,
155
+ } from '@idevs/corelib'
156
+
157
+ const time = toTimeString(150) // "02:30"
158
+ const decimal = toDecimalString(123.456, 2) // "123.46"
159
+ const short = truncateString('Long text here', 10) // "Long text…"
160
+ const rounded = roundByMethod('123.47', RoundingMethod.Quarter25) // 123.25
161
+ ```
162
+
163
+ ### Export Functionality
164
+
165
+ ```typescript
166
+ import { createExportToolButton, ExportOptions } from '@idevs/corelib'
167
+
168
+ const exportOptions: ExportOptions = {
169
+ grid: myDataGrid,
170
+ service: 'MyModule/MyService',
171
+ exportType: 'PDF',
172
+ title: 'Export PDF',
173
+ onClick: () => handleExport(),
174
+ }
175
+
176
+ const toolButton = createExportToolButton(exportOptions)
177
+ ```
178
+
179
+ ## Migration Guide
180
+
181
+ If you're upgrading from an earlier version:
182
+
183
+ ### Breaking Changes in v1.0.0
184
+
185
+ - Reorganized module structure with better separation of concerns
186
+ - Some utility functions moved to dedicated modules
187
+ - TypeScript strict mode enabled - may require type fixes
188
+ - ESLint rules updated - may require code style updates
189
+
190
+ ### Recommended Migration
191
+
192
+ 1. Update imports to use the new modular structure:
193
+
194
+ ```typescript
195
+ // Old
196
+ import { someFunction } from '@idevs/corelib/globals'
197
+
198
+ // New
199
+ import { someFunction } from '@idevs/corelib'
200
+ // or more specifically:
201
+ import { someFunction } from '@idevs/corelib/utils'
202
+ ```
203
+
204
+ 2. Consider using utility functions instead of prototype extensions:
205
+
206
+ ```typescript
207
+ // Instead of:
208
+ const result = someString.truncate(10)
209
+
210
+ // Consider:
211
+ import { truncateString } from '@idevs/corelib'
212
+ const result = truncateString(someString, 10)
213
+ ```
214
+
215
+ ## Development
216
+
217
+ ```bash
218
+ # Install dependencies
219
+ npm install
220
+
221
+ # Build the library
222
+ npm run build
223
+
224
+ # Watch for changes during development
225
+ npm run dev
226
+
227
+ # Run linting
228
+ npm run lint
229
+
230
+ # Format code
231
+ npm run format
232
+ ```
233
+
234
+ ## Contributing
235
+
236
+ Contributions are welcome! Please feel free to submit a Pull Request.
237
+
39
238
  ## License
40
239
 
41
240
  [MIT](https://choosealicense.com/licenses/mit/)
42
241
 
43
-
44
242
  ## Authors
45
243
 
46
- - [@klomkling](https://www.github.com/klomkling)
47
-
244
+ - [@klomkling](https://www.github.com/klomkling) - Sarawut Phaekuntod
@@ -1,4 +1,5 @@
1
- import { EditorProps, EditorWidget, IReadOnly } from '@serenity-is/corelib';
1
+ import { EditorWidget, IReadOnly } from '@serenity-is/corelib';
2
+ import type { EditorProps } from '@serenity-is/corelib';
2
3
  export type CheckboxButtonEditorOptions = {
3
4
  enumKey?: string;
4
5
  enumType?: any;
@@ -37,3 +38,4 @@ export declare class CheckboxButtonEditor<P extends CheckboxButtonEditorOptions
37
38
  export declare class idevsEditors {
38
39
  static load(): void;
39
40
  }
41
+ //# sourceMappingURL=checkboxButtonEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkboxButtonEditor.d.ts","sourceRoot":"","sources":["../../src/editors/checkboxButtonEditor.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,YAAY,EAKZ,SAAS,EAMV,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEvD,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,qBACa,oBAAoB,CAC7B,CAAC,SAAS,2BAA2B,GAAG,2BAA2B,CAErE,SAAQ,YAAY,CAAC,CAAC,CACtB,YAAW,SAAS;IAEpB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;WAErB,oBAAoB;IAGpC,SAAiB,OAAO,EAAE,WAAW,CAAA;gBAEzB,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;IAsCjC,SAAS,CAAC,gBAAgB;IAe1B,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAYjD,SAAS,IAAI,KAAK,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAI1C,IAAI,KAAK,IAAI,KAAK,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAEzC;IAED,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAK9C,IAAI,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,EAEzC;IAED,SAAS;IAWT,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAoB9B,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAElB;IAED,YAAY,IAAI,OAAO;IAIvB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;CAenC;AAED,qBAAa,YAAY;WAET,IAAI;CACnB"}
@@ -1,4 +1,5 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
3
  /* eslint-disable @typescript-eslint/adjacent-overload-signatures */
3
4
  // reference: https://github-wiki-see.page/m/serenity-is/Serenity/wiki/CheckBox-Group-Editor
4
5
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -7,36 +8,43 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
8
  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;
8
9
  return c > 3 && r && Object.defineProperty(target, key, r), r;
9
10
  };
10
- import { Decorators, EditorWidget, Enum, EnumKeyAttribute, EnumTypeRegistry, Fluent, getCustomAttributes, getLookup, isEmptyOrNull, toId, tryGetText, } from '@serenity-is/corelib';
11
- let CheckboxButtonEditor = class CheckboxButtonEditor extends EditorWidget {
11
+ var __metadata = (this && this.__metadata) || function (k, v) {
12
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.idevsEditors = exports.CheckboxButtonEditor = void 0;
16
+ const corelib_1 = require("@serenity-is/corelib");
17
+ let CheckboxButtonEditor = class CheckboxButtonEditor extends corelib_1.EditorWidget {
12
18
  static createDefaultElement() {
13
- return Fluent('div').getNode();
19
+ return (0, corelib_1.Fluent)('div').getNode();
14
20
  }
15
21
  constructor(props) {
16
22
  super(props);
17
- if (isEmptyOrNull(this.options.enumKey) && this.options.enumType == null && isEmptyOrNull(this.options.lookupKey)) {
23
+ if ((0, corelib_1.isEmptyOrNull)(this.options.enumKey) &&
24
+ this.options.enumType == null &&
25
+ (0, corelib_1.isEmptyOrNull)(this.options.lookupKey)) {
18
26
  return;
19
27
  }
20
28
  this._isStringId = this.options.isStringId;
21
- if (!isEmptyOrNull(this.options.lookupKey)) {
22
- const lookup = getLookup(this.options.lookupKey);
29
+ if (!(0, corelib_1.isEmptyOrNull)(this.options.lookupKey)) {
30
+ const lookup = (0, corelib_1.getLookup)(this.options.lookupKey);
23
31
  this._idField = lookup.idField;
24
32
  this._textField = lookup.textField;
25
33
  this.set_items(lookup.items);
26
34
  }
27
35
  else {
28
- const enumType = this.options.enumType || EnumTypeRegistry.get(this.options.enumKey);
36
+ const enumType = this.options.enumType || corelib_1.EnumTypeRegistry.get(this.options.enumKey);
29
37
  let enumKey = this.options.enumKey;
30
38
  if (enumKey == null && enumType != null) {
31
- const enumKeyAttr = getCustomAttributes(enumType, EnumKeyAttribute, false);
39
+ const enumKeyAttr = (0, corelib_1.getCustomAttributes)(enumType, corelib_1.EnumKeyAttribute, false);
32
40
  if (enumKeyAttr.length > 0) {
33
41
  enumKey = enumKeyAttr[0].value;
34
42
  }
35
43
  }
36
- const values = Enum.getValues(enumType);
44
+ const values = corelib_1.Enum.getValues(enumType);
37
45
  for (const x of values) {
38
- const name = Enum.toString(enumType, x);
39
- this.addCheckbox(x.toString(), tryGetText('Enums.' + enumKey + '.' + name) ?? name);
46
+ const name = corelib_1.Enum.toString(enumType, x);
47
+ this.addCheckbox(x.toString(), (0, corelib_1.tryGetText)('Enums.' + enumKey + '.' + name) ?? name);
40
48
  }
41
49
  }
42
50
  this.domNode.classList.add('d-flex', 'flex-wrap');
@@ -82,7 +90,7 @@ let CheckboxButtonEditor = class CheckboxButtonEditor extends EditorWidget {
82
90
  const val = [];
83
91
  const inputs = this.domNode.querySelectorAll('input:checked');
84
92
  inputs.forEach((input) => {
85
- val.push(this._isStringId ? input.value : toId(input.value));
93
+ val.push(this._isStringId ? input.value : (0, corelib_1.toId)(input.value));
86
94
  });
87
95
  return val.join(',');
88
96
  }
@@ -92,7 +100,7 @@ let CheckboxButtonEditor = class CheckboxButtonEditor extends EditorWidget {
92
100
  set_value(value) {
93
101
  if (value !== this.get_value()) {
94
102
  let values = [];
95
- if (!isEmptyOrNull(value)) {
103
+ if (!(0, corelib_1.isEmptyOrNull)(value)) {
96
104
  values = this._isStringId ? value.split(',') : value.split(',').map(p => Number(p));
97
105
  }
98
106
  const inputs = this.domNode.querySelectorAll('input');
@@ -131,12 +139,14 @@ let CheckboxButtonEditor = class CheckboxButtonEditor extends EditorWidget {
131
139
  }
132
140
  }
133
141
  };
134
- CheckboxButtonEditor = __decorate([
135
- Decorators.registerEditor('CheckboxButtonEditor')
142
+ exports.CheckboxButtonEditor = CheckboxButtonEditor;
143
+ exports.CheckboxButtonEditor = CheckboxButtonEditor = __decorate([
144
+ corelib_1.Decorators.registerEditor('CheckboxButtonEditor'),
145
+ __metadata("design:paramtypes", [Object])
136
146
  ], CheckboxButtonEditor);
137
- export { CheckboxButtonEditor };
138
- export class idevsEditors {
147
+ class idevsEditors {
139
148
  // eslint-disable-next-line @typescript-eslint/no-empty-function
140
149
  static load() { }
141
150
  }
151
+ exports.idevsEditors = idevsEditors;
142
152
  //# sourceMappingURL=checkboxButtonEditor.js.map
@@ -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":";AAAA,uDAAuD;AACvD,oEAAoE;AACpE,4FAA4F;;;;;;;;;;;;AAE5F,kDAa6B;AAWtB,IAAM,oBAAoB,GAA1B,MAAM,oBAGX,SAAQ,sBAAe;IAQvB,MAAM,CAAU,oBAAoB;QAClC,OAAO,IAAA,gBAAM,EAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAA;IAChC,CAAC;IAGD,YAAY,KAAqB;QAC/B,KAAK,CAAC,KAAK,CAAC,CAAA;QAEZ,IACE,IAAA,uBAAa,EAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI;YAC7B,IAAA,uBAAa,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EACrC,CAAC;YACD,OAAM;QACR,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAA;QAE1C,IAAI,CAAC,IAAA,uBAAa,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAA,mBAAS,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YAChD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAA;YAC9B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAA;YAClC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAsC,CAAC,CAAA;QAC/D,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,0BAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACpF,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;YAElC,IAAI,OAAO,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACxC,MAAM,WAAW,GAAG,IAAA,6BAAmB,EAAC,QAAQ,EAAE,0BAAgB,EAAE,KAAK,CAAC,CAAA;gBAC1E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;gBAChC,CAAC;YACH,CAAC;YACD,MAAM,MAAM,GAAG,cAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;YACvC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,cAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;gBACvC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAA,oBAAU,EAAC,QAAQ,GAAG,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAA;YACrF,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;IACnD,CAAC;IAES,gBAAgB;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;QACtD,SAAS,CAAC,OAAO,CAAC,UAAU,KAAK;YAC/B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QACjC,CAAC,CAAC,CAAA;QAEF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YACvC,MAAM,IAAI,GAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAA;YAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACnC,MAAM,EAAE,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;YACpD,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAES,WAAW,CAAC,KAAa,EAAE,IAAY;QAC/C,MAAM,GAAG,GAAG,CAAC,CAAC,mDAAmD,CAAC,CAAA;QAClE,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAC9E,CAAC,CAAC,wCAAwC,CAAC;aACxC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC;aAC7B,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,KAAK,CAAC;aACzC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;aACpB,SAAS,CAAC,KAAK,CAAC,CAAA;QACnB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QACnB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,SAAS,EAAE,CAAA;IACzB,CAAC;IAED,SAAS,CAAC,KAAoC;QAC5C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,gBAAgB,EAAE,CAAA;IACzB,CAAC;IAED,IAAI,KAAK,CAAC,CAAgC;QACxC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,SAAS;QACP,MAAM,GAAG,GAAa,EAAE,CAAA;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAA;QAE7D,MAAM,CAAC,OAAO,CAAC,CAAC,KAAuB,EAAE,EAAE;YACzC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,cAAI,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;QAEF,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACtB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,SAAS,EAAE,CAAA;IACzB,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YAC/B,IAAI,MAAM,GAAc,EAAE,CAAA;YAC1B,IAAI,CAAC,IAAA,uBAAa,EAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YACrF,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAmB,OAAO,CAAC,CAAA;YACvE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACrB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAA;YACvB,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACjB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAE,KAA0B,CAAC,KAAK,KAAK,CAAC,CAAC,CAAA;gBAC1F,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,CAAC;oBAAC,MAAM,CAAC,CAAC,CAAsB,CAAC,OAAO,GAAG,IAAI,CAAA;gBACjD,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,CAAS;QACjB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,IAAI,CAAA;IACtD,CAAC;IAED,YAAY,CAAC,KAAc;QACzB,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;YAClC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;gBACjD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAmB,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACvE,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;gBACxC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAmB,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACvE,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;gBACnC,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA;AA5JY,oDAAoB;+BAApB,oBAAoB;IADhC,oBAAU,CAAC,cAAc,CAAC,sBAAsB,CAAC;;GACrC,oBAAoB,CA4JhC;AAED,MAAa,YAAY;IACvB,gEAAgE;IACzD,MAAM,CAAC,IAAI,KAAI,CAAC;CACxB;AAHD,oCAGC"}
@@ -1,4 +1,5 @@
1
- import { EditorProps, SelectEditor, SelectEditorOptions } from '@serenity-is/corelib';
1
+ import { SelectEditor, SelectEditorOptions } from '@serenity-is/corelib';
2
+ import type { EditorProps } from '@serenity-is/corelib';
2
3
  export declare class DateMonthEditor<P extends DateMonthEditorOptions = DateMonthEditorOptions> extends SelectEditor<P> {
3
4
  private months;
4
5
  constructor(props: EditorProps<P>);
@@ -10,3 +11,4 @@ export interface DateMonthEditorOptions extends SelectEditorOptions {
10
11
  locale?: 'en' | 'th';
11
12
  upperCase?: boolean;
12
13
  }
14
+ //# sourceMappingURL=dateMonthEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateMonthEditor.d.ts","sourceRoot":"","sources":["../../src/editors/dateMonthEditor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,mBAAmB,EAAW,MAAM,sBAAsB,CAAA;AAC7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEvD,qBACa,eAAe,CAC1B,CAAC,SAAS,sBAAsB,GAAG,sBAAsB,CACzD,SAAQ,YAAY,CAAC,CAAC,CAAC;IACvB,OAAO,CAAC,MAAM,CAAU;gBAEZ,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;IAMjC,IAAI,YAAY,WAEf;IAED,QAAQ;CAuBT;AAGD,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;IACtC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB"}
@@ -1,17 +1,23 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
3
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
4
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
5
  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
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
7
  };
7
- import { Decorators, SelectEditor, indexOf } from '@serenity-is/corelib';
8
- let DateMonthEditor = class DateMonthEditor extends SelectEditor {
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.DateMonthEditor = void 0;
13
+ const corelib_1 = require("@serenity-is/corelib");
14
+ let DateMonthEditor = class DateMonthEditor extends corelib_1.SelectEditor {
9
15
  constructor(props) {
10
16
  super(props);
11
17
  this.updateItems();
12
18
  }
13
19
  get valueAsMonth() {
14
- return indexOf(this.months, x => x == this.value);
20
+ return (0, corelib_1.indexOf)(this.months, x => x == this.value);
15
21
  }
16
22
  getItems() {
17
23
  const opt = this.options;
@@ -33,8 +39,9 @@ let DateMonthEditor = class DateMonthEditor extends SelectEditor {
33
39
  return this.months;
34
40
  }
35
41
  };
36
- DateMonthEditor = __decorate([
37
- Decorators.registerEditor('DateMonthEditor')
42
+ exports.DateMonthEditor = DateMonthEditor;
43
+ exports.DateMonthEditor = DateMonthEditor = __decorate([
44
+ corelib_1.Decorators.registerEditor('DateMonthEditor'),
45
+ __metadata("design:paramtypes", [Object])
38
46
  ], DateMonthEditor);
39
- export { DateMonthEditor };
40
47
  //# sourceMappingURL=dateMonthEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dateMonthEditor.js","sourceRoot":"","sources":["../../src/editors/dateMonthEditor.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAe,YAAY,EAAuB,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAGnG,IAAM,eAAe,GAArB,MAAM,eAA2E,SAAQ,YAAe;IAG7G,YAAY,KAAqB;QAC/B,KAAK,CAAC,KAAK,CAAC,CAAA;QAEZ,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;IACnD,CAAC;IAED,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,OAAiC,CAAA;QAElD,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC/C,OAAO,GAAG,CAAC,KAAK,CAAA;QAClB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;QAChB,MAAM,MAAM,GAAG,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"]}
1
+ {"version":3,"file":"dateMonthEditor.js","sourceRoot":"","sources":["../../src/editors/dateMonthEditor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAA6F;AAItF,IAAM,eAAe,GAArB,MAAM,eAEX,SAAQ,sBAAe;IAGvB,YAAY,KAAqB;QAC/B,KAAK,CAAC,KAAK,CAAC,CAAA;QAEZ,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAA,iBAAO,EAAC,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;AAtCY,0CAAe;0BAAf,eAAe;IAD3B,oBAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC;;GAChC,eAAe,CAsC3B"}
@@ -1,2 +1,3 @@
1
- export * from './checkboxButtonEditor';
1
+ export * from './checkboxButtonEditor';
2
2
  export * from './dateMonthEditor';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/editors/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA"}
@@ -1,3 +1,19 @@
1
- export * from './checkboxButtonEditor';
2
- export * from './dateMonthEditor';
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./checkboxButtonEditor"), exports);
18
+ __exportStar(require("./dateMonthEditor"), exports);
3
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/editors/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA","sourcesContent":["export * from './checkboxButtonEditor'\nexport * from './dateMonthEditor'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/editors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAsC;AACtC,oDAAiC"}
@@ -1,4 +1,4 @@
1
- import { FormatterContext } from '@serenity-is/sleekgrid';
1
+ import { FormatterContext } from '@serenity-is/sleekgrid';
2
2
  export type Formatter = {
3
3
  format(ctx: FormatterContext): string;
4
4
  };
@@ -62,3 +62,4 @@ export declare class DateMonthFormatter implements Formatter {
62
62
  export declare class idevsFormatters {
63
63
  static load(): void;
64
64
  }
65
+ //# sourceMappingURL=formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/formatters/formatters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAGzD,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAAA;CACtC,CAAA;AAED,qBACa,oBAAqB,YAAW,SAAS;aACxB,KAAK,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;gBAA/B,KAAK,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO;IAKhE,IAAI,WAAW,IAGQ,MAAM,CAD5B;IACD,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAE5B;IAED,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM;IAIrC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;CAQzD;AAED,qBACa,iBAAkB,YAAW,SAAS;aAE/B,KAAK,EAAE;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,cAAc,CAAC,EAAE,MAAM,CAAA;KACxB;gBANe,KAAK,EAAE;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,cAAc,CAAC,EAAE,MAAM,CAAA;KACxB;IASH,IAAI,QAAQ,IAGQ,MAAM,CADzB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEzB;IAED,IAAI,QAAQ,IAGQ,MAAM,CADzB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEzB;IAED,IAAI,SAAS,IAGQ,MAAM,CAD1B;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,EAE1B;IAED,IAAI,aAAa,IAGQ,MAAM,CAD9B;IACD,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,EAE9B;IAED,IAAI,cAAc,IAGQ,MAAM,CAD/B;IACD,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,EAE/B;IAED,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM;IAWrC,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM;CASV;AAED,qBACa,eAAgB,YAAW,SAAS;aACnB,KAAK,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;gBAA7B,KAAK,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IAI9D,IAAI,SAAS,IAGQ,MAAM,CAD1B;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,EAE1B;IAED,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM;IAKrC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;CAwBpD;AAED,qBACa,kBAAmB,YAAW,SAAS;IAE3C,OAAO,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;IAGrC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;IAE1B,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM;CAStC;AAED,qBAAa,eAAe;WAEZ,IAAI;CACnB"}