mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) Forms Improvements
Summary: - Forms now have a reset button. - Choice and Reference fields in forms now have an improved select menu. - Formula and attachments column types are no longer mappable or visible in forms. - Fields in a form widget are now removed if their column is deleted. - The preview button in a published form widget has been replaced with a view button. It now opens the published form in a new tab. - A new share menu for published form widgets, with options to copy a link or embed code. - Forms can now have multiple sections. - Form widgets now indicate when publishing is unavailable (e.g. in forks or unsaved documents). - General improvements to form styling. Test Plan: Browser tests. Reviewers: jarek Reviewed By: jarek Subscribers: paulfitz Differential Revision: https://phab.getgrist.com/D4203
This commit is contained in:
@@ -35,7 +35,7 @@ export function buildCurrencyPicker(
|
||||
// Create a computed that will display 'Local currency' as a value and label
|
||||
// when `currency` is undefined.
|
||||
const valueObs = Computed.create(owner, (use) => use(currency) || defaultCurrencyLabel);
|
||||
const acIndex = new ACIndexImpl<ACSelectItem>(currencyItems, 200, true);
|
||||
const acIndex = new ACIndexImpl<ACSelectItem>(currencyItems, {maxResults: 200, keepOrder: true});
|
||||
return buildACSelect(owner,
|
||||
{
|
||||
acIndex, valueObs,
|
||||
|
||||
@@ -34,6 +34,7 @@ import * as UserType from 'app/client/widgets/UserType';
|
||||
import * as UserTypeImpl from 'app/client/widgets/UserTypeImpl';
|
||||
import * as gristTypes from 'app/common/gristTypes';
|
||||
import { getReferencedTableId, isFullReferencingType } from 'app/common/gristTypes';
|
||||
import { WidgetType } from 'app/common/widgetTypes';
|
||||
import { CellValue } from 'app/plugin/GristData';
|
||||
import { bundleChanges, Computed, Disposable, fromKo,
|
||||
dom as grainjsDom, makeTestId, MultiHolder, Observable, styled, toKo } from 'grainjs';
|
||||
@@ -129,9 +130,15 @@ export class FieldBuilder extends Disposable {
|
||||
|
||||
// Observable with a list of available types.
|
||||
this._availableTypes = Computed.create(this, (use) => {
|
||||
const isForm = use(use(this.field.viewSection).widgetType) === WidgetType.Form;
|
||||
const isFormula = use(this.origColumn.isFormula);
|
||||
const types: Array<IOptionFull<string>> = [];
|
||||
_.each(UserType.typeDefs, (def: any, key: string|number) => {
|
||||
if (isForm && key === 'Attachments') {
|
||||
// Attachments in forms are currently unsupported.
|
||||
return;
|
||||
}
|
||||
|
||||
const o: IOptionFull<string> = {
|
||||
value: key as string,
|
||||
label: def.label,
|
||||
|
||||
@@ -52,7 +52,10 @@ export function buildTZAutocomplete(
|
||||
) {
|
||||
// Set a large maxResults, since it's sometimes nice to see all supported timezones (there are
|
||||
// fewer than 1000 in practice).
|
||||
const acIndex = new ACIndexImpl<ACSelectItem>(timezoneOptions(moment), 1000, true);
|
||||
const acIndex = new ACIndexImpl<ACSelectItem>(timezoneOptions(moment), {
|
||||
maxResults: 1000,
|
||||
keepOrder: true,
|
||||
});
|
||||
|
||||
// Only save valid time zones. If there is no selected item, we'll auto-select and save only
|
||||
// when there is a good match.
|
||||
|
||||
Reference in New Issue
Block a user