div()->class([ 'layui-row', "layui-col-space{$space}", 'ta-form-grid', "ta-form-grid-{$columns}", ]); if ($class !== '' && $class !== []) { $node->class($class); } return $node; } /** * 标准表单栅格列. */ public static function gridColumn(FormNode $parent, int $columns = 2, string|array $class = ''): FormNode { $columns = self::normalizeGridColumns($columns); $span = match ($columns) { 1 => 12, 2 => 6, 3 => 4, default => 3, }; $node = $parent->div()->class([ "layui-col-xs{$span}", 'ta-form-grid-col', ]); if ($class !== '' && $class !== []) { $node->class($class); } return $node; } /** * @param array $config */ public static function intro(FormNode $parent, array $config = []): FormNode { return FormComponents::intro()->config($config)->mount($parent); } /** * @param array $config * @param callable(FormNode): void $callback */ public static function section(FormNode $parent, array $config, callable $callback): FormNode { return FormComponents::section()->config($config)->body($callback)->mount($parent); } public static function note(FormNode $parent, string $text, string $class = 'help-block color-desc'): FormNode { return FormComponents::note($text)->class($class)->mount($parent); } /** * @param array $config */ public static function readonlyField(FormNode $parent, array $config = []): FormNode { return FormComponents::readonlyField()->config($config)->mount($parent); } /** * @param array $config */ public static function pickerField(FormNode $parent, array $config = []): FormNode { return FormComponents::pickerField()->config($config)->mount($parent); } /** * @param array> $themes * @param array $config */ public static function themePalette(FormNode $parent, array $themes, string $current = '', array $config = []): FormNode { return FormComponents::themePalette($themes, $current)->config($config)->mount($parent); } /** * @param array $theme */ private static function themePreviewStyle(array $theme): string { $styles = []; foreach ([ 'theme-accent' => strval($theme['primary'] ?? ''), 'theme-header' => strval($theme['header'] ?? ''), 'theme-side' => strval($theme['side'] ?? ''), 'theme-surface' => strval($theme['surface'] ?? ''), 'theme-body' => strval($theme['body'] ?? ''), ] as $name => $value) { if ($value !== '') { $styles[] = '--' . $name . ':' . $value; } } return join(';', $styles); } private static function escape(string $content): string { return htmlentities($content, ENT_QUOTES, 'UTF-8'); } private static function normalizeGridColumns(int $columns): int { return max(1, min(4, $columns)); } }