Page MenuHomeSealhub

No OneTemporary

diff --git a/src/controllers/password-generate-button.stimulus.ts b/src/controllers/password-generate-button.stimulus.ts
new file mode 100644
index 0000000..7208bb4
--- /dev/null
+++ b/src/controllers/password-generate-button.stimulus.ts
@@ -0,0 +1,25 @@
+/// <reference lib="dom" />
+import { Controller } from "stimulus";
+
+function generatePassword() {
+ const chars =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";
+ let password = "";
+ for (let i = 0; i < 8; i++) {
+ password += chars.charAt(Math.floor(Math.random() * chars.length));
+ }
+ return password;
+}
+
+export default class extends Controller<HTMLButtonElement> {
+ getInput(): HTMLInputElement {
+ return this.element.parentElement!.querySelector(
+ "input"
+ ) as HTMLInputElement;
+ }
+
+ generate() {
+ this.getInput().value = generatePassword();
+ this.getInput().setAttribute("type", "text");
+ }
+}
diff --git a/src/forms/controls/controls.ts b/src/forms/controls/controls.ts
index 0421040..1c298b2 100644
--- a/src/forms/controls/controls.ts
+++ b/src/forms/controls/controls.ts
@@ -1,32 +1,33 @@
-export { FormControl } from "./form-control.js";
-export { FormFieldControl } from "./form-field-control.js";
-export { EditableCollectionSubset } from "./editable-collection-subset.js";
-export { Frame } from "./frame.js";
+export * from "./autocomplete.js";
+export * from "./big-radio-group.js";
+export * from "./checkbox-group.js";
+export * from "./checkbox.js";
export { CheckboxedListInput } from "./checkboxed-list-input.js";
+export * from "./collapsible-checkbox-group.js";
+export * from "./collapsible-field-group.js";
+export * from "./derived-frame.js";
+export * from "./derived.js";
export * from "./dropdown.js";
-export * from "./single-reference.js";
-export { SimpleInput } from "./simple-input.js";
+export { EditableCollectionSubset } from "./editable-collection-subset.js";
+export { FieldGroup } from "./field-group.js";
+export * from "./file.js";
+export { FormControl } from "./form-control.js";
+export { FormFieldControl } from "./form-field-control.js";
export { FormHeader } from "./form-header.js";
export { FormParagraph } from "./form-paragraph.js";
-export { HTML } from "./html.js";
+export { Frame } from "./frame.js";
export { HiddenInput } from "./hidden-input.js";
-export { Textarea } from "./textarea.js";
-export { FieldGroup } from "./field-group.js";
-export * from "./derived.js";
-export * from "./derived-frame.js";
-export * from "./tickable.js";
-export * from "./checkbox.js";
-export * from "./radio.js";
-export * from "./big-radio-group.js";
-export * from "./checkbox-group.js";
-export * from "./collapsible-field-group.js";
-export * from "./collapsible-checkbox-group.js";
-export * from "./autocomplete.js";
-export * from "./file.js";
+export { HTML } from "./html.js";
export * from "./image.js";
export * from "./multiple-files.js";
-export * from "./number.js";
export * from "./multiple-images.js";
+export * from "./number.js";
+export * from "./password-with-generator.js";
+export * from "./radio.js";
+export { SimpleInput } from "./simple-input.js";
+export * from "./single-reference.js";
+export { Textarea } from "./textarea.js";
+export * from "./tickable.js";
// export * from "./reverse-single-reference";
export * from "./array.js";
export * from "./table.js";
diff --git a/src/forms/controls/password-with-generator.ts b/src/forms/controls/password-with-generator.ts
new file mode 100644
index 0000000..b2f2c13
--- /dev/null
+++ b/src/forms/controls/password-with-generator.ts
@@ -0,0 +1,17 @@
+import { FormField } from "../../index.js";
+import { SimpleInput } from "./simple-input.js";
+
+export class PasswordWithGenerator extends SimpleInput {
+ constructor(field: FormField) {
+ super(field, { type: "password" });
+ }
+
+ async preInput() {
+ return /* HTML */ `<button
+ data-controller="password-generate-button"
+ data-action="password-generate-button#generate"
+ >
+ Generate
+ </button>`;
+ }
+}

File Metadata

Mime Type
text/x-diff
Expires
Sat, Oct 11, 06:08 (41 m, 40 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
980920
Default Alt Text
(3 KB)

Event Timeline