@windwalker-io/unicorn-next 0.1.18 → 0.1.21

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 (108) hide show
  1. package/dist/chunks/_arrayPush.js +325 -108
  2. package/dist/chunks/_arrayPush.js.map +1 -1
  3. package/dist/chunks/_baseRest.js +155 -60
  4. package/dist/chunks/_baseRest.js.map +1 -1
  5. package/dist/chunks/_baseUnary.js +463 -0
  6. package/dist/chunks/_baseUnary.js.map +1 -0
  7. package/dist/chunks/_getPrototype.js +292 -100
  8. package/dist/chunks/_getPrototype.js.map +1 -1
  9. package/dist/chunks/alert-adapter.js +29 -0
  10. package/dist/chunks/alert-adapter.js.map +1 -0
  11. package/dist/chunks/alert.js +21 -0
  12. package/dist/chunks/alert.js.map +1 -0
  13. package/dist/chunks/arr.js +24 -0
  14. package/dist/chunks/arr.js.map +1 -0
  15. package/dist/chunks/button-radio.js +127 -145
  16. package/dist/chunks/button-radio.js.map +1 -1
  17. package/dist/chunks/checkboxes-multi-select.js +44 -43
  18. package/dist/chunks/checkboxes-multi-select.js.map +1 -1
  19. package/dist/chunks/chunk.js +24 -0
  20. package/dist/chunks/cloneDeep.js +679 -212
  21. package/dist/chunks/cloneDeep.js.map +1 -1
  22. package/dist/chunks/cropper.min.js +6 -5
  23. package/dist/chunks/cropper.min.js.map +1 -1
  24. package/dist/chunks/crypto.js +26 -0
  25. package/dist/chunks/crypto.js.map +1 -0
  26. package/dist/chunks/data.js +49 -0
  27. package/dist/chunks/data.js.map +1 -0
  28. package/dist/chunks/dom.js +128 -0
  29. package/dist/chunks/dom.js.map +1 -0
  30. package/dist/chunks/events.js +270 -0
  31. package/dist/chunks/events.js.map +1 -0
  32. package/dist/chunks/field-cascade-select.js +207 -250
  33. package/dist/chunks/field-cascade-select.js.map +1 -1
  34. package/dist/chunks/field-file-drag.js +175 -209
  35. package/dist/chunks/field-file-drag.js.map +1 -1
  36. package/dist/chunks/field-flatpickr.js +94 -898
  37. package/dist/chunks/field-flatpickr.js.map +1 -1
  38. package/dist/chunks/field-modal-select.js +728 -467
  39. package/dist/chunks/field-modal-select.js.map +1 -1
  40. package/dist/chunks/field-modal-tree.js +771 -766
  41. package/dist/chunks/field-modal-tree.js.map +1 -1
  42. package/dist/chunks/field-multi-uploader.js +249 -256
  43. package/dist/chunks/field-multi-uploader.js.map +1 -1
  44. package/dist/chunks/field-repeatable.js +111 -127
  45. package/dist/chunks/field-repeatable.js.map +1 -1
  46. package/dist/chunks/field-single-image-drag.js +286 -338
  47. package/dist/chunks/field-single-image-drag.js.map +1 -1
  48. package/dist/chunks/form.js +146 -159
  49. package/dist/chunks/form.js.map +1 -1
  50. package/dist/chunks/grid.js +349 -418
  51. package/dist/chunks/grid.js.map +1 -1
  52. package/dist/chunks/helper.js +39 -0
  53. package/dist/chunks/helper.js.map +1 -0
  54. package/dist/chunks/http-client.js +221 -211
  55. package/dist/chunks/http-client.js.map +1 -1
  56. package/dist/chunks/iframe-modal.js +95 -115
  57. package/dist/chunks/iframe-modal.js.map +1 -1
  58. package/dist/chunks/keep-tab.js +92 -101
  59. package/dist/chunks/keep-tab.js.map +1 -1
  60. package/dist/chunks/lang.js +250 -0
  61. package/dist/chunks/lang.js.map +1 -0
  62. package/dist/chunks/legacy.js +197 -201
  63. package/dist/chunks/legacy.js.map +1 -1
  64. package/dist/chunks/list-dependent.js +195 -228
  65. package/dist/chunks/list-dependent.js.map +1 -1
  66. package/dist/chunks/loader.js +106 -0
  67. package/dist/chunks/loader.js.map +1 -0
  68. package/dist/chunks/monthSelect.js +251 -0
  69. package/dist/chunks/monthSelect.js.map +1 -0
  70. package/dist/chunks/router.js +111 -0
  71. package/dist/chunks/router.js.map +1 -0
  72. package/dist/chunks/s3-multipart-uploader.js +183 -210
  73. package/dist/chunks/s3-multipart-uploader.js.map +1 -1
  74. package/dist/chunks/s3-uploader.js +106 -128
  75. package/dist/chunks/s3-uploader.js.map +1 -1
  76. package/dist/chunks/show-on.js +358 -205
  77. package/dist/chunks/show-on.js.map +1 -1
  78. package/dist/chunks/timing.js +10 -0
  79. package/dist/chunks/timing.js.map +1 -0
  80. package/dist/chunks/tinymce.js +153 -203
  81. package/dist/chunks/tinymce.js.map +1 -1
  82. package/dist/chunks/ui-bootstrap5.js +58 -72
  83. package/dist/chunks/ui-bootstrap5.js.map +1 -1
  84. package/dist/chunks/ui.js +320 -0
  85. package/dist/chunks/ui.js.map +1 -0
  86. package/dist/chunks/unicorn.js.map +1 -1
  87. package/dist/chunks/useQueue.js +111 -0
  88. package/dist/chunks/useQueue.js.map +1 -0
  89. package/dist/chunks/useStack.js +76 -0
  90. package/dist/chunks/useStack.js.map +1 -0
  91. package/dist/chunks/validation.js +761 -853
  92. package/dist/chunks/validation.js.map +1 -1
  93. package/dist/editor.css +1 -1
  94. package/dist/index.d.ts +27 -15
  95. package/dist/multi-level-menu.css +1 -1
  96. package/dist/switcher.css +1 -1
  97. package/dist/unicorn.js +805 -130
  98. package/dist/unicorn.js.map +1 -1
  99. package/package.json +3 -3
  100. package/src/composable/useBsModalAlert.ts +92 -12
  101. package/src/composable/useHttp.ts +13 -1
  102. package/src/module/s3-uploader.ts +1 -1
  103. package/src/service/ui.ts +31 -15
  104. package/vite.config.ts +5 -1
  105. package/dist/chunks/_commonjsHelpers.js +0 -7
  106. package/dist/chunks/index.js +0 -314
  107. package/dist/chunks/isArguments.js +0 -146
  108. package/dist/chunks/unicorn.js +0 -2580
