UNPKG

7.02 kBJavaScriptView Raw
1/* eslint-disable angular/controller-as */
2import angular from 'angular';
3
4import {storiesOf} from '@storybook/html';
5import {action} from '@storybook/addon-actions';
6
7import angularDecorator, {APP_NAME} from '../../.storybook/angular-decorator';
8import hubConfig from '../../.storybook/hub-config';
9import QueryAssistNG from '../query-assist-ng/query-assist-ng';
10
11import SaveFieldNG from './save-field-ng';
12
13storiesOf('Legacy Angular|Save Field Ng', module).
14 addParameters({
15 notes: 'Allows to create forms where some fields have their own Save buttons.',
16 hermione: {skip: true}
17 }).
18 addDecorator(angularDecorator()).
19 add('basic', () => {
20 angular.module(APP_NAME, [SaveFieldNG, QueryAssistNG]).
21 config((shortcutsProvider, rgSaveFieldShortcutsMode) => {
22 shortcutsProvider.mode({
23 id: 'ring-shortcuts',
24 shortcuts: []
25 });
26 shortcutsProvider.mode(rgSaveFieldShortcutsMode);
27 }).
28 controller('SaveFieldDemoCtrl', function ctrl($scope, $q, $http) {
29 $scope.data = {
30 email: 'aa',
31 longText: null,
32 longTextList: ['one', 'two', 'three'],
33 num: 10,
34 someText: 'some text',
35 query: 'login: guest'
36 };
37
38 // eslint-disable-next-line angular/deferred
39 const defer = $q.defer();
40 defer.resolve();
41 $scope.save = () => {
42 action('save')('data = ', $scope.data);
43 return defer.promise;
44 };
45
46 $scope.invalidSave = currentValue => {
47 if (currentValue.length < 7) {
48 return $q.reject(`Length of the string must be greater than 7! >> ${currentValue}`);
49 } else {
50 return true;
51 }
52 };
53
54 $scope.queryAssistSource = ({query, caret, omitSuggestions}) => {
55 const config = {
56 params: {
57 fields: `query,caret,styleRanges${omitSuggestions ? '' : ',suggestions'}`,
58 query,
59 caret
60 }
61 };
62
63 return $http.get(`${hubConfig.serverUri}/api/rest/users/queryAssist`, config).
64 then(data => data.data);
65 };
66
67 $scope.updateQueryAssistValue = ({query}) => {
68 $scope.data.query = query;
69 };
70 });
71
72 return `
73 <div rg-shortcuts-app>
74 <div class="ring-form" ng-controller="SaveFieldDemoCtrl">
75
76 <div class="ring-form__group">
77 <label class="ring-form__label">
78 Input
79 </label>
80
81 <div class="ring-form__control">
82 <rg-save-field value="data.email"
83 on-save="save()">
84 <input type="text"
85 class="ring-input ring-input-size_md"
86 ng-required="true"
87 ng-pattern="/^[a-zA-Z][a-zA-Z0-9-_\\.]*[@][a-zA-Z0-9-_\\.]+$/"
88 ng-model="data.email">
89 </rg-save-field>
90 <div class="ring-form__control__description">Enter valid email</div>
91 </div>
92 </div>
93
94 <div class="ring-form__group">
95 <label class="ring-form__label">
96 Input
97 </label>
98
99 <div class="ring-form__control">
100 <rg-save-field value="data.email" working-value="data.emailWorkingValue"
101 on-save="save()">
102 <input type="text"
103 class="ring-input ring-input-size_md"
104 ng-required="true"
105 ng-pattern="/^[a-zA-Z][a-zA-Z0-9-_\\.]*[@][a-zA-Z0-9-_\\.]+$/"
106 ng-model="data.emailWorkingValue">
107 </rg-save-field>
108 <div class="ring-form__control__description">value: {{data.email}} working-value: {{data.emailWorkingValue}}</div>
109 </div>
110 </div>
111
112 <div class="ring-form__group">
113 <label class="ring-form__label">
114 Textarea
115 </label>
116
117 <div class="ring-form__control">
118 <rg-save-field value="data.longText"
119 on-save="save()">
120 <textarea type="text"
121 class="ring-input ring-input-size_l"
122 ng-required="true"
123 ng-model="data.longText"></textarea>
124 </rg-save-field>
125 </div>
126 </div>
127
128 <div class="ring-form__group">
129 <label class="ring-form__label">
130 Textarea List Mode
131 </label>
132
133 <div class="ring-form__control">
134 <rg-save-field value="data.longTextList"
135 multiline="list"
136 on-save="save()">
137 <textarea type="text"
138 name="myMultilineArea"
139 class="ring-input ring-input-size_md"
140 ng-model="data.longTextList"></textarea>
141 </rg-save-field>
142 <div class="ring-form__control__description">data.longTextList =
143 {{data.longTextList}}
144 </div>
145 </div>
146 </div>
147
148 <div class="ring-form__group">
149 <label class="ring-form__label">
150 Number
151 </label>
152
153 <div class="ring-form__control">
154 <rg-save-field value="data.num"
155 on-save="save()">
156 <input type="number"
157 max="10"
158 class="ring-input ring-input-size_xs"
159 ng-model="data.num">
160 </rg-save-field>
161 </div>
162 </div>
163
164 <div class="ring-form__group">
165 <label class="ring-form__label">
166 Rejected Save
167 </label>
168
169 <div class="ring-form__control">
170 <rg-save-field value="data.someText"
171 on-save="invalidSave(value)">
172 <input type="text"
173 class="ring-input ring-input-size_md"
174 ng-model="data.someText">
175 </rg-save-field>
176 </div>
177 </div>
178
179 <div class="ring-form__group">
180 <label class="ring-form__label">
181 Query Assist
182 </label>
183
184 <div class="ring-form__control">
185 data.query={{data.query}}
186 <rg-save-field value="data.query"
187 on-save="save(value)">
188 <rg-query-assist
189 class="ring-input-size_l"
190 x-data-source="queryAssistSource"
191 query="data.query"
192 on-apply="save"
193 on-change="updateQueryAssistValue"
194 placeholder="placeholder"
195 hint="'Press ⇥ to complete first item'"
196 hint-on-selection="'Press ↩ to complete selected item'"></rg-query-assist>
197 </rg-save-field>
198 <div class="ring-form__control__description">Currently there is a
199 bug with "escape" shortcut
200 </div>
201 </div>
202 </div>
203 </div>
204
205 </div>
206 `;
207 });