feat: Add iconSvgInline to TemplateFileCreator

Signed-off-by: Christopher Ng <chrng8@gmail.com>
This commit is contained in:
Christopher Ng 2024-03-20 12:49:58 -07:00
parent c451829579
commit 66e77d41c8
4 changed files with 16 additions and 2 deletions

View File

@ -44,6 +44,7 @@ namespace OCA\Files;
* label: string, * label: string,
* extension: string, * extension: string,
* iconClass: ?string, * iconClass: ?string,
* iconSvgInline: ?string,
* mimetypes: string[], * mimetypes: string[],
* ratio: ?float, * ratio: ?float,
* actionLabel: string, * actionLabel: string,

View File

@ -64,8 +64,8 @@ export function registerTemplateEntries() {
addNewFileMenuEntry({ addNewFileMenuEntry({
id: `template-new-${provider.app}-${index}`, id: `template-new-${provider.app}-${index}`,
displayName: provider.label, displayName: provider.label,
// TODO: migrate to inline svg
iconClass: provider.iconClass || 'icon-file', iconClass: provider.iconClass || 'icon-file',
iconSvgInline: provider.iconSvgInline,
enabled(context: Folder): boolean { enabled(context: Folder): boolean {
return (context.permissions & Permission.CREATE) !== 0 return (context.permissions & Permission.CREATE) !== 0
}, },

View File

@ -117,6 +117,7 @@ export interface TemplateFile {
label: string label: string
extension: string extension: string
iconClass?: string iconClass?: string
iconSvgInline?: string
mimetypes: string[] mimetypes: string[]
ratio?: number ratio?: number
templates?: Record<string, unknown>[] templates?: Record<string, unknown>[]

View File

@ -37,6 +37,8 @@ final class TemplateFileCreator implements \JsonSerializable {
protected $fileExtension; protected $fileExtension;
/** @var ?string $iconClass */ /** @var ?string $iconClass */
protected $iconClass; protected $iconClass;
/** @var ?string $iconSvgInline */
protected $iconSvgInline;
/** @var ?float $ratio */ /** @var ?float $ratio */
protected $ratio = null; protected $ratio = null;
protected $order = 100; protected $order = 100;
@ -66,12 +68,21 @@ final class TemplateFileCreator implements \JsonSerializable {
/** /**
* @since 21.0.0 * @since 21.0.0
* @deprecated 29.0.0
*/ */
public function setIconClass(string $iconClass): TemplateFileCreator { public function setIconClass(string $iconClass): TemplateFileCreator {
$this->iconClass = $iconClass; $this->iconClass = $iconClass;
return $this; return $this;
} }
/**
* @since 29.0.0
*/
public function setIconSvgInline(string $iconSvgInline): TemplateFileCreator {
$this->iconSvgInline = $iconSvgInline;
return $this;
}
/** /**
* @since 21.0.0 * @since 21.0.0
*/ */
@ -128,7 +139,7 @@ final class TemplateFileCreator implements \JsonSerializable {
/** /**
* @since 21.0.0 * @since 21.0.0
* @return array{app: string, label: string, extension: string, iconClass: ?string, mimetypes: string[], ratio: ?float, actionLabel: string} * @return array{app: string, label: string, extension: string, iconClass: ?string, iconSvgInline: ?string, mimetypes: string[], ratio: ?float, actionLabel: string}
*/ */
public function jsonSerialize(): array { public function jsonSerialize(): array {
return [ return [
@ -136,6 +147,7 @@ final class TemplateFileCreator implements \JsonSerializable {
'label' => $this->actionName, 'label' => $this->actionName,
'extension' => $this->fileExtension, 'extension' => $this->fileExtension,
'iconClass' => $this->iconClass, 'iconClass' => $this->iconClass,
'iconSvgInline' => $this->iconSvgInline,
'mimetypes' => $this->mimetypes, 'mimetypes' => $this->mimetypes,
'ratio' => $this->ratio, 'ratio' => $this->ratio,
'actionLabel' => $this->actionLabel, 'actionLabel' => $this->actionLabel,