Merge branch 'main' into merge-main

This commit is contained in:
Gervwyk 2021-11-21 17:10:36 +02:00
commit 21b268b2fb
60 changed files with 1822 additions and 258 deletions

View File

@ -3,6 +3,84 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
### Fixes
- Release to fix Docker builds.
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
## Changes
### Blocks
- Added onSearch event to `MultipleSelector` and `Selector`.
### Build
- Better error messages on build.
### Operators
- Added `_switch` operator.
### General
- Added experimental feature `config.experimental_initPageId`.
- Added `auth.jwt.loginStateExpiresIn` parameter to configure OpenID connect state token expiry.
## Commits
### Bug Fixes
* **blocksAntd:** Update test snapshots for Selector and MultipleSelector. ([67202c4](https://github.com/lowdefy/lowdefy/commit/67202c452e2187d6c342cd1e5487c8d28b050004))
* **docs:** Included onSearch event example in MultipleSelector and Selector docs. ([0e53cb8](https://github.com/lowdefy/lowdefy/commit/0e53cb8f93ed49e0122ac038113d7378f67501f7))
* Updated MultipleSelector block to include onSearch event. ([0339e63](https://github.com/lowdefy/lowdefy/commit/0339e63ab6ce3fb1c8c95d203e341cbec1eb4660))
* **blocksAntd:** Updated Selector block to include onSearch event. ([5e9ec14](https://github.com/lowdefy/lowdefy/commit/5e9ec1470d9920b8340247ac1ff8d9a681798f1d))
* **docs:** Fix _ref resolver function example. ([0903094](https://github.com/lowdefy/lowdefy/commit/0903094ce531f4d8ab7849deb91ab3d6b7e5fd82))
### Features
* **build:** Better error messages on build. ([9934d07](https://github.com/lowdefy/lowdefy/commit/9934d07430aef93d4f992c048b3f7101b4934217))
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
### Bug Fixes
* Add _switch operator to docs. ([c5c6f0c](https://github.com/lowdefy/lowdefy/commit/c5c6f0c9a5b0dfc89e09835d3ab940195a077504))
* Support .yml in lowdefy.yaml file. ([0f7cc2a](https://github.com/lowdefy/lowdefy/commit/0f7cc2a7612a5ad9a8164d5a5437dde5c6d7da49)), closes [#902](https://github.com/lowdefy/lowdefy/issues/902)
* **docs:** Add avatar and links to blog template. ([d855599](https://github.com/lowdefy/lowdefy/commit/d855599398cae041933dd8b11aaf77648f87d4c2))
* **docs:** Fix the iframe videos in the docs. ([c4a957a](https://github.com/lowdefy/lowdefy/commit/c4a957a12ea5adf018b373d8da8c5116e064205f))
* improvements on blog template. ([30e2291](https://github.com/lowdefy/lowdefy/commit/30e22917fed9932e43cde942532654aa4a6aeac6))
* **docs:** Add how to generate CSVs. ([2cc8e45](https://github.com/lowdefy/lowdefy/commit/2cc8e45b165aa755dceb9e40525f8a0511fb3485))
* **docs:** Add how to generate pdfs. ([7b35550](https://github.com/lowdefy/lowdefy/commit/7b35550fa944995be8f8a9d0e809971cabcf12af))
* **operators:** Added tests for switch operator to Node and Web Parsers. ([249ab6b](https://github.com/lowdefy/lowdefy/commit/249ab6bb475bb0d945e48d4f5b90d2308fd00e16))
* **operators:** Added tests for switch operator. ([ce31fa3](https://github.com/lowdefy/lowdefy/commit/ce31fa30c05023f7a15c944abfc93a7ecb9f6b56))
* **operators:** Updated switch operator to for... ...of syntax. ([cdbd0e0](https://github.com/lowdefy/lowdefy/commit/cdbd0e0d229933d6b0e497f90cf755ccd04b89c9))
### Features
* **docs:** Add how to generate csv. ([3257f51](https://github.com/lowdefy/lowdefy/commit/3257f514b95f7cafb8ac30998194e7ae0a327862))
* **docs:** Add videos to how tos. ([57c7779](https://github.com/lowdefy/lowdefy/commit/57c77798f0356c606cf90bfd36a4f63ab8d0ff36))
* Add generate pdf how to. ([5bde460](https://github.com/lowdefy/lowdefy/commit/5bde460934e2dc94d677af5f287e3c85c0ff4c34))
* **docs:** Added switch operator documentation. ([7c42c78](https://github.com/lowdefy/lowdefy/commit/7c42c7882422ea89332b32bcef985b5bc5059ec8))
* **operators:** Added switch operator. ([436170c](https://github.com/lowdefy/lowdefy/commit/436170c2ec88e6a8ddbd5a34c791cd7eacc5f72b))
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
## Changes

View File

@ -1,5 +1,5 @@
{
"version": "3.22.0",
"version": "3.23.1",
"packages": [
"src/packages/*",
"src/packages/blocks/*",

View File

@ -1,6 +1,6 @@
{
"name": "@lowdefy/lowdefy",
"version": "3.22.0",
"version": "3.23.1",
"license": "Apache-2.0",
"private": true,
"description": "Lowdefy monorepo",

View File

@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/ajv
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package @lowdefy/ajv
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/ajv
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/ajv

View File

@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/block-tools
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package @lowdefy/block-tools
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/block-tools
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/block-tools

View File

@ -3,6 +3,35 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/blocks-antd
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
### Bug Fixes
* **blocksAntd:** Update test snapshots for Selector and MultipleSelector. ([67202c4](https://github.com/lowdefy/lowdefy/commit/67202c452e2187d6c342cd1e5487c8d28b050004))
* Updated MultipleSelector block to include onSearch event. ([0339e63](https://github.com/lowdefy/lowdefy/commit/0339e63ab6ce3fb1c8c95d203e341cbec1eb4660))
* **blocksAntd:** Updated Selector block to include onSearch event. ([5e9ec14](https://github.com/lowdefy/lowdefy/commit/5e9ec1470d9920b8340247ac1ff8d9a681798f1d))
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/blocks-antd
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)

View File

@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/blocks-basic
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package @lowdefy/blocks-basic
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/blocks-basic
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/blocks-basic

View File

@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/blocks-color-selectors
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package @lowdefy/blocks-color-selectors
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/blocks-color-selectors
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/blocks-color-selectors

View File

@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/blocks-echarts
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package @lowdefy/blocks-echarts
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/blocks-echarts
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/blocks-echarts

View File

@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/blocks-markdown
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package @lowdefy/blocks-markdown
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/blocks-markdown
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/blocks-markdown

View File

@ -0,0 +1,149 @@
/*
Copyright 2020-2021 Lowdefy, Inc
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import React, { useState } from 'react';
import { Select } from 'antd';
import { blockDefaultProps, renderHtml } from '@lowdefy/block-tools';
import { get, type } from '@lowdefy/helpers';
import Label from '../Label/Label';
import Icon from '../Icon/Icon';
import getValueIndex from '../../getValueIndex';
import getUniqueValues from '../../getUniqueValues';
const Option = Select.Option;
const MultipleSelector = ({
blockId,
events,
loading,
methods,
properties,
required,
validation,
value,
}) => {
const [fetchState, setFetch] = useState(false);
const uniqueValueOptions = getUniqueValues(properties.options || []);
return (
<Label
blockId={blockId}
loading={loading}
properties={{ title: properties.title, size: properties.size, ...properties.label }}
required={required}
validation={validation}
content={{
content: () => (
<div className={methods.makeCssClass({ width: '100%' })}>
<div id={`${blockId}_popup`} />
<Select
id={`${blockId}_input`}
className={methods.makeCssClass([{ width: '100%' }, properties.inputStyle])}
getPopupContainer={() => document.getElementById(`${blockId}_popup`)}
mode="multiple"
autoFocus={properties.autoFocus}
disabled={properties.disabled}
placeholder={get(properties, 'placeholder', { default: 'Select items' })}
suffixIcon={
properties.suffixIcon && (
<Icon
blockId={`${blockId}_suffixIcon`}
events={events}
properties={properties.suffixIcon}
/>
)
}
clearIcon={
properties.clearIcon && (
<Icon
blockId={`${blockId}_clearIcon`}
events={events}
properties={properties.clearIcon}
/>
)
}
menuItemSelectedIcon={
properties.selectedIcon && (
<Icon
blockId={`${blockId}_selectedIcon`}
events={events}
properties={properties.selectedIcon}
/>
)
}
showArrow={get(properties, 'showArrow', { default: true })}
allowClear={properties.allowClear !== false}
size={properties.size}
filterOption={(input, option) =>
(option.filterstring || option.children.props.html || '')
.toLowerCase()
.indexOf(input.toLowerCase()) >= 0
}
notFoundContent={fetchState ? 'Loading' : 'Not found'}
onChange={(newVal) => {
const val = [];
newVal.forEach((nv) => {
val.push(
type.isPrimitive(uniqueValueOptions[nv])
? uniqueValueOptions[nv]
: uniqueValueOptions[nv].value
);
});
methods.setValue(val);
methods.triggerEvent({ name: 'onChange' });
}}
onSearch={async (value) => {
setFetch(true);
await methods.triggerEvent({ name: 'onSearch', event: { value } });
setFetch(false);
}}
value={getValueIndex(value, uniqueValueOptions, true)}
>
{uniqueValueOptions.map((opt, i) =>
type.isPrimitive(opt) ? (
<Option
className={methods.makeCssClass(properties.optionsStyle)}
id={`${blockId}_${i}`}
key={i}
value={i}
>
{renderHtml({ html: `${opt}`, methods })}
</Option>
) : (
<Option
className={methods.makeCssClass([properties.optionsStyle, opt.style])}
disabled={opt.disabled}
filterstring={opt.filterString}
id={`${blockId}_${i}`}
key={i}
value={i}
>
{type.isNone(opt.label)
? renderHtml({ html: `${opt.value}`, methods })
: renderHtml({ html: opt.label, methods })}
</Option>
)
)}
</Select>
</div>
),
}}
/>
);
};
MultipleSelector.defaultProps = blockDefaultProps;
export default MultipleSelector;

View File

@ -0,0 +1,244 @@
{
"valueType": "array",
"category": "input",
"loading": {
"type": "SkeletonInput"
},
"test": {
"validation": true,
"required": true
},
"schema": {
"properties": {
"type": "object",
"additionalProperties": false,
"properties": {
"allowClear": {
"type": "boolean",
"default": true,
"description": "Allow the user to clear the selected value, sets the value to null."
},
"autoFocus": {
"type": "boolean",
"default": false,
"description": "Autofocus to the block on page load."
},
"clearIcon": {
"type": ["string", "object"],
"default": "CloseCircleOutlined",
"description": "Name of an Ant Design Icon or properties of an Icon block to customize icon at far right position of the selector, shown when user is given option to clear input.",
"docs": {
"displayType": "icon"
}
},
"disabled": {
"type": "boolean",
"default": false,
"description": "Disable the block if true."
},
"inputStyle": {
"type": "object",
"description": "Css style to applied to input.",
"docs": {
"displayType": "yaml"
}
},
"optionsStyle": {
"type": "object",
"description": "Css style to applied to option elements.",
"docs": {
"displayType": "yaml"
}
},
"label": {
"type": "object",
"description": "Label properties.",
"additionalProperties": false,
"properties": {
"align": {
"type": "string",
"enum": ["left", "right"],
"default": "left",
"description": "Align label left or right when inline."
},
"colon": {
"type": "boolean",
"default": true,
"description": "Append label with colon."
},
"extra": {
"type": "string",
"description": "Extra text to display beneath the content - supports html."
},
"title": {
"type": "string",
"description": "Label title - supports html."
},
"span": {
"type": "number",
"description": "Label inline span."
},
"disabled": {
"type": "boolean",
"default": false,
"description": "Hide input label."
},
"hasFeedback": {
"type": "boolean",
"default": true,
"description": "Display feedback extra from validation, this does not disable validation."
},
"inline": {
"type": "boolean",
"default": false,
"description": "Render input and label inline."
},
"extraStyle": {
"type": "object",
"description": "Css style to applied to label extra.",
"docs": {
"displayType": "yaml"
}
},
"feedbackStyle": {
"type": "object",
"description": "Css style to applied to label feedback.",
"docs": {
"displayType": "yaml"
}
}
}
},
"options": {
"default": [],
"oneOf": [
{
"type": "array",
"description": "Options can either be an array of primitive values, on an array of label, value pairs - supports html.",
"items": {
"type": "string"
}
},
{
"type": "array",
"description": "Options can either be an array of primitive values, on an array of label, value pairs.",
"items": {
"type": "number"
}
},
{
"type": "array",
"description": "Options can either be an array of primitive values, on an array of label, value pairs.",
"items": {
"type": "boolean"
}
},
{
"type": "array",
"description": "Options can either be an array of primitive values, on an array of label, value pairs.",
"items": {
"type": "object",
"required": ["value"],
"properties": {
"label": {
"type": "string",
"description": "Value label shown to user - supports html."
},
"value": {
"description": "Value selected. Can be of any type.",
"oneOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "object"
},
{
"type": "array"
}
],
"docs": {
"displayType": "yaml"
}
},
"disabled": {
"type": "boolean",
"default": false,
"description": "Disable the option if true."
},
"filterString": {
"type": "string",
"description": "String to match against when filtering selector options during. If no filterString is provided the filter method matches against options.label."
},
"style": {
"type": "object",
"description": "Css style to applied to option.",
"docs": {
"displayType": "yaml"
}
}
}
}
}
]
},
"placeholder": {
"type": "string",
"default": "Select item",
"description": "Placeholder text inside the block before user selects input."
},
"selectedIcon": {
"type": ["string", "object"],
"default": "CheckOutlined",
"description": "Name of an Ant Design Icon or properties of an Icon block to customize icon showing when a selection is made in the drop-down list.",
"docs": {
"displayType": "icon"
}
},
"showArrow": {
"type": "boolean",
"default": true,
"description": "Show the suffix icon at the drop-down position of the selector."
},
"size": {
"type": "string",
"enum": ["small", "default", "large"],
"default": "default",
"description": "Size of the block."
},
"suffixIcon": {
"type": ["string", "object"],
"default": "DownOutlined",
"description": "Name of an Ant Design Icon or properties of an Icon block to customize at the drop-down position of the selector.",
"docs": {
"displayType": "icon"
}
},
"title": {
"type": "string",
"description": "Multiple selector label title - supports html."
}
}
},
"events": {
"type": "object",
"additionalProperties": false,
"properties": {
"onChange": {
"type": "array",
"description": "Trigger actions when selection is changed."
},
"onSearch": {
"type": "array",
"description": "Trigger actions when input is changed. 'value' is passed to the _event operator to be used in actions such as search queries."
}
}
}
}
}

View File

@ -0,0 +1,138 @@
/*
Copyright 2020-2021 Lowdefy, Inc
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import React, { useState } from 'react';
import { Select } from 'antd';
import { blockDefaultProps, renderHtml } from '@lowdefy/block-tools';
import { get, type } from '@lowdefy/helpers';
import Label from '../Label/Label';
import Icon from '../Icon/Icon';
import getValueIndex from '../../getValueIndex';
import getUniqueValues from '../../getUniqueValues';
const Option = Select.Option;
const Selector = ({
blockId,
events,
loading,
methods,
properties,
required,
validation,
value,
}) => {
const [fetchState, setFetch] = useState(false);
const uniqueValueOptions = getUniqueValues(properties.options || []);
return (
<Label
blockId={blockId}
events={events}
properties={{ title: properties.title, size: properties.size, ...properties.label }}
validation={validation}
required={required}
loading={loading}
content={{
content: () => (
<div className={methods.makeCssClass({ width: '100%' })}>
<div id={`${blockId}_popup`} />
<Select
id={`${blockId}_input`}
className={methods.makeCssClass([{ width: '100%' }, properties.inputStyle])}
mode="single"
autoFocus={properties.autoFocus}
getPopupContainer={() => document.getElementById(`${blockId}_popup`)}
disabled={properties.disabled}
placeholder={get(properties, 'placeholder', { default: 'Select item' })}
suffixIcon={
properties.suffixIcon && (
<Icon
blockId={`${blockId}_suffixIcon`}
events={events}
properties={properties.suffixIcon}
/>
)
}
clearIcon={
properties.clearIcon && (
<Icon
blockId={`${blockId}_clearIcon`}
events={events}
properties={properties.clearIcon}
/>
)
}
showArrow={properties.showArrow}
allowClear={properties.allowClear !== false}
showSearch={get(properties, 'showSearch', { default: true })}
size={properties.size}
filterOption={(input, option) =>
(option.filterstring || option.children.props.html || '')
.toLowerCase()
.indexOf(input.toLowerCase()) >= 0
}
notFoundContent={fetchState ? 'Loading' : 'Not found'}
onChange={(newVal) => {
methods.setValue(
type.isPrimitive(uniqueValueOptions[newVal])
? uniqueValueOptions[newVal]
: uniqueValueOptions[newVal].value
);
methods.triggerEvent({ name: 'onChange' });
}}
onSearch={async (value) => {
setFetch(true);
await methods.triggerEvent({ name: 'onSearch', event: { value } });
setFetch(false);
}}
value={getValueIndex(value, uniqueValueOptions)}
>
{uniqueValueOptions.map((opt, i) =>
type.isPrimitive(opt) ? (
<Option
className={methods.makeCssClass(properties.optionsStyle)}
id={`${blockId}_${i}`}
key={i}
value={i}
>
{renderHtml({ html: `${opt}`, methods })}
</Option>
) : (
<Option
className={methods.makeCssClass([properties.optionsStyle, opt.style])}
disabled={opt.disabled}
filterstring={opt.filterString}
id={`${blockId}_${i}`}
key={i}
value={i}
>
{type.isNone(opt.label)
? renderHtml({ html: `${opt.value}`, methods })
: renderHtml({ html: opt.label, methods })}
</Option>
)
)}
</Select>
</div>
),
}}
/>
);
};
Selector.defaultProps = blockDefaultProps;
export default Selector;

View File

@ -0,0 +1,241 @@
{
"valueType": "any",
"category": "input",
"loading": {
"type": "SkeletonInput"
},
"test": {
"validation": true,
"required": true
},
"schema": {
"properties": {
"type": "object",
"additionalProperties": false,
"properties": {
"allowClear": {
"type": "boolean",
"default": true,
"description": "Allow the user to clear the selected value, sets the value to null."
},
"autoFocus": {
"type": "boolean",
"default": false,
"description": "Autofocus to the block on page load."
},
"clearIcon": {
"type": ["string", "object"],
"default": "CloseCircleOutlined",
"description": "Name of an Ant Design Icon or properties of an Icon block to customize icon at far right position of the selector, shown when user is given option to clear input.",
"docs": {
"displayType": "icon"
}
},
"inputStyle": {
"type": "object",
"description": "Css style to applied to input.",
"docs": {
"displayType": "yaml"
}
},
"optionsStyle": {
"type": "object",
"description": "Css style to applied to option elements.",
"docs": {
"displayType": "yaml"
}
},
"label": {
"type": "object",
"description": "Label properties.",
"additionalProperties": false,
"properties": {
"align": {
"type": "string",
"enum": ["left", "right"],
"default": "left",
"description": "Align label left or right when inline."
},
"colon": {
"type": "boolean",
"default": true,
"description": "Append label with colon."
},
"extra": {
"type": "string",
"description": "Extra text to display beneath the content - supports html."
},
"title": {
"type": "string",
"description": "Label title - supports html."
},
"span": {
"type": "number",
"description": "Label inline span."
},
"disabled": {
"type": "boolean",
"default": false,
"description": "Hide input label."
},
"hasFeedback": {
"type": "boolean",
"default": true,
"description": "Display feedback extra from validation, this does not disable validation."
},
"inline": {
"type": "boolean",
"default": false,
"description": "Render input and label inline."
},
"extraStyle": {
"type": "object",
"description": "Css style to applied to label extra.",
"docs": {
"displayType": "yaml"
}
},
"feedbackStyle": {
"type": "object",
"description": "Css style to applied to label feedback.",
"docs": {
"displayType": "yaml"
}
}
}
},
"disabled": {
"type": "boolean",
"default": false,
"description": "Disable the block if true."
},
"options": {
"default": [],
"oneOf": [
{
"type": "array",
"description": "Options can either be an array of primitive values, on an array of label, value pairs - supports html.",
"items": {
"type": "string"
}
},
{
"type": "array",
"description": "Options can either be an array of primitive values, on an array of label, value pairs.",
"items": {
"type": "number"
}
},
{
"type": "array",
"description": "Options can either be an array of primitive values, on an array of label, value pairs.",
"items": {
"type": "boolean"
}
},
{
"type": "array",
"description": "Options can either be an array of primitive values, on an array of label, value pairs.",
"items": {
"type": "object",
"required": ["value"],
"properties": {
"label": {
"type": "string",
"description": "Value label shown to user - supports html."
},
"value": {
"description": "Value selected. Can be of any type.",
"oneOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "object"
},
{
"type": "array"
}
],
"docs": {
"displayType": "yaml"
}
},
"disabled": {
"type": "boolean",
"default": false,
"description": "Disable the option if true."
},
"filterString": {
"type": "string",
"description": "String to match against when filtering selector options during. If no filterString is provided the filter method matches against options.label."
},
"style": {
"type": "object",
"description": "Css style to applied to option.",
"docs": {
"displayType": "yaml"
}
}
}
}
}
]
},
"placeholder": {
"type": "string",
"default": "Select item",
"description": "Placeholder text inside the block before user selects input."
},
"showArrow": {
"type": "boolean",
"default": true,
"description": "Show the suffix icon at the drop-down position of the selector."
},
"showSearch": {
"type": "boolean",
"default": true,
"description": "Make the selector options searchable."
},
"size": {
"type": "string",
"enum": ["small", "default", "large"],
"default": "default",
"description": "Size of the block."
},
"suffixIcon": {
"type": ["string", "object"],
"default": "DownOutlined",
"description": "Name of an Ant Design Icon or properties of an Icon block to customize icon at the drop-down position of the selector.",
"docs": {
"displayType": "icon"
}
},
"title": {
"type": "string",
"description": "Title to describe the input component, if no title is specified the block id is displayed - supports html."
}
}
},
"events": {
"type": "object",
"additionalProperties": false,
"properties": {
"onChange": {
"type": "array",
"description": "Trigger actions when selection is changed."
},
"onSearch": {
"type": "array",
"description": "Trigger actions when input is changed. 'value' is passed to the _event operator to be used in actions such as search queries."
}
}
}
}
}

View File

@ -3,6 +3,33 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/build
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
### Features
* **build:** Better error messages on build. ([9934d07](https://github.com/lowdefy/lowdefy/commit/9934d07430aef93d4f992c048b3f7101b4934217))
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/build
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/build

View File

@ -3,6 +3,33 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package lowdefy
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package lowdefy
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
### Bug Fixes
* Support .yml in lowdefy.yaml file. ([0f7cc2a](https://github.com/lowdefy/lowdefy/commit/0f7cc2a7612a5ad9a8164d5a5437dde5c6d7da49)), closes [#902](https://github.com/lowdefy/lowdefy/issues/902)
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)

View File

@ -15,8 +15,16 @@
*/
import React, { useEffect, useState } from 'react';
import { type } from '@lowdefy/helpers';
const MountEvents = ({ asyncEventName, context, eventName, triggerEvent, children }) => {
const MountEvents = ({
asyncEventName,
context,
eventName,
triggerEvent,
initEventsTriggered,
children,
}) => {
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
useEffect(() => {
@ -28,6 +36,9 @@ const MountEvents = ({ asyncEventName, context, eventName, triggerEvent, childre
triggerEvent({ name: asyncEventName, context });
setLoading(false);
}
if (type.isFunction(initEventsTriggered)) {
initEventsTriggered(true);
}
} catch (err) {
setError(err);
}

View File

@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/color
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package @lowdefy/color
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/color
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/color

View File

@ -1,6 +1,6 @@
{
"name": "@lowdefy/color",
"version": "3.22.0",
"version": "3.23.1",
"license": "Apache-2.0",
"description": "",
"homepage": "https://lowdefy.com",

View File

@ -3,6 +3,51 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/docs
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
### Bug Fixes
* **docs:** Fix _ref resolver function example. ([0903094](https://github.com/lowdefy/lowdefy/commit/0903094ce531f4d8ab7849deb91ab3d6b7e5fd82))
* **docs:** Included onSearch event example in MultipleSelector and Selector docs. ([0e53cb8](https://github.com/lowdefy/lowdefy/commit/0e53cb8f93ed49e0122ac038113d7378f67501f7))
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
### Bug Fixes
* Add _switch operator to docs. ([c5c6f0c](https://github.com/lowdefy/lowdefy/commit/c5c6f0c9a5b0dfc89e09835d3ab940195a077504))
* Support .yml in lowdefy.yaml file. ([0f7cc2a](https://github.com/lowdefy/lowdefy/commit/0f7cc2a7612a5ad9a8164d5a5437dde5c6d7da49)), closes [#902](https://github.com/lowdefy/lowdefy/issues/902)
* **docs:** Add avatar and links to blog template. ([d855599](https://github.com/lowdefy/lowdefy/commit/d855599398cae041933dd8b11aaf77648f87d4c2))
* **docs:** Add how to generate pdfs. ([7b35550](https://github.com/lowdefy/lowdefy/commit/7b35550fa944995be8f8a9d0e809971cabcf12af))
* **docs:** Fix the iframe videos in the docs. ([c4a957a](https://github.com/lowdefy/lowdefy/commit/c4a957a12ea5adf018b373d8da8c5116e064205f))
* improvements on blog template. ([30e2291](https://github.com/lowdefy/lowdefy/commit/30e22917fed9932e43cde942532654aa4a6aeac6))
* **docs:** Add how to generate CSVs. ([2cc8e45](https://github.com/lowdefy/lowdefy/commit/2cc8e45b165aa755dceb9e40525f8a0511fb3485))
### Features
* **docs:** Add how to generate csv. ([3257f51](https://github.com/lowdefy/lowdefy/commit/3257f514b95f7cafb8ac30998194e7ae0a327862))
* **docs:** Add videos to how tos. ([57c7779](https://github.com/lowdefy/lowdefy/commit/57c77798f0356c606cf90bfd36a4f63ab8d0ff36))
* Add generate pdf how to. ([5bde460](https://github.com/lowdefy/lowdefy/commit/5bde460934e2dc94d677af5f287e3c85c0ff4c34))
* **docs:** Added switch operator documentation. ([7c42c78](https://github.com/lowdefy/lowdefy/commit/7c42c7882422ea89332b32bcef985b5bc5059ec8))
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)

View File

@ -66,7 +66,7 @@ _ref:
```yaml
# lowdefy.yaml
name: intercom-example
lowdefy: '3.22.0'
lowdefy: '3.23.1'
app:
html:
appendBody: |
@ -137,7 +137,7 @@ _ref:
```yaml
# file: lowdefy.yaml
name: text-highlight-example
lowdefy: '3.22.0'
lowdefy: '3.23.1'
app:
html:
# Load the custom modules into the index.html head tag.

View File

@ -35,3 +35,83 @@ _ref:
> Other selector blocks are `ButtonSelector`, `CheckboxSelector`, `RadioSelector` and `Selector`.
examples:
- title: Listing options from database search
block:
id: example_selector
type: MultipleSelector
requests:
- id: example_search
type: MongoDBAggregation
connectionId: companies
properties:
pipeline:
- $search:
compound:
should:
- wildcard:
query:
_string.concat:
- '*'
- _state: search_input
- '*'
path: # field names to search in the companies collection
- _id
- company_name
allowAnalyzedField: true
- $addFields:
score:
$meta: searchScore
- $sort:
score: -1
- $limit: 50
- $project:
_id: 0
value: $_id
label:
$concat:
- $_id
- ' - '
- $ifNull:
- $company_name
- ''
properties:
placeholder: Search
options: # search request results will be used as options
_array.concat:
- _if_none:
- _state: example_options
- []
- _if_none:
- _request: example_search
- []
label:
disabled: true
events:
onChange: # selector onChange actions - triggered when the value of the selector changes
- id: set_state
type: SetState
params:
example_options:
_mql.aggregate:
on:
_array.concat:
- _state: example_options
- _request: example_search
pipeline:
- $match:
value:
$in:
_state: example_selector
onSearch: # selector onSearch actions - triggered when the user types in the search input
debounce:
ms: 500
try:
- id: set_state
type: SetState
params:
search_input:
_event: value
- id: perform_search
type: Request
params: example_search

View File

@ -34,3 +34,65 @@ _ref:
The options for the selector can be provides as either an array of primitive values (Strings, numbers, booleans or dates), or as an array of label-value pairs, where the label is a string, and the value can be of any type, including objects like dates and arrays.
> Other selector blocks are `ButtonSelector`, `CheckboxSelector`, `MultipleSelector` and `RadioSelector`.
examples:
- title: Listing options from database search
block:
id: example_selector
type: Selector
requests:
- id: example_search
type: MongoDBAggregation
connectionId: companies
properties:
pipeline:
- $search:
compound:
should:
- wildcard:
query:
_string.concat:
- '*'
- _state: search_input
- '*'
path: # field names to search in the companies collection
- _id
- company_name
allowAnalyzedField: true
- $addFields:
score:
$meta: searchScore
- $sort:
score: -1
- $limit: 50
- $project: # selector options value, label pairs
_id: 0
value: $_id
label:
$concat:
- $_id
- ' - '
- $ifNull:
- $company_name
- ''
properties:
placeholder: Search
options:
_if_none: # search request results will be used as options
- _request: example_search
- []
label:
disabled: true
events:
onSearch: # selector onSearch actions
debounce:
ms: 500
try:
- id: set_state
type: SetState
params:
search_input:
_event: value
- id: perform_search
type: Request
params: example_search

View File

@ -45,7 +45,7 @@ _ref:
```yaml
name: dashboard-app
lowdefy: 3.22.0
lowdefy: 3.23.1
types:
AmChartsXY:
url: https://blocks-cdn.lowdefy.com/v3.10.1/blocks-amcharts/meta/AmChartsXY.json
@ -95,7 +95,7 @@ _ref:
```yaml
name: dashboard-app
lowdefy: 3.22.0
lowdefy: 3.23.1
types:
MyCustomBlock:
url: http://localhost:3002/meta/MyCustomBlock.json

View File

@ -53,7 +53,7 @@ _ref:
```yaml
name: google-analytics-example
lowdefy: 3.22.0
lowdefy: 3.23.1
# ...
app:
html:
@ -98,7 +98,7 @@ _ref:
```yaml
# /lowdefy.yaml
name: json-todos
lowdefy: 3.22.0
lowdefy: 3.23.1
app:
html:
appendHead:
@ -156,7 +156,7 @@ _ref:
```yaml
# /lowdefy.yaml
name: operator-example
lowdefy: 3.22.0
lowdefy: 3.23.1
app:
html:
appendHead:

View File

@ -43,7 +43,19 @@ _ref:
The config object has the following properties:
- `homePageId: string`: The pageId of the page that should be loaded when a user loads the app without a pageId in the url route. This is the page that is loaded when you navigate to `yourdomain.com`.
- `experimental_initPageId: string`: The pageId of the page that should be loaded when app is initialized. User is then redirected to requeted page. You can use onInit/onInitAsync/onEnter/onEnterAsync events to fetch and prepare global variables for other parts of the app.
- id: alert1
type: Alert
properties:
type: warning
showIcon: false
message: Init page is an experimental feature, that may disappear in future releases as well as the flag itself can be changed. Use at your own risk.
- id: md2
type: MarkdownWithCode
properties:
content: |
# Global
Any data that you wish to use in your app can be stored in the __global__ object, and accessed using the [`_global`](/_global) operator. This is a good place to store data or configuration that is used throughout the app, for example the url of a logo or configuration of a page, since then these are only written once, and can be updated easily.

View File

@ -88,7 +88,7 @@ _ref:
###### A basic full example requesting data from https://jsonplaceholder.typicode.com
```yaml
lowdefy: 3.22.0
lowdefy: 3.23.1
name: Lowdefy starter
connections:
- id: my_api

View File

@ -55,10 +55,10 @@ _ref:
COPY --chown=node:node . .
# Build the Lowdefy config using the Lowdefy CLI
RUN npx lowdefy@3.22.0 build
RUN npx lowdefy@3.23.1 build
# Use the correct Lowdefy base image
FROM lowdefy/lowdefy-aws-lambda:3.22.0
FROM lowdefy/lowdefy-aws-lambda:3.23.1
# Copy build output from build stage
COPY --from=build /home/node/lowdefy/.lowdefy/build ./build

View File

@ -65,10 +65,10 @@ _ref:
COPY --chown=node:node . .
# Build the Lowdefy config using the Lowdefy CLI
RUN npx lowdefy@3.22.0 build
RUN npx lowdefy@3.23.1 build
# Use the correct Lowdefy base image
FROM lowdefy/lowdefy:3.22.0
FROM lowdefy/lowdefy:3.23.1
# Copy build output from build stage
COPY --from=build --chown=node:node /home/node/lowdefy/.lowdefy/build ./build

View File

@ -184,7 +184,7 @@ _ref:
###### /lowdefy.yaml
```yaml
lowdefy: 3.22.0
lowdefy: 3.23.1
name: Generate PDF from data with Lowdefy
app:

View File

@ -237,7 +237,7 @@ _ref:
###### /lowdefy.yaml
```yaml
name: Generate a PDF
lowdefy: 3.22.0
lowdefy: 3.23.1
app:
html:
@ -302,7 +302,7 @@ _ref:
###### /lowdefy.yaml
```yaml
lowdefy: 3.22.0
lowdefy: 3.23.1
name: Generate PDF from data with Lowdefy
app:

View File

@ -1,4 +1,4 @@
lowdefy: 3.22.0
lowdefy: 3.23.1
name: Generate PDF from data with Lowdefy
app:

View File

@ -1,4 +1,4 @@
lowdefy: 3.22.0
lowdefy: 3.23.1
name: Generate PDF from data with Lowdefy
app:

View File

@ -13,7 +13,7 @@
# limitations under the License.
name: '@lowdefy/docs'
lowdefy: 3.22.0
lowdefy: 3.23.1
licence: Apache-2.0
cli:

View File

@ -740,10 +740,9 @@
- id: _sum
type: MenuLink
pageId: _sum
# TODO NEXT v3.22.0 INCLUDE
# - id: _switch
# type: MenuLink
# pageId: _switch
- id: _switch
type: MenuLink
pageId: _switch
- id: _type
type: MenuLink
pageId: _type
@ -771,9 +770,14 @@
title: Lowdefy Versions
icon: BranchesOutlined
links:
- id: v3.22.0
- id: v3.23.1
type: MenuLink
url: https://docs.lowdefy.com
properties:
title: v3.23.1
- id: v3.22.0
type: MenuLink
url: https://61519bcb8b8ed4412aae3057--lowdefy-docs.netlify.app
properties:
title: v3.22.0
- id: v3.21.2

View File

@ -77,7 +77,7 @@ _ref:
First register a custom JavaScript action: `getNormalizedEigenvector`
```yaml
# file: lowdefy.yaml
lowdefy: '3.22.0'
lowdefy: '3.23.1'
app:
html:
appendHead: |

View File

@ -51,7 +51,7 @@ _ref:
```yaml
# lowdefy.yaml
name: make-me-primes
lowdefy: '3.22.0'
lowdefy: '3.23.1'
app:
html:
# This HTML will be appended to the head HTML tag in the Lowdefy app
@ -119,7 +119,7 @@ _ref:
```yaml
# file: lowdefy.yaml
name: my-chart
lowdefy: '3.22.0'
lowdefy: '3.23.1'
app:
html:
appendHead:

View File

@ -73,7 +73,7 @@ _ref:
###### Reference pages:
```yaml
# lowdefy.yaml
lowdefy: '3.22.0'
lowdefy: '3.23.1'
pages:
- _ref: pages/page1.yaml
- _ref: pages/page2.yaml
@ -94,7 +94,7 @@ _ref:
```
Returns:
```
lowdefy: '3.22.0'
lowdefy: '3.23.1'
pages:
- id: page1
type: PageHeaderMenu
@ -176,12 +176,20 @@ _ref:
const readFilePromise = promisify(fs.readFile);
async function useLocalOrSharedConfig(path, vars, context) {
const localFile = await readFilePromise(path.resolve(path), 'utf8');
async function useLocalOrSharedConfig(refPath, vars, context) {
let fileContent
try {
fileContent = await readFilePromise(path.resolve(refPath), 'utf8');
return fileContent;
} catch (error) {
if (error.code === 'ENOENT') {
fileContent = readFilePromise(path.resolve('../shared', refPath), 'utf8');
return fileContent;
}
throw error;
}
if (localFile) return localFile;
return readFilePromise(path.resolve('../shared', path), 'utf8');
}
module.exports = useLocalOrSharedConfig;
@ -189,7 +197,7 @@ _ref:
```yaml
// lowdefy.yaml
lowdefy: 3.22.0
lowdefy: 3.23.1
cli:
refResolver: resolvers/useLocalOrSharedConfig.js
@ -215,7 +223,7 @@ _ref:
```
```yaml
// lowdefy.yaml
lowdefy: 3.22.0
lowdefy: 3.23.1
pages:
- _ref:

View File

@ -1,6 +1,6 @@
{
"name": "@lowdefy/docs",
"version": "3.22.0",
"version": "3.23.1",
"license": "Apache-2.0",
"description": "",
"homepage": "https://lowdefy.com",

File diff suppressed because it is too large Load Diff

View File

@ -76,7 +76,7 @@ _ref:
```yaml
name: lowdefy-project-template
lowdefy: 3.22.0
lowdefy: 3.23.1
pages:
################ -------- Copy from here -------- ################

View File

@ -180,7 +180,7 @@ _ref:
Open the `lowdefy.yaml` file using a text editor like [VS Code](https://code.visualstudio.com/download). The content of the file should look like this:
```yaml
lowdefy: 3.22.0
lowdefy: 3.23.1
name: Lowdefy starter
pages:

View File

@ -132,7 +132,7 @@ _ref:
###### Redirect to the Auth0 logout URL and return to the `logged-out` page in the app after logout:
```yaml
lowdefy: 3.22.0
lowdefy: 3.23.1
config:
auth:
openId:
@ -144,7 +144,7 @@ _ref:
###### Redirect to the Keycloak logout URL and return to the `logged-out` page in the app after logout:
```yaml
lowdefy: 3.22.0
lowdefy: 3.23.1
config:
auth:
openId:

View File

@ -36,7 +36,7 @@ _ref:
###### List specific public pages:
```yaml
lowdefy: 3.22.0
lowdefy: 3.23.1
config:
auth:
pages:
@ -48,7 +48,7 @@ _ref:
````
###### List specific protected pages:
```yaml
lowdefy: 3.22.0
lowdefy: 3.23.1
config:
auth:
pages:

View File

@ -29,7 +29,7 @@ _ref:
Roles can be read from a custom claim on the OpenID Connect `idToken`. This should be an array of strings which are the role names. This needs to be configured at the OpenID Connect provider. The field that contains the roles array is configured in the `config.auth.openId` field in the Lowdefy configuration.
```yaml
lowdefy: 3.22.0
lowdefy: 3.23.1
config:
auth:
openId:
@ -43,7 +43,7 @@ _ref:
###### Protect pages using roles:
```yaml
lowdefy: 3.22.0
lowdefy: 3.23.1
config:
auth:
openId:

View File

@ -48,7 +48,7 @@ _ref:
content: |
Most authorization and authentication settings are configured in the `config.auth` object in the Lowdefy configuration. The following config can be set:
```yaml
lowdefy: 3.22.0
lowdefy: 3.23.1
config:
auth:
openId:

View File

@ -1 +1 @@
v3.22.0
v3.23.1

View File

@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/engine
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package @lowdefy/engine
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/engine
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/engine

View File

@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/format
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package @lowdefy/format
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/format
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/format

View File

@ -1,6 +1,6 @@
{
"name": "@lowdefy/format",
"version": "3.22.0",
"version": "3.23.1",
"license": "Apache-2.0",
"description": "",
"homepage": "https://lowdefy.com",

View File

@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/helpers
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package @lowdefy/helpers
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/helpers
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/helpers

View File

@ -1,6 +1,6 @@
{
"name": "@lowdefy/helpers",
"version": "3.22.0",
"version": "3.23.1",
"licence": "Apache-2.0",
"description": "",
"homepage": "https://lowdefy.com",

View File

@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/layout
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package @lowdefy/layout
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/layout
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/layout

View File

@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/node-utils
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package @lowdefy/node-utils
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/node-utils
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/node-utils

View File

@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/nunjucks
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package @lowdefy/nunjucks
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/nunjucks
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/nunjucks

View File

@ -1,6 +1,6 @@
{
"name": "@lowdefy/nunjucks",
"version": "3.22.0",
"version": "3.23.1",
"licence": "Apache-2.0",
"description": "",
"homepage": "https://lowdefy.com",
@ -40,7 +40,7 @@
"test": "jest --coverage"
},
"dependencies": {
"@lowdefy/helpers": "3.22.0",
"@lowdefy/helpers": "3.23.1",
"moment": "2.29.1",
"nunjucks": "3.2.3"
},

View File

@ -3,6 +3,40 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/operators
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package @lowdefy/operators
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
### Bug Fixes
* **operators:** Added tests for switch operator to Node and Web Parsers. ([249ab6b](https://github.com/lowdefy/lowdefy/commit/249ab6bb475bb0d945e48d4f5b90d2308fd00e16))
* **operators:** Added tests for switch operator. ([ce31fa3](https://github.com/lowdefy/lowdefy/commit/ce31fa30c05023f7a15c944abfc93a7ecb9f6b56))
* **operators:** Updated switch operator to for... ...of syntax. ([cdbd0e0](https://github.com/lowdefy/lowdefy/commit/cdbd0e0d229933d6b0e497f90cf755ccd04b89c9))
### Features
* **operators:** Added switch operator. ([436170c](https://github.com/lowdefy/lowdefy/commit/436170c2ec88e6a8ddbd5a34c791cd7eacc5f72b))
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/operators

View File

@ -1,6 +1,6 @@
{
"name": "@lowdefy/operators",
"version": "3.22.0",
"version": "3.23.1",
"licence": "Apache-2.0",
"description": "",
"homepage": "https://lowdefy.com",
@ -38,9 +38,9 @@
"test:watch": "jest --coverage --watch"
},
"dependencies": {
"@lowdefy/format": "3.22.0",
"@lowdefy/helpers": "3.22.0",
"@lowdefy/nunjucks": "3.22.0",
"@lowdefy/format": "3.23.1",
"@lowdefy/helpers": "3.23.1",
"@lowdefy/nunjucks": "3.23.1",
"change-case": "4.1.2",
"deep-diff": "1.0.2",
"js-yaml": "4.1.0",

View File

@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/server
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package @lowdefy/server
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/server
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/server

View File

@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.23.1](https://github.com/lowdefy/lowdefy/compare/v3.23.0...v3.23.1) (2021-11-20)
**Note:** Version bump only for package @lowdefy/server-dev
# [3.23.0](https://github.com/lowdefy/lowdefy/compare/v3.23.0-alpha.0...v3.23.0) (2021-11-19)
**Note:** Version bump only for package @lowdefy/server-dev
# [3.23.0-alpha.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0...v3.23.0-alpha.0) (2021-11-09)
**Note:** Version bump only for package @lowdefy/server-dev
# [3.22.0](https://github.com/lowdefy/lowdefy/compare/v3.22.0-alpha.1...v3.22.0) (2021-09-27)
**Note:** Version bump only for package @lowdefy/server-dev