mirror of
https://github.com/noodlapp/noodl-docs.git
synced 2026-01-09 22:02:54 +01:00
feat(sdk): Add reference data for the SDK input/output types (#13)
This commit is contained in:
28
sdk/overview.mdx
Normal file
28
sdk/overview.mdx
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
title: SDK Overview
|
||||
hide_title: true
|
||||
---
|
||||
|
||||
# SDK Overview
|
||||
|
||||
Noodl SDK, or `@noodl/noodl-sdk`, is a javascript package that is making is easy to extend Noodl with core nodes.
|
||||
|
||||
## Installation
|
||||
|
||||
Here are some guides on how to create a Noodl module, including installing the SDK.
|
||||
[Continue here.](/javascript/extending/overview)
|
||||
|
||||
## Getting started
|
||||
|
||||
We have a lot of open source modules in this [GitHub repository](https://github.com/noodlapp/modules).
|
||||
These are a great place to start when looking for references, and examples of how to build a module.
|
||||
|
||||
Not all of these modules are made with the SDK. Why?
|
||||
The SDK is built on top of the internal Noodl API, designed to make it easier and future compatible with internal Noodl API changes in mind.
|
||||
Currently the SDK does lack some of the functionality that the internal Noodl API provides, which is the primary reason not to use the SDK for these modules.
|
||||
In the end the module code will be very similar, but can cause some confusion.
|
||||
|
||||
> At this time, the only module that is not built using the SDK in that GitHub repository is the `simple-tooltips` module.
|
||||
|
||||
For a module to be registered in the Noodl app, you don't need to have the SDK installed.
|
||||
The way that the modules are registered is by calling the `Noodl.defineModule(module)` function which is globally defined by the Noodl runtime and not in the SDK.
|
||||
158
sdk/references/port-types.md
Normal file
158
sdk/references/port-types.md
Normal file
@@ -0,0 +1,158 @@
|
||||
---
|
||||
title: Noodl SDK Input and Output Types
|
||||
hide_title: true
|
||||
---
|
||||
|
||||
# Noodl SDK Input and Output Types
|
||||
|
||||
Here are some Typescript typings to fill in all the types, in the future this will be included directly with the SDK.
|
||||
|
||||
There are two ways to set the type on a Input or Output, either with the shortcut like this:
|
||||
|
||||
```ts
|
||||
{
|
||||
// ...
|
||||
inputs: {
|
||||
myInput: "string",
|
||||
displayName: "My Input",
|
||||
group: "My Group",
|
||||
default: "My default input value",
|
||||
},
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
Or with the full type where you can apply more options, like this:
|
||||
|
||||
```ts
|
||||
{
|
||||
// ...
|
||||
inputs: {
|
||||
myInput: {
|
||||
name: "string",
|
||||
codeeditor: "plaintext",
|
||||
allowEditOnly: true
|
||||
},
|
||||
displayName: "My Input",
|
||||
group: "My Group",
|
||||
default: "My default input value",
|
||||
}
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
## Types
|
||||
|
||||
The type can also be `*` (star) to be any type, removing all connection type restrictions in the editor.
|
||||
|
||||
```ts
|
||||
type TypeEditor = "javascript" | "plaintext" | "graphql" | "css" | "html";
|
||||
|
||||
interface BuiltInType {
|
||||
name: string;
|
||||
codeeditor?: TypeEditor;
|
||||
/** Allow the Input to only be edited via the property panel */
|
||||
allowEditOnly?: boolean;
|
||||
}
|
||||
|
||||
export interface ObjectType extends BuiltInType {
|
||||
name: "object";
|
||||
}
|
||||
|
||||
export interface ArrayType extends BuiltInType {
|
||||
name: "array";
|
||||
}
|
||||
|
||||
export interface StringType extends BuiltInType {
|
||||
name: "string";
|
||||
}
|
||||
|
||||
export interface StringListType extends BuiltInType {
|
||||
name: "stringlist";
|
||||
}
|
||||
|
||||
export interface NumberType extends BuiltInType {
|
||||
name: "number";
|
||||
units?: string[];
|
||||
defaultUnit?: string;
|
||||
marginPaddingComp?: string;
|
||||
}
|
||||
|
||||
export interface BooleanType extends BuiltInType {
|
||||
name: "boolean";
|
||||
}
|
||||
|
||||
export interface SignalType extends BuiltInType {
|
||||
name: "signal";
|
||||
}
|
||||
|
||||
export declare type EnumListItem = {
|
||||
label: string;
|
||||
value: string;
|
||||
};
|
||||
|
||||
export interface EnumType extends BuiltInType {
|
||||
name: "enum";
|
||||
enums: EnumListItem[];
|
||||
}
|
||||
|
||||
export interface ColorType extends BuiltInType {
|
||||
name: "color";
|
||||
}
|
||||
|
||||
export interface ImageType extends BuiltInType {
|
||||
name: "image";
|
||||
}
|
||||
|
||||
export interface IconType extends BuiltInType {
|
||||
name: "icon";
|
||||
}
|
||||
|
||||
export interface FontType extends BuiltInType {
|
||||
name: "font";
|
||||
}
|
||||
|
||||
export interface TextStyleType extends BuiltInType {
|
||||
name: "textStyle";
|
||||
}
|
||||
|
||||
export interface ComponentType extends BuiltInType {
|
||||
name: "component";
|
||||
}
|
||||
|
||||
export interface DimensionType extends BuiltInType {
|
||||
name: "dimension";
|
||||
}
|
||||
|
||||
export interface SourceType extends BuiltInType {
|
||||
name: "source";
|
||||
}
|
||||
|
||||
export interface ResizingType extends BuiltInType {
|
||||
name: "resizing";
|
||||
}
|
||||
|
||||
export interface VariableType extends BuiltInType {
|
||||
name: "variable";
|
||||
}
|
||||
|
||||
export interface CurveType extends BuiltInType {
|
||||
name: "curve";
|
||||
}
|
||||
|
||||
export interface QueryFilterType extends BuiltInType {
|
||||
name: "query-filter";
|
||||
}
|
||||
|
||||
export interface QuerySortingType extends BuiltInType {
|
||||
name: "query-sorting";
|
||||
}
|
||||
|
||||
export interface PagesType extends BuiltInType {
|
||||
name: "pages";
|
||||
}
|
||||
|
||||
export interface ProplistType extends BuiltInType {
|
||||
name: "proplist";
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user