GIF89a;
GIF89a;Priv8 Uploader By InMyMine7
Linux gallant-poincare.82-165-91-112.plesk.page 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64
Priv8 Uploader By InMyMine7
Linux gallant-poincare.82-165-91-112.plesk.page 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64
| Server IP : 82.165.91.112 / Your IP : 216.73.216.249 Web Server : Apache System : Linux gallant-poincare.82-165-91-112.plesk.page 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 User : nr7.net_tfpqq467gv ( 10001) PHP Version : 8.4.25 Disable Function : opcache_get_status MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/vhosts/nr7.net/emdash.nr7.net/node_modules/emdash/src/fields/ |
Upload File : |
import { z } from "astro/zod";
import type { FieldDefinition, FieldUIHints } from "./types.js";
export interface IntegerOptions {
required?: boolean;
min?: number;
max?: number;
placeholder?: string;
helpText?: string;
}
/**
* Integer field - whole number input
*
* Unlike the `number` field which stores as REAL (floating point),
* this field stores as INTEGER for whole numbers.
*/
export function integer(options: IntegerOptions = {}): FieldDefinition<number> {
let intSchema = z.number().int("Must be a whole number");
// Range constraints
if (options.min !== undefined) {
intSchema = intSchema.min(options.min, `Must be at least ${options.min}`);
}
if (options.max !== undefined) {
intSchema = intSchema.max(options.max, `Must be at most ${options.max}`);
}
// Optional vs required
const schema: z.ZodTypeAny = options.required ? intSchema : intSchema.optional();
const ui: FieldUIHints = {
widget: "number",
placeholder: options.placeholder,
helpText: options.helpText,
min: options.min,
max: options.max,
step: 1, // Indicate whole numbers
};
return {
type: "integer",
columnType: "INTEGER",
schema,
options,
ui,
};
}