Commit Graph

153 Commits

Author SHA1 Message Date
Christopher Joe
8a7ea044ac Added validator class to decouple validation library from FormBuilder
Added required rule priority logic and fix styling of error messages
2016-11-03 10:39:53 +13:00
Damian Mooyman
67f00302f9 Add logic to React FormBuilder to utilise validation schema generated 2016-11-03 10:24:36 +13:00
Paul Clarke
76d3fb80e3 Nicer pattern for showing list view of pages 2016-10-31 13:36:41 +13:00
Christopher Joe
e592c5b45e Remove back button if no callback was given
Fix FormBuilderLoader not chaining promise
2016-10-31 13:11:57 +13:00
Paul Clarke
4cc6cc3151 Fix position of back button on empty preview within campaigns 2016-10-31 12:55:53 +13:00
Paul Clarke
1395ee0c31 Don't hide gridfield content on small list view of tree 2016-10-31 12:21:48 +13:00
Paul Clarke
5df797b705 Toolbar-content to be flexible 2016-10-28 16:53:00 +13:00
Paul Clarke
50f0c1f37c Remove fixed height for batch actions 2016-10-28 16:53:00 +13:00
Paul Clarke
fad8df83cc Remove console.log 2016-10-28 16:52:03 +13:00
Paul Clarke
71a4eb7d22 Hide preview in campaigns, override list styles for mobile 2016-10-28 16:52:03 +13:00
Christopher Joe
debb1a947e Add responsive class for Campaign list
Fix back button in preview
Fix add to campaign in pages section
2016-10-28 16:51:03 +13:00
Paul Clarke
5257c92fcd Remove legacy class 2016-10-28 16:44:54 +13:00
Paul Clarke
4ce2bcc360 Add back button style if it has text 2016-10-28 16:44:54 +13:00
Paul Clarke
3fd5a6d4e6 Add left border to preview and bg 2016-10-28 16:44:54 +13:00
Paul Clarke
d761075fd3 Move mock back button 2016-10-28 16:44:54 +13:00
Paul Clarke
25783db020 toolbar-north to be 100%, removed from toolbar-content 2016-10-28 16:44:54 +13:00
Paul Clarke
27724c0829 Remove set width of toolbar-content as it extends further than 100% 2016-10-28 16:39:59 +13:00
Chris Joe
82119888c1 Validation on server side for React forms (fixes #6205) 2016-10-28 16:13:29 +13:00
Ingo Schommer
54a4cef863 Consistently use 'value' for FormField schemas
LiteralField (data.content) was inconsistent with HTMLReadonlyField (value),
which made the frontend components harder to handle.

See https://github.com/silverstripe/silverstripe-framework/pull/6172#discussion_r83561757 for contex
2016-10-20 22:03:38 +13:00
Ingo Schommer
5b31a40593 Use redux-form instead of custom actions/reducers (fixes #5524)
- Removed custom form reducers in favour of redux-form (updateField(), addForm(), etc)
- Storing 'state' in schema reducer to avoid a separate forms reducer tree (no longer needed for other use cases). This means 'state' is only the "initial state", any form edits will be handled by redux-form internally in the 'reduxForm' reducer namespace
- Removed componentWillUnmount() from <Form> since there's no more reducer state to clean up (removed formReducer.js), and redux-form handles that internally
- Removed isFetching state from <FormBuilder> since there's now a props.submitting coming from redux-form
- Improved passing of "clicked button" (submittingAction), using component state rather than reducer and passing it into action handlers (no need for components to inspect it any other way)
- Hacky duplication of this.submittingAction and this.state.submittingAction to avoid re-render of <FormBuilder> *during* a submission (see https://github.com/erikras/redux-form/issues/1944)
- Inlined handleSubmit() XHR (rather than using a redux action). There's other ways for form consumers to listen to form evens (e.g. onSubmitSuccess passed through <FormBuilder> into reduxForm()).
- Adapting checkbox/radio fields to redux-forms
  Need to send onChange event with values rather than the original event,
  see http://redux-form.com/6.1.1/docs/api/Field.md/#-input-onchange-eventorvalue-function-
- Using reduxForm() within render() causes DOM to get thrown away,
  and has weird side effects like https://github.com/erikras/redux-form/issues/1944.
  See https://github.com/erikras/redux-form/issues/603#issuecomment-176397728
- Refactored <FormBuilderLoader> as a separate container component which connects to redux and redux-form. This keeps the <FormBuilder> component dependency free and easy to test. It'll also be an advantage if we switch to a GraphQL backed component, in which case the async loading routines will look very different from the current <FormBuilderLoader> implementation
- Refactoring out the redux-form dependency from FormBuilder to make it more testable (through baseFormComponent and baseFieldComponent)
- Passing through 'form' to allow custom identifiers (which is important because currently the schema "id" contains the record identifier, making the form identifier non-deterministic - which means you can't use it with the redux-form selector API)
2016-10-20 21:49:06 +13:00
Ingo Schommer
5f81122ad3 Removed misdocumented 'data' prop 2016-10-20 15:33:50 +13:00
Damian Mooyman
72fd3b949e Fix linting issues 2016-10-11 16:49:24 +13:00
Christopher Joe
7acb3b5fc2 Fix selected view mode not reflected on button
Fix other ModelAdmin layout (test)
Fix fieldholder placement
2016-10-11 13:47:09 +13:00
Paul Clarke
8b02d9d68a Remove legacy classes for flexbox classes 2016-10-11 13:46:49 +13:00
Paul Clarke
eb7a8be3f8 Temp work in progress- to clean up 2016-10-11 13:46:38 +13:00
Paul Clarke
a37bf87857 Replace Layout with flexbox CSS classes 2016-10-11 13:46:24 +13:00
Paul Clarke
e7829eb974 Replace jLayout classes with flexbox CSS classes 2016-10-11 13:46:24 +13:00
Paul Clarke
1fd46ed36d Pages area: remove layout classes, replace with flexbox CSS classes 2016-10-11 13:46:24 +13:00
Damian Mooyman
27d35403e8 API Force formschema to be reloaded on form submission
BUG Fix missing action state
2016-10-07 13:26:57 +13:00
Christopher Joe
e5b86457b4 Added react LookupField component
API MultiSelectField readonly transformation casts to LookupField instead of ReadonlyField
FIX removed jQuery dependency from i18n
2016-10-05 15:32:05 +13:00
Christopher Joe
287809ec3b Refactored react FormFields to use react-bootstrap FormControl components
Addded Checkbox, CheckboxSet and Optionset (radio) fields
Refactored documentation
2016-10-05 10:25:21 +13:00
Paul Clarke
3ac0eaaf62 Remove legacy styles 2016-09-30 15:45:12 +13:00
Paul Clarke
b794a40864 Group button icon styles 2016-09-30 15:44:17 +13:00
Paul Clarke
374ef6e0c3 Modal styles 2016-09-30 15:44:17 +13:00
Paul Clarke
5f92e12911 If description field is empty hide it as it has margin 2016-09-30 15:44:17 +13:00
Ingo Schommer
5d9c8a8b95 Better <CompositeField> prop defaults
The props.tag default was set directly on props,
but the component used it from props.data.tag,
hence the default was ineffective.

Since empty arrays for props.data override nested React defaults,
there's no built-in way to enforce this default.

Hardcoding a default felt viable here, since the component allows overrides via props.
2016-09-22 14:46:46 +12:00
Ingo Schommer
5415afe8bf Fixed react-bootstrap tabs warnings
We can't use our own "id" values here, since react-bootstrap requires internal consistency
between tab containers and tab panes through its own auto-generated identifiers
2016-09-22 14:46:46 +12:00
Paul Clarke
62dcb0d0c4 close panel icon moved up to align with title 2016-09-22 11:21:54 +12:00
Paul
4d52d655fd Fix for spacing of sitetree panel, reportAdmin, and toggle on Member details page (#5955)
* Panel/tab-panel and alerts spacing, button padding consistency and alignment

* Reports panel spacing adjustments

* ReportAdmin panel and toolbar spacing

* Comment change

* Fix formatting help toggle link

* Use standard line-heights and padding for buttons

* Add base panel styles

* Update to .panel styles and .toolbar spacing

* Remove legacy styles, linting fixes

* Toolbar--content to have consistent styles throughout

* Add panel and toolbar styles to areas missing them

* Replace values with variables

* Layout overrides for tabs and panels with padding

* Adjust JQueryUI button spacing to match other UI buttons

* Remove custom ReportAdmin styles

Update values to variables and modify panel and tab-panel spacing

* Remove text color override

* Remove double (.m-t-1) spacing from campaign panel

* Profile page remove legacy JLayout

* Remove legacy spacing

* Removed Layout from page so !important not needed

* Improve use of variables

* Add missing closing bracket, minor linting fixes

* Linting fixes

* Remove css importants

* Add temp fix for file upload within gridfield

Tidy structure of css

* css build

* Spacing bug fixed for campaign list alert
2016-09-21 10:12:58 +12:00
Chris Joe
08a39f5f93 Update file edit form (#6024)
* Added Created field to File/Image editor

* switch default input value to null

Fix react errors and added a field description

* API Use new DBField::getSchemaValue()
2016-09-20 12:56:45 +12:00
Sam Minnee
b61c5a56de FIX: sass-lint styleguide fixes 2016-09-18 14:50:27 +12:00
Paul Clarke
d2cabce852 Added icon style for readonly fields containing icons 2016-09-14 15:09:16 +12:00
Paul Clarke
d51c46dc89 Increase consistency of tab styles across legacy and bootstrap tabs
Using BS variables where possible for all tabs
2016-09-14 14:10:41 +12:00
Christopher Joe
ee5b4fd8d3 Tabs support in new file/image editor
Introducing <Tabs> component based on react-bootstrap
Better support for nested fields in FormBuilder
Tweaks to get FormBuilder working with frameworktest BasicFieldsPage fields
Added exception in FormBuilder when Component is defined but not found
Added check in SingleSelectField for empty value before adding one in
Added temporary workaround for CompositeFields with no name (another story to address the actual problem)
Added asset_preview_height for File image preview, matches the defined CSS max-height
Added documentation to DBFile::PreviewLink() method
2016-09-14 14:08:59 +12:00
Paul
955d75b219 Insert media into TinyMCE modal, styling fixes and improvements (#5967)
* Remove interference of nested for__fieldgroup-item

* Adjust position of dropdown field

* Remove divider lines, adjust position of upload area

Clean up styles a bit too

* Adjust position of image

* Mostly css tidy up, added use of a few variables

* Toggle arrow was showing other icon because of icon height

* All buttons in toolbars remove margin below, adjust button link color

* Reorder sort and filter, add toolbar styles

* Add button styles to toolbar

* Remove some of the linting issues

* Added new panel variables

* Simplify variable

* Replace panel variable, insert media dialog positioning

* Update with new variable name, reduce space below toolbar

* Build

* Uploading file spacing, toolbar styles added

* Visual uploads, error upload fixes, edit details panel spacing

* Add toolbar to upload modal

* build

* Build

* increase width of pagination on gridfield

* Add height to uploading items only

* Build

* Added class back for beat test to pass
2016-09-14 13:48:33 +12:00
Ingo Schommer
7bc6f3ee9f Enforce JS var declaration with value (#5993)
This caught us out recently where code did a strict type check for `myVar === undefined`.
The var was defined as `let myVar;`, without a value - so the check returned false (it's `null`).
To avoid this situation, we've decided to enforce declarations with values.
Note that preference should be given to single, immutable assignments via const where possible.

See http://eslint.org/docs/rules/init-declarations
2016-09-13 11:02:15 +12:00
Ingo Schommer
0cc91d3b38 Use react-bootstrap-ss fork
The react-bootstrap project won't update their codebase for TWBS4 compat
until they're out of alpha (https://github.com/react-bootstrap/react-bootstrap/issues/1187).
So we have to work in a fork for the meantime.
2016-09-06 21:36:58 +12:00
Ingo Schommer
f7f1cf0e87 Fix SingleSelectField readonly view 2016-09-06 20:40:14 +12:00
Ingo Schommer
1d3aaf368e Popover docs 2016-09-06 20:39:41 +12:00
Ingo Schommer
b53ce4c190 FIX Button loading indicator
See silverstripe/silverstripe-framework#5941
2016-09-06 20:39:32 +12:00