capacitor-extended-dialog 0.0.1

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 (30) hide show
  1. package/CapacitorExtendedDialog.podspec +17 -0
  2. package/Package.swift +28 -0
  3. package/README.md +190 -0
  4. package/android/build.gradle +59 -0
  5. package/android/src/main/AndroidManifest.xml +2 -0
  6. package/android/src/main/java/com/albermonte/extendeddialog/DialogStyleOptions.java +99 -0
  7. package/android/src/main/java/com/albermonte/extendeddialog/ExtendedDialog.java +734 -0
  8. package/android/src/main/java/com/albermonte/extendeddialog/ExtendedDialogPlugin.java +207 -0
  9. package/android/src/main/java/com/albermonte/extendeddialog/FullScreenDialogFragment.java +589 -0
  10. package/android/src/main/res/.gitkeep +0 -0
  11. package/android/src/main/res/values/themes.xml +34 -0
  12. package/dist/docs.json +384 -0
  13. package/dist/esm/definitions.d.ts +101 -0
  14. package/dist/esm/definitions.js +2 -0
  15. package/dist/esm/definitions.js.map +1 -0
  16. package/dist/esm/index.d.ts +4 -0
  17. package/dist/esm/index.js +7 -0
  18. package/dist/esm/index.js.map +1 -0
  19. package/dist/esm/web.d.ts +14 -0
  20. package/dist/esm/web.js +193 -0
  21. package/dist/esm/web.js.map +1 -0
  22. package/dist/plugin.cjs.js +207 -0
  23. package/dist/plugin.cjs.js.map +1 -0
  24. package/dist/plugin.js +210 -0
  25. package/dist/plugin.js.map +1 -0
  26. package/ios/Sources/ExtendedDialogPlugin/ExtendedDialog.swift +497 -0
  27. package/ios/Sources/ExtendedDialogPlugin/ExtendedDialogPlugin.swift +177 -0
  28. package/ios/Sources/ExtendedDialogPlugin/FullScreenDialogViewController.swift +506 -0
  29. package/ios/Tests/ExtendedDialogPluginTests/ExtendedDialogPluginTests.swift +15 -0
  30. package/package.json +80 -0
