@skyux/inline-form 7.0.0-beta.1 → 7.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/documentation.json +83 -63
- package/esm2020/lib/modules/inline-form/inline-form-adapter.service.mjs +28 -25
- package/esm2020/lib/modules/inline-form/inline-form.component.mjs +154 -148
- package/fesm2015/skyux-inline-form.mjs +178 -170
- package/fesm2015/skyux-inline-form.mjs.map +1 -1
- package/fesm2020/skyux-inline-form.mjs +178 -170
- package/fesm2020/skyux-inline-form.mjs.map +1 -1
- package/lib/modules/inline-form/inline-form-adapter.service.d.ts +1 -3
- package/lib/modules/inline-form/inline-form.component.d.ts +6 -16
- package/package.json +3 -3
|
@@ -4,8 +4,9 @@ import * as i0 from '@angular/core';
|
|
|
4
4
|
import { NgModule, Injectable, EventEmitter, Component, ChangeDetectionStrategy, Input, Output } from '@angular/core';
|
|
5
5
|
import * as i2 from '@skyux/i18n';
|
|
6
6
|
import { getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS } from '@skyux/i18n';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from 'tslib';
|
|
8
|
+
import { Subject, ReplaySubject, zip } from 'rxjs';
|
|
9
|
+
import { takeUntil } from 'rxjs/operators';
|
|
9
10
|
import { trigger, transition, query, style, animate, group } from '@angular/animations';
|
|
10
11
|
import * as i3 from '@skyux/core';
|
|
11
12
|
|
|
@@ -81,6 +82,7 @@ const skySlideDissolve = trigger('skySlideDissolve', [
|
|
|
81
82
|
]),
|
|
82
83
|
]);
|
|
83
84
|
|
|
85
|
+
var _SkyInlineFormAdapterService_instances, _SkyInlineFormAdapterService_loadFocusableChildren, _SkyInlineFormAdapterService_isVisible, _SkyInlineFormAdapterService_focusFirstElement;
|
|
84
86
|
const SKY_TABBABLE_SELECTOR = [
|
|
85
87
|
'a[href]',
|
|
86
88
|
'area[href]',
|
|
@@ -98,6 +100,9 @@ const SKY_TABBABLE_SELECTOR = [
|
|
|
98
100
|
* @internal
|
|
99
101
|
*/
|
|
100
102
|
class SkyInlineFormAdapterService {
|
|
103
|
+
constructor() {
|
|
104
|
+
_SkyInlineFormAdapterService_instances.add(this);
|
|
105
|
+
}
|
|
101
106
|
applyAutofocus(inlineFormElementRef) {
|
|
102
107
|
const inputWithAutofocus = inlineFormElementRef.nativeElement.querySelector('[autofocus]');
|
|
103
108
|
if (inputWithAutofocus) {
|
|
@@ -105,34 +110,32 @@ class SkyInlineFormAdapterService {
|
|
|
105
110
|
}
|
|
106
111
|
else {
|
|
107
112
|
const focusEl = inlineFormElementRef.nativeElement.querySelector('.sky-inline-form-content');
|
|
108
|
-
const focusableChildren = this.
|
|
109
|
-
this.
|
|
113
|
+
const focusableChildren = __classPrivateFieldGet(this, _SkyInlineFormAdapterService_instances, "m", _SkyInlineFormAdapterService_loadFocusableChildren).call(this, focusEl);
|
|
114
|
+
__classPrivateFieldGet(this, _SkyInlineFormAdapterService_instances, "m", _SkyInlineFormAdapterService_focusFirstElement).call(this, focusableChildren);
|
|
110
115
|
}
|
|
111
116
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
/* istanbul ignore next */
|
|
125
|
-
const hasBounds = !!(element.offsetWidth ||
|
|
126
|
-
element.offsetHeight ||
|
|
127
|
-
element.getClientRects().length);
|
|
128
|
-
return hasBounds;
|
|
117
|
+
}
|
|
118
|
+
_SkyInlineFormAdapterService_instances = new WeakSet(), _SkyInlineFormAdapterService_loadFocusableChildren = function _SkyInlineFormAdapterService_loadFocusableChildren(elem) {
|
|
119
|
+
const elements = Array.prototype.slice.call(elem.querySelectorAll(SKY_TABBABLE_SELECTOR));
|
|
120
|
+
return elements.filter((element) => {
|
|
121
|
+
return __classPrivateFieldGet(this, _SkyInlineFormAdapterService_instances, "m", _SkyInlineFormAdapterService_isVisible).call(this, element);
|
|
122
|
+
});
|
|
123
|
+
}, _SkyInlineFormAdapterService_isVisible = function _SkyInlineFormAdapterService_isVisible(element) {
|
|
124
|
+
const style = window.getComputedStyle(element);
|
|
125
|
+
const isHidden = style.display === 'none' || style.visibility === 'hidden';
|
|
126
|
+
if (isHidden) {
|
|
127
|
+
return false;
|
|
129
128
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
129
|
+
/* istanbul ignore next */
|
|
130
|
+
const hasBounds = !!(element.offsetWidth ||
|
|
131
|
+
element.offsetHeight ||
|
|
132
|
+
element.getClientRects().length);
|
|
133
|
+
return hasBounds;
|
|
134
|
+
}, _SkyInlineFormAdapterService_focusFirstElement = function _SkyInlineFormAdapterService_focusFirstElement(list) {
|
|
135
|
+
if (list.length > 0) {
|
|
136
|
+
list[0].focus();
|
|
134
137
|
}
|
|
135
|
-
}
|
|
138
|
+
};
|
|
136
139
|
SkyInlineFormAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyInlineFormAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
137
140
|
SkyInlineFormAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyInlineFormAdapterService });
|
|
138
141
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyInlineFormAdapterService, decorators: [{
|
|
@@ -163,34 +166,43 @@ var SkyInlineFormButtonLayout;
|
|
|
163
166
|
SkyInlineFormButtonLayout[SkyInlineFormButtonLayout["SaveDeleteCancel"] = 4] = "SaveDeleteCancel";
|
|
164
167
|
})(SkyInlineFormButtonLayout || (SkyInlineFormButtonLayout = {}));
|
|
165
168
|
|
|
169
|
+
var _SkyInlineFormComponent_instances, _SkyInlineFormComponent__config, _SkyInlineFormComponent__showForm, _SkyInlineFormComponent_ngUnsubscribe, _SkyInlineFormComponent_adapter, _SkyInlineFormComponent_elementRef, _SkyInlineFormComponent_resourcesService, _SkyInlineFormComponent_skyAppWindowRef, _SkyInlineFormComponent_changeDetectorRef, _SkyInlineFormComponent_setupButtons, _SkyInlineFormComponent_getPresetButtons, _SkyInlineFormComponent_getCustomButtons, _SkyInlineFormComponent_isValidCustomConfig;
|
|
166
170
|
/**
|
|
167
171
|
* Renders form content in the current view instead of a separate modal.
|
|
168
172
|
*/
|
|
169
173
|
class SkyInlineFormComponent {
|
|
170
174
|
constructor(adapter, elementRef, resourcesService, skyAppWindowRef, changeDetectorRef) {
|
|
171
|
-
this
|
|
172
|
-
this.elementRef = elementRef;
|
|
173
|
-
this.resourcesService = resourcesService;
|
|
174
|
-
this.skyAppWindowRef = skyAppWindowRef;
|
|
175
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
175
|
+
_SkyInlineFormComponent_instances.add(this);
|
|
176
176
|
/**
|
|
177
177
|
* Fires when users close the inline form.
|
|
178
178
|
*/
|
|
179
179
|
this.close = new EventEmitter();
|
|
180
|
-
this
|
|
180
|
+
_SkyInlineFormComponent__config.set(this, void 0);
|
|
181
|
+
_SkyInlineFormComponent__showForm.set(this, false);
|
|
182
|
+
_SkyInlineFormComponent_ngUnsubscribe.set(this, new Subject());
|
|
183
|
+
_SkyInlineFormComponent_adapter.set(this, void 0);
|
|
184
|
+
_SkyInlineFormComponent_elementRef.set(this, void 0);
|
|
185
|
+
_SkyInlineFormComponent_resourcesService.set(this, void 0);
|
|
186
|
+
_SkyInlineFormComponent_skyAppWindowRef.set(this, void 0);
|
|
187
|
+
_SkyInlineFormComponent_changeDetectorRef.set(this, void 0);
|
|
188
|
+
__classPrivateFieldSet(this, _SkyInlineFormComponent_adapter, adapter, "f");
|
|
189
|
+
__classPrivateFieldSet(this, _SkyInlineFormComponent_elementRef, elementRef, "f");
|
|
190
|
+
__classPrivateFieldSet(this, _SkyInlineFormComponent_resourcesService, resourcesService, "f");
|
|
191
|
+
__classPrivateFieldSet(this, _SkyInlineFormComponent_skyAppWindowRef, skyAppWindowRef, "f");
|
|
192
|
+
__classPrivateFieldSet(this, _SkyInlineFormComponent_changeDetectorRef, changeDetectorRef, "f");
|
|
181
193
|
}
|
|
182
194
|
/**
|
|
183
195
|
* Specifies configuration options for the buttons to display with the inline form.
|
|
184
196
|
* @required
|
|
185
197
|
*/
|
|
186
198
|
set config(value) {
|
|
187
|
-
if (value !== this
|
|
188
|
-
this
|
|
189
|
-
this.
|
|
199
|
+
if (value !== __classPrivateFieldGet(this, _SkyInlineFormComponent__config, "f") && !!value) {
|
|
200
|
+
__classPrivateFieldSet(this, _SkyInlineFormComponent__config, value, "f");
|
|
201
|
+
__classPrivateFieldGet(this, _SkyInlineFormComponent_instances, "m", _SkyInlineFormComponent_setupButtons).call(this);
|
|
190
202
|
}
|
|
191
203
|
}
|
|
192
204
|
get config() {
|
|
193
|
-
return this
|
|
205
|
+
return __classPrivateFieldGet(this, _SkyInlineFormComponent__config, "f");
|
|
194
206
|
}
|
|
195
207
|
/**
|
|
196
208
|
* Indicates whether to display the inline form. Users can toggle between displaying
|
|
@@ -198,23 +210,25 @@ class SkyInlineFormComponent {
|
|
|
198
210
|
* @default false
|
|
199
211
|
*/
|
|
200
212
|
set showForm(value) {
|
|
201
|
-
this
|
|
213
|
+
__classPrivateFieldSet(this, _SkyInlineFormComponent__showForm, value, "f");
|
|
202
214
|
/* istanbul ignore else */
|
|
203
215
|
if (value) {
|
|
204
216
|
// setTimeout() prevents applyAutofocus() from firing
|
|
205
217
|
// until after *ngIf has added the form element to the DOM.
|
|
206
|
-
this.
|
|
207
|
-
this.
|
|
218
|
+
__classPrivateFieldGet(this, _SkyInlineFormComponent_skyAppWindowRef, "f").nativeWindow.setTimeout(() => {
|
|
219
|
+
__classPrivateFieldGet(this, _SkyInlineFormComponent_adapter, "f").applyAutofocus(__classPrivateFieldGet(this, _SkyInlineFormComponent_elementRef, "f"));
|
|
208
220
|
});
|
|
209
221
|
}
|
|
210
222
|
}
|
|
211
223
|
get showForm() {
|
|
212
|
-
return this
|
|
224
|
+
return __classPrivateFieldGet(this, _SkyInlineFormComponent__showForm, "f");
|
|
213
225
|
}
|
|
214
226
|
ngOnInit() {
|
|
215
|
-
this.
|
|
227
|
+
__classPrivateFieldGet(this, _SkyInlineFormComponent_instances, "m", _SkyInlineFormComponent_setupButtons).call(this);
|
|
216
228
|
}
|
|
217
229
|
ngOnDestroy() {
|
|
230
|
+
__classPrivateFieldGet(this, _SkyInlineFormComponent_ngUnsubscribe, "f").next();
|
|
231
|
+
__classPrivateFieldGet(this, _SkyInlineFormComponent_ngUnsubscribe, "f").complete();
|
|
218
232
|
this.close.complete();
|
|
219
233
|
}
|
|
220
234
|
closeInlineForm(event) {
|
|
@@ -223,138 +237,132 @@ class SkyInlineFormComponent {
|
|
|
223
237
|
};
|
|
224
238
|
this.close.emit(args);
|
|
225
239
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
this
|
|
233
|
-
|
|
234
|
-
this.changeDetectorRef.markForCheck();
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
getPresetButtons() {
|
|
238
|
-
const buttonType = this.config
|
|
239
|
-
? this.config.buttonLayout
|
|
240
|
-
: SkyInlineFormButtonLayout.DoneCancel;
|
|
241
|
-
let promise;
|
|
242
|
-
switch (buttonType) {
|
|
243
|
-
/* istanbul ignore next */
|
|
244
|
-
default:
|
|
245
|
-
case SkyInlineFormButtonLayout.DoneCancel:
|
|
246
|
-
zip(this.resourcesService.getString('skyux_inline_form_button_done'), this.resourcesService.getString('skyux_inline_form_button_cancel'))
|
|
247
|
-
.pipe(take(1))
|
|
248
|
-
.subscribe((values) => {
|
|
249
|
-
promise = new Promise((resolve) => {
|
|
250
|
-
resolve([
|
|
251
|
-
{
|
|
252
|
-
text: values[0],
|
|
253
|
-
styleType: 'primary',
|
|
254
|
-
action: 'done',
|
|
255
|
-
},
|
|
256
|
-
{
|
|
257
|
-
text: values[1],
|
|
258
|
-
styleType: 'link',
|
|
259
|
-
action: 'cancel',
|
|
260
|
-
},
|
|
261
|
-
]);
|
|
262
|
-
});
|
|
263
|
-
});
|
|
264
|
-
break;
|
|
265
|
-
case SkyInlineFormButtonLayout.SaveCancel:
|
|
266
|
-
zip(this.resourcesService.getString('skyux_inline_form_button_save'), this.resourcesService.getString('skyux_inline_form_button_cancel'))
|
|
267
|
-
.pipe(take(1))
|
|
268
|
-
.subscribe((values) => {
|
|
269
|
-
promise = new Promise((resolve) => {
|
|
270
|
-
resolve([
|
|
271
|
-
{
|
|
272
|
-
text: values[0],
|
|
273
|
-
styleType: 'primary',
|
|
274
|
-
action: 'save',
|
|
275
|
-
},
|
|
276
|
-
{
|
|
277
|
-
text: values[1],
|
|
278
|
-
styleType: 'link',
|
|
279
|
-
action: 'cancel',
|
|
280
|
-
},
|
|
281
|
-
]);
|
|
282
|
-
});
|
|
283
|
-
});
|
|
284
|
-
break;
|
|
285
|
-
case SkyInlineFormButtonLayout.DoneDeleteCancel:
|
|
286
|
-
zip(this.resourcesService.getString('skyux_inline_form_button_done'), this.resourcesService.getString('skyux_inline_form_button_delete'), this.resourcesService.getString('skyux_inline_form_button_cancel'))
|
|
287
|
-
.pipe(take(1))
|
|
288
|
-
.subscribe((values) => {
|
|
289
|
-
promise = new Promise((resolve) => {
|
|
290
|
-
resolve([
|
|
291
|
-
{
|
|
292
|
-
text: values[0],
|
|
293
|
-
styleType: 'primary',
|
|
294
|
-
action: 'done',
|
|
295
|
-
},
|
|
296
|
-
{
|
|
297
|
-
text: values[1],
|
|
298
|
-
styleType: 'default',
|
|
299
|
-
action: 'delete',
|
|
300
|
-
},
|
|
301
|
-
{
|
|
302
|
-
text: values[2],
|
|
303
|
-
styleType: 'link',
|
|
304
|
-
action: 'cancel',
|
|
305
|
-
},
|
|
306
|
-
]);
|
|
307
|
-
});
|
|
308
|
-
});
|
|
309
|
-
break;
|
|
310
|
-
case SkyInlineFormButtonLayout.SaveDeleteCancel:
|
|
311
|
-
zip(this.resourcesService.getString('skyux_inline_form_button_save'), this.resourcesService.getString('skyux_inline_form_button_delete'), this.resourcesService.getString('skyux_inline_form_button_cancel'))
|
|
312
|
-
.pipe(take(1))
|
|
313
|
-
.subscribe((values) => {
|
|
314
|
-
promise = new Promise((resolve) => {
|
|
315
|
-
resolve([
|
|
316
|
-
{
|
|
317
|
-
text: values[0],
|
|
318
|
-
styleType: 'primary',
|
|
319
|
-
action: 'save',
|
|
320
|
-
},
|
|
321
|
-
{
|
|
322
|
-
text: values[1],
|
|
323
|
-
styleType: 'default',
|
|
324
|
-
action: 'delete',
|
|
325
|
-
},
|
|
326
|
-
{
|
|
327
|
-
text: values[2],
|
|
328
|
-
styleType: 'link',
|
|
329
|
-
action: 'cancel',
|
|
330
|
-
},
|
|
331
|
-
]);
|
|
332
|
-
});
|
|
333
|
-
});
|
|
334
|
-
break;
|
|
335
|
-
}
|
|
336
|
-
return promise;
|
|
240
|
+
}
|
|
241
|
+
_SkyInlineFormComponent__config = new WeakMap(), _SkyInlineFormComponent__showForm = new WeakMap(), _SkyInlineFormComponent_ngUnsubscribe = new WeakMap(), _SkyInlineFormComponent_adapter = new WeakMap(), _SkyInlineFormComponent_elementRef = new WeakMap(), _SkyInlineFormComponent_resourcesService = new WeakMap(), _SkyInlineFormComponent_skyAppWindowRef = new WeakMap(), _SkyInlineFormComponent_changeDetectorRef = new WeakMap(), _SkyInlineFormComponent_instances = new WeakSet(), _SkyInlineFormComponent_setupButtons = function _SkyInlineFormComponent_setupButtons() {
|
|
242
|
+
if (__classPrivateFieldGet(this, _SkyInlineFormComponent_instances, "m", _SkyInlineFormComponent_isValidCustomConfig).call(this, this.config) &&
|
|
243
|
+
this.config &&
|
|
244
|
+
this.config.buttons) {
|
|
245
|
+
this.buttons = __classPrivateFieldGet(this, _SkyInlineFormComponent_instances, "m", _SkyInlineFormComponent_getCustomButtons).call(this, this.config.buttons);
|
|
246
|
+
__classPrivateFieldGet(this, _SkyInlineFormComponent_changeDetectorRef, "f").markForCheck();
|
|
247
|
+
return;
|
|
337
248
|
}
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
249
|
+
__classPrivateFieldGet(this, _SkyInlineFormComponent_instances, "m", _SkyInlineFormComponent_getPresetButtons).call(this)
|
|
250
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyInlineFormComponent_ngUnsubscribe, "f")))
|
|
251
|
+
.subscribe((buttons) => {
|
|
252
|
+
this.buttons = buttons;
|
|
253
|
+
__classPrivateFieldGet(this, _SkyInlineFormComponent_changeDetectorRef, "f").markForCheck();
|
|
254
|
+
});
|
|
255
|
+
}, _SkyInlineFormComponent_getPresetButtons = function _SkyInlineFormComponent_getPresetButtons() {
|
|
256
|
+
const emitter = new ReplaySubject(1);
|
|
257
|
+
const buttonType = this.config
|
|
258
|
+
? this.config.buttonLayout
|
|
259
|
+
: SkyInlineFormButtonLayout.DoneCancel;
|
|
260
|
+
switch (buttonType) {
|
|
261
|
+
/* istanbul ignore next */
|
|
262
|
+
default:
|
|
263
|
+
case SkyInlineFormButtonLayout.DoneCancel:
|
|
264
|
+
zip(__classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_done'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_cancel'))
|
|
265
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyInlineFormComponent_ngUnsubscribe, "f")))
|
|
266
|
+
.subscribe((values) => {
|
|
267
|
+
emitter.next([
|
|
268
|
+
{
|
|
269
|
+
text: values[0],
|
|
270
|
+
styleType: 'primary',
|
|
271
|
+
action: 'done',
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
text: values[1],
|
|
275
|
+
styleType: 'link',
|
|
276
|
+
action: 'cancel',
|
|
277
|
+
},
|
|
278
|
+
]);
|
|
348
279
|
});
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
280
|
+
break;
|
|
281
|
+
case SkyInlineFormButtonLayout.SaveCancel:
|
|
282
|
+
zip(__classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_save'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_cancel'))
|
|
283
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyInlineFormComponent_ngUnsubscribe, "f")))
|
|
284
|
+
.subscribe((values) => {
|
|
285
|
+
emitter.next([
|
|
286
|
+
{
|
|
287
|
+
text: values[0],
|
|
288
|
+
styleType: 'primary',
|
|
289
|
+
action: 'save',
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
text: values[1],
|
|
293
|
+
styleType: 'link',
|
|
294
|
+
action: 'cancel',
|
|
295
|
+
},
|
|
296
|
+
]);
|
|
297
|
+
});
|
|
298
|
+
break;
|
|
299
|
+
case SkyInlineFormButtonLayout.DoneDeleteCancel:
|
|
300
|
+
zip(__classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_done'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_delete'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_cancel'))
|
|
301
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyInlineFormComponent_ngUnsubscribe, "f")))
|
|
302
|
+
.subscribe((values) => {
|
|
303
|
+
emitter.next([
|
|
304
|
+
{
|
|
305
|
+
text: values[0],
|
|
306
|
+
styleType: 'primary',
|
|
307
|
+
action: 'done',
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
text: values[1],
|
|
311
|
+
styleType: 'default',
|
|
312
|
+
action: 'delete',
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
text: values[2],
|
|
316
|
+
styleType: 'link',
|
|
317
|
+
action: 'cancel',
|
|
318
|
+
},
|
|
319
|
+
]);
|
|
320
|
+
});
|
|
321
|
+
break;
|
|
322
|
+
case SkyInlineFormButtonLayout.SaveDeleteCancel:
|
|
323
|
+
zip(__classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_save'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_delete'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_cancel'))
|
|
324
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyInlineFormComponent_ngUnsubscribe, "f")))
|
|
325
|
+
.subscribe((values) => {
|
|
326
|
+
emitter.next([
|
|
327
|
+
{
|
|
328
|
+
text: values[0],
|
|
329
|
+
styleType: 'primary',
|
|
330
|
+
action: 'save',
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
text: values[1],
|
|
334
|
+
styleType: 'default',
|
|
335
|
+
action: 'delete',
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
text: values[2],
|
|
339
|
+
styleType: 'link',
|
|
340
|
+
action: 'cancel',
|
|
341
|
+
},
|
|
342
|
+
]);
|
|
343
|
+
});
|
|
344
|
+
break;
|
|
356
345
|
}
|
|
357
|
-
|
|
346
|
+
return emitter.asObservable();
|
|
347
|
+
}, _SkyInlineFormComponent_getCustomButtons = function _SkyInlineFormComponent_getCustomButtons(buttonConfigs) {
|
|
348
|
+
const buttons = [];
|
|
349
|
+
buttonConfigs.forEach((config) => {
|
|
350
|
+
/* istanbul ignore next */
|
|
351
|
+
const styleType = config.styleType || 'default';
|
|
352
|
+
buttons.push({
|
|
353
|
+
action: config.action,
|
|
354
|
+
disabled: config.disabled,
|
|
355
|
+
styleType: styleType,
|
|
356
|
+
text: config.text,
|
|
357
|
+
});
|
|
358
|
+
});
|
|
359
|
+
return buttons;
|
|
360
|
+
}, _SkyInlineFormComponent_isValidCustomConfig = function _SkyInlineFormComponent_isValidCustomConfig(config) {
|
|
361
|
+
return (!!config &&
|
|
362
|
+
!!config.buttons &&
|
|
363
|
+
config.buttons.length > 0 &&
|
|
364
|
+
config.buttonLayout === SkyInlineFormButtonLayout.Custom);
|
|
365
|
+
};
|
|
358
366
|
SkyInlineFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyInlineFormComponent, deps: [{ token: SkyInlineFormAdapterService }, { token: i0.ElementRef }, { token: i2.SkyLibResourcesService }, { token: i3.SkyAppWindowRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
359
367
|
SkyInlineFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyInlineFormComponent, selector: "sky-inline-form", inputs: { config: "config", template: "template", showForm: "showForm" }, outputs: { close: "close" }, providers: [SkyInlineFormAdapterService], ngImport: i0, template: "<div [@skySlideDissolve]=\"showForm\">\n <div *ngIf=\"!showForm\" class=\"sky-slide-dissolve-first\">\n <ng-content></ng-content>\n </div>\n\n <div *ngIf=\"template && showForm\" class=\"sky-slide-dissolve-last\">\n <div class=\"sky-inline-form sky-shadow sky-box sky-elevation-3\">\n <div class=\"sky-inline-form-content\">\n <ng-container [ngTemplateOutlet]=\"template\"> </ng-container>\n </div>\n <div class=\"sky-inline-form-footer\">\n <button\n *ngFor=\"let button of buttons\"\n class=\"sky-btn {{ 'sky-btn-' + button.styleType }}\"\n type=\"button\"\n [disabled]=\"button.disabled ? true : null\"\n [ngClass]=\"{ 'sky-btn-disabled': button.disabled }\"\n (click)=\"closeInlineForm(button)\"\n >\n {{ button.text }}\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".sky-inline-form{background:#eeeeef;border:1px solid #cdcfd2;padding:10px;width:100%}.sky-inline-form .sky-inline-form-footer{margin-top:20px}.sky-inline-form .sky-inline-form-footer button{margin:0 5px 0 0}:host-context(.sky-theme-modern) .sky-inline-form{background-color:#fff;border:none;padding:15px}:host-context(.sky-theme-modern) .sky-inline-form .sky-inline-form-footer{margin-top:30px}:host-context(.sky-theme-modern) .sky-inline-form .sky-inline-form-footer button{margin-right:10px}.sky-theme-modern .sky-inline-form{background-color:#fff;border:none;padding:15px}.sky-theme-modern .sky-inline-form .sky-inline-form-footer{margin-top:30px}.sky-theme-modern .sky-inline-form .sky-inline-form-footer button{margin-right:10px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-inline-form{background-color:#232427}.sky-theme-modern.sky-theme-mode-dark .sky-inline-form{background-color:#232427}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [skySlideDissolve], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
360
368
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyInlineFormComponent, decorators: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-inline-form.mjs","sources":["../../../../../libs/components/inline-form/src/lib/modules/shared/sky-inline-form-resources.module.ts","../../../../../libs/components/inline-form/src/lib/modules/inline-form/animations/slide-dissolve.ts","../../../../../libs/components/inline-form/src/lib/modules/inline-form/inline-form-adapter.service.ts","../../../../../libs/components/inline-form/src/lib/modules/inline-form/types/inline-form-button-layout.ts","../../../../../libs/components/inline-form/src/lib/modules/inline-form/inline-form.component.ts","../../../../../libs/components/inline-form/src/lib/modules/inline-form/inline-form.component.html","../../../../../libs/components/inline-form/src/lib/modules/inline-form/inline-form.module.ts","../../../../../libs/components/inline-form/src/skyux-inline-form.ts"],"sourcesContent":["/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-inline-form' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SKY_LIB_RESOURCES_PROVIDERS,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n getLibStringForLocale,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\n skyux_inline_form_button_cancel: { message: 'Cancel' },\n skyux_inline_form_button_delete: { message: 'Delete' },\n skyux_inline_form_button_done: { message: 'Done' },\n skyux_inline_form_button_save: { message: 'Save' },\n },\n};\n\nexport class SkyInlineFormResourcesProvider implements SkyLibResourcesProvider {\n public getString(\n localeInfo: SkyAppLocaleInfo,\n name: string\n ): string | undefined {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyInlineFormResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class SkyInlineFormResourcesModule {}\n","import {\n AnimationTriggerMetadata,\n animate,\n group,\n query,\n style,\n transition,\n trigger,\n} from '@angular/animations';\n\nexport const skySlideDissolve: AnimationTriggerMetadata = trigger(\n 'skySlideDissolve',\n [\n transition('* <=> *', [\n // Expand animations\n query(\n '.sky-slide-dissolve-last:enter',\n [\n style({ height: 0, opacity: 0 }),\n animate('200ms ease-in', style({ height: '*', opacity: 0 })),\n ],\n { optional: true }\n ),\n query(\n '.sky-slide-dissolve-last:enter',\n [\n style({ opacity: 0 }),\n animate('200ms ease-in', style({ opacity: 1 })),\n ],\n { optional: true }\n ),\n\n // Collapse animations\n // The expanded content should fade out immediately to prevent\n // any overlap with the read-only content that's returning to the screen.\n query(\n '.sky-slide-dissolve-last:leave',\n [animate('0ms', style({ opacity: 0 }))],\n { optional: true }\n ),\n\n group([\n query(\n '.sky-slide-dissolve-first:enter',\n [\n style({ opacity: 0, height: 0 }),\n animate('100ms ease-in', style({ opacity: 1, height: '*' })),\n ],\n { optional: true }\n ),\n query(\n '.sky-slide-dissolve-last:leave',\n [animate('200ms ease-in', style({ height: 0 }))],\n { optional: true }\n ),\n ]),\n ]),\n ]\n);\n","import { ElementRef, Injectable } from '@angular/core';\n\nconst SKY_TABBABLE_SELECTOR = [\n 'a[href]',\n 'area[href]',\n \"input:not([disabled]):not([tabindex='-1'])\",\n \"button:not([disabled]):not([tabindex='-1'])\",\n \"select:not([disabled]):not([tabindex='-1'])\",\n \"textarea:not([disabled]):not([tabindex='-1'])\",\n 'iframe',\n 'object',\n 'embed',\n \"*[tabindex]:not([tabindex='-1'])\",\n '*[contenteditable=true]',\n].join(', ');\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyInlineFormAdapterService {\n public applyAutofocus(inlineFormElementRef: ElementRef): void {\n const inputWithAutofocus =\n inlineFormElementRef.nativeElement.querySelector('[autofocus]');\n\n if (inputWithAutofocus) {\n inputWithAutofocus.focus();\n } else {\n const focusEl: HTMLElement =\n inlineFormElementRef.nativeElement.querySelector(\n '.sky-inline-form-content'\n );\n const focusableChildren = this.loadFocusableChildren(focusEl);\n\n this.focusFirstElement(focusableChildren);\n }\n }\n\n private loadFocusableChildren(elem: HTMLElement): HTMLElement[] {\n const elements: Array<HTMLElement> = Array.prototype.slice.call(\n elem.querySelectorAll(SKY_TABBABLE_SELECTOR)\n );\n\n return elements.filter((element) => {\n return this.isVisible(element);\n });\n }\n\n private isVisible(element: HTMLElement): boolean {\n const style = window.getComputedStyle(element);\n const isHidden = style.display === 'none' || style.visibility === 'hidden';\n if (isHidden) {\n return false;\n }\n\n /* istanbul ignore next */\n const hasBounds = !!(\n element.offsetWidth ||\n element.offsetHeight ||\n element.getClientRects().length\n );\n return hasBounds;\n }\n\n private focusFirstElement(list: Array<HTMLElement>): void {\n if (list.length > 0) {\n list[0].focus();\n }\n }\n}\n","export enum SkyInlineFormButtonLayout {\n /**\n * Displays custom buttons.\n */\n Custom = 0,\n /**\n * Displays Done and Cancel buttons.\n */\n DoneCancel = 1,\n /**\n * Displays Done, Delete, and Cancel buttons.\n */\n DoneDeleteCancel = 2,\n /**\n * Displays Save and Cancel buttons.\n */\n SaveCancel = 3,\n /**\n * Displays Save, Delete, and Cancel buttons.\n */\n SaveDeleteCancel = 4,\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { SkyAppWindowRef } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { zip as observableZip } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { skySlideDissolve } from './animations/slide-dissolve';\nimport { SkyInlineFormAdapterService } from './inline-form-adapter.service';\nimport { SkyInlineFormButtonConfig } from './types/inline-form-button-config';\nimport { SkyInlineFormButtonLayout } from './types/inline-form-button-layout';\nimport { SkyInlineFormCloseArgs } from './types/inline-form-close-args';\nimport { SkyInlineFormConfig } from './types/inline-form-config';\n\n/**\n * Renders form content in the current view instead of a separate modal.\n */\n@Component({\n selector: 'sky-inline-form',\n templateUrl: './inline-form.component.html',\n styleUrls: ['./inline-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SkyInlineFormAdapterService],\n animations: [skySlideDissolve],\n})\nexport class SkyInlineFormComponent implements OnInit, OnDestroy {\n /**\n * Specifies configuration options for the buttons to display with the inline form.\n * @required\n */\n @Input()\n public set config(value: SkyInlineFormConfig) {\n if (value !== this._config) {\n this._config = value;\n this.setupButtons();\n }\n }\n\n public get config(): SkyInlineFormConfig {\n return this._config;\n }\n\n /**\n * Specifies a template to use to instantiate the inline form.\n * @required\n */\n @Input()\n public template: TemplateRef<unknown>;\n\n /**\n * Indicates whether to display the inline form. Users can toggle between displaying\n * and hiding the inline form.\n * @default false\n */\n @Input()\n public set showForm(value: boolean) {\n this._showForm = value;\n\n /* istanbul ignore else */\n if (value) {\n // setTimeout() prevents applyAutofocus() from firing\n // until after *ngIf has added the form element to the DOM.\n this.skyAppWindowRef.nativeWindow.setTimeout(() => {\n this.adapter.applyAutofocus(this.elementRef);\n });\n }\n }\n\n public get showForm() {\n return this._showForm;\n }\n\n /**\n * Fires when users close the inline form.\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public close = new EventEmitter<SkyInlineFormCloseArgs>();\n\n public buttons: SkyInlineFormButtonConfig[];\n\n private _config: SkyInlineFormConfig;\n\n private _showForm = false;\n\n constructor(\n private adapter: SkyInlineFormAdapterService,\n private elementRef: ElementRef,\n private resourcesService: SkyLibResourcesService,\n private skyAppWindowRef: SkyAppWindowRef,\n private changeDetectorRef: ChangeDetectorRef\n ) {}\n\n public ngOnInit(): void {\n this.setupButtons();\n }\n\n public ngOnDestroy(): void {\n this.close.complete();\n }\n\n public closeInlineForm(event: SkyInlineFormButtonConfig): void {\n const args: SkyInlineFormCloseArgs = {\n reason: event.action,\n };\n this.close.emit(args);\n }\n\n private setupButtons(): void {\n if (this.isValidCustomConfig(this.config)) {\n this.buttons = this.getCustomButtons(this.config.buttons);\n this.changeDetectorRef.markForCheck();\n return;\n }\n\n this.getPresetButtons().then((buttons) => {\n this.buttons = buttons;\n this.changeDetectorRef.markForCheck();\n });\n }\n\n private getPresetButtons(): Promise<SkyInlineFormButtonConfig[]> {\n const buttonType = this.config\n ? this.config.buttonLayout\n : SkyInlineFormButtonLayout.DoneCancel;\n\n let promise: Promise<SkyInlineFormButtonConfig[]>;\n\n switch (buttonType) {\n /* istanbul ignore next */\n default:\n case SkyInlineFormButtonLayout.DoneCancel:\n observableZip(\n this.resourcesService.getString('skyux_inline_form_button_done'),\n this.resourcesService.getString('skyux_inline_form_button_cancel')\n )\n .pipe(take(1))\n .subscribe((values: any) => {\n promise = new Promise<SkyInlineFormButtonConfig[]>(\n (resolve: any) => {\n resolve([\n {\n text: values[0],\n styleType: 'primary',\n action: 'done',\n },\n {\n text: values[1],\n styleType: 'link',\n action: 'cancel',\n },\n ]);\n }\n );\n });\n break;\n\n case SkyInlineFormButtonLayout.SaveCancel:\n observableZip(\n this.resourcesService.getString('skyux_inline_form_button_save'),\n this.resourcesService.getString('skyux_inline_form_button_cancel')\n )\n .pipe(take(1))\n .subscribe((values: any) => {\n promise = new Promise<SkyInlineFormButtonConfig[]>(\n (resolve: any) => {\n resolve([\n {\n text: values[0],\n styleType: 'primary',\n action: 'save',\n },\n {\n text: values[1],\n styleType: 'link',\n action: 'cancel',\n },\n ]);\n }\n );\n });\n break;\n\n case SkyInlineFormButtonLayout.DoneDeleteCancel:\n observableZip(\n this.resourcesService.getString('skyux_inline_form_button_done'),\n this.resourcesService.getString('skyux_inline_form_button_delete'),\n this.resourcesService.getString('skyux_inline_form_button_cancel')\n )\n .pipe(take(1))\n .subscribe((values: any) => {\n promise = new Promise<SkyInlineFormButtonConfig[]>(\n (resolve: any) => {\n resolve([\n {\n text: values[0],\n styleType: 'primary',\n action: 'done',\n },\n {\n text: values[1],\n styleType: 'default',\n action: 'delete',\n },\n {\n text: values[2],\n styleType: 'link',\n action: 'cancel',\n },\n ]);\n }\n );\n });\n break;\n\n case SkyInlineFormButtonLayout.SaveDeleteCancel:\n observableZip(\n this.resourcesService.getString('skyux_inline_form_button_save'),\n this.resourcesService.getString('skyux_inline_form_button_delete'),\n this.resourcesService.getString('skyux_inline_form_button_cancel')\n )\n .pipe(take(1))\n .subscribe((values: any) => {\n promise = new Promise<SkyInlineFormButtonConfig[]>(\n (resolve: any) => {\n resolve([\n {\n text: values[0],\n styleType: 'primary',\n action: 'save',\n },\n {\n text: values[1],\n styleType: 'default',\n action: 'delete',\n },\n {\n text: values[2],\n styleType: 'link',\n action: 'cancel',\n },\n ]);\n }\n );\n });\n break;\n }\n\n return promise;\n }\n\n private getCustomButtons(\n buttonConfigs: SkyInlineFormButtonConfig[]\n ): SkyInlineFormButtonConfig[] {\n const buttons: SkyInlineFormButtonConfig[] = [];\n\n buttonConfigs.forEach((config: SkyInlineFormButtonConfig) => {\n /* istanbul ignore next */\n const styleType = config.styleType || 'default';\n\n buttons.push({\n action: config.action,\n disabled: config.disabled,\n styleType: styleType,\n text: config.text,\n } as SkyInlineFormButtonConfig);\n });\n\n return buttons;\n }\n\n private isValidCustomConfig(config: SkyInlineFormConfig): boolean {\n return (\n config &&\n config.buttonLayout === SkyInlineFormButtonLayout.Custom &&\n config.buttons.length > 0\n );\n }\n}\n","<div [@skySlideDissolve]=\"showForm\">\n <div *ngIf=\"!showForm\" class=\"sky-slide-dissolve-first\">\n <ng-content></ng-content>\n </div>\n\n <div *ngIf=\"template && showForm\" class=\"sky-slide-dissolve-last\">\n <div class=\"sky-inline-form sky-shadow sky-box sky-elevation-3\">\n <div class=\"sky-inline-form-content\">\n <ng-container [ngTemplateOutlet]=\"template\"> </ng-container>\n </div>\n <div class=\"sky-inline-form-footer\">\n <button\n *ngFor=\"let button of buttons\"\n class=\"sky-btn {{ 'sky-btn-' + button.styleType }}\"\n type=\"button\"\n [disabled]=\"button.disabled ? true : null\"\n [ngClass]=\"{ 'sky-btn-disabled': button.disabled }\"\n (click)=\"closeInlineForm(button)\"\n >\n {{ button.text }}\n </button>\n </div>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SkyInlineFormResourcesModule } from '../shared/sky-inline-form-resources.module';\n\nimport { SkyInlineFormComponent } from './inline-form.component';\n\n@NgModule({\n declarations: [SkyInlineFormComponent],\n imports: [CommonModule, SkyInlineFormResourcesModule],\n exports: [SkyInlineFormComponent],\n})\nexport class SkyInlineFormModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["observableZip","i1.SkyInlineFormAdapterService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skyux-inline-form.mjs","sources":["../../../../../libs/components/inline-form/src/lib/modules/shared/sky-inline-form-resources.module.ts","../../../../../libs/components/inline-form/src/lib/modules/inline-form/animations/slide-dissolve.ts","../../../../../libs/components/inline-form/src/lib/modules/inline-form/inline-form-adapter.service.ts","../../../../../libs/components/inline-form/src/lib/modules/inline-form/types/inline-form-button-layout.ts","../../../../../libs/components/inline-form/src/lib/modules/inline-form/inline-form.component.ts","../../../../../libs/components/inline-form/src/lib/modules/inline-form/inline-form.component.html","../../../../../libs/components/inline-form/src/lib/modules/inline-form/inline-form.module.ts","../../../../../libs/components/inline-form/src/skyux-inline-form.ts"],"sourcesContent":["/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-inline-form' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SKY_LIB_RESOURCES_PROVIDERS,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n getLibStringForLocale,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\n skyux_inline_form_button_cancel: { message: 'Cancel' },\n skyux_inline_form_button_delete: { message: 'Delete' },\n skyux_inline_form_button_done: { message: 'Done' },\n skyux_inline_form_button_save: { message: 'Save' },\n },\n};\n\nexport class SkyInlineFormResourcesProvider implements SkyLibResourcesProvider {\n public getString(\n localeInfo: SkyAppLocaleInfo,\n name: string\n ): string | undefined {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyInlineFormResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class SkyInlineFormResourcesModule {}\n","import {\n AnimationTriggerMetadata,\n animate,\n group,\n query,\n style,\n transition,\n trigger,\n} from '@angular/animations';\n\nexport const skySlideDissolve: AnimationTriggerMetadata = trigger(\n 'skySlideDissolve',\n [\n transition('* <=> *', [\n // Expand animations\n query(\n '.sky-slide-dissolve-last:enter',\n [\n style({ height: 0, opacity: 0 }),\n animate('200ms ease-in', style({ height: '*', opacity: 0 })),\n ],\n { optional: true }\n ),\n query(\n '.sky-slide-dissolve-last:enter',\n [\n style({ opacity: 0 }),\n animate('200ms ease-in', style({ opacity: 1 })),\n ],\n { optional: true }\n ),\n\n // Collapse animations\n // The expanded content should fade out immediately to prevent\n // any overlap with the read-only content that's returning to the screen.\n query(\n '.sky-slide-dissolve-last:leave',\n [animate('0ms', style({ opacity: 0 }))],\n { optional: true }\n ),\n\n group([\n query(\n '.sky-slide-dissolve-first:enter',\n [\n style({ opacity: 0, height: 0 }),\n animate('100ms ease-in', style({ opacity: 1, height: '*' })),\n ],\n { optional: true }\n ),\n query(\n '.sky-slide-dissolve-last:leave',\n [animate('200ms ease-in', style({ height: 0 }))],\n { optional: true }\n ),\n ]),\n ]),\n ]\n);\n","import { ElementRef, Injectable } from '@angular/core';\n\nconst SKY_TABBABLE_SELECTOR = [\n 'a[href]',\n 'area[href]',\n \"input:not([disabled]):not([tabindex='-1'])\",\n \"button:not([disabled]):not([tabindex='-1'])\",\n \"select:not([disabled]):not([tabindex='-1'])\",\n \"textarea:not([disabled]):not([tabindex='-1'])\",\n 'iframe',\n 'object',\n 'embed',\n \"*[tabindex]:not([tabindex='-1'])\",\n '*[contenteditable=true]',\n].join(', ');\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyInlineFormAdapterService {\n public applyAutofocus(inlineFormElementRef: ElementRef): void {\n const inputWithAutofocus =\n inlineFormElementRef.nativeElement.querySelector('[autofocus]');\n\n if (inputWithAutofocus) {\n inputWithAutofocus.focus();\n } else {\n const focusEl: HTMLElement =\n inlineFormElementRef.nativeElement.querySelector(\n '.sky-inline-form-content'\n );\n const focusableChildren = this.#loadFocusableChildren(focusEl);\n\n this.#focusFirstElement(focusableChildren);\n }\n }\n\n #loadFocusableChildren(elem: HTMLElement): HTMLElement[] {\n const elements: Array<HTMLElement> = Array.prototype.slice.call(\n elem.querySelectorAll(SKY_TABBABLE_SELECTOR)\n );\n\n return elements.filter((element) => {\n return this.#isVisible(element);\n });\n }\n\n #isVisible(element: HTMLElement): boolean {\n const style = window.getComputedStyle(element);\n const isHidden = style.display === 'none' || style.visibility === 'hidden';\n if (isHidden) {\n return false;\n }\n\n /* istanbul ignore next */\n const hasBounds = !!(\n element.offsetWidth ||\n element.offsetHeight ||\n element.getClientRects().length\n );\n return hasBounds;\n }\n\n #focusFirstElement(list: Array<HTMLElement>): void {\n if (list.length > 0) {\n list[0].focus();\n }\n }\n}\n","export enum SkyInlineFormButtonLayout {\n /**\n * Displays custom buttons.\n */\n Custom = 0,\n /**\n * Displays Done and Cancel buttons.\n */\n DoneCancel = 1,\n /**\n * Displays Done, Delete, and Cancel buttons.\n */\n DoneDeleteCancel = 2,\n /**\n * Displays Save and Cancel buttons.\n */\n SaveCancel = 3,\n /**\n * Displays Save, Delete, and Cancel buttons.\n */\n SaveDeleteCancel = 4,\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { SkyAppWindowRef } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Observable, ReplaySubject, Subject, zip as observableZip } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { skySlideDissolve } from './animations/slide-dissolve';\nimport { SkyInlineFormAdapterService } from './inline-form-adapter.service';\nimport { SkyInlineFormButtonConfig } from './types/inline-form-button-config';\nimport { SkyInlineFormButtonLayout } from './types/inline-form-button-layout';\nimport { SkyInlineFormCloseArgs } from './types/inline-form-close-args';\nimport { SkyInlineFormConfig } from './types/inline-form-config';\n\n/**\n * Renders form content in the current view instead of a separate modal.\n */\n@Component({\n selector: 'sky-inline-form',\n templateUrl: './inline-form.component.html',\n styleUrls: ['./inline-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SkyInlineFormAdapterService],\n animations: [skySlideDissolve],\n})\nexport class SkyInlineFormComponent implements OnInit, OnDestroy {\n /**\n * Specifies configuration options for the buttons to display with the inline form.\n * @required\n */\n @Input()\n public set config(value: SkyInlineFormConfig | undefined) {\n if (value !== this.#_config && !!value) {\n this.#_config = value;\n this.#setupButtons();\n }\n }\n\n public get config(): SkyInlineFormConfig | undefined {\n return this.#_config;\n }\n\n /**\n * Specifies a template to use to instantiate the inline form.\n * @required\n */\n @Input()\n public template: TemplateRef<unknown> | undefined;\n\n /**\n * Indicates whether to display the inline form. Users can toggle between displaying\n * and hiding the inline form.\n * @default false\n */\n @Input()\n public set showForm(value: boolean | undefined) {\n this.#_showForm = value;\n\n /* istanbul ignore else */\n if (value) {\n // setTimeout() prevents applyAutofocus() from firing\n // until after *ngIf has added the form element to the DOM.\n this.#skyAppWindowRef.nativeWindow.setTimeout(() => {\n this.#adapter.applyAutofocus(this.#elementRef);\n });\n }\n }\n\n public get showForm(): boolean | undefined {\n return this.#_showForm;\n }\n\n /**\n * Fires when users close the inline form.\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public close = new EventEmitter<SkyInlineFormCloseArgs>();\n\n // TODO: handle buttons being set asynchronously (\"| undefined\") when setting autofocus\n public buttons!: SkyInlineFormButtonConfig[];\n\n #_config: SkyInlineFormConfig | undefined;\n\n #_showForm: boolean | undefined = false;\n\n #ngUnsubscribe = new Subject<void>();\n\n #adapter: SkyInlineFormAdapterService;\n #elementRef: ElementRef;\n #resourcesService: SkyLibResourcesService;\n #skyAppWindowRef: SkyAppWindowRef;\n #changeDetectorRef: ChangeDetectorRef;\n\n constructor(\n adapter: SkyInlineFormAdapterService,\n elementRef: ElementRef,\n resourcesService: SkyLibResourcesService,\n skyAppWindowRef: SkyAppWindowRef,\n changeDetectorRef: ChangeDetectorRef\n ) {\n this.#adapter = adapter;\n this.#elementRef = elementRef;\n this.#resourcesService = resourcesService;\n this.#skyAppWindowRef = skyAppWindowRef;\n this.#changeDetectorRef = changeDetectorRef;\n }\n\n public ngOnInit(): void {\n this.#setupButtons();\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n this.close.complete();\n }\n\n public closeInlineForm(event: SkyInlineFormButtonConfig): void {\n const args: SkyInlineFormCloseArgs = {\n reason: event.action,\n };\n this.close.emit(args);\n }\n\n #setupButtons(): void {\n if (\n this.#isValidCustomConfig(this.config) &&\n this.config &&\n this.config.buttons\n ) {\n this.buttons = this.#getCustomButtons(this.config.buttons);\n this.#changeDetectorRef.markForCheck();\n return;\n }\n\n this.#getPresetButtons()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((buttons: SkyInlineFormButtonConfig[]) => {\n this.buttons = buttons;\n this.#changeDetectorRef.markForCheck();\n });\n }\n\n #getPresetButtons(): Observable<SkyInlineFormButtonConfig[]> {\n const emitter = new ReplaySubject<SkyInlineFormButtonConfig[]>(1);\n\n const buttonType = this.config\n ? this.config.buttonLayout\n : SkyInlineFormButtonLayout.DoneCancel;\n\n switch (buttonType) {\n /* istanbul ignore next */\n default:\n case SkyInlineFormButtonLayout.DoneCancel:\n observableZip(\n this.#resourcesService.getString('skyux_inline_form_button_done'),\n this.#resourcesService.getString('skyux_inline_form_button_cancel')\n )\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((values: string[]) => {\n emitter.next([\n {\n text: values[0],\n styleType: 'primary',\n action: 'done',\n },\n {\n text: values[1],\n styleType: 'link',\n action: 'cancel',\n },\n ]);\n });\n break;\n\n case SkyInlineFormButtonLayout.SaveCancel:\n observableZip(\n this.#resourcesService.getString('skyux_inline_form_button_save'),\n this.#resourcesService.getString('skyux_inline_form_button_cancel')\n )\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((values: string[]) => {\n emitter.next([\n {\n text: values[0],\n styleType: 'primary',\n action: 'save',\n },\n {\n text: values[1],\n styleType: 'link',\n action: 'cancel',\n },\n ]);\n });\n break;\n\n case SkyInlineFormButtonLayout.DoneDeleteCancel:\n observableZip(\n this.#resourcesService.getString('skyux_inline_form_button_done'),\n this.#resourcesService.getString('skyux_inline_form_button_delete'),\n this.#resourcesService.getString('skyux_inline_form_button_cancel')\n )\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((values: string[]) => {\n emitter.next([\n {\n text: values[0],\n styleType: 'primary',\n action: 'done',\n },\n {\n text: values[1],\n styleType: 'default',\n action: 'delete',\n },\n {\n text: values[2],\n styleType: 'link',\n action: 'cancel',\n },\n ]);\n });\n break;\n\n case SkyInlineFormButtonLayout.SaveDeleteCancel:\n observableZip(\n this.#resourcesService.getString('skyux_inline_form_button_save'),\n this.#resourcesService.getString('skyux_inline_form_button_delete'),\n this.#resourcesService.getString('skyux_inline_form_button_cancel')\n )\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((values: string[]) => {\n emitter.next([\n {\n text: values[0],\n styleType: 'primary',\n action: 'save',\n },\n {\n text: values[1],\n styleType: 'default',\n action: 'delete',\n },\n {\n text: values[2],\n styleType: 'link',\n action: 'cancel',\n },\n ]);\n });\n break;\n }\n\n return emitter.asObservable();\n }\n\n #getCustomButtons(\n buttonConfigs: SkyInlineFormButtonConfig[]\n ): SkyInlineFormButtonConfig[] {\n const buttons: SkyInlineFormButtonConfig[] = [];\n\n buttonConfigs.forEach((config: SkyInlineFormButtonConfig) => {\n /* istanbul ignore next */\n const styleType = config.styleType || 'default';\n\n buttons.push({\n action: config.action,\n disabled: config.disabled,\n styleType: styleType,\n text: config.text,\n } as SkyInlineFormButtonConfig);\n });\n\n return buttons;\n }\n\n #isValidCustomConfig(config: SkyInlineFormConfig | undefined): boolean {\n return (\n !!config &&\n !!config.buttons &&\n config.buttons.length > 0 &&\n config.buttonLayout === SkyInlineFormButtonLayout.Custom\n );\n }\n}\n","<div [@skySlideDissolve]=\"showForm\">\n <div *ngIf=\"!showForm\" class=\"sky-slide-dissolve-first\">\n <ng-content></ng-content>\n </div>\n\n <div *ngIf=\"template && showForm\" class=\"sky-slide-dissolve-last\">\n <div class=\"sky-inline-form sky-shadow sky-box sky-elevation-3\">\n <div class=\"sky-inline-form-content\">\n <ng-container [ngTemplateOutlet]=\"template\"> </ng-container>\n </div>\n <div class=\"sky-inline-form-footer\">\n <button\n *ngFor=\"let button of buttons\"\n class=\"sky-btn {{ 'sky-btn-' + button.styleType }}\"\n type=\"button\"\n [disabled]=\"button.disabled ? true : null\"\n [ngClass]=\"{ 'sky-btn-disabled': button.disabled }\"\n (click)=\"closeInlineForm(button)\"\n >\n {{ button.text }}\n </button>\n </div>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SkyInlineFormResourcesModule } from '../shared/sky-inline-form-resources.module';\n\nimport { SkyInlineFormComponent } from './inline-form.component';\n\n@NgModule({\n declarations: [SkyInlineFormComponent],\n imports: [CommonModule, SkyInlineFormResourcesModule],\n exports: [SkyInlineFormComponent],\n})\nexport class SkyInlineFormModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["observableZip","i1.SkyInlineFormAdapterService"],"mappings":"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"}
|