@@ -1,256 +1,213 @@
1
- import { g as getDefaultExportFromCjs } from "./_commonjsHelpers.js";
2
- import { a9 as prepareAlpineDefer, f as initAlpineComponent, a6 as mergeDeep, K as uid, z as module$1, u as useHttpClient } from "./unicorn.js";
3
- var alpineComponent = {};
4
- var hasRequiredAlpineComponent;
5
- function requireAlpineComponent() {
6
- if (hasRequiredAlpineComponent) return alpineComponent;
7
- hasRequiredAlpineComponent = 1;
8
- Object.defineProperty(alpineComponent, "__esModule", { value: true });
9
- class AlpineComponent2 {
10
- }
11
- alpineComponent.default = AlpineComponent2;
12
- return alpineComponent;
1
+ import { n as __toESM, t as __commonJSMin } from "./chunk.js";
2
+ import { t as mergeDeep } from "./arr.js";
3
+ import { c as module } from "./dom.js";
4
+ import { o as initAlpineComponent, u as prepareAlpineDefer } from "./ui.js";
5
+ import { i as uid } from "./crypto.js";
6
+ import { useHttpClient } from "../unicorn.js";
7
+ //#region ../../../../node_modules/@rubenbimmel/alpine-class-component/dist/alpineComponent.js
8
+ var require_alpineComponent = /* @__PURE__ */ __commonJSMin(((exports) => {
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ var AlpineComponent = class {};
11
+ exports.default = AlpineComponent;
12
+ }));
13
+ //#endregion
14
+ //#region ../../../../node_modules/@rubenbimmel/alpine-class-component/dist/decorators/component.js
15
+ var require_component = /* @__PURE__ */ __commonJSMin(((exports) => {
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ function Component(component) {
18
+ return function(...args) {
19
+ let instance = new component(...args);
20
+ const proto = component.prototype;
21
+ let data = {};
22
+ Object.getOwnPropertyNames(proto).forEach(function(key) {
23
+ if (key === "constructor") return;
24
+ const descriptor = Object.getOwnPropertyDescriptor(proto, key);
25
+ if (descriptor.value !== void 0) {
26
+ if (typeof descriptor.value === "function") data[key] = descriptor.value;
27
+ } else if (descriptor.get || descriptor.set) Object.defineProperty(data, key, {
28
+ get: descriptor.get,
29
+ set: descriptor.set
30
+ });
31
+ });
32
+ return Object.assign(data, instance);
33
+ };
34
+ }
35
+ exports.default = Component;
36
+ }));
37
+ //#endregion
38
+ //#region \0@oxc-project+runtime@0.124.0/helpers/decorateMetadata.js
39
+ var import_alpineComponent = /* @__PURE__ */ __toESM(/* @__PURE__ */ require_alpineComponent(), 1);
40
+ var import_component = /* @__PURE__ */ __toESM(/* @__PURE__ */ require_component(), 1);
41
+ function __decorateMetadata(k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
13
43
  }
14
- var alpineComponentExports = /* @__PURE__ */ requireAlpineComponent();
15
- const AlpineComponent = /* @__PURE__ */ getDefaultExportFromCjs(alpineComponentExports);
16
- var component = {};
17
- var hasRequiredComponent;
18
- function requireComponent() {
19
- if (hasRequiredComponent) return component;
20
- hasRequiredComponent = 1;
21
- Object.defineProperty(component, "__esModule", { value: true });
22
- function Component2(component2) {
23
- return function(...args) {
24
- let instance = new component2(...args);
25
- const proto = component2.prototype;
26
- let data = {};
27
- Object.getOwnPropertyNames(proto).forEach(function(key) {
28
- if (key === "constructor") {
29
- return;
30
- }
31
- const descriptor = Object.getOwnPropertyDescriptor(proto, key);
32
- if (descriptor.value !== void 0) {
33
- if (typeof descriptor.value === "function") {
34
- data[key] = descriptor.value;
35
- }
36
- } else if (descriptor.get || descriptor.set) {
37
- Object.defineProperty(data, key, { get: descriptor.get, set: descriptor.set });
38
- }
39
- });
40
- return Object.assign(data, instance);
41
- };
42
- }
43
- component.default = Component2;
44
- return component;
44
+ //#endregion
45
+ //#region \0@oxc-project+runtime@0.124.0/helpers/decorate.js
46
+ function __decorate(decorators, target, key, desc) {
47
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
48
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49
+ 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;
50
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
45
51
  }
46
- var componentExports = /* @__PURE__ */ requireComponent();
47
- const Component = /* @__PURE__ */ getDefaultExportFromCjs(componentExports);
48
- var __getOwnPropDesc = /* @__PURE__ */ (() => Object.getOwnPropertyDescriptor)();
49
- var __decorateClass = (decorators, target, key, kind) => {
50
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
51
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
52
- if (decorator = decorators[i])
53
- result = decorator(result) || result;
54
- return result;
52
+ //#endregion
53
+ //#region src/module/field-cascade-select.ts
54
+ var _ref;
55
+ var defaultOptions = {
56
+ id: "",
57
+ selected: "",
58
+ path: [],
59
+ ignoreSelf: null,
60
+ placeholder: "- Select -",
61
+ placeholders: [],
62
+ ajaxUrl: "",
63
+ ajaxValueField: "value",
64
+ source: [],
65
+ labels: [],
66
+ labelWidth: "col-md-3",
67
+ fieldWidth: "col",
68
+ readonly: false,
69
+ disabled: false,
70
+ valueField: "id",
71
+ textField: "title",
72
+ horizontal: null,
73
+ horizontalColWidth: null,
74
+ defaultValue: "",
75
+ onSelectInit: () => {},
76
+ onChange: () => {},
77
+ onValueInit: () => {}
55
78
  };
56
- const defaultOptions = {
57
- id: "",
58
- selected: "",
59
- path: [],
60
- ignoreSelf: null,
61
- placeholder: "- Select -",
62
- placeholders: [],
63
- ajaxUrl: "",
64
- ajaxValueField: "value",
65
- source: [],
66
- labels: [],
67
- labelWidth: "col-md-3",
68
- fieldWidth: "col",
69
- readonly: false,
70
- disabled: false,
71
- valueField: "id",
72
- textField: "title",
73
- horizontal: null,
74
- horizontalColWidth: null,
75
- defaultValue: "",
76
- onSelectInit: () => {
77
- },
78
- onChange: () => {
79
- },
80
- onValueInit: () => {
81
- }
79
+ var FieldCascadeSelect = class FieldCascadeSelect extends import_alpineComponent.default {
80
+ options;
81
+ el;
82
+ canModify = false;
83
+ lists = [];
84
+ ajaxUrl = "";
85
+ values = [];
86
+ constructor(options = {}) {
87
+ super();
88
+ this.options = mergeDeep({}, defaultOptions, options);
89
+ this.options.id = this.options.id || "cascade-select-" + uid();
90
+ }
91
+ init() {
92
+ this.canModify = !this.options.readonly && !this.options.disabled;
93
+ this.ajaxUrl = this.options.ajaxUrl;
94
+ this.values = this.options.path.slice().map(String);
95
+ let values = this.options.path.slice();
96
+ if (values.length === 0) values = [null];
97
+ else values.unshift(null);
98
+ let promise = Promise.resolve();
99
+ let lastValue = null;
100
+ values.forEach((v, i) => {
101
+ promise = promise.then(() => {
102
+ return this.loadItems(v, i).then((list) => {
103
+ if (list.length > 0) this.lists.push(list);
104
+ });
105
+ });
106
+ lastValue = v;
107
+ });
108
+ this.el = this.$el;
109
+ module(this.$el, "cascade.select", () => this);
110
+ this.valueInit(this.$el, lastValue, values);
111
+ }
112
+ getLabel(i) {
113
+ return this.options.labels[i] || `Level ${i + 1}`;
114
+ }
115
+ getId(i) {
116
+ return `${this.options.id}__level-${i}`;
117
+ }
118
+ getListValue(i) {
119
+ return this.values[i] || "";
120
+ }
121
+ isSelected(i, item) {
122
+ return String(this.getListValue(i)) === String(item[this.options.valueField]);
123
+ }
124
+ getFinalValue() {
125
+ const values = this.values.slice();
126
+ if (values.length === 0) return this.options.defaultValue;
127
+ const v = values.filter((v) => v != null).filter((v) => v !== "").pop();
128
+ if (v == void 0) return this.options.defaultValue;
129
+ return v;
130
+ }
131
+ getLevel() {
132
+ return this.values.length;
133
+ }
134
+ async onChange(i, event) {
135
+ const el = event.target;
136
+ this.values[i] = el.value;
137
+ this.options.onChange(event);
138
+ event.stopPropagation();
139
+ const changeEvent = new CustomEvent("change", { detail: {
140
+ el,
141
+ component: this,
142
+ value: el.value,
143
+ path: this.values
144
+ } });
145
+ this.el?.dispatchEvent(changeEvent);
146
+ if (el.value === "") {
147
+ this.lists.splice(i + 1);
148
+ this.values.splice(i + 1);
149
+ return;
150
+ }
151
+ let list = await this.loadItems(el.value, i);
152
+ this.lists.splice(i + 1);
153
+ this.values.splice(i + 1);
154
+ if (list.length > 0) this.lists.push(list);
155
+ }
156
+ async loadItems(parentId, i) {
157
+ if (this.ajaxUrl) return await (await (await useHttpClient()).get(this.ajaxUrl, { params: {
158
+ [this.options.ajaxValueField]: parentId,
159
+ self: this.options.ignoreSelf || null
160
+ } })).data.data;
161
+ if (parentId) return Promise.resolve(this.handleSourceItems(this.findFromList(this.lists[i - 1] || [], parentId)?.children || []));
162
+ return Promise.resolve(this.handleSourceItems(this.options.source));
163
+ }
164
+ valueInit($select, value, path) {
165
+ const event = new CustomEvent("value.init", { detail: {
166
+ el: $select,
167
+ component: this,
168
+ value,
169
+ path
170
+ } });
171
+ this.options.onSelectInit(event);
172
+ this.$el.dispatchEvent(event);
173
+ }
174
+ selectInit($select) {
175
+ const event = new CustomEvent("select.init", { detail: {
176
+ el: $select,
177
+ component: this
178
+ } });
179
+ this.options.onSelectInit(event);
180
+ this.$el.dispatchEvent(event);
181
+ }
182
+ handleSourceItems(items) {
183
+ return items.map((item) => {
184
+ return {
185
+ [this.options.valueField]: item.value[this.options.valueField],
186
+ [this.options.textField]: item.value[this.options.textField],
187
+ children: item.children
188
+ };
189
+ }).filter((item) => {
190
+ if (this.options.ignoreSelf) return item[this.options.valueField] != this.options.ignoreSelf;
191
+ return item;
192
+ });
193
+ }
194
+ findFromList(items, value) {
195
+ return items.filter((item) => item[this.options.valueField] == value).shift();
196
+ }
197
+ getPlaceholder(i) {
198
+ if (this.options.placeholders[i]) return this.options.placeholders[i];
199
+ return this.options.placeholder;
200
+ }
82
201
  };
83
- let FieldCascadeSelect = class extends AlpineComponent {
84
- options;
85
- el;
86
- canModify = false;
87
- lists = [];
88
- ajaxUrl = "";
89
- values = [];
90
- constructor(options = {}) {
91
- super();
92
- this.options = mergeDeep({}, defaultOptions, options);
93
- this.options.id = this.options.id || "cascade-select-" + uid();
94
- }
95
- init() {
96
- this.canModify = !this.options.readonly && !this.options.disabled;
97
- this.ajaxUrl = this.options.ajaxUrl;
98
- this.values = this.options.path.slice().map(String);
99
- let values = this.options.path.slice();
100
- if (values.length === 0) {
101
- values = [null];
102
- } else {
103
- values.unshift(null);
104
- }
105
- let promise = Promise.resolve();
106
- let lastValue = null;
107
- values.forEach((v, i) => {
108
- promise = promise.then(() => {
109
- return this.loadItems(v, i).then((list) => {
110
- if (list.length > 0) {
111
- this.lists.push(list);
112
- }
113
- });
114
- });
115
- lastValue = v;
116
- });
117
- this.el = this.$el;
118
- module$1(this.$el, "cascade.select", () => this);
119
- this.valueInit(this.$el, lastValue, values);
120
- }
121
- getLabel(i) {
122
- return this.options.labels[i] || `Level ${i + 1}`;
123
- }
124
- getId(i) {
125
- return `${this.options.id}__level-${i}`;
126
- }
127
- getListValue(i) {
128
- return this.values[i] || "";
129
- }
130
- isSelected(i, item) {
131
- return String(this.getListValue(i)) === String(item[this.options.valueField]);
132
- }
133
- getFinalValue() {
134
- const values = this.values.slice();
135
- if (values.length === 0) {
136
- return this.options.defaultValue;
137
- }
138
- const v = values.filter((v2) => v2 != null).filter((v2) => v2 !== "").pop();
139
- if (v == void 0) {
140
- return this.options.defaultValue;
141
- }
142
- return v;
143
- }
144
- getLevel() {
145
- return this.values.length;
146
- }
147
- async onChange(i, event) {
148
- const el = event.target;
149
- this.values[i] = el.value;
150
- this.options.onChange(event);
151
- event.stopPropagation();
152
- const changeEvent = new CustomEvent("change", {
153
- detail: {
154
- el,
155
- component: this,
156
- value: el.value,
157
- path: this.values
158
- }
159
- });
160
- this.el?.dispatchEvent(changeEvent);
161
- if (el.value === "") {
162
- this.lists.splice(i + 1);
163
- this.values.splice(i + 1);
164
- return;
165
- }
166
- let list = await this.loadItems(el.value, i);
167
- this.lists.splice(i + 1);
168
- this.values.splice(i + 1);
169
- if (list.length > 0) {
170
- this.lists.push(list);
171
- }
172
- }
173
- async loadItems(parentId, i) {
174
- if (this.ajaxUrl) {
175
- const http = await useHttpClient();
176
- let res = await http.get(
177
- this.ajaxUrl,
178
- {
179
- params: {
180
- [this.options.ajaxValueField]: parentId,
181
- self: this.options.ignoreSelf || null
182
- }
183
- }
184
- );
185
- return await res.data.data;
186
- }
187
- if (parentId) {
188
- return Promise.resolve(
189
- this.handleSourceItems(
190
- this.findFromList(this.lists[i - 1] || [], parentId)?.children || []
191
- )
192
- );
193
- }
194
- return Promise.resolve(this.handleSourceItems(this.options.source));
195
- }
196
- valueInit($select, value, path) {
197
- const event = new CustomEvent("value.init", {
198
- detail: {
199
- el: $select,
200
- component: this,
201
- value,
202
- path
203
- }
204
- });
205
- this.options.onSelectInit(event);
206
- this.$el.dispatchEvent(event);
207
- }
208
- selectInit($select) {
209
- const event = new CustomEvent("select.init", {
210
- detail: {
211
- el: $select,
212
- component: this
213
- }
214
- });
215
- this.options.onSelectInit(event);
216
- this.$el.dispatchEvent(event);
217
- }
218
- handleSourceItems(items) {
219
- return items.map((item) => {
220
- return {
221
- [this.options.valueField]: item.value[this.options.valueField],
222
- [this.options.textField]: item.value[this.options.textField],
223
- children: item.children
224
- };
225
- }).filter((item) => {
226
- if (this.options.ignoreSelf) {
227
- return item[this.options.valueField] != this.options.ignoreSelf;
228
- }
229
- return item;
230
- });
231
- }
232
- findFromList(items, value) {
233
- const found = items.filter((item) => item[this.options.valueField] == value);
234
- return found.shift();
235
- }
236
- getPlaceholder(i) {
237
- if (this.options.placeholders[i]) {
238
- return this.options.placeholders[i];
239
- }
240
- return this.options.placeholder;
241
- }
242
- };
243
- FieldCascadeSelect = /* @__PURE__ */ __decorateClass([
244
- Component
245
- ], FieldCascadeSelect);
202
+ FieldCascadeSelect = /* @__PURE__ */ __decorate([import_component.default, /* @__PURE__ */ __decorateMetadata("design:paramtypes", [typeof (_ref = typeof Partial !== "undefined" && Partial) === "function" ? _ref : Object])], FieldCascadeSelect);
246
203
  async function init() {
247
- await prepareAlpineDefer(() => {
248
- Alpine.data("CascadeSelect", (options) => new FieldCascadeSelect(options));
249
- });
250
- await initAlpineComponent("data-cascade-select");
204
+ await prepareAlpineDefer(() => {
205
+ Alpine.data("CascadeSelect", (options) => new FieldCascadeSelect(options));
206
+ });
207
+ await initAlpineComponent("data-cascade-select");
251
208
  }
252
- const ready = /* @__PURE__ */ init();
253
- export {
254
- ready
255
- };
256
- //# sourceMappingURL=field-cascade-select.js.map
209
+ var ready = /* @__PURE__ */ init();
210
+ //#endregion
211
+ export { ready };
212
+
213
+ //# sourceMappingURL=field-cascade-select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"field-cascade-select.js","sources":["../../../../../../node_modules/@rubenbimmel/alpine-class-component/dist/alpineComponent.js","../../../../../../node_modules/@rubenbimmel/alpine-class-component/dist/decorators/component.js","../../src/module/field-cascade-select.ts"],"sourcesContent":["\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nclass AlpineComponent {\r\n}\r\nexports.default = AlpineComponent;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction Component(component) {\r\n return function (...args) {\r\n let instance = new component(...args);\r\n const proto = component.prototype;\r\n let data = {};\r\n Object.getOwnPropertyNames(proto).forEach(function (key) {\r\n if (key === 'constructor') {\r\n return;\r\n }\r\n const descriptor = Object.getOwnPropertyDescriptor(proto, key);\r\n if (descriptor.value !== void 0) {\r\n if (typeof descriptor.value === 'function') {\r\n data[key] = descriptor.value;\r\n }\r\n }\r\n else if (descriptor.get || descriptor.set) {\r\n Object.defineProperty(data, key, { get: descriptor.get, set: descriptor.set });\r\n }\r\n });\r\n return Object.assign(data, instance);\r\n };\r\n}\r\nexports.default = Component;\r\n","import AlpineComponent from '@rubenbimmel/alpine-class-component/dist/alpineComponent';\nimport Component from '@rubenbimmel/alpine-class-component/dist/decorators/component';\nimport { useHttpClient } from '../composable';\nimport { initAlpineComponent, module, prepareAlpineDefer, uid } from '../service';\nimport { mergeDeep } from '../utilities';\n\ninterface CascadeSelectOptions {\n id: string;\n selected: string;\n path: string[];\n ignoreSelf: boolean | null;\n placeholder: string;\n placeholders: string[];\n ajaxUrl: string;\n ajaxValueField: string;\n source: string[];\n labels: string[];\n labelWidth: string;\n fieldWidth: string;\n readonly: boolean;\n disabled: boolean;\n valueField: string;\n textField: string;\n horizontal: boolean | null;\n horizontalColWidth: string | null;\n defaultValue: string;\n onSelectInit: Function,\n onChange: Function,\n onValueInit: Function,\n}\n\nconst defaultOptions = {\n id: '',\n selected: '',\n path: [],\n ignoreSelf: null,\n placeholder: '- Select -',\n placeholders: [],\n ajaxUrl: '',\n ajaxValueField: 'value',\n source: [],\n labels: [],\n labelWidth: 'col-md-3',\n fieldWidth: 'col',\n readonly: false,\n disabled: false,\n valueField: 'id',\n textField: 'title',\n horizontal: null,\n horizontalColWidth: null,\n defaultValue: '',\n onSelectInit: () => {\n },\n onChange: () => {\n },\n onValueInit: () => {\n },\n};\n\n@Component\nclass FieldCascadeSelect extends AlpineComponent {\n options: CascadeSelectOptions;\n el?: HTMLElement;\n canModify: boolean = false;\n lists: any[] = [];\n ajaxUrl: string = '';\n values: Array<string | null> = [];\n\n constructor(options: Partial<CascadeSelectOptions> = {}) {\n super();\n\n this.options = mergeDeep({}, defaultOptions, options);\n\n this.options.id = this.options.id || 'cascade-select-' + uid();\n }\n\n init() {\n this.canModify = !this.options.readonly && !this.options.disabled;\n this.ajaxUrl = this.options.ajaxUrl;\n this.values = this.options.path.slice().map(String);\n\n let values: Array<string | null> = this.options.path.slice();\n\n if (values.length === 0) {\n values = [null];\n } else {\n values.unshift(null);\n }\n\n let promise = Promise.resolve();\n let lastValue: string | null = null;\n\n values.forEach((v, i) => {\n promise = promise.then(() => {\n return this.loadItems(v, i).then((list) => {\n if (list.length > 0) {\n this.lists.push(list);\n }\n });\n });\n\n lastValue = v;\n });\n\n this.el = this.$el;\n\n module(this.$el, 'cascade.select', () => this);\n\n this.valueInit(this.$el, lastValue, values);\n }\n\n getLabel(i: number) {\n return this.options.labels[i] || `Level ${i + 1}`;\n }\n\n getId(i: number) {\n return `${this.options.id}__level-${i}`;\n }\n\n getListValue(i: number) {\n return this.values[i] || '';\n }\n\n isSelected(i: number, item: any) {\n return String(this.getListValue(i)) === String(item[this.options.valueField]);\n }\n\n getFinalValue() {\n const values = this.values.slice();\n\n if (values.length === 0) {\n return this.options.defaultValue;\n }\n\n const v = values\n .filter(v => v != null)\n .filter(v => v !== '')\n .pop();\n\n if (v == undefined) {\n return this.options.defaultValue;\n }\n\n return v;\n }\n\n getLevel() {\n return this.values.length;\n }\n\n async onChange(i: number, event: Event) {\n const el = event.target as HTMLSelectElement;\n\n this.values[i] = el.value;\n\n this.options.onChange(event);\n\n event.stopPropagation();\n\n const changeEvent = new CustomEvent('change', {\n detail: {\n el,\n component: this,\n value: el.value,\n path: this.values\n }\n });\n\n this.el?.dispatchEvent(changeEvent);\n\n if (el.value === '') {\n // Clear child\n this.lists.splice(i + 1);\n this.values.splice(i + 1);\n return;\n }\n\n // Get child list\n let list = await this.loadItems(el.value, i);\n this.lists.splice(i + 1);\n this.values.splice(i + 1);\n if (list.length > 0) {\n this.lists.push(list);\n }\n }\n\n async loadItems(parentId: string | null, i: number) {\n // Ajax\n if (this.ajaxUrl) {\n const http = await useHttpClient();\n\n let res = await http.get(\n this.ajaxUrl,\n {\n params: {\n [this.options.ajaxValueField]: parentId,\n self: this.options.ignoreSelf || null\n }\n }\n );\n return await res.data.data;\n }\n\n // Source\n if (parentId) {\n return Promise.resolve(\n this.handleSourceItems(\n this.findFromList(this.lists[i - 1] || [], parentId)?.children || []\n )\n );\n }\n\n return Promise.resolve(this.handleSourceItems(this.options.source));\n }\n\n valueInit($select: HTMLElement, value: string | null, path: Array<string | null>) {\n const event = new CustomEvent('value.init', {\n detail: {\n el: $select,\n component: this,\n value,\n path\n }\n });\n\n this.options.onSelectInit(event);\n\n this.$el.dispatchEvent(event);\n }\n\n selectInit($select: HTMLElement) {\n const event = new CustomEvent('select.init', {\n detail: {\n el: $select,\n component: this,\n }\n });\n\n this.options.onSelectInit(event);\n\n this.$el.dispatchEvent(event);\n }\n\n handleSourceItems(items: any[]) {\n return items.map(item => {\n return {\n [this.options.valueField]: item.value[this.options.valueField],\n [this.options.textField]: item.value[this.options.textField],\n children: item.children\n };\n })\n .filter(item => {\n if (this.options.ignoreSelf) {\n return item[this.options.valueField] != this.options.ignoreSelf;\n }\n\n return item;\n });\n }\n\n findFromList(items: any[], value: string) {\n const found = items.filter(item => item[this.options.valueField] == value);\n\n return found.shift();\n }\n\n getPlaceholder(i: number) {\n if (this.options.placeholders[i]) {\n return this.options.placeholders[i];\n }\n\n return this.options.placeholder;\n }\n}\n\ndeclare global {\n var S: any;\n}\n\nasync function init() {\n await prepareAlpineDefer(() => {\n Alpine.data('CascadeSelect', (options: CascadeSelectOptions) => new FieldCascadeSelect(options));\n });\n\n await initAlpineComponent('data-cascade-select');\n}\n\nexport const ready = init();\n\nexport interface CascadeSelectModule {\n ready: typeof ready;\n}\n"],"names":["AlpineComponent","Component","component","module","v"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"field-cascade-select.js","names":[],"sources":["../../../../../../node_modules/@rubenbimmel/alpine-class-component/dist/alpineComponent.js","../../../../../../node_modules/@rubenbimmel/alpine-class-component/dist/decorators/component.js","../../src/module/field-cascade-select.ts"],"sourcesContent":["\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nclass AlpineComponent {\r\n}\r\nexports.default = AlpineComponent;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction Component(component) {\r\n return function (...args) {\r\n let instance = new component(...args);\r\n const proto = component.prototype;\r\n let data = {};\r\n Object.getOwnPropertyNames(proto).forEach(function (key) {\r\n if (key === 'constructor') {\r\n return;\r\n }\r\n const descriptor = Object.getOwnPropertyDescriptor(proto, key);\r\n if (descriptor.value !== void 0) {\r\n if (typeof descriptor.value === 'function') {\r\n data[key] = descriptor.value;\r\n }\r\n }\r\n else if (descriptor.get || descriptor.set) {\r\n Object.defineProperty(data, key, { get: descriptor.get, set: descriptor.set });\r\n }\r\n });\r\n return Object.assign(data, instance);\r\n };\r\n}\r\nexports.default = Component;\r\n","import AlpineComponent from '@rubenbimmel/alpine-class-component/dist/alpineComponent';\nimport Component from '@rubenbimmel/alpine-class-component/dist/decorators/component';\nimport { useHttpClient } from '../composable';\nimport { initAlpineComponent, module, prepareAlpineDefer, uid } from '../service';\nimport { mergeDeep } from '../utilities';\n\ninterface CascadeSelectOptions {\n id: string;\n selected: string;\n path: string[];\n ignoreSelf: boolean | null;\n placeholder: string;\n placeholders: string[];\n ajaxUrl: string;\n ajaxValueField: string;\n source: string[];\n labels: string[];\n labelWidth: string;\n fieldWidth: string;\n readonly: boolean;\n disabled: boolean;\n valueField: string;\n textField: string;\n horizontal: boolean | null;\n horizontalColWidth: string | null;\n defaultValue: string;\n onSelectInit: Function,\n onChange: Function,\n onValueInit: Function,\n}\n\nconst defaultOptions = {\n id: '',\n selected: '',\n path: [],\n ignoreSelf: null,\n placeholder: '- Select -',\n placeholders: [],\n ajaxUrl: '',\n ajaxValueField: 'value',\n source: [],\n labels: [],\n labelWidth: 'col-md-3',\n fieldWidth: 'col',\n readonly: false,\n disabled: false,\n valueField: 'id',\n textField: 'title',\n horizontal: null,\n horizontalColWidth: null,\n defaultValue: '',\n onSelectInit: () => {\n },\n onChange: () => {\n },\n onValueInit: () => {\n },\n};\n\n@Component\nclass FieldCascadeSelect extends AlpineComponent {\n options: CascadeSelectOptions;\n el?: HTMLElement;\n canModify: boolean = false;\n lists: any[] = [];\n ajaxUrl: string = '';\n values: Array<string | null> = [];\n\n constructor(options: Partial<CascadeSelectOptions> = {}) {\n super();\n\n this.options = mergeDeep({}, defaultOptions, options);\n\n this.options.id = this.options.id || 'cascade-select-' + uid();\n }\n\n init() {\n this.canModify = !this.options.readonly && !this.options.disabled;\n this.ajaxUrl = this.options.ajaxUrl;\n this.values = this.options.path.slice().map(String);\n\n let values: Array<string | null> = this.options.path.slice();\n\n if (values.length === 0) {\n values = [null];\n } else {\n values.unshift(null);\n }\n\n let promise = Promise.resolve();\n let lastValue: string | null = null;\n\n values.forEach((v, i) => {\n promise = promise.then(() => {\n return this.loadItems(v, i).then((list) => {\n if (list.length > 0) {\n this.lists.push(list);\n }\n });\n });\n\n lastValue = v;\n });\n\n this.el = this.$el;\n\n module(this.$el, 'cascade.select', () => this);\n\n this.valueInit(this.$el, lastValue, values);\n }\n\n getLabel(i: number) {\n return this.options.labels[i] || `Level ${i + 1}`;\n }\n\n getId(i: number) {\n return `${this.options.id}__level-${i}`;\n }\n\n getListValue(i: number) {\n return this.values[i] || '';\n }\n\n isSelected(i: number, item: any) {\n return String(this.getListValue(i)) === String(item[this.options.valueField]);\n }\n\n getFinalValue() {\n const values = this.values.slice();\n\n if (values.length === 0) {\n return this.options.defaultValue;\n }\n\n const v = values\n .filter(v => v != null)\n .filter(v => v !== '')\n .pop();\n\n if (v == undefined) {\n return this.options.defaultValue;\n }\n\n return v;\n }\n\n getLevel() {\n return this.values.length;\n }\n\n async onChange(i: number, event: Event) {\n const el = event.target as HTMLSelectElement;\n\n this.values[i] = el.value;\n\n this.options.onChange(event);\n\n event.stopPropagation();\n\n const changeEvent = new CustomEvent('change', {\n detail: {\n el,\n component: this,\n value: el.value,\n path: this.values\n }\n });\n\n this.el?.dispatchEvent(changeEvent);\n\n if (el.value === '') {\n // Clear child\n this.lists.splice(i + 1);\n this.values.splice(i + 1);\n return;\n }\n\n // Get child list\n let list = await this.loadItems(el.value, i);\n this.lists.splice(i + 1);\n this.values.splice(i + 1);\n if (list.length > 0) {\n this.lists.push(list);\n }\n }\n\n async loadItems(parentId: string | null, i: number) {\n // Ajax\n if (this.ajaxUrl) {\n const http = await useHttpClient();\n\n let res = await http.get(\n this.ajaxUrl,\n {\n params: {\n [this.options.ajaxValueField]: parentId,\n self: this.options.ignoreSelf || null\n }\n }\n );\n return await res.data.data;\n }\n\n // Source\n if (parentId) {\n return Promise.resolve(\n this.handleSourceItems(\n this.findFromList(this.lists[i - 1] || [], parentId)?.children || []\n )\n );\n }\n\n return Promise.resolve(this.handleSourceItems(this.options.source));\n }\n\n valueInit($select: HTMLElement, value: string | null, path: Array<string | null>) {\n const event = new CustomEvent('value.init', {\n detail: {\n el: $select,\n component: this,\n value,\n path\n }\n });\n\n this.options.onSelectInit(event);\n\n this.$el.dispatchEvent(event);\n }\n\n selectInit($select: HTMLElement) {\n const event = new CustomEvent('select.init', {\n detail: {\n el: $select,\n component: this,\n }\n });\n\n this.options.onSelectInit(event);\n\n this.$el.dispatchEvent(event);\n }\n\n handleSourceItems(items: any[]) {\n return items.map(item => {\n return {\n [this.options.valueField]: item.value[this.options.valueField],\n [this.options.textField]: item.value[this.options.textField],\n children: item.children\n };\n })\n .filter(item => {\n if (this.options.ignoreSelf) {\n return item[this.options.valueField] != this.options.ignoreSelf;\n }\n\n return item;\n });\n }\n\n findFromList(items: any[], value: string) {\n const found = items.filter(item => item[this.options.valueField] == value);\n\n return found.shift();\n }\n\n getPlaceholder(i: number) {\n if (this.options.placeholders[i]) {\n return this.options.placeholders[i];\n }\n\n return this.options.placeholder;\n }\n}\n\ndeclare global {\n var S: any;\n}\n\nasync function init() {\n await prepareAlpineDefer(() => {\n Alpine.data('CascadeSelect', (options: CascadeSelectOptions) => new FieldCascadeSelect(options));\n });\n\n await initAlpineComponent('data-cascade-select');\n}\n\nexport const ready = init();\n\nexport interface CascadeSelectModule {\n ready: typeof ready;\n}\n"],"x_google_ignoreList":[0,1],"mappings":"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"}