package/dist/plugin.js ADDED
@@ -0,0 +1,210 @@
1
+ var capacitorExtendedDialog = (function (exports, core) {
2
+ 'use strict';
3
+
4
+ const ExtendedDialog = core.registerPlugin('ExtendedDialog', {
5
+ web: () => Promise.resolve().then(function () { return web; }).then((m) => new m.ExtendedDialogWeb()),
6
+ });
7
+
8
+ class ExtendedDialogWeb extends core.WebPlugin {
9
+ async alert(options) {
10
+ const message = options.title ? `${options.title}\n\n${options.message}` : options.message;
11
+ window.alert(message);
12
+ }
13
+ async confirm(options) {
14
+ const message = options.title ? `${options.title}\n\n${options.message}` : options.message;
15
+ const result = window.confirm(message);
16
+ return { value: result };
17
+ }
18
+ async prompt(options) {
19
+ var _a;
20
+ // Note: focusInput option is ignored on web as window.prompt() handles focus automatically
21
+ // and does not provide programmatic control over keyboard/focus behavior
22
+ const message = options.title ? `${options.title}\n\n${options.message}` : options.message;
23
+ const result = window.prompt(message, (_a = options.inputText) !== null && _a !== void 0 ? _a : '');
24
+ return {
25
+ value: result !== null && result !== void 0 ? result : '',
26
+ cancelled: result === null,
27
+ };
28
+ }
29
+ async singleSelect(options) {
30
+ return new Promise((resolve) => {
31
+ var _a, _b, _c;
32
+ const overlay = this.createOverlay();
33
+ const dialog = this.createDialogContainer(options.title, options.message, options);
34
+ const optionsContainer = document.createElement('div');
35
+ optionsContainer.style.cssText = 'max-height: 300px; overflow-y: auto; margin: 16px 0;';
36
+ let selectedValue = (_a = options.selectedValue) !== null && _a !== void 0 ? _a : null;
37
+ options.options.forEach((option) => {
38
+ const label = document.createElement('label');
39
+ label.style.cssText =
40
+ 'display: flex; align-items: center; padding: 12px 0; cursor: pointer; border-bottom: 1px solid #e0e0e0;';
41
+ const radio = document.createElement('input');
42
+ radio.type = 'radio';
43
+ radio.name = 'singleSelect';
44
+ radio.value = option.value;
45
+ radio.checked = option.value === selectedValue;
46
+ radio.style.cssText = 'margin-right: 12px; width: 20px; height: 20px;';
47
+ radio.addEventListener('change', () => {
48
+ selectedValue = option.value;
49
+ });
50
+ const text = document.createElement('span');
51
+ text.textContent = option.label;
52
+ text.style.cssText = 'font-size: 16px;';
53
+ label.appendChild(radio);
54
+ label.appendChild(text);
55
+ optionsContainer.appendChild(label);
56
+ });
57
+ dialog.appendChild(optionsContainer);
58
+ const buttonContainer = this.createButtonContainer();
59
+ const cancelButton = this.createButton((_b = options.cancelButtonTitle) !== null && _b !== void 0 ? _b : 'Cancel', false, () => {
60
+ this.removeOverlay(overlay);
61
+ resolve({ value: null, cancelled: true });
62
+ }, options);
63
+ const okButton = this.createButton((_c = options.okButtonTitle) !== null && _c !== void 0 ? _c : 'OK', true, () => {
64
+ this.removeOverlay(overlay);
65
+ resolve({ value: selectedValue, cancelled: false });
66
+ }, options);
67
+ buttonContainer.appendChild(cancelButton);
68
+ buttonContainer.appendChild(okButton);
69
+ dialog.appendChild(buttonContainer);
70
+ overlay.appendChild(dialog);
71
+ document.body.appendChild(overlay);
72
+ });
73
+ }
74
+ async multiSelect(options) {
75
+ return new Promise((resolve) => {
76
+ var _a, _b, _c;
77
+ const overlay = this.createOverlay();
78
+ const dialog = this.createDialogContainer(options.title, options.message, options);
79
+ const optionsContainer = document.createElement('div');
80
+ optionsContainer.style.cssText = 'max-height: 300px; overflow-y: auto; margin: 16px 0;';
81
+ const selectedValues = new Set((_a = options.selectedValues) !== null && _a !== void 0 ? _a : []);
82
+ options.options.forEach((option) => {
83
+ const label = document.createElement('label');
84
+ label.style.cssText =
85
+ 'display: flex; align-items: center; padding: 12px 0; cursor: pointer; border-bottom: 1px solid #e0e0e0;';
86
+ const checkbox = document.createElement('input');
87
+ checkbox.type = 'checkbox';
88
+ checkbox.value = option.value;
89
+ checkbox.checked = selectedValues.has(option.value);
90
+ checkbox.style.cssText = 'margin-right: 12px; width: 20px; height: 20px;';
91
+ checkbox.addEventListener('change', () => {
92
+ if (checkbox.checked) {
93
+ selectedValues.add(option.value);
94
+ }
95
+ else {
96
+ selectedValues.delete(option.value);
97
+ }
98
+ });
99
+ const text = document.createElement('span');
100
+ text.textContent = option.label;
101
+ text.style.cssText = 'font-size: 16px;';
102
+ label.appendChild(checkbox);
103
+ label.appendChild(text);
104
+ optionsContainer.appendChild(label);
105
+ });
106
+ dialog.appendChild(optionsContainer);
107
+ const buttonContainer = this.createButtonContainer();
108
+ const cancelButton = this.createButton((_b = options.cancelButtonTitle) !== null && _b !== void 0 ? _b : 'Cancel', false, () => {
109
+ this.removeOverlay(overlay);
110
+ resolve({ values: [], cancelled: true });
111
+ }, options);
112
+ const okButton = this.createButton((_c = options.okButtonTitle) !== null && _c !== void 0 ? _c : 'OK', true, () => {
113
+ this.removeOverlay(overlay);
114
+ resolve({ values: Array.from(selectedValues), cancelled: false });
115
+ }, options);
116
+ buttonContainer.appendChild(cancelButton);
117
+ buttonContainer.appendChild(okButton);
118
+ dialog.appendChild(buttonContainer);
119
+ overlay.appendChild(dialog);
120
+ document.body.appendChild(overlay);
121
+ });
122
+ }
123
+ createOverlay() {
124
+ const overlay = document.createElement('div');
125
+ overlay.style.cssText = `
126
+ position: fixed;
127
+ top: 0;
128
+ left: 0;
129
+ right: 0;
130
+ bottom: 0;
131
+ background: rgba(0, 0, 0, 0.5);
132
+ display: flex;
133
+ align-items: center;
134
+ justify-content: center;
135
+ z-index: 999999;
136
+ `;
137
+ return overlay;
138
+ }
139
+ createDialogContainer(title, message, styleOptions) {
140
+ var _a, _b, _c, _d, _e;
141
+ const dialog = document.createElement('div');
142
+ const bgColor = (_a = styleOptions === null || styleOptions === void 0 ? void 0 : styleOptions.backgroundColor) !== null && _a !== void 0 ? _a : 'white';
143
+ dialog.style.cssText = `
144
+ background: ${bgColor};
145
+ border-radius: 16px;
146
+ padding: 24px;
147
+ min-width: 300px;
148
+ max-width: 400px;
149
+ max-height: 80vh;
150
+ overflow-y: auto;
151
+ box-shadow: 0 4px 24px rgba(0, 0, 0, 0.2);
152
+ `;
153
+ if (title) {
154
+ const titleEl = document.createElement('h2');
155
+ titleEl.textContent = title;
156
+ const titleFontSize = (_b = styleOptions === null || styleOptions === void 0 ? void 0 : styleOptions.titleFontSize) !== null && _b !== void 0 ? _b : 20;
157
+ const titleColor = (_c = styleOptions === null || styleOptions === void 0 ? void 0 : styleOptions.titleColor) !== null && _c !== void 0 ? _c : 'inherit';
158
+ titleEl.style.cssText = `margin: 0 0 8px 0; font-size: ${titleFontSize}px; font-weight: 600; color: ${titleColor};`;
159
+ dialog.appendChild(titleEl);
160
+ }
161
+ if (message) {
162
+ const messageEl = document.createElement('p');
163
+ messageEl.textContent = message;
164
+ const messageFontSize = (_d = styleOptions === null || styleOptions === void 0 ? void 0 : styleOptions.messageFontSize) !== null && _d !== void 0 ? _d : 14;
165
+ const messageColor = (_e = styleOptions === null || styleOptions === void 0 ? void 0 : styleOptions.messageColor) !== null && _e !== void 0 ? _e : '#666';
166
+ messageEl.style.cssText = `margin: 0; font-size: ${messageFontSize}px; color: ${messageColor};`;
167
+ dialog.appendChild(messageEl);
168
+ }
169
+ return dialog;
170
+ }
171
+ createButtonContainer() {
172
+ const container = document.createElement('div');
173
+ container.style.cssText = 'display: flex; justify-content: flex-end; gap: 8px; margin-top: 24px;';
174
+ return container;
175
+ }
176
+ createButton(text, primary, onClick, styleOptions) {
177
+ var _a, _b, _c;
178
+ const button = document.createElement('button');
179
+ button.textContent = text;
180
+ const fontSize = (_a = styleOptions === null || styleOptions === void 0 ? void 0 : styleOptions.buttonFontSize) !== null && _a !== void 0 ? _a : 14;
181
+ const primaryColor = (_b = styleOptions === null || styleOptions === void 0 ? void 0 : styleOptions.buttonColor) !== null && _b !== void 0 ? _b : '#6750A4';
182
+ const cancelColor = (_c = styleOptions === null || styleOptions === void 0 ? void 0 : styleOptions.cancelButtonColor) !== null && _c !== void 0 ? _c : '#6750A4';
183
+ button.style.cssText = `
184
+ padding: 10px 24px;
185
+ border-radius: 8px;
186
+ font-size: ${fontSize}px;
187
+ font-weight: 500;
188
+ cursor: pointer;
189
+ border: none;
190
+ ${primary ? `background: ${primaryColor}; color: white;` : `background: transparent; color: ${cancelColor};`}
191
+ `;
192
+ button.addEventListener('click', onClick);
193
+ return button;
194
+ }
195
+ removeOverlay(overlay) {
196
+ overlay.remove();
197
+ }
198
+ }
199
+
200
+ var web = /*#__PURE__*/Object.freeze({
201
+ __proto__: null,
202
+ ExtendedDialogWeb: ExtendedDialogWeb
203
+ });
204
+
205
+ exports.ExtendedDialog = ExtendedDialog;
206
+
207
+ return exports;
208
+
209
+ })({}, capacitorExports);
210
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst ExtendedDialog = registerPlugin('ExtendedDialog', {\n web: () => import('./web').then((m) => new m.ExtendedDialogWeb()),\n});\nexport * from './definitions';\nexport { ExtendedDialog };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class ExtendedDialogWeb extends WebPlugin {\n async alert(options) {\n const message = options.title ? `${options.title}\\n\\n${options.message}` : options.message;\n window.alert(message);\n }\n async confirm(options) {\n const message = options.title ? `${options.title}\\n\\n${options.message}` : options.message;\n const result = window.confirm(message);\n return { value: result };\n }\n async prompt(options) {\n var _a;\n // Note: focusInput option is ignored on web as window.prompt() handles focus automatically\n // and does not provide programmatic control over keyboard/focus behavior\n const message = options.title ? `${options.title}\\n\\n${options.message}` : options.message;\n const result = window.prompt(message, (_a = options.inputText) !== null && _a !== void 0 ? _a : '');\n return {\n value: result !== null && result !== void 0 ? result : '',\n cancelled: result === null,\n };\n }\n async singleSelect(options) {\n return new Promise((resolve) => {\n var _a, _b, _c;\n const overlay = this.createOverlay();\n const dialog = this.createDialogContainer(options.title, options.message, options);\n const optionsContainer = document.createElement('div');\n optionsContainer.style.cssText = 'max-height: 300px; overflow-y: auto; margin: 16px 0;';\n let selectedValue = (_a = options.selectedValue) !== null && _a !== void 0 ? _a : null;\n options.options.forEach((option) => {\n const label = document.createElement('label');\n label.style.cssText =\n 'display: flex; align-items: center; padding: 12px 0; cursor: pointer; border-bottom: 1px solid #e0e0e0;';\n const radio = document.createElement('input');\n radio.type = 'radio';\n radio.name = 'singleSelect';\n radio.value = option.value;\n radio.checked = option.value === selectedValue;\n radio.style.cssText = 'margin-right: 12px; width: 20px; height: 20px;';\n radio.addEventListener('change', () => {\n selectedValue = option.value;\n });\n const text = document.createElement('span');\n text.textContent = option.label;\n text.style.cssText = 'font-size: 16px;';\n label.appendChild(radio);\n label.appendChild(text);\n optionsContainer.appendChild(label);\n });\n dialog.appendChild(optionsContainer);\n const buttonContainer = this.createButtonContainer();\n const cancelButton = this.createButton((_b = options.cancelButtonTitle) !== null && _b !== void 0 ? _b : 'Cancel', false, () => {\n this.removeOverlay(overlay);\n resolve({ value: null, cancelled: true });\n }, options);\n const okButton = this.createButton((_c = options.okButtonTitle) !== null && _c !== void 0 ? _c : 'OK', true, () => {\n this.removeOverlay(overlay);\n resolve({ value: selectedValue, cancelled: false });\n }, options);\n buttonContainer.appendChild(cancelButton);\n buttonContainer.appendChild(okButton);\n dialog.appendChild(buttonContainer);\n overlay.appendChild(dialog);\n document.body.appendChild(overlay);\n });\n }\n async multiSelect(options) {\n return new Promise((resolve) => {\n var _a, _b, _c;\n const overlay = this.createOverlay();\n const dialog = this.createDialogContainer(options.title, options.message, options);\n const optionsContainer = document.createElement('div');\n optionsContainer.style.cssText = 'max-height: 300px; overflow-y: auto; margin: 16px 0;';\n const selectedValues = new Set((_a = options.selectedValues) !== null && _a !== void 0 ? _a : []);\n options.options.forEach((option) => {\n const label = document.createElement('label');\n label.style.cssText =\n 'display: flex; align-items: center; padding: 12px 0; cursor: pointer; border-bottom: 1px solid #e0e0e0;';\n const checkbox = document.createElement('input');\n checkbox.type = 'checkbox';\n checkbox.value = option.value;\n checkbox.checked = selectedValues.has(option.value);\n checkbox.style.cssText = 'margin-right: 12px; width: 20px; height: 20px;';\n checkbox.addEventListener('change', () => {\n if (checkbox.checked) {\n selectedValues.add(option.value);\n }\n else {\n selectedValues.delete(option.value);\n }\n });\n const text = document.createElement('span');\n text.textContent = option.label;\n text.style.cssText = 'font-size: 16px;';\n label.appendChild(checkbox);\n label.appendChild(text);\n optionsContainer.appendChild(label);\n });\n dialog.appendChild(optionsContainer);\n const buttonContainer = this.createButtonContainer();\n const cancelButton = this.createButton((_b = options.cancelButtonTitle) !== null && _b !== void 0 ? _b : 'Cancel', false, () => {\n this.removeOverlay(overlay);\n resolve({ values: [], cancelled: true });\n }, options);\n const okButton = this.createButton((_c = options.okButtonTitle) !== null && _c !== void 0 ? _c : 'OK', true, () => {\n this.removeOverlay(overlay);\n resolve({ values: Array.from(selectedValues), cancelled: false });\n }, options);\n buttonContainer.appendChild(cancelButton);\n buttonContainer.appendChild(okButton);\n dialog.appendChild(buttonContainer);\n overlay.appendChild(dialog);\n document.body.appendChild(overlay);\n });\n }\n createOverlay() {\n const overlay = document.createElement('div');\n overlay.style.cssText = `\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 999999;\n `;\n return overlay;\n }\n createDialogContainer(title, message, styleOptions) {\n var _a, _b, _c, _d, _e;\n const dialog = document.createElement('div');\n const bgColor = (_a = styleOptions === null || styleOptions === void 0 ? void 0 : styleOptions.backgroundColor) !== null && _a !== void 0 ? _a : 'white';\n dialog.style.cssText = `\n background: ${bgColor};\n border-radius: 16px;\n padding: 24px;\n min-width: 300px;\n max-width: 400px;\n max-height: 80vh;\n overflow-y: auto;\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.2);\n `;\n if (title) {\n const titleEl = document.createElement('h2');\n titleEl.textContent = title;\n const titleFontSize = (_b = styleOptions === null || styleOptions === void 0 ? void 0 : styleOptions.titleFontSize) !== null && _b !== void 0 ? _b : 20;\n const titleColor = (_c = styleOptions === null || styleOptions === void 0 ? void 0 : styleOptions.titleColor) !== null && _c !== void 0 ? _c : 'inherit';\n titleEl.style.cssText = `margin: 0 0 8px 0; font-size: ${titleFontSize}px; font-weight: 600; color: ${titleColor};`;\n dialog.appendChild(titleEl);\n }\n if (message) {\n const messageEl = document.createElement('p');\n messageEl.textContent = message;\n const messageFontSize = (_d = styleOptions === null || styleOptions === void 0 ? void 0 : styleOptions.messageFontSize) !== null && _d !== void 0 ? _d : 14;\n const messageColor = (_e = styleOptions === null || styleOptions === void 0 ? void 0 : styleOptions.messageColor) !== null && _e !== void 0 ? _e : '#666';\n messageEl.style.cssText = `margin: 0; font-size: ${messageFontSize}px; color: ${messageColor};`;\n dialog.appendChild(messageEl);\n }\n return dialog;\n }\n createButtonContainer() {\n const container = document.createElement('div');\n container.style.cssText = 'display: flex; justify-content: flex-end; gap: 8px; margin-top: 24px;';\n return container;\n }\n createButton(text, primary, onClick, styleOptions) {\n var _a, _b, _c;\n const button = document.createElement('button');\n button.textContent = text;\n const fontSize = (_a = styleOptions === null || styleOptions === void 0 ? void 0 : styleOptions.buttonFontSize) !== null && _a !== void 0 ? _a : 14;\n const primaryColor = (_b = styleOptions === null || styleOptions === void 0 ? void 0 : styleOptions.buttonColor) !== null && _b !== void 0 ? _b : '#6750A4';\n const cancelColor = (_c = styleOptions === null || styleOptions === void 0 ? void 0 : styleOptions.cancelButtonColor) !== null && _c !== void 0 ? _c : '#6750A4';\n button.style.cssText = `\n padding: 10px 24px;\n border-radius: 8px;\n font-size: ${fontSize}px;\n font-weight: 500;\n cursor: pointer;\n border: none;\n ${primary ? `background: ${primaryColor}; color: white;` : `background: transparent; color: ${cancelColor};`}\n `;\n button.addEventListener('click', onClick);\n return button;\n }\n removeOverlay(overlay) {\n overlay.remove();\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}