@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,147 +1,129 @@
1
- import { a as useUniDirective, x as getBoundedInstance, v as selectOne, a6 as mergeDeep, A as h, w as selectAll, ae as data } from "./unicorn.js";
2
- const defaultOptions = {
3
- selector: ".btn-group .radio",
4
- buttonClass: "btn",
5
- activeClass: "active",
6
- color: {
7
- "default": "btn-default btn-outline-secondary",
8
- green: "btn-success",
9
- red: "btn-danger",
10
- blue: "btn-primary"
11
- }
1
+ import { t as mergeDeep } from "./arr.js";
2
+ import { t as data } from "./data.js";
3
+ import { a as h, d as selectOne, r as getBoundedInstance, u as selectAll } from "./dom.js";
4
+ import { useUniDirective } from "../unicorn.js";
5
+ //#region src/bootstrap/button-radio.ts
6
+ var defaultOptions = {
7
+ selector: ".btn-group .radio",
8
+ buttonClass: "btn",
9
+ activeClass: "active",
10
+ color: {
11
+ "default": "btn-default btn-outline-secondary",
12
+ green: "btn-success",
13
+ red: "btn-danger",
14
+ blue: "btn-primary"
15
+ }
12
16
  };
13
- class ButtonRadio {
14
- wrapper;
15
- element;
16
- radios = [];
17
- inputs = [];
18
- buttons = [];
19
- colors = [];
20
- options;
21
- static handle(el, options = {}) {
22
- return getBoundedInstance(el, "button-radio", (el2) => {
23
- return new this(el2, options);
24
- });
25
- }
26
- constructor(selector, options = {}) {
27
- this.element = selectOne(selector);
28
- this.options = mergeDeep({}, defaultOptions, options);
29
- let wrapper;
30
- if (this.element.dataset.fieldInput != null) {
31
- wrapper = this.element;
32
- } else {
33
- wrapper = this.element.querySelector("[data-field-input]");
34
- }
35
- this.wrapper = wrapper;
36
- let inputGroup = wrapper.querySelector(".btn-group");
37
- const exists = inputGroup != null;
38
- if (!inputGroup) {
39
- inputGroup = h("div", { class: "btn-group" });
40
- }
41
- this.radios = selectAll(wrapper.querySelectorAll(".radio"));
42
- this.radios.forEach((radio) => {
43
- const button = this.prepareButton(radio, exists);
44
- if (!exists) {
45
- inputGroup.appendChild(button);
46
- }
47
- });
48
- this.syncState();
49
- wrapper.insertBefore(inputGroup, wrapper.firstChild);
50
- wrapper.dispatchEvent(new Event("button-radio.loaded"));
51
- this.colors = [...new Set(this.colors)];
52
- }
53
- prepareButton(radio, exists = false) {
54
- const options = this.options;
55
- const input = radio.querySelector("input");
56
- const label = radio.querySelector("label");
57
- let button;
58
- if (exists) {
59
- button = this.wrapper.querySelector(`[data-for="${input.id}"]`);
60
- button.classList.add(...this.parseClasses(`${options.buttonClass} ${options.color["default"]}`));
61
- } else {
62
- button = h(
63
- "button",
64
- {
65
- type: "button",
66
- class: `${options.buttonClass} ${options.color["default"]}`,
67
- "data-value": input.value
68
- },
69
- `<span>${label.innerHTML}</span>`
70
- );
71
- }
72
- data(button, "input", input);
73
- this.inputs.push(input);
74
- this.buttons.push(button);
75
- radio.style.display = "none";
76
- let color = input.dataset.colorClass || "";
77
- if (!color) {
78
- switch (input.value) {
79
- case "":
80
- color = options.color.blue || "";
81
- break;
82
- case "0":
83
- color = options.color.red || "";
84
- break;
85
- default:
86
- color = options.color.green || "";
87
- break;
88
- }
89
- input.dataset.colorClass = color;
90
- }
91
- this.colors.push(color);
92
- if (input.disabled || input.getAttribute("readonly") != null) {
93
- button.classList.add("disabled");
94
- button.disabled = true;
95
- }
96
- if (input.getAttribute("readonly") != null) {
97
- button.classList.add("readonly");
98
- }
99
- button.addEventListener("click", () => {
100
- if (input.getAttribute("disabled") || input.getAttribute("readonly")) {
101
- return;
102
- }
103
- const changed = !input.checked;
104
- if (changed) {
105
- this.inputs.forEach((ele) => {
106
- ele.checked = false;
107
- });
108
- input.checked = true;
109
- input.dispatchEvent(new Event("change"));
110
- input.dispatchEvent(new Event("input"));
111
- }
112
- });
113
- input.addEventListener("change", () => {
114
- this.syncState();
115
- });
116
- return button;
117
- }
118
- syncState() {
119
- const options = this.options;
120
- this.buttons.forEach((button) => {
121
- const input = data(button, "input");
122
- button.classList.add(...this.parseClasses(options.color.default || ""));
123
- button.classList.remove(...this.parseClasses(options.activeClass));
124
- button.classList.remove(...this.parseClasses(...this.colors));
125
- if (input.checked) {
126
- button.classList.add(...this.parseClasses(options.activeClass));
127
- button.classList.add(...this.parseClasses(input.dataset.colorClass || ""));
128
- button.classList.remove(...this.parseClasses(options.color.default || ""));
129
- }
130
- });
131
- }
132
- parseClasses(...className) {
133
- const classNameStr = className.join(" ");
134
- return classNameStr.split(" ").filter((t) => t !== "");
135
- }
136
- }
137
- const ready = /* @__PURE__ */ useUniDirective("button-radio", {
138
- mounted(el, { value }) {
139
- JSON.parse(value || "{}");
140
- ButtonRadio.handle(el, value || {});
141
- }
142
- });
143
- export {
144
- ButtonRadio,
145
- ready
17
+ var ButtonRadio = class {
18
+ wrapper;
19
+ element;
20
+ radios = [];
21
+ inputs = [];
22
+ buttons = [];
23
+ colors = [];
24
+ options;
25
+ static handle(el, options = {}) {
26
+ return getBoundedInstance(el, "button-radio", (el) => {
27
+ return new this(el, options);
28
+ });
29
+ }
30
+ constructor(selector, options = {}) {
31
+ this.element = selectOne(selector);
32
+ this.options = mergeDeep({}, defaultOptions, options);
33
+ let wrapper;
34
+ if (this.element.dataset.fieldInput != null) wrapper = this.element;
35
+ else wrapper = this.element.querySelector("[data-field-input]");
36
+ this.wrapper = wrapper;
37
+ let inputGroup = wrapper.querySelector(".btn-group");
38
+ const exists = inputGroup != null;
39
+ if (!inputGroup) inputGroup = h("div", { class: "btn-group" });
40
+ this.radios = selectAll(wrapper.querySelectorAll(".radio"));
41
+ this.radios.forEach((radio) => {
42
+ const button = this.prepareButton(radio, exists);
43
+ if (!exists) inputGroup.appendChild(button);
44
+ });
45
+ this.syncState();
46
+ wrapper.insertBefore(inputGroup, wrapper.firstChild);
47
+ wrapper.dispatchEvent(new Event("button-radio.loaded"));
48
+ this.colors = [...new Set(this.colors)];
49
+ }
50
+ prepareButton(radio, exists = false) {
51
+ const options = this.options;
52
+ const input = radio.querySelector("input");
53
+ const label = radio.querySelector("label");
54
+ let button;
55
+ if (exists) {
56
+ button = this.wrapper.querySelector(`[data-for="${input.id}"]`);
57
+ button.classList.add(...this.parseClasses(`${options.buttonClass} ${options.color["default"]}`));
58
+ } else button = h("button", {
59
+ type: "button",
60
+ class: `${options.buttonClass} ${options.color["default"]}`,
61
+ "data-value": input.value
62
+ }, `<span>${label.innerHTML}</span>`);
63
+ data(button, "input", input);
64
+ this.inputs.push(input);
65
+ this.buttons.push(button);
66
+ radio.style.display = "none";
67
+ let color = input.dataset.colorClass || "";
68
+ if (!color) {
69
+ switch (input.value) {
70
+ case "":
71
+ color = options.color.blue || "";
72
+ break;
73
+ case "0":
74
+ color = options.color.red || "";
75
+ break;
76
+ default:
77
+ color = options.color.green || "";
78
+ break;
79
+ }
80
+ input.dataset.colorClass = color;
81
+ }
82
+ this.colors.push(color);
83
+ if (input.disabled || input.getAttribute("readonly") != null) {
84
+ button.classList.add("disabled");
85
+ button.disabled = true;
86
+ }
87
+ if (input.getAttribute("readonly") != null) button.classList.add("readonly");
88
+ button.addEventListener("click", () => {
89
+ if (input.getAttribute("disabled") || input.getAttribute("readonly")) return;
90
+ if (!input.checked) {
91
+ this.inputs.forEach((ele) => {
92
+ ele.checked = false;
93
+ });
94
+ input.checked = true;
95
+ input.dispatchEvent(new Event("change"));
96
+ input.dispatchEvent(new Event("input"));
97
+ }
98
+ });
99
+ input.addEventListener("change", () => {
100
+ this.syncState();
101
+ });
102
+ return button;
103
+ }
104
+ syncState() {
105
+ const options = this.options;
106
+ this.buttons.forEach((button) => {
107
+ const input = data(button, "input");
108
+ button.classList.add(...this.parseClasses(options.color.default || ""));
109
+ button.classList.remove(...this.parseClasses(options.activeClass));
110
+ button.classList.remove(...this.parseClasses(...this.colors));
111
+ if (input.checked) {
112
+ button.classList.add(...this.parseClasses(options.activeClass));
113
+ button.classList.add(...this.parseClasses(input.dataset.colorClass || ""));
114
+ button.classList.remove(...this.parseClasses(options.color.default || ""));
115
+ }
116
+ });
117
+ }
118
+ parseClasses(...className) {
119
+ return className.join(" ").split(" ").filter((t) => t !== "");
120
+ }
146
121
  };
147
- //# sourceMappingURL=button-radio.js.map
122
+ var ready = /* @__PURE__ */ useUniDirective("button-radio", { mounted(el, { value }) {
123
+ JSON.parse(value || "{}");
124
+ ButtonRadio.handle(el, value || {});
125
+ } });
126
+ //#endregion
127
+ export { ButtonRadio, ready };
128
+
129
+ //# sourceMappingURL=button-radio.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"button-radio.js","sources":["../../src/bootstrap/button-radio.ts"],"sourcesContent":["import { useUniDirective } from '../composable';\nimport { data } from '../data';\nimport { getBoundedInstance, h, selectAll, selectOne } from '../service';\nimport { mergeDeep } from '../utilities';\n\nexport interface ButtonRadioOptions {\n selector?: string;\n buttonClass?: string;\n activeClass?: string;\n color?: {\n 'default'?: string;\n green?: string;\n red?: string;\n blue?: string;\n };\n}\n\nconst defaultOptions = {\n selector: '.btn-group .radio',\n buttonClass: 'btn',\n activeClass: 'active',\n color: {\n 'default': 'btn-default btn-outline-secondary',\n green: 'btn-success',\n red: 'btn-danger',\n blue: 'btn-primary'\n }\n};\n\nexport class ButtonRadio {\n wrapper: HTMLElement;\n element: HTMLElement;\n radios: HTMLInputElement[] = [];\n inputs: HTMLInputElement[] = [];\n buttons: HTMLButtonElement[] = [];\n colors: string[] = [];\n options: Required<ButtonRadioOptions>;\n\n static handle(el: HTMLElement | string, options: ButtonRadioOptions = {}) {\n return getBoundedInstance(el, 'button-radio', (el: HTMLElement) => {\n return new this(el, options);\n });\n }\n\n constructor(selector: HTMLElement | string, options: ButtonRadioOptions = {}) {\n this.element = selectOne<HTMLElement>(selector)!;\n this.options = mergeDeep({}, defaultOptions, options);\n let wrapper: HTMLElement;\n\n // Turn radios into btn-group\n\n if (this.element.dataset.fieldInput != null) {\n wrapper = this.element;\n } else {\n wrapper = this.element.querySelector('[data-field-input]')!;\n }\n\n this.wrapper = wrapper;\n let inputGroup = wrapper.querySelector<HTMLElement>('.btn-group')!;\n const exists = inputGroup != null;\n\n if (!inputGroup) {\n inputGroup = h('div', { class: 'btn-group' })\n }\n\n this.radios = selectAll(wrapper.querySelectorAll<HTMLInputElement>('.radio'));\n\n this.radios.forEach(radio => {\n const button = this.prepareButton(radio, exists);\n\n if (!exists) {\n inputGroup.appendChild(button);\n }\n });\n\n this.syncState();\n\n wrapper.insertBefore(inputGroup, wrapper.firstChild);\n\n wrapper.dispatchEvent(new Event('button-radio.loaded'));\n\n // Make color elements unique\n this.colors = [...new Set(this.colors)];\n }\n\n prepareButton(radio: HTMLInputElement, exists = false) {\n const options = this.options;\n\n const input = radio.querySelector('input')!;\n const label = radio.querySelector('label')!;\n\n let button: HTMLButtonElement;\n\n if (exists) {\n button = this.wrapper.querySelector(`[data-for=\"${input.id}\"]`)!;\n button.classList.add(...this.parseClasses(`${options.buttonClass} ${options.color['default']}`));\n } else {\n button = h(\n 'button',\n {\n type: 'button',\n class: `${options.buttonClass} ${options.color['default']}`,\n 'data-value': input.value,\n },\n `<span>${label.innerHTML}</span>`\n );\n }\n\n data(button, 'input', input);\n this.inputs.push(input);\n this.buttons.push(button);\n\n radio.style.display = 'none';\n\n // Prepare color schema\n let color = input.dataset.colorClass || '';\n\n if (!color) {\n switch (input.value) {\n case '':\n color = options.color.blue || '';\n break;\n\n case '0':\n color = options.color.red || '';\n break;\n\n default:\n color = options.color.green || '';\n break;\n }\n\n input.dataset.colorClass = color;\n }\n \n this.colors.push(color);\n\n if (input.disabled || input.getAttribute('readonly') != null) {\n button.classList.add('disabled');\n button.disabled = true;\n }\n\n if (input.getAttribute('readonly') != null) {\n button.classList.add('readonly');\n }\n\n // Bind event\n button.addEventListener('click', () => {\n if (input.getAttribute('disabled') || input.getAttribute('readonly')) {\n return;\n }\n\n const changed = !input.checked;\n\n if (changed) {\n this.inputs.forEach((ele) => {\n ele.checked = false;\n });\n\n input.checked = true;\n\n input.dispatchEvent(new Event('change'));\n input.dispatchEvent(new Event('input'));\n }\n });\n\n input.addEventListener('change', () => {\n this.syncState();\n });\n\n return button;\n }\n\n syncState() {\n const options = this.options;\n\n this.buttons.forEach((button) => {\n const input: HTMLInputElement = data(button, 'input');\n\n button.classList.add(...this.parseClasses(options.color.default || ''));\n button.classList.remove(...this.parseClasses(options.activeClass));\n button.classList.remove(...this.parseClasses(...this.colors));\n\n if (input.checked) {\n button.classList.add(...this.parseClasses(options.activeClass));\n button.classList.add(...this.parseClasses(input.dataset.colorClass || ''));\n button.classList.remove(...this.parseClasses(options.color.default || ''));\n }\n });\n }\n\n parseClasses(...className: string[]) {\n const classNameStr = className.join(' ');\n return classNameStr.split(' ').filter(t => t !== '');\n }\n}\n\nexport const ready = useUniDirective('button-radio', {\n mounted(el, { value }) {\n const options: ButtonRadioOptions = JSON.parse(value || '{}');\n ButtonRadio.handle(el, value || {});\n }\n});\n\nexport interface ButtonRadioModule {\n ButtonRadio: typeof ButtonRadio;\n ready: typeof ready;\n}\n"],"names":["el"],"mappings":"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"}
1
+ {"version":3,"file":"button-radio.js","names":[],"sources":["../../src/bootstrap/button-radio.ts"],"sourcesContent":["import { useUniDirective } from '../composable';\nimport { data } from '../data';\nimport { getBoundedInstance, h, selectAll, selectOne } from '../service';\nimport { mergeDeep } from '../utilities';\n\nexport interface ButtonRadioOptions {\n selector?: string;\n buttonClass?: string;\n activeClass?: string;\n color?: {\n 'default'?: string;\n green?: string;\n red?: string;\n blue?: string;\n };\n}\n\nconst defaultOptions = {\n selector: '.btn-group .radio',\n buttonClass: 'btn',\n activeClass: 'active',\n color: {\n 'default': 'btn-default btn-outline-secondary',\n green: 'btn-success',\n red: 'btn-danger',\n blue: 'btn-primary'\n }\n};\n\nexport class ButtonRadio {\n wrapper: HTMLElement;\n element: HTMLElement;\n radios: HTMLInputElement[] = [];\n inputs: HTMLInputElement[] = [];\n buttons: HTMLButtonElement[] = [];\n colors: string[] = [];\n options: Required<ButtonRadioOptions>;\n\n static handle(el: HTMLElement | string, options: ButtonRadioOptions = {}) {\n return getBoundedInstance(el, 'button-radio', (el: HTMLElement) => {\n return new this(el, options);\n });\n }\n\n constructor(selector: HTMLElement | string, options: ButtonRadioOptions = {}) {\n this.element = selectOne<HTMLElement>(selector)!;\n this.options = mergeDeep({}, defaultOptions, options);\n let wrapper: HTMLElement;\n\n // Turn radios into btn-group\n\n if (this.element.dataset.fieldInput != null) {\n wrapper = this.element;\n } else {\n wrapper = this.element.querySelector('[data-field-input]')!;\n }\n\n this.wrapper = wrapper;\n let inputGroup = wrapper.querySelector<HTMLElement>('.btn-group')!;\n const exists = inputGroup != null;\n\n if (!inputGroup) {\n inputGroup = h('div', { class: 'btn-group' })\n }\n\n this.radios = selectAll(wrapper.querySelectorAll<HTMLInputElement>('.radio'));\n\n this.radios.forEach(radio => {\n const button = this.prepareButton(radio, exists);\n\n if (!exists) {\n inputGroup.appendChild(button);\n }\n });\n\n this.syncState();\n\n wrapper.insertBefore(inputGroup, wrapper.firstChild);\n\n wrapper.dispatchEvent(new Event('button-radio.loaded'));\n\n // Make color elements unique\n this.colors = [...new Set(this.colors)];\n }\n\n prepareButton(radio: HTMLInputElement, exists = false) {\n const options = this.options;\n\n const input = radio.querySelector('input')!;\n const label = radio.querySelector('label')!;\n\n let button: HTMLButtonElement;\n\n if (exists) {\n button = this.wrapper.querySelector(`[data-for=\"${input.id}\"]`)!;\n button.classList.add(...this.parseClasses(`${options.buttonClass} ${options.color['default']}`));\n } else {\n button = h(\n 'button',\n {\n type: 'button',\n class: `${options.buttonClass} ${options.color['default']}`,\n 'data-value': input.value,\n },\n `<span>${label.innerHTML}</span>`\n );\n }\n\n data(button, 'input', input);\n this.inputs.push(input);\n this.buttons.push(button);\n\n radio.style.display = 'none';\n\n // Prepare color schema\n let color = input.dataset.colorClass || '';\n\n if (!color) {\n switch (input.value) {\n case '':\n color = options.color.blue || '';\n break;\n\n case '0':\n color = options.color.red || '';\n break;\n\n default:\n color = options.color.green || '';\n break;\n }\n\n input.dataset.colorClass = color;\n }\n \n this.colors.push(color);\n\n if (input.disabled || input.getAttribute('readonly') != null) {\n button.classList.add('disabled');\n button.disabled = true;\n }\n\n if (input.getAttribute('readonly') != null) {\n button.classList.add('readonly');\n }\n\n // Bind event\n button.addEventListener('click', () => {\n if (input.getAttribute('disabled') || input.getAttribute('readonly')) {\n return;\n }\n\n const changed = !input.checked;\n\n if (changed) {\n this.inputs.forEach((ele) => {\n ele.checked = false;\n });\n\n input.checked = true;\n\n input.dispatchEvent(new Event('change'));\n input.dispatchEvent(new Event('input'));\n }\n });\n\n input.addEventListener('change', () => {\n this.syncState();\n });\n\n return button;\n }\n\n syncState() {\n const options = this.options;\n\n this.buttons.forEach((button) => {\n const input: HTMLInputElement = data(button, 'input');\n\n button.classList.add(...this.parseClasses(options.color.default || ''));\n button.classList.remove(...this.parseClasses(options.activeClass));\n button.classList.remove(...this.parseClasses(...this.colors));\n\n if (input.checked) {\n button.classList.add(...this.parseClasses(options.activeClass));\n button.classList.add(...this.parseClasses(input.dataset.colorClass || ''));\n button.classList.remove(...this.parseClasses(options.color.default || ''));\n }\n });\n }\n\n parseClasses(...className: string[]) {\n const classNameStr = className.join(' ');\n return classNameStr.split(' ').filter(t => t !== '');\n }\n}\n\nexport const ready = useUniDirective('button-radio', {\n mounted(el, { value }) {\n const options: ButtonRadioOptions = JSON.parse(value || '{}');\n ButtonRadio.handle(el, value || {});\n }\n});\n\nexport interface ButtonRadioModule {\n ButtonRadio: typeof ButtonRadio;\n ready: typeof ready;\n}\n"],"mappings":"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"}
@@ -1,44 +1,45 @@
1
- import { w as selectAll, v as selectOne } from "./unicorn.js";
2
- class CheckboxesMultiSelect {
3
- defaultOptions = {
4
- duration: 100,
5
- inputSelector: "input[type=checkbox][data-role=grid-checkbox]"
6
- };
7
- $element;
8
- options;
9
- boxes;
10
- last = false;
11
- static handle(selector, options = {}) {
12
- return selectAll(selector, (ele) => new this(ele, options));
13
- }
14
- constructor(selector, options = {}) {
15
- this.$element = selectOne(selector);
16
- this.options = Object.assign({}, this.defaultOptions, options);
17
- this.boxes = Array.from(this.$element.querySelectorAll(this.options.inputSelector));
18
- this.last = false;
19
- selectAll(this.boxes, (box) => {
20
- box.addEventListener("click", (e) => {
21
- this.select(box, e);
22
- });
23
- });
24
- }
25
- select(box, event) {
26
- if (!this.last) {
27
- this.last = box;
28
- return;
29
- }
30
- if (event.shiftKey) {
31
- const start = [].indexOf.call(this.boxes, box);
32
- const end = [].indexOf.call(this.boxes, this.last);
33
- const chs = [].slice.call(this.boxes, Math.min(start, end), Math.max(start, end) + 1);
34
- [].forEach.call(chs, (ele, i) => {
35
- ele.checked = this.last.checked;
36
- });
37
- }
38
- this.last = box;
39
- }
40
- }
41
- export {
42
- CheckboxesMultiSelect
1
+ import { d as selectOne, u as selectAll } from "./dom.js";
2
+ //#region src/module/checkboxes-multi-select.ts
3
+ var CheckboxesMultiSelect = class {
4
+ defaultOptions = {
5
+ duration: 100,
6
+ inputSelector: "input[type=checkbox][data-role=grid-checkbox]"
7
+ };
8
+ $element;
9
+ options;
10
+ boxes;
11
+ last = false;
12
+ static handle(selector, options = {}) {
13
+ return selectAll(selector, (ele) => new this(ele, options));
14
+ }
15
+ constructor(selector, options = {}) {
16
+ this.$element = selectOne(selector);
17
+ this.options = Object.assign({}, this.defaultOptions, options);
18
+ this.boxes = Array.from(this.$element.querySelectorAll(this.options.inputSelector));
19
+ this.last = false;
20
+ selectAll(this.boxes, (box) => {
21
+ box.addEventListener("click", (e) => {
22
+ this.select(box, e);
23
+ });
24
+ });
25
+ }
26
+ select(box, event) {
27
+ if (!this.last) {
28
+ this.last = box;
29
+ return;
30
+ }
31
+ if (event.shiftKey) {
32
+ const start = [].indexOf.call(this.boxes, box);
33
+ const end = [].indexOf.call(this.boxes, this.last);
34
+ const chs = [].slice.call(this.boxes, Math.min(start, end), Math.max(start, end) + 1);
35
+ [].forEach.call(chs, (ele, i) => {
36
+ ele.checked = this.last.checked;
37
+ });
38
+ }
39
+ this.last = box;
40
+ }
43
41
  };
44
- //# sourceMappingURL=checkboxes-multi-select.js.map
42
+ //#endregion
43
+ export { CheckboxesMultiSelect };
44
+
45
+ //# sourceMappingURL=checkboxes-multi-select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkboxes-multi-select.js","sources":["../../src/module/checkboxes-multi-select.ts"],"sourcesContent":["import { selectAll, selectOne } from '../service';\n\nexport class CheckboxesMultiSelect {\n defaultOptions = {\n duration: 100,\n inputSelector: 'input[type=checkbox][data-role=grid-checkbox]'\n }\n\n $element: HTMLElement;\n options: any;\n boxes: HTMLInputElement[];\n last: HTMLInputElement | false = false;\n\n static handle(selector: any, options: any = {}) {\n return selectAll(selector, (ele: any) => new this(ele, options));\n }\n\n constructor(selector: any, options = {}) {\n this.$element = selectOne<HTMLElement>(selector)!;\n this.options = Object.assign({}, this.defaultOptions, options);\n this.boxes = Array.from(this.$element.querySelectorAll(this.options.inputSelector));\n this.last = false;\n\n selectAll(this.boxes, (box: HTMLInputElement) => {\n box.addEventListener('click', (e: MouseEvent) => {\n this.select(box, e);\n });\n });\n }\n\n select(box: HTMLInputElement, event: MouseEvent) {\n if (!this.last) {\n this.last = box;\n\n return;\n }\n\n if (event.shiftKey) {\n // @ts-ignore\n const start = [].indexOf.call(this.boxes, box);\n\n // @ts-ignore\n const end = [].indexOf.call(this.boxes, this.last);\n\n const chs = [].slice.call(this.boxes, Math.min(start, end), Math.max(start, end) + 1);\n\n [].forEach.call(chs, (ele: HTMLInputElement, i) => {\n ele.checked = (this.last as HTMLInputElement).checked;\n });\n }\n\n this.last = box;\n }\n}\n"],"names":[],"mappings":";AAEO,MAAM,sBAAsB;AAAA,EACjC,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,eAAe;AAAA,EAAA;AAAA,EAGjB;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAiC;AAAA,EAEjC,OAAO,OAAO,UAAe,UAAe,IAAI;AAC9C,WAAO,UAAU,UAAU,CAAC,QAAa,IAAI,KAAK,KAAK,OAAO,CAAC;AAAA,EACjE;AAAA,EAEA,YAAY,UAAe,UAAU,IAAI;AACvC,SAAK,WAAW,UAAuB,QAAQ;AAC/C,SAAK,UAAU,OAAO,OAAO,CAAA,GAAI,KAAK,gBAAgB,OAAO;AAC7D,SAAK,QAAQ,MAAM,KAAK,KAAK,SAAS,iBAAiB,KAAK,QAAQ,aAAa,CAAC;AAClF,SAAK,OAAO;AAEZ,cAAU,KAAK,OAAO,CAAC,QAA0B;AAC/C,UAAI,iBAAiB,SAAS,CAAC,MAAkB;AAC/C,aAAK,OAAO,KAAK,CAAC;AAAA,MACpB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,KAAuB,OAAmB;AAC/C,QAAI,CAAC,KAAK,MAAM;AACd,WAAK,OAAO;AAEZ;AAAA,IACF;AAEA,QAAI,MAAM,UAAU;AAElB,YAAM,QAAQ,CAAA,EAAG,QAAQ,KAAK,KAAK,OAAO,GAAG;AAG7C,YAAM,MAAM,CAAA,EAAG,QAAQ,KAAK,KAAK,OAAO,KAAK,IAAI;AAEjD,YAAM,MAAM,CAAA,EAAG,MAAM,KAAK,KAAK,OAAO,KAAK,IAAI,OAAO,GAAG,GAAG,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC;AAEpF,OAAA,EAAG,QAAQ,KAAK,KAAK,CAAC,KAAuB,MAAM;AACjD,YAAI,UAAW,KAAK,KAA0B;AAAA,MAChD,CAAC;AAAA,IACH;AAEA,SAAK,OAAO;AAAA,EACd;AACF;"}
1
+ {"version":3,"file":"checkboxes-multi-select.js","names":[],"sources":["../../src/module/checkboxes-multi-select.ts"],"sourcesContent":["import { selectAll, selectOne } from '../service';\n\nexport class CheckboxesMultiSelect {\n defaultOptions = {\n duration: 100,\n inputSelector: 'input[type=checkbox][data-role=grid-checkbox]'\n }\n\n $element: HTMLElement;\n options: any;\n boxes: HTMLInputElement[];\n last: HTMLInputElement | false = false;\n\n static handle(selector: any, options: any = {}) {\n return selectAll(selector, (ele: any) => new this(ele, options));\n }\n\n constructor(selector: any, options = {}) {\n this.$element = selectOne<HTMLElement>(selector)!;\n this.options = Object.assign({}, this.defaultOptions, options);\n this.boxes = Array.from(this.$element.querySelectorAll(this.options.inputSelector));\n this.last = false;\n\n selectAll(this.boxes, (box: HTMLInputElement) => {\n box.addEventListener('click', (e: MouseEvent) => {\n this.select(box, e);\n });\n });\n }\n\n select(box: HTMLInputElement, event: MouseEvent) {\n if (!this.last) {\n this.last = box;\n\n return;\n }\n\n if (event.shiftKey) {\n // @ts-ignore\n const start = [].indexOf.call(this.boxes, box);\n\n // @ts-ignore\n const end = [].indexOf.call(this.boxes, this.last);\n\n const chs = [].slice.call(this.boxes, Math.min(start, end), Math.max(start, end) + 1);\n\n [].forEach.call(chs, (ele: HTMLInputElement, i) => {\n ele.checked = (this.last as HTMLInputElement).checked;\n });\n }\n\n this.last = box;\n }\n}\n"],"mappings":";;AAEA,IAAa,wBAAb,MAAmC;CACjC,iBAAiB;EACf,UAAU;EACV,eAAe;EAChB;CAED;CACA;CACA;CACA,OAAiC;CAEjC,OAAO,OAAO,UAAe,UAAe,EAAE,EAAE;AAC9C,SAAO,UAAU,WAAW,QAAa,IAAI,KAAK,KAAK,QAAQ,CAAC;;CAGlE,YAAY,UAAe,UAAU,EAAE,EAAE;AACvC,OAAK,WAAW,UAAuB,SAAS;AAChD,OAAK,UAAU,OAAO,OAAO,EAAE,EAAE,KAAK,gBAAgB,QAAQ;AAC9D,OAAK,QAAQ,MAAM,KAAK,KAAK,SAAS,iBAAiB,KAAK,QAAQ,cAAc,CAAC;AACnF,OAAK,OAAO;AAEZ,YAAU,KAAK,QAAQ,QAA0B;AAC/C,OAAI,iBAAiB,UAAU,MAAkB;AAC/C,SAAK,OAAO,KAAK,EAAE;KACnB;IACF;;CAGJ,OAAO,KAAuB,OAAmB;AAC/C,MAAI,CAAC,KAAK,MAAM;AACd,QAAK,OAAO;AAEZ;;AAGF,MAAI,MAAM,UAAU;GAElB,MAAM,QAAQ,EAAE,CAAC,QAAQ,KAAK,KAAK,OAAO,IAAI;GAG9C,MAAM,MAAM,EAAE,CAAC,QAAQ,KAAK,KAAK,OAAO,KAAK,KAAK;GAElD,MAAM,MAAM,EAAE,CAAC,MAAM,KAAK,KAAK,OAAO,KAAK,IAAI,OAAO,IAAI,EAAE,KAAK,IAAI,OAAO,IAAI,GAAG,EAAE;AAErF,KAAE,CAAC,QAAQ,KAAK,MAAM,KAAuB,MAAM;AACjD,QAAI,UAAW,KAAK,KAA0B;KAC9C;;AAGJ,OAAK,OAAO"}
@@ -0,0 +1,24 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
+ key = keys[i];
12
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
13
+ get: ((k) => from[k]).bind(null, key),
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
20
+ value: mod,
21
+ enumerable: true
22
+ }) : target, mod));
23
+ //#endregion
24
+ export { __toESM as n, __commonJSMin as t };