@igo2/common 1.15.2 → 1.15.4
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/esm2020/lib/entity/entity-table/entity-table.component.mjs +12 -4
- package/fesm2015/igo2-common.mjs +11 -3
- package/fesm2015/igo2-common.mjs.map +1 -1
- package/fesm2020/igo2-common.mjs +11 -3
- package/fesm2020/igo2-common.mjs.map +1 -1
- package/lib/entity/entity-table/entity-table.component.d.ts +6 -0
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igo2-common.mjs","sources":["../../../packages/common/src/lib/entity/shared/entity.enums.ts","../../../packages/common/src/lib/entity/shared/entity.utils.ts","../../../packages/common/src/lib/entity/shared/state.ts","../../../packages/common/src/lib/entity/shared/view.ts","../../../packages/common/src/lib/entity/shared/store.ts","../../../packages/common/src/lib/entity/shared/watcher.ts","../../../packages/common/src/lib/entity/shared/transaction.ts","../../../packages/common/src/lib/entity/shared/strategies/strategy.ts","../../../packages/common/src/lib/entity/shared/strategies/filter-custom-function.ts","../../../packages/common/src/lib/entity/shared/strategies/filter-selection.ts","../../../packages/common/src/lib/entity/entity-selector/entity-selector.component.html","../../../packages/common/src/lib/entity/entity-selector/entity-selector.component.ts","../../../packages/common/src/lib/stop-propagation/stop-propagation.directive.ts","../../../packages/common/src/lib/entity/entity-table-paginator/entity-table-paginator.component.ts","../../../packages/common/src/lib/entity/entity-table-paginator/entity-table-paginator.component.html","../../../packages/common/src/lib/image/image-error.directive.ts","../../../packages/common/src/lib/entity/entity-table/entity-table-row.directive.ts","../../../packages/common/src/lib/custom-html/custom-html.pipe.ts","../../../packages/common/src/lib/image/secure-image.pipe.ts","../../../packages/common/src/lib/entity/entity-table/entity-table.component.html","../../../packages/common/src/lib/entity/entity-table/entity-table.component.ts","../../../packages/common/src/lib/action/shared/action.enums.ts","../../../packages/common/src/lib/action/actionbar/actionbar-item.component.html","../../../packages/common/src/lib/action/actionbar/actionbar-item.component.ts","../../../packages/common/src/lib/action/actionbar/actionbar.component.html","../../../packages/common/src/lib/action/actionbar/actionbar.component.ts","../../../packages/common/src/lib/action/actionbar/actionbar.module.ts","../../../packages/common/src/lib/action/action.module.ts","../../../packages/common/src/lib/backdrop/backdrop.component.ts","../../../packages/common/src/lib/backdrop/backdrop.component.html","../../../packages/common/src/lib/backdrop/backdrop.module.ts","../../../packages/common/src/lib/badge-icon/badge-icon.directive.ts","../../../packages/common/src/lib/badge-icon/badge-icon.module.ts","../../../packages/common/src/lib/clickout/clickout.directive.ts","../../../packages/common/src/lib/clickout/clickout.module.ts","../../../packages/common/src/lib/clone/clone.pipe.ts","../../../packages/common/src/lib/clone/clone.module.ts","../../../packages/common/src/lib/collapsible/collapse.directive.ts","../../../packages/common/src/lib/collapsible/collapsible.component.ts","../../../packages/common/src/lib/collapsible/collapsible.component.html","../../../packages/common/src/lib/collapsible/collapsible.module.ts","../../../packages/common/src/lib/confirm-dialog/confirm-dialog.component.ts","../../../packages/common/src/lib/confirm-dialog/confirm-dialog.component.html","../../../packages/common/src/lib/confirm-dialog/confirm-dialog.service.ts","../../../packages/common/src/lib/confirm-dialog/confirm-dialog.module.ts","../../../packages/common/src/lib/context-menu/context-menu.directive.ts","../../../packages/common/src/lib/context-menu/long-press.directive.ts","../../../packages/common/src/lib/context-menu/context-menu.module.ts","../../../packages/common/src/lib/custom-html/custom-html.component.ts","../../../packages/common/src/lib/custom-html/custom-html.component.html","../../../packages/common/src/lib/custom-html/custom-html.module.ts","../../../packages/common/src/lib/dom/dom.service.ts","../../../packages/common/src/lib/dom/dom.module.ts","../../../packages/common/src/lib/drag-drop/drag-drop.directive.ts","../../../packages/common/src/lib/drag-drop/drag-drop.module.ts","../../../packages/common/src/lib/dynamic-component/shared/dynamic-component.ts","../../../packages/common/src/lib/dynamic-component/shared/dynamic-component.service.ts","../../../packages/common/src/lib/dynamic-component/dynamic-outlet/dynamic-outlet.component.ts","../../../packages/common/src/lib/dynamic-component/dynamic-outlet/dynamic-outlet.component.html","../../../packages/common/src/lib/dynamic-component/dynamic-outlet/dynamic-outlet.module.ts","../../../packages/common/src/lib/dynamic-component/dynamic-component.module.ts","../../../packages/common/src/lib/flexible/flexible.component.ts","../../../packages/common/src/lib/flexible/flexible.component.html","../../../packages/common/src/lib/flexible/flexible.module.ts","../../../packages/common/src/lib/form/shared/form.utils.ts","../../../packages/common/src/lib/form/form/form.component.ts","../../../packages/common/src/lib/form/form/form.component.html","../../../packages/common/src/lib/form/form/form.module.ts","../../../packages/common/src/lib/form/shared/form.service.ts","../../../packages/common/src/lib/form/shared/form-field.service.ts","../../../packages/common/src/lib/form/shared/form-field-component.ts","../../../packages/common/src/lib/form/form-field/form-field.component.html","../../../packages/common/src/lib/form/form-field/form-field.component.ts","../../../packages/common/src/lib/form/form-field/form-field-select.component.html","../../../packages/common/src/lib/form/form-field/form-field-select.component.ts","../../../packages/common/src/lib/form/form-field/form-field-text.component.html","../../../packages/common/src/lib/form/form-field/form-field-text.component.ts","../../../packages/common/src/lib/form/form-field/form-field-textarea.component.html","../../../packages/common/src/lib/form/form-field/form-field-textarea.component.ts","../../../packages/common/src/lib/form/form-field/form-field.module.ts","../../../packages/common/src/lib/form/form-group/form-group.component.html","../../../packages/common/src/lib/form/form-group/form-group.component.ts","../../../packages/common/src/lib/form/form-group/form-group.module.ts","../../../packages/common/src/lib/form/form.module.ts","../../../packages/common/src/lib/home-button/home-button.component.ts","../../../packages/common/src/lib/home-button/home-button.component.html","../../../packages/common/src/lib/home-button/home-button.module.ts","../../../packages/common/src/lib/entity/entity-selector/entity-selector.module.ts","../../../packages/common/src/lib/stop-propagation/stop-drop-propagation.directive.ts","../../../packages/common/src/lib/stop-propagation/stop-propagation.module.ts","../../../packages/common/src/lib/entity/entity-table-paginator/entity-table-paginator.module.ts","../../../packages/common/src/lib/image/image.module.ts","../../../packages/common/src/lib/entity/entity-table/entity-table.module.ts","../../../packages/common/src/lib/entity/entity.module.ts","../../../packages/common/src/lib/interactive-tour/interactive-tour.loader.ts","../../../packages/common/src/lib/interactive-tour/interactive-tour.service.ts","../../../packages/common/src/lib/tool/shared/toolbox.ts","../../../packages/common/src/lib/tool/shared/tool.service.ts","../../../packages/common/src/lib/interactive-tour/interactive-tour.component.html","../../../packages/common/src/lib/interactive-tour/interactive-tour.component.ts","../../../packages/common/src/lib/interactive-tour/interactive-tour.module.ts","../../../packages/common/src/lib/keyvalue/keyvalue.pipe.ts","../../../packages/common/src/lib/keyvalue/keyvalue.module.ts","../../../packages/common/src/lib/json-dialog/json-dialog.component.html","../../../packages/common/src/lib/json-dialog/json-dialog.component.ts","../../../packages/common/src/lib/json-dialog/json-dialog.service.ts","../../../packages/common/src/lib/json-dialog/json-dialog.module.ts","../../../packages/common/src/lib/list/list-item.directive.ts","../../../packages/common/src/lib/list/list.component.ts","../../../packages/common/src/lib/list/list.component.html","../../../packages/common/src/lib/list/list.module.ts","../../../packages/common/src/lib/panel/panel.component.html","../../../packages/common/src/lib/panel/panel.component.ts","../../../packages/common/src/lib/panel/panel.module.ts","../../../packages/common/src/lib/sidenav/sidenav-shim.directive.ts","../../../packages/common/src/lib/sidenav/sidenav.module.ts","../../../packages/common/src/lib/spinner/spinner.component.ts","../../../packages/common/src/lib/spinner/spinner.component.html","../../../packages/common/src/lib/spinner/spinner-activity.directive.ts","../../../packages/common/src/lib/spinner/spinner.module.ts","../../../packages/common/src/lib/table/table-datasource.ts","../../../packages/common/src/lib/table/table-action-color.enum.ts","../../../packages/common/src/lib/table/table.component.html","../../../packages/common/src/lib/table/table.component.ts","../../../packages/common/src/lib/table/table.module.ts","../../../packages/common/src/lib/action/shared/store.ts","../../../packages/common/src/lib/tool/shared/toolbox.enums.ts","../../../packages/common/src/lib/tool/toolbox/toolbox.animation.ts","../../../packages/common/src/lib/tool/toolbox/toolbox.component.html","../../../packages/common/src/lib/tool/toolbox/toolbox.component.ts","../../../packages/common/src/lib/tool/toolbox/toolbox.module.ts","../../../packages/common/src/lib/tool/tool.module.ts","../../../packages/common/src/lib/widget/widget-outlet/widget-outlet.component.html","../../../packages/common/src/lib/widget/widget-outlet/widget-outlet.component.ts","../../../packages/common/src/lib/widget/widget-outlet/widget-outlet.module.ts","../../../packages/common/src/lib/widget/shared/widget.service.ts","../../../packages/common/src/lib/widget/widget.module.ts","../../../packages/common/src/lib/workspace/workspace-selector/workspace-selector.component.ts","../../../packages/common/src/lib/workspace/workspace-selector/workspace-selector.component.html","../../../packages/common/src/lib/workspace/workspace-selector/workspace-selector.module.ts","../../../packages/common/src/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.component.html","../../../packages/common/src/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.component.ts","../../../packages/common/src/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.module.ts","../../../packages/common/src/lib/workspace/workspace.module.ts","../../../packages/common/src/lib/table/table-database.ts","../../../packages/common/src/lib/tool/shared/tool-component.ts","../../../packages/common/src/lib/widget/shared/widget.ts","../../../packages/common/src/lib/workspace/shared/store.ts","../../../packages/common/src/lib/workspace/shared/workspace.ts","../../../packages/common/src/public_api.ts","../../../packages/common/src/igo2-common.ts"],"sourcesContent":["export enum EntityOperationType {\r\n Insert = 'Insert',\r\n Update = 'Update',\r\n Delete = 'Delete'\r\n}\r\n\r\nexport enum EntityTableColumnRenderer {\r\n Default = 'Default',\r\n HTML = 'HTML',\r\n UnsanitizedHTML = 'UnsanitizedHTML',\r\n Editable = 'Editable',\r\n Icon = 'Icon',\r\n ButtonGroup = 'ButtonGroup'\r\n}\r\n\r\nexport enum EntityTableScrollBehavior {\r\n Auto = 'auto',\r\n Instant = 'instant',\r\n Smooth = 'smooth'\r\n}\r\n\r\nexport enum EntityTableSelectionState {\r\n None = 'None',\r\n All = 'All',\r\n Some = 'Some'\r\n}\r\n","import { t } from 'typy';\r\n\r\nimport { EntityKey } from './entity.interfaces';\r\n\r\n/**\r\n * Get an entity's named property. Nested properties are supported\r\n * with the dotted notation. (i.e 'author.name')\r\n *\r\n * Note: this method is a 'best attempt' at getting an entity's property.\r\n * It fits the most common cases but you might need to explicitely define\r\n * a property getter when using an EntityStore, for example.\r\n * @param entity Entity\r\n * @param property Property name\r\n * @returns Property value\r\n */\r\nexport function getEntityProperty(entity: object, property: string): any {\r\n return t(entity, property).safeObject;\r\n}\r\n\r\n/**\r\n * Get an entity's id. An entity's id can be one of:\r\n * 'entity.meta.id', 'entity.meta.idProperty' or 'entity.id'.\r\n *\r\n * Note: See the note in the 'getEntityProperty' documentation.\r\n * @param entity Entity\r\n * @returns Entity id\r\n */\r\nexport function getEntityId(entity: object): EntityKey {\r\n const meta = (entity as any).meta || {};\r\n return meta.id ? meta.id : getEntityProperty(entity, meta.idProperty || 'id');\r\n}\r\n\r\n/**\r\n * Get an entity's title. An entity's title can be one of:\r\n * 'entity.meta.title', 'entity.meta.titleProperty' or 'entity.title'.\r\n * @param entity Entity\r\n * @returns Entity title\r\n */\r\nexport function getEntityTitle(entity: object): string {\r\n const meta = (entity as any).meta || {};\r\n return meta.title ? meta.title : getEntityProperty(entity, meta.titleProperty || 'title');\r\n}\r\n\r\n/**\r\n * Get an entity's HTML title. An entity's HTML title can be one of:\r\n * 'entity.meta.titleHtml', 'entity.meta.titleHtmlProperty' or 'entity.titleHtml'.\r\n * @param entity Entity\r\n * @returns Entity HTML title\r\n */\r\nexport function getEntityTitleHtml(entity: object): string {\r\n const meta = (entity as any).meta || {};\r\n return meta.titleHtml ? meta.titleHtml : getEntityProperty(entity, meta.titleHtmlProperty || 'titleHtml');\r\n}\r\n\r\n/**\r\n * Get an entity's icon. An entity's icon can be one of:\r\n * 'entity.meta.icon', 'entity.meta.iconProperty' or 'entity.icon'.\r\n * @param entity Entity\r\n * @returns Entity icon\r\n */\r\nexport function getEntityIcon(entity: object): string {\r\n const meta = (entity as any).meta || {};\r\n return meta.icon ? meta.icon : getEntityProperty(entity, meta.iconProperty || 'icon');\r\n}\r\n\r\n/**\r\n * Get an entity's revision.\r\n * @param entity Entity\r\n * @returns Entity revision\r\n */\r\nexport function getEntityRevision(entity: object): number {\r\n const meta = (entity as any).meta || {};\r\n return meta.revision || 0;\r\n}\r\n","import { ReplaySubject } from 'rxjs';\r\n\r\nimport { EntityKey, EntityState, EntityStateManagerOptions } from './entity.interfaces';\r\nimport { getEntityId } from './entity.utils';\r\nimport { EntityStore } from './store';\r\n\r\n/**\r\n * This class is used to track a store's entities state\r\n */\r\nexport class EntityStateManager<E extends object, S extends EntityState = EntityState> {\r\n\r\n /**\r\n * State index\r\n */\r\n readonly index = new Map<EntityKey, S>();\r\n\r\n /**\r\n * Change emitter\r\n */\r\n readonly change$ = new ReplaySubject<void>(1);\r\n\r\n /**\r\n * Method to get an entity's id\r\n */\r\n readonly getKey: (E) => EntityKey;\r\n\r\n private store: EntityStore<object> | undefined;\r\n\r\n constructor(options: EntityStateManagerOptions = {}) {\r\n this.store = options.store ? options.store : undefined;\r\n this.getKey = options.getKey\r\n ? options.getKey\r\n : (this.store ? this.store.getKey : getEntityId);\r\n this.next();\r\n }\r\n\r\n /**\r\n * Clear state\r\n */\r\n clear() {\r\n if (this.index.size > 0) {\r\n this.index.clear();\r\n this.next();\r\n }\r\n }\r\n\r\n /**\r\n * Get an entity's state\r\n * @param entity Entity\r\n * @returns State\r\n */\r\n get(entity: E): S {\r\n return (this.index.get(this.getKey(entity)) || {}) as S;\r\n }\r\n\r\n /**\r\n * Set an entity's state\r\n * @param entity Entity\r\n * @param state State\r\n */\r\n set(entity: E, state: S) {\r\n this.setMany([entity], state);\r\n }\r\n\r\n /**\r\n * Set many entitie's state\r\n * @param entitie Entities\r\n * @param state State\r\n */\r\n setMany(entities: E[], state: S) {\r\n entities.forEach((entity: E) => {\r\n this.index.set(this.getKey(entity), Object.assign({}, state));\r\n });\r\n this.next();\r\n }\r\n\r\n /**\r\n * Set state of all entities that already have a state. This is not\r\n * the same as setting the state of all the store's entities.\r\n * @param state State\r\n */\r\n setAll(state: S) {\r\n Array.from(this.index.keys()).forEach((key: EntityKey) => {\r\n this.index.set(key, Object.assign({}, state));\r\n });\r\n this.next();\r\n }\r\n\r\n /**\r\n * Update an entity's state\r\n * @param entity Entity\r\n * @param changes State changes\r\n */\r\n update(entity: E, changes: Partial<S>, exclusive = false) {\r\n this.updateMany([entity], changes, exclusive);\r\n }\r\n\r\n /**\r\n * Update many entitie's state\r\n * @param entitie Entities\r\n * @param changes State changes\r\n */\r\n updateMany(entities: E[], changes: Partial<S>, exclusive = false) {\r\n if (exclusive === true) {\r\n return this.updateManyExclusive(entities, changes);\r\n }\r\n\r\n entities.forEach((entity: E) => {\r\n const state = Object.assign({}, this.get(entity), changes);\r\n this.index.set(this.getKey(entity), state);\r\n });\r\n this.next();\r\n }\r\n\r\n /**\r\n * Reversee an entity's state\r\n * @param entity Entity\r\n * @param keys State keys to reverse\r\n */\r\n reverse(entity: E, keys: string[]) {\r\n this.reverseMany([entity], keys);\r\n }\r\n\r\n /**\r\n * Reverse many entitie's state\r\n * @param entitie Entities\r\n * @param keys State keys to reverse\r\n */\r\n reverseMany(entities: E[], keys: string[]) {\r\n entities.forEach((entity: E) => {\r\n const currentState = this.get(entity);\r\n const changes = keys.reduce((acc: {[key: string]: boolean}, key: string) => {\r\n acc[key] = currentState[key] || false;\r\n return acc;\r\n }, {}) as Partial<S>;\r\n const reversedChanges = this.reverseChanges(changes);\r\n const state = Object.assign({}, currentState, reversedChanges);\r\n this.index.set(this.getKey(entity), state);\r\n });\r\n this.next();\r\n }\r\n\r\n /**\r\n * Update state of all entities that already have a state. This is not\r\n * the same as updating the state of all the store's entities.\r\n * @param changes State\r\n */\r\n updateAll(changes: Partial<S>) {\r\n const allKeys = this.getAllKeys();\r\n Array.from(allKeys).forEach((key: EntityKey) => {\r\n const state = Object.assign({}, this.index.get(key), changes);\r\n this.index.set(key, state);\r\n });\r\n this.next();\r\n }\r\n\r\n /**\r\n * When some state changes are flagged as 'exclusive', reverse\r\n * the state of all other entities. Changes are reversable when\r\n * they are boolean.\r\n * @param entitie Entities\r\n * @param changes State changes\r\n */\r\n private updateManyExclusive(entities: E[], changes: Partial<S>) {\r\n const reverseChanges = this.reverseChanges(changes);\r\n\r\n const keys = entities.map((entity: E) => this.getKey(entity));\r\n const allKeys = new Set(keys.concat(Array.from(this.getAllKeys())));\r\n allKeys.forEach((key: EntityKey) => {\r\n const state = this.index.get(key) || {} as S;\r\n\r\n if (keys.indexOf(key) >= 0) {\r\n this.index.set(key, Object.assign({}, state, changes));\r\n } else {\r\n // Update only if the reverse changes would modify\r\n // a key already present in the current state\r\n const shouldUpdate = Object.keys(reverseChanges).some((changeKey: string) => {\r\n return state[changeKey] !== undefined &&\r\n state[changeKey] !== reverseChanges[changeKey];\r\n });\r\n if (shouldUpdate === true) {\r\n this.index.set(key, Object.assign({}, state, reverseChanges));\r\n }\r\n }\r\n });\r\n\r\n this.next();\r\n }\r\n\r\n /**\r\n * Compute a 'reversed' version of some state changes.\r\n * Changes are reversable when they are boolean.\r\n * @param changes State changes\r\n * @returns Reversed state changes\r\n */\r\n private reverseChanges(changes: Partial<S>): Partial<S> {\r\n return Object.entries(changes).reduce((reverseChanges: Partial<S>, bunch: [string, any]) => {\r\n const [changeKey, value] = bunch;\r\n if (typeof value === typeof true) {\r\n (reverseChanges as object)[changeKey] = !value;\r\n }\r\n return reverseChanges;\r\n }, {});\r\n }\r\n\r\n /**\r\n * Return all the keys in that state and in the store it's bound to, if any.\r\n * @returns Set of keys\r\n */\r\n private getAllKeys(): Set<EntityKey> {\r\n const storeKeys = this.store ? Array.from(this.store.index.keys()) : [];\r\n return new Set(Array.from(this.index.keys()).concat(storeKeys));\r\n }\r\n\r\n /**\r\n * Emit 'change' event\r\n */\r\n private next() {\r\n this.change$.next();\r\n }\r\n\r\n}\r\n","import { BehaviorSubject, Observable, Subscription, combineLatest } from 'rxjs';\r\nimport { debounceTime, map, skip } from 'rxjs/operators';\r\n\r\nimport { ObjectUtils, uuid } from '@igo2/utils';\r\nimport {\r\n EntityKey,\r\n EntityFilterClause,\r\n EntitySortClause,\r\n EntityJoinClause\r\n} from './entity.interfaces';\r\n\r\n/**\r\n * An entity view streams entities from an observable source. These entities\r\n * can be filtered or sorted without affecting the source. A view can also\r\n * combine data from multiple sources, joined together.\r\n */\r\nexport class EntityView<E extends object, V extends object = E> {\r\n\r\n /**\r\n * Observable stream of values\r\n */\r\n readonly values$ = new BehaviorSubject<V[]>([]);\r\n\r\n /**\r\n * Subscription to the source (and joined sources) values\r\n */\r\n private values$$: Subscription;\r\n\r\n /**\r\n * Whether this view has been lifted\r\n */\r\n private lifted = false;\r\n\r\n /**\r\n * Join clauses\r\n */\r\n private joins: EntityJoinClause[] = [];\r\n\r\n /**\r\n * Observable of a filter clause\r\n */\r\n private filter$ = new BehaviorSubject(undefined);\r\n\r\n /**\r\n * Observable of filter clauses\r\n */\r\n private filters$: BehaviorSubject<EntityFilterClause[]> = new BehaviorSubject([]);\r\n\r\n /**\r\n * Filters index\r\n */\r\n private filterIndex: Map<string, EntityFilterClause> = new Map();\r\n\r\n /**\r\n * Observable of a sort clause\r\n */\r\n private sort$ = new BehaviorSubject(undefined);\r\n\r\n /**\r\n * Method for indexing\r\n */\r\n get getKey(): (V) => EntityKey { return this.getKey$.value; }\r\n private getKey$: BehaviorSubject<(V) => EntityKey> = new BehaviorSubject(undefined);\r\n\r\n /**\r\n * Number of entities\r\n */\r\n readonly count$ = new BehaviorSubject<number>(0);\r\n get count(): number { return this.count$.value; }\r\n\r\n /**\r\n * Whether the store is empty\r\n */\r\n readonly empty$ = new BehaviorSubject<boolean>(true);\r\n get empty(): boolean { return this.empty$.value; }\r\n\r\n /**\r\n * Store index\r\n */\r\n get index(): Map<EntityKey, V> { return this._index; }\r\n private _index: Map<EntityKey, V>;\r\n\r\n constructor(private source$: BehaviorSubject<E[]>) {}\r\n\r\n /**\r\n * Get a value from the view by key\r\n * @param key Key\r\n * @returns Value\r\n */\r\n get(key: EntityKey): V {\r\n if (this._index === undefined) {\r\n throw new Error('This view has no index, therefore, this method is unavailable.');\r\n }\r\n return this.index.get(key);\r\n }\r\n\r\n /**\r\n * Get all the values\r\n * @returns Array of values\r\n */\r\n all(): V[] {\r\n return this.values$.value;\r\n }\r\n\r\n /**\r\n * Observe all the values\r\n * @returns Observable of values\r\n */\r\n all$(): BehaviorSubject<V[]> {\r\n return this.values$;\r\n }\r\n\r\n /**\r\n * Get the first value that respects a criteria\r\n * @returns A value\r\n */\r\n firstBy(clause: EntityFilterClause<V>): V {\r\n return this.values$.value.find(clause);\r\n }\r\n\r\n /**\r\n * Observe the first value that respects a criteria\r\n * @returns Observable of a value\r\n */\r\n firstBy$(clause: EntityFilterClause<V>): Observable<V> {\r\n return this.values$.pipe(map((values: V[]) => values.find(clause)));\r\n }\r\n\r\n /**\r\n * Get all the values that respect a criteria\r\n * @returns Array of values\r\n */\r\n manyBy(clause: EntityFilterClause<V>): V[] {\r\n return this.values$.value.filter(clause);\r\n }\r\n\r\n /**\r\n * Observe all the values that respect a criteria\r\n * @returns Observable of values\r\n */\r\n manyBy$(clause: EntityFilterClause<V>): Observable<V[]> {\r\n return this.values$.pipe(map((values: V[]) => values.filter(clause)));\r\n }\r\n\r\n /**\r\n * Clear the filter and sort and unsubscribe from the source\r\n */\r\n clear() {\r\n this.filter(undefined);\r\n this.sort(undefined);\r\n }\r\n\r\n destroy() {\r\n if (this.values$$ !== undefined) {\r\n this.values$$.unsubscribe();\r\n }\r\n this.clear();\r\n }\r\n\r\n /**\r\n * Create an index\r\n * @param getKey Method to get a value's id\r\n * @returns The view\r\n */\r\n createIndex(getKey: (E) => EntityKey): EntityView<E, V> {\r\n this._index = new Map();\r\n this.getKey$.next(getKey);\r\n return this;\r\n }\r\n\r\n /**\r\n * Join another source to the stream (chainable)\r\n * @param clause Join clause\r\n * @returns The view\r\n */\r\n join(clause: EntityJoinClause): EntityView<E, V> {\r\n if (this.lifted === true) {\r\n throw new Error('This view has already been lifted, therefore, no join is allowed.');\r\n }\r\n this.joins.push(clause);\r\n return this;\r\n }\r\n\r\n /**\r\n * Filter values (chainable)\r\n * @param clause Filter clause\r\n * @returns The view\r\n */\r\n filter(clause: EntityFilterClause<V>): EntityView<E, V> {\r\n this.filter$.next(clause);\r\n return this;\r\n }\r\n\r\n /**\r\n * @param clause Filter clause\r\n * @returns The filter id\r\n */\r\n addFilter(clause: EntityFilterClause<V>): string {\r\n const id = uuid();\r\n this.filterIndex.set(id, clause);\r\n this.filters$.next(Array.from(this.filterIndex.values()));\r\n return id;\r\n }\r\n\r\n /**\r\n * Remove a filter by id\r\n * @param clause Filter clause\r\n */\r\n removeFilter(id: string) {\r\n this.filterIndex.delete(id);\r\n this.filters$.next(Array.from(this.filterIndex.values()));\r\n }\r\n\r\n /**\r\n * Sort values (chainable)\r\n * @param clauseSort clause\r\n * @returns The view\r\n */\r\n sort(clause: EntitySortClause<V>): EntityView<E, V> {\r\n this.sort$.next(clause);\r\n return this;\r\n }\r\n\r\n /**\r\n * Create the final observable\r\n * @returns Observable\r\n */\r\n lift() {\r\n this.lifted = true;\r\n const source$ = this.joins.length > 0 ? this.liftJoinedSource() : this.liftSource();\r\n const observables$ = [\r\n source$,\r\n this.filters$,\r\n this.filter$,\r\n this.sort$,\r\n this.getKey$\r\n ];\r\n\r\n this.values$$ = combineLatest(observables$)\r\n .pipe(skip(1), debounceTime(5))\r\n .subscribe((bunch: any[]) => {\r\n const [_values, filters, filter, sort, getKey] = bunch;\r\n const values = this.processValues(_values, filters, filter, sort);\r\n const generateIndex = getKey !== undefined;\r\n this.setValues(values, generateIndex);\r\n });\r\n }\r\n\r\n /**\r\n * Create the source observable when no joins are defined\r\n * @returns Observable\r\n */\r\n private liftSource(): Observable<V[]> {\r\n return this.source$ as any as Observable<V[]>;\r\n }\r\n\r\n /**\r\n * Create the source observable when joins are defined\r\n * @returns Observable\r\n */\r\n private liftJoinedSource(): Observable<V[]> {\r\n const sources$ = [this.source$, combineLatest(\r\n this.joins.map((join: EntityJoinClause) => join.source)\r\n )];\r\n\r\n return combineLatest(sources$)\r\n .pipe(\r\n map((bunch: [E[], any[]]) => {\r\n const [entities, joinData] = bunch;\r\n return entities.reduce((values: V[], entity: E) => {\r\n const value = this.computeJoinedValue(entity, joinData);\r\n if (value !== undefined) {\r\n values.push(value);\r\n }\r\n return values;\r\n }, []);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Apply joins to a source's entity and return the final value\r\n * @returns Final value\r\n */\r\n private computeJoinedValue(entity: E, joinData: any[]): V | undefined {\r\n let value = entity as Partial<V>;\r\n let joinIndex = 0;\r\n while (value !== undefined && joinIndex < this.joins.length) {\r\n value = this.joins[joinIndex].reduce(value, joinData[joinIndex]);\r\n joinIndex += 1;\r\n }\r\n return value as V;\r\n }\r\n\r\n /**\r\n * Filter and sort values before streaming them\r\n * @param values Values\r\n * @param filters Filter clauses\r\n * @param filter Filter clause\r\n * @param sort Sort clause\r\n * @returns Filtered and sorted values\r\n */\r\n private processValues(\r\n values: V[], filters: EntityFilterClause[], filter: EntityFilterClause, sort: EntitySortClause\r\n ): V[] {\r\n values = values.slice(0);\r\n values = this.filterValues(values, filters.concat([filter]));\r\n values = this.sortValues(values, sort);\r\n return values;\r\n }\r\n\r\n /**\r\n * Filter values\r\n * @param values Values\r\n * @param filters Filter clauses\r\n * @returns Filtered values\r\n */\r\n private filterValues(values: V[], clauses: EntityFilterClause[]): V[] {\r\n if (clauses.length === 0) { return values; }\r\n\r\n return values\r\n .filter((value: V) => {\r\n return clauses\r\n .filter((clause: EntityFilterClause) => clause !== undefined)\r\n .every((clause: EntityFilterClause) => clause(value));\r\n });\r\n }\r\n\r\n /**\r\n * Sort values\r\n * @param values Values\r\n * @param sort Sort clause\r\n * @returns Sorted values\r\n */\r\n private sortValues(values: V[], clause: EntitySortClause): V[] {\r\n if (clause === undefined) { return values; }\r\n return values.sort((v1: V, v2: V) => {\r\n return ObjectUtils.naturalCompare(\r\n clause.valueAccessor(v1),\r\n clause.valueAccessor(v2),\r\n clause.direction,\r\n clause.nullsFirst\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * Set value and optionally generate an index\r\n * @param values Values\r\n * @param generateIndex boolean\r\n */\r\n private setValues(values: V[], generateIndex: boolean) {\r\n if (generateIndex === true) {\r\n this._index = this.generateIndex(values);\r\n }\r\n\r\n this.values$.next(values);\r\n\r\n const count = values.length;\r\n const empty = count === 0;\r\n this.count$.next(count);\r\n this.empty$.next(empty);\r\n }\r\n\r\n /**\r\n * Generate a complete index of all the values\r\n * @param entities Entities\r\n * @returns Index\r\n */\r\n private generateIndex(values: V[]): Map<EntityKey, V> {\r\n const entries = values.map((value: V) => [this.getKey(value), value]);\r\n return new Map(entries as [EntityKey, V][]);\r\n }\r\n}\r\n","import { BehaviorSubject } from 'rxjs';\r\n\r\nimport { EntityStateManager } from './state';\r\nimport { EntityView } from './view';\r\nimport { EntityKey, EntityState, EntityRecord, EntityStoreOptions } from './entity.interfaces';\r\nimport { getEntityId, getEntityProperty } from './entity.utils';\r\nimport { EntityStoreStrategy } from './strategies/strategy';\r\n\r\n/**\r\n * An entity store class holds any number of entities\r\n * as well as their state. It can be observed, filtered and sorted and\r\n * provides methods to insert, update or delete entities.\r\n */\r\nexport class EntityStore<E extends object = object, S extends EntityState = EntityState> {\r\n\r\n /**\r\n * Observable of the raw entities\r\n */\r\n readonly entities$ = new BehaviorSubject<E[]>([]);\r\n\r\n /**\r\n * Number of entities\r\n */\r\n readonly count$ = new BehaviorSubject<number>(0);\r\n get count(): number { return this.count$.value; }\r\n\r\n /**\r\n * Whether the store is empty\r\n */\r\n readonly empty$ = new BehaviorSubject<boolean>(true);\r\n get empty(): boolean { return this.empty$.value; }\r\n\r\n /**\r\n * Entity store state\r\n */\r\n readonly state: EntityStateManager<E, S>;\r\n\r\n /**\r\n * View of all the entities\r\n */\r\n readonly view: EntityView<E>;\r\n\r\n /**\r\n * View of all the entities and their state\r\n */\r\n readonly stateView: EntityView<E, EntityRecord<E, S>>;\r\n\r\n /**\r\n * Method to get an entity's id\r\n */\r\n readonly getKey: (E) => EntityKey;\r\n\r\n /**\r\n * Method to get an entity's named property\r\n */\r\n readonly getProperty: (E, prop: string) => any;\r\n\r\n /**\r\n * Store index\r\n */\r\n get index(): Map<EntityKey, E> { return this._index; }\r\n private _index: Map<EntityKey, E>;\r\n\r\n /**\r\n * Store index\r\n */\r\n get pristine(): boolean { return this._pristine; }\r\n private _pristine: boolean = true;\r\n\r\n /**\r\n * Strategies\r\n */\r\n private strategies: EntityStoreStrategy[] = [];\r\n\r\n constructor(entities: E[], options: EntityStoreOptions = {}) {\r\n this.getKey = options.getKey ? options.getKey : getEntityId;\r\n this.getProperty = options.getProperty ? options.getProperty : getEntityProperty;\r\n\r\n this.state = this.createStateManager();\r\n this.view = this.createDataView();\r\n this.stateView = this.createStateView();\r\n\r\n this.view.lift();\r\n this.stateView.lift();\r\n\r\n if (entities.length > 0) {\r\n this.load(entities);\r\n } else {\r\n this._index = this.generateIndex(entities);\r\n }\r\n }\r\n\r\n /**\r\n * Get an entity from the store by key\r\n * @param key Key\r\n * @returns Entity\r\n */\r\n get(key: EntityKey): E {\r\n return this.index.get(key);\r\n }\r\n\r\n /**\r\n * Get all entities in the store\r\n * @returns Array of entities\r\n */\r\n all(): E[] {\r\n return this.entities$.value;\r\n }\r\n\r\n /**\r\n * Set this store's entities\r\n * @param entities Entities\r\n */\r\n load(entities: E[], pristine: boolean = true) {\r\n this._index = this.generateIndex(entities);\r\n this._pristine = pristine;\r\n this.next();\r\n }\r\n\r\n /**\r\n * Clear the store's entities but keep the state and views intact.\r\n * Views won't return any data but future data will be subject to the\r\n * current views filter and sort\r\n */\r\n softClear() {\r\n if (this.index && this.index.size > 0) {\r\n this.index.clear();\r\n this._pristine = true;\r\n this.next();\r\n } else if (this.index) {\r\n this.updateCount();\r\n }\r\n }\r\n\r\n /**\r\n * Clear the store's entities, state and views\r\n */\r\n clear() {\r\n this.stateView.clear();\r\n this.view.clear();\r\n this.state.clear();\r\n this.softClear();\r\n }\r\n\r\n destroy() {\r\n this.stateView.destroy();\r\n this.view.destroy();\r\n this.clear();\r\n }\r\n\r\n /**\r\n * Insert an entity into the store\r\n * @param entity Entity\r\n */\r\n insert(entity: E) {\r\n this.insertMany([entity]);\r\n }\r\n\r\n /**\r\n * Insert many entities into the store\r\n * @param entities Entities\r\n */\r\n insertMany(entities: E[]) {\r\n entities.forEach((entity: E) => this.index.set(this.getKey(entity), entity));\r\n this._pristine = false;\r\n this.next();\r\n }\r\n\r\n /**\r\n * Update or insert an entity into the store\r\n * @param entity Entity\r\n */\r\n update(entity: E) {\r\n this.updateMany([entity]);\r\n }\r\n\r\n /**\r\n * Update or insert many entities into the store\r\n * @param entities Entities\r\n */\r\n updateMany(entities: E[]) {\r\n entities.forEach((entity: E) => this.index.set(this.getKey(entity), entity));\r\n this._pristine = false;\r\n this.next();\r\n }\r\n\r\n /**\r\n * Delete an entity from the store\r\n * @param entity Entity\r\n */\r\n delete(entity: E) {\r\n this.deleteMany([entity]);\r\n }\r\n\r\n /**\r\n * Delete many entities from the store\r\n * @param entities Entities\r\n */\r\n deleteMany(entities: E[]) {\r\n entities.forEach((entity: E) => this.index.delete(this.getKey(entity)));\r\n this._pristine = false;\r\n this.next();\r\n }\r\n\r\n /**\r\n * Add a strategy to this store\r\n * @param strategy Entity store strategy\r\n * @returns Entity store\r\n */\r\n addStrategy(strategy: EntityStoreStrategy, activate: boolean = false): EntityStore {\r\n const existingStrategy = this.strategies.find((_strategy: EntityStoreStrategy) => {\r\n return strategy.constructor === _strategy.constructor;\r\n });\r\n if (existingStrategy !== undefined) {\r\n throw new Error('A strategy of this type already exists on that EntityStore.');\r\n }\r\n\r\n this.strategies.push(strategy);\r\n strategy.bindStore(this);\r\n\r\n if (activate === true) {\r\n strategy.activate();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Remove a strategy from this store\r\n * @param strategy Entity store strategy\r\n * @returns Entity store\r\n */\r\n removeStrategy(strategy: EntityStoreStrategy): EntityStore {\r\n const index = this.strategies.indexOf(strategy);\r\n if (index >= 0) {\r\n this.strategies.splice(index, 1);\r\n strategy.unbindStore(this);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Return strategies of a given type\r\n * @param type Entity store strategy class\r\n * @returns Strategies\r\n */\r\n getStrategyOfType(type: typeof EntityStoreStrategy): EntityStoreStrategy {\r\n return this.strategies.find((strategy: EntityStoreStrategy) => {\r\n return strategy instanceof type;\r\n });\r\n }\r\n\r\n /**\r\n * Activate strategies of a given type\r\n * @param type Entity store strategy class\r\n */\r\n activateStrategyOfType(type: typeof EntityStoreStrategy) {\r\n const strategy = this.getStrategyOfType(type);\r\n if (strategy !== undefined) {\r\n strategy.activate();\r\n }\r\n }\r\n\r\n /**\r\n * Deactivate strategies of a given type\r\n * @param type Entity store strategy class\r\n */\r\n deactivateStrategyOfType(type: typeof EntityStoreStrategy) {\r\n const strategy = this.getStrategyOfType(type);\r\n if (strategy !== undefined) {\r\n strategy.deactivate();\r\n }\r\n }\r\n\r\n /**\r\n * Generate a complete index of all the entities\r\n * @param entities Entities\r\n * @returns Index\r\n */\r\n private generateIndex(entities: E[]): Map<EntityKey, E> {\r\n const entries = entities.map((entity: E) => [this.getKey(entity), entity]);\r\n return new Map(entries as [EntityKey, E][]);\r\n }\r\n\r\n /**\r\n * Push the index's entities into the entities$ observable\r\n */\r\n private next() {\r\n this.entities$.next(Array.from(this.index.values()));\r\n this.updateCount();\r\n }\r\n\r\n /**\r\n * Update the store's count and empty\r\n */\r\n private updateCount() {\r\n const count = this.index.size;\r\n const empty = count === 0;\r\n this.count$.next(count);\r\n this.empty$.next(empty);\r\n }\r\n\r\n /**\r\n * Create the entity state manager\r\n * @returns EntityStateManager\r\n */\r\n private createStateManager() {\r\n return new EntityStateManager<E, S>({store: this});\r\n }\r\n\r\n /**\r\n * Create the data view\r\n * @returns EntityView<E>\r\n */\r\n private createDataView() {\r\n return new EntityView<E>(this.entities$);\r\n }\r\n\r\n /**\r\n * Create the state view\r\n * @returns EntityView<EntityRecord<E>>\r\n */\r\n private createStateView() {\r\n return new EntityView<E, EntityRecord<E, S>>(this.view.all$())\r\n .join({\r\n source: this.state.change$,\r\n reduce: (entity: E): EntityRecord<E, S> => {\r\n const key = this.getKey(entity);\r\n const state = this.state.get(entity);\r\n const currentRecord = this.stateView.get(key);\r\n\r\n if (\r\n currentRecord !== undefined &&\r\n currentRecord.entity === entity &&\r\n this.statesAreTheSame(currentRecord.state, state)\r\n ) {\r\n return currentRecord;\r\n }\r\n\r\n const revision = currentRecord ? currentRecord.revision + 1 : 1;\r\n const ref = `${key}-${revision}`;\r\n return {entity, state, revision, ref};\r\n }\r\n })\r\n .createIndex((record: EntityRecord<E, S>) => this.getKey(record.entity));\r\n }\r\n\r\n private statesAreTheSame(currentState: S, newState: S): boolean {\r\n if (currentState === newState) {\r\n return true;\r\n }\r\n\r\n const currentStateIsEmpty = Object.keys(currentState).length === 0;\r\n const newStateIsEmpty = Object.keys(newState).length === 0;\r\n return currentStateIsEmpty && newStateIsEmpty;\r\n }\r\n\r\n}\r\n","import { ChangeDetectorRef } from '@angular/core';\r\n\r\nimport { Subscription } from 'rxjs';\r\nimport { skip } from 'rxjs/operators';\r\n\r\nimport { ObjectUtils } from '@igo2/utils';\r\nimport { EntityKey } from './entity.interfaces';\r\n\r\nimport { EntityStore } from './store';\r\n\r\n/**\r\n * This class is used to synchronize a component's changes\r\n * detection with an EntityStore changes. For example, it is frequent\r\n * to have a component subscribe to a store's selected entity and, at the same time,\r\n * this component provides a way to select an entity with, let's say, a click.\r\n *\r\n * This class automatically handles those case and triggers the compoent's\r\n * change detection when needed.\r\n *\r\n * Note: If the component observes the store's stateView, a workspace is\r\n * probably not required because the stateView catches any changes to the\r\n * entities and their state.\r\n */\r\nexport class EntityStoreWatcher<E extends object> {\r\n\r\n /**\r\n * Component change detector\r\n */\r\n private cdRef: ChangeDetectorRef;\r\n\r\n /**\r\n * Entity store\r\n */\r\n private store: EntityStore<E>;\r\n\r\n /**\r\n * Component inner state\r\n */\r\n private innerStateIndex = new Map<EntityKey, {[key: string]: any}>();\r\n\r\n /**\r\n * Subscription to the store's entities\r\n */\r\n private entities$$: Subscription;\r\n\r\n /**\r\n * Subscription to the store's state\r\n */\r\n private state$$: Subscription;\r\n\r\n constructor(store?: EntityStore<E>, cdRef?: ChangeDetectorRef) {\r\n this.setChangeDetector(cdRef);\r\n this.setStore(store);\r\n }\r\n\r\n destroy() {\r\n this.setChangeDetector(undefined);\r\n this.setStore(undefined);\r\n }\r\n\r\n /**\r\n * Bind this workspace to a store and start watching for changes\r\n * @param store Entity store\r\n */\r\n setStore(store?: EntityStore<E>) {\r\n if (store === undefined) {\r\n this.teardownObservers();\r\n this.innerStateIndex.clear();\r\n this.store = undefined;\r\n return;\r\n }\r\n\r\n this.setStore(undefined);\r\n this.store = store;\r\n this.setupObservers();\r\n this.detectChanges();\r\n }\r\n\r\n /**\r\n * Bind this workspace to a component's change detector\r\n * @param cdRef Change detector\r\n */\r\n setChangeDetector(cdRef?: ChangeDetectorRef) {\r\n this.cdRef = cdRef;\r\n }\r\n\r\n /**\r\n * Set up observers on a store's entities and their state\r\n * @param store Entity store\r\n */\r\n private setupObservers() {\r\n this.teardownObservers();\r\n\r\n this.entities$$ = this.store.entities$\r\n .subscribe((entities: E[]) => this.onEntitiesChange(entities));\r\n\r\n this.state$$ = this.store.state.change$\r\n .pipe(skip(1))\r\n .subscribe(() => this.onStateChange());\r\n }\r\n\r\n /**\r\n * Teardown store observers\r\n */\r\n private teardownObservers() {\r\n if (this.entities$$ !== undefined) {\r\n this.entities$$.unsubscribe();\r\n }\r\n if (this.state$$ !== undefined) {\r\n this.state$$.unsubscribe();\r\n }\r\n this.entities$$ = undefined;\r\n this.state$$ = undefined;\r\n }\r\n\r\n /**\r\n * When the entities change, always trigger the changes detection\r\n */\r\n private onEntitiesChange(entities: E[]) {\r\n this.detectChanges();\r\n }\r\n\r\n /**\r\n * When the entities state change, trigger the change detection\r\n * only if the component has not handled these changes yet. For example,\r\n * the component might have initiated thoses changes itself.\r\n */\r\n private onStateChange() {\r\n let changesDetected = false;\r\n const storeIndex = this.store.state.index;\r\n const innerIndex = this.innerStateIndex;\r\n\r\n if (storeIndex.size !== innerIndex.size) {\r\n changesDetected = this.detectChanges();\r\n }\r\n\r\n const storeKeys = Array.from(storeIndex.keys());\r\n for (const key of storeKeys) {\r\n const storeValue = storeIndex.get(key);\r\n const innerValue = innerIndex.get(key);\r\n if (changesDetected === false) {\r\n if (innerValue === undefined) {\r\n changesDetected = this.detectChanges();\r\n } else if (!ObjectUtils.objectsAreEquivalent(storeValue, innerValue)) {\r\n changesDetected = this.detectChanges();\r\n }\r\n }\r\n\r\n this.innerStateIndex.set(key, Object.assign({}, storeValue));\r\n }\r\n }\r\n\r\n /**\r\n * Trigger the change detection of the workspace is bound to a change detector\r\n */\r\n private detectChanges() {\r\n if (this.cdRef !== undefined) {\r\n this.cdRef.detectChanges();\r\n }\r\n return true;\r\n }\r\n\r\n}\r\n","import { Observable, of } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport {\r\n EntityKey,\r\n EntityTransactionOptions,\r\n EntityOperation,\r\n EntityOperationState\r\n} from './entity.interfaces';\r\nimport { EntityStore } from './store';\r\nimport { EntityOperationType } from './entity.enums';\r\nimport { getEntityId } from './entity.utils';\r\n\r\nexport type EntityTransactionCommitHandler = (\r\n transaction: EntityTransaction,\r\n operations: EntityOperation[]\r\n) => Observable<any>;\r\n\r\n/**\r\n * This class holds a reference to the insert, update and delete\r\n * operations performed on a store. This is useful to commit\r\n * these operations in a single pass or to cancel them.\r\n */\r\nexport class EntityTransaction {\r\n\r\n /**\r\n * Store holding the operations on another store\r\n */\r\n readonly operations: EntityStore<EntityOperation, EntityOperationState>;\r\n\r\n /**\r\n * Method to get an entity's id\r\n */\r\n readonly getKey: (E) => EntityKey;\r\n\r\n /**\r\n * Whether there are pending operations\r\n */\r\n get empty$(): BehaviorSubject<boolean> { return this.operations.empty$; }\r\n\r\n /**\r\n * Whether there are pending operations\r\n */\r\n get empty(): boolean { return this.empty$.value; }\r\n\r\n /**\r\n * Whether thise store is in commit phase\r\n */\r\n get inCommitPhase(): boolean { return this.inCommitPhase$.value; }\r\n readonly inCommitPhase$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n constructor(options: EntityTransactionOptions = {}) {\r\n this.getKey = options.getKey ? options.getKey : getEntityId;\r\n this.operations = new EntityStore<EntityOperation, EntityOperationState>([], {\r\n getKey: (operation: EntityOperation) => operation.key\r\n });\r\n }\r\n\r\n destroy() {\r\n this.operations.destroy();\r\n }\r\n\r\n /**\r\n * Insert an entity into a store. If no store is specified, an insert\r\n * operation is still created but the transaction won't add the new\r\n * entity to the store.\r\n * @param current The entity to insert\r\n * @param store Optional: The store to insert the entity into\r\n * @param meta Optional: Any metadata on the operation\r\n */\r\n insert(current: object, store?: EntityStore<object>, meta?: {[key: string]: any}) {\r\n const existingOperation = this.getOperationByEntity(current);\r\n if (existingOperation !== undefined) {\r\n this.removeOperation(existingOperation);\r\n }\r\n\r\n this.doInsert(current, store, meta);\r\n }\r\n\r\n /**\r\n * Update an entity in a store. If no store is specified, an update\r\n * operation is still created but the transaction won't update the\r\n * entity into the store.\r\n * @param previous The entity before update\r\n * @param current The entity after update\r\n * @param store Optional: The store to update the entity into\r\n * @param meta Optional: Any metadata on the operation\r\n */\r\n update(previous: object, current: object, store?: EntityStore<object>, meta?: {[key: string]: any}) {\r\n const existingOperation = this.getOperationByEntity(current);\r\n if (existingOperation !== undefined) {\r\n this.removeOperation(existingOperation);\r\n if (existingOperation.type === EntityOperationType.Insert) {\r\n this.doInsert(current, store, meta);\r\n return;\r\n } else if (existingOperation.type === EntityOperationType.Update) {\r\n previous = existingOperation.previous;\r\n }\r\n }\r\n\r\n this.doUpdate(previous, current, store, meta);\r\n }\r\n\r\n /**\r\n * Delete an entity from a store. If no store is specified, a delete\r\n * operation is still created but the transaction won't remove the\r\n * entity from the store.\r\n * @param previous The entity before delete\r\n * @param store Optional: The store to delete the entity from\r\n * @param meta Optional: Any metadata on the operation\r\n */\r\n delete(previous: object, store?: EntityStore<object>, meta?: {[key: string]: any}) {\r\n const existingOperation = this.getOperationByEntity(previous);\r\n if (existingOperation !== undefined) {\r\n this.removeOperation(existingOperation);\r\n if (existingOperation.type === EntityOperationType.Insert) {\r\n if (store !== undefined) {\r\n store.delete(previous);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n this.doDelete(previous, store, meta);\r\n }\r\n\r\n /**\r\n * Commit operations the transaction. This method doesn't do much\r\n * in itself. The handler it receives does the hard work and it's\r\n * implementation is left to the caller. This method simply wraps\r\n * the handler into an error catching mechanism to update\r\n * the transaction afterward. The caller needs to subscribe to this\r\n * method's output (observable) for the commit to be performed.\r\n * @param operations Operations to commit\r\n * @param handler Function that handles the commit operation\r\n * @returns The handler output (observable)\r\n */\r\n commit(operations: EntityOperation[], handler: EntityTransactionCommitHandler): Observable<any> {\r\n this.inCommitPhase$.next(true);\r\n\r\n return handler(this, operations)\r\n .pipe(\r\n catchError(() => of(new Error())),\r\n tap((result: any) => {\r\n if (result instanceof Error) {\r\n this.onCommitError(operations);\r\n } else {\r\n this.onCommitSuccess(operations);\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Commit all the operations of the transaction.\r\n * @param handler Function that handles the commit operation\r\n * @returns The handler output (observable)\r\n */\r\n commitAll(handler: EntityTransactionCommitHandler): Observable<any> {\r\n const operations = this.getOperationsInCommit();\r\n return this.commit(operations, handler);\r\n }\r\n\r\n /**\r\n * Rollback this transaction\r\n */\r\n rollback() {\r\n this.rollbackOperations(this.operations.all());\r\n }\r\n\r\n /**\r\n * Rollback specific operations\r\n */\r\n rollbackOperations(operations: EntityOperation[]) {\r\n this.checkInCommitPhase();\r\n\r\n const operationsFactory = () => new Map([\r\n [EntityOperationType.Delete, []],\r\n [EntityOperationType.Update, []],\r\n [EntityOperationType.Insert, []]\r\n ]);\r\n const storesOperations = new Map();\r\n\r\n // Group operations by store and by operation type.\r\n // Grouping operations allows us to revert them in bacth, thus, triggering\r\n // observables only one per operation type.\r\n for (const operation of operations) {\r\n const store = operation.store;\r\n if (operation.store === undefined) { continue; }\r\n\r\n let storeOperations = storesOperations.get(store);\r\n if (storeOperations === undefined) {\r\n storeOperations = operationsFactory();\r\n storesOperations.set(store, storeOperations);\r\n }\r\n storeOperations.get(operation.type).push(operation);\r\n }\r\n\r\n Array.from(storesOperations.keys()).forEach((store: EntityStore<object>) => {\r\n const storeOperations = storesOperations.get(store);\r\n\r\n const deletes = storeOperations.get(EntityOperationType.Delete);\r\n store.insertMany(deletes.map((_delete: EntityOperation) => _delete.previous));\r\n\r\n const updates = storeOperations.get(EntityOperationType.Update);\r\n store.updateMany(updates.map((_update: EntityOperation) => _update.previous));\r\n\r\n const inserts = storeOperations.get(EntityOperationType.Insert);\r\n store.deleteMany(inserts.map((_insert: EntityOperation) => _insert.current));\r\n });\r\n\r\n this.operations.deleteMany(operations);\r\n this.inCommitPhase$.next(false);\r\n }\r\n\r\n /**\r\n * Clear this transaction\r\n * @todo Raise event and synchronize stores?\r\n */\r\n clear() {\r\n this.operations.clear();\r\n this.inCommitPhase$.next(false);\r\n }\r\n\r\n /**\r\n * Get any existing operation on an entity\r\n * @param entity Entity\r\n * @returns Either an insert, update or delete operation\r\n */\r\n getOperationByEntity(entity: object): EntityOperation {\r\n return this.operations.get(this.getKey(entity));\r\n }\r\n\r\n /**\r\n * Merge another transaction in this one\r\n * @param transaction Another transaction\r\n */\r\n mergeTransaction(transaction: EntityTransaction) {\r\n this.checkInCommitPhase();\r\n\r\n const operations = transaction.operations.all();\r\n operations.forEach((operation: EntityOperation) => {\r\n this.addOperation(operation);\r\n });\r\n }\r\n\r\n /**\r\n * Create an insert operation and add an entity to the store\r\n * @param current The entity to insert\r\n * @param store Optional: The store to insert the entity into\r\n * @param meta Optional: Any metadata on the operation\r\n */\r\n private doInsert(current: object, store?: EntityStore<object>, meta?: {[key: string]: any}) {\r\n this.addOperation({\r\n key: this.getKey(current),\r\n type: EntityOperationType.Insert,\r\n previous: undefined,\r\n current,\r\n store,\r\n meta\r\n });\r\n\r\n if (store !== undefined) {\r\n store.insert(current);\r\n }\r\n }\r\n\r\n /**\r\n * Create an update operation and update an entity into the store\r\n * @param previous The entity before update\r\n * @param current The entity after update\r\n * @param store Optional: The store to update the entity into\r\n * @param meta Optional: Any metadata on the operation\r\n */\r\n private doUpdate(previous: object, current: object, store?: EntityStore<object>, meta?: {[key: string]: any}) {\r\n this.addOperation({\r\n key: this.getKey(current),\r\n type: EntityOperationType.Update,\r\n previous,\r\n current,\r\n store,\r\n meta\r\n });\r\n\r\n if (store !== undefined) {\r\n store.update(current);\r\n }\r\n }\r\n\r\n /**\r\n * Create a delete operation and delete an entity from the store\r\n * @param previous The entity before delete\r\n * @param store Optional: The store to delete the entity from\r\n * @param meta Optional: Any metadata on the operation\r\n */\r\n private doDelete(previous: object, store?: EntityStore<object>, meta?: {[key: string]: any}) {\r\n this.addOperation({\r\n key: this.getKey(previous),\r\n type: EntityOperationType.Delete,\r\n previous,\r\n current: undefined,\r\n store,\r\n meta\r\n });\r\n\r\n if (store !== undefined) {\r\n store.delete(previous);\r\n }\r\n }\r\n\r\n /**\r\n * Remove committed operations from store\r\n * @param operations Commited operations\r\n * @todo Raise event and synchronize stores?\r\n */\r\n private resolveOperations(operations: EntityOperation[]) {\r\n this.operations.deleteMany(operations);\r\n }\r\n\r\n /**\r\n * On commit success, resolve commited operations and exit commit phase\r\n * @param operations Commited operations\r\n */\r\n private onCommitSuccess(operations: EntityOperation[]) {\r\n this.resolveOperations(operations);\r\n this.inCommitPhase$.next(false);\r\n }\r\n\r\n /**\r\n * On commit error, abort transaction\r\n * @param operations Commited operations\r\n */\r\n private onCommitError(operations: EntityOperation[]) {\r\n this.inCommitPhase$.next(false);\r\n }\r\n\r\n /**\r\n * Add an operation to the operations store\r\n * @param operation Operation to add\r\n */\r\n private addOperation(operation: EntityOperation) {\r\n this.checkInCommitPhase();\r\n\r\n this.operations.insert(operation);\r\n this.operations.state.update(operation, {added: true});\r\n }\r\n\r\n /**\r\n * Remove an operation from the operations store\r\n * @param operation Operation to remove\r\n */\r\n private removeOperation(operation: EntityOperation) {\r\n this.checkInCommitPhase();\r\n\r\n this.operations.delete(operation);\r\n this.operations.state.update(operation, {added: false});\r\n }\r\n\r\n /**\r\n * Get all the operations to commit\r\n * @returns Operations to commit\r\n */\r\n private getOperationsInCommit(): EntityOperation[] {\r\n return this.operations.stateView\r\n .manyBy((value: {entity: EntityOperation, state: EntityOperationState}) => {\r\n return value.state.added === true;\r\n })\r\n .map((value: {entity: EntityOperation, state: EntityOperationState}) => value.entity);\r\n }\r\n\r\n /**\r\n * Check if the transaction is in the commit phase and throw an error if it is\r\n */\r\n private checkInCommitPhase() {\r\n if (this.inCommitPhase === true) {\r\n throw new Error('This transaction is in the commit phase. Cannot complete this operation.');\r\n }\r\n }\r\n}\r\n","import { BehaviorSubject } from 'rxjs';\r\n\r\nimport { EntityStoreStrategyOptions } from '../entity.interfaces';\r\nimport { EntityStore } from '../store';\r\n\r\n/**\r\n * Entity store strategies. They can do pretty much anything during a store's\r\n * lifetime. For example, they may act as triggers when something happens.\r\n * Sharing a strategy is a good idea when multiple strategies would have\r\n * on cancelling effect on each other.\r\n *\r\n * At creation, strategy is inactive and needs to be manually activated.\r\n */\r\nexport class EntityStoreStrategy {\r\n\r\n /**\r\n * Feature store\r\n * @internal\r\n */\r\n protected stores: EntityStore[] = [];\r\n\r\n /**\r\n * Whether this strategy is active\r\n * @internal\r\n */\r\n get active(): boolean { return this.active$.value; }\r\n readonly active$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n constructor(protected options: EntityStoreStrategyOptions = {}) {\r\n this.options = options;\r\n }\r\n\r\n /**\r\n * Activate the strategy. If it's already active, it'll be deactivated\r\n * and activated again.\r\n */\r\n activate() {\r\n if (this.active === true) {\r\n this.doDeactivate();\r\n }\r\n this.active$.next(true);\r\n this.doActivate();\r\n }\r\n\r\n /**\r\n * Activate the strategy. If it's already active, it'll be deactivated\r\n * and activated again.\r\n */\r\n deactivate() {\r\n this.active$.next(false);\r\n this.doDeactivate();\r\n }\r\n\r\n /**\r\n * Bind this strategy to a store\r\n * @param store Feature store\r\n */\r\n bindStore(store: EntityStore) {\r\n if (this.stores.indexOf(store) < 0) {\r\n this.stores.push(store);\r\n }\r\n }\r\n\r\n /**\r\n * Unbind this strategy from store\r\n * @param store Feature store\r\n */\r\n unbindStore(store: EntityStore) {\r\n const index = this.stores.indexOf(store);\r\n if (index >= 0) {\r\n this.stores.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Do the stataegy activation\r\n * @internal\r\n */\r\n protected doActivate() {}\r\n\r\n /**\r\n * Do the strategy deactivation\r\n * @internal\r\n */\r\n protected doDeactivate() {}\r\n\r\n}\r\n","import { EntityStoreStrategyFuncOptions } from '../entity.interfaces';\r\nimport { EntityStore } from '../store';\r\nimport { EntityStoreStrategy } from './strategy';\r\n\r\n/**\r\n * When active, this strategy filters a store's stateView to return\r\n * selected entities only.\r\n */\r\nexport class EntityStoreFilterCustomFuncStrategy extends EntityStoreStrategy {\r\n\r\n constructor(protected options: EntityStoreStrategyFuncOptions) {\r\n super(options);\r\n }\r\n\r\n /**\r\n * Store / filter ids map\r\n */\r\n private filters: Map<EntityStore, string> = new Map();\r\n\r\n /**\r\n * Bind this strategy to a store and start filtering it\r\n * @param store Entity store\r\n */\r\n bindStore(store: EntityStore) {\r\n super.bindStore(store);\r\n if (this.active === true) {\r\n this.filterStore(store);\r\n }\r\n }\r\n\r\n /**\r\n * Unbind this strategy from a store and stop filtering it\r\n * @param store Entity store\r\n */\r\n unbindStore(store: EntityStore) {\r\n super.unbindStore(store);\r\n if (this.active === true) {\r\n this.unfilterStore(store);\r\n }\r\n }\r\n\r\n /**\r\n * Start filtering all stores\r\n * @internal\r\n */\r\n protected doActivate() {\r\n this.filterAll();\r\n }\r\n\r\n /**\r\n * Stop filtering all stores\r\n * @internal\r\n */\r\n protected doDeactivate() {\r\n this.unfilterAll();\r\n }\r\n\r\n /**\r\n * Filter all stores\r\n */\r\n private filterAll() {\r\n this.stores.forEach((store: EntityStore) => this.filterStore(store));\r\n }\r\n\r\n /**\r\n * Unfilter all stores\r\n */\r\n private unfilterAll() {\r\n this.stores.forEach((store: EntityStore) => this.unfilterStore(store));\r\n }\r\n\r\n /**\r\n * Filter a store and add it to the filters map\r\n */\r\n private filterStore(store: EntityStore) {\r\n this.filters.set(store, store.stateView.addFilter(this.options.filterClauseFunc));\r\n }\r\n\r\n /**\r\n * Unfilter a store and delete it from the filters map\r\n */\r\n private unfilterStore(store: EntityStore) {\r\n const filterId = this.filters.get(store);\r\n if (filterId === undefined) {\r\n return;\r\n }\r\n\r\n store.stateView.removeFilter(filterId);\r\n this.filters.delete(store);\r\n }\r\n}\r\n","import { EntityRecord } from '../entity.interfaces';\r\nimport { EntityStore } from '../store';\r\nimport { EntityStoreStrategy } from './strategy';\r\n\r\n/**\r\n * When active, this strategy filters a store's stateView to return\r\n * selected entities only.\r\n */\r\nexport class EntityStoreFilterSelectionStrategy extends EntityStoreStrategy {\r\n\r\n /**\r\n * Store / filter ids map\r\n */\r\n private filters: Map<EntityStore, string> = new Map();\r\n\r\n /**\r\n * Bind this strategy to a store and start filtering it\r\n * @param store Entity store\r\n */\r\n bindStore(store: EntityStore) {\r\n super.bindStore(store);\r\n if (this.active === true) {\r\n this.filterStore(store);\r\n }\r\n }\r\n\r\n /**\r\n * Unbind this strategy from a store and stop filtering it\r\n * @param store Entity store\r\n */\r\n unbindStore(store: EntityStore) {\r\n super.unbindStore(store);\r\n if (this.active === true) {\r\n this.unfilterStore(store);\r\n }\r\n }\r\n\r\n /**\r\n * Start filtering all stores\r\n * @internal\r\n */\r\n protected doActivate() {\r\n this.filterAll();\r\n }\r\n\r\n /**\r\n * Stop filtering all stores\r\n * @internal\r\n */\r\n protected doDeactivate() {\r\n this.unfilterAll();\r\n }\r\n\r\n /**\r\n * Filter all stores\r\n */\r\n private filterAll() {\r\n this.stores.forEach((store: EntityStore) => this.filterStore(store));\r\n }\r\n\r\n /**\r\n * Unfilter all stores\r\n */\r\n private unfilterAll() {\r\n this.stores.forEach((store: EntityStore) => this.unfilterStore(store));\r\n }\r\n\r\n /**\r\n * Filter a store and add it to the filters map\r\n */\r\n private filterStore(store: EntityStore) {\r\n if (this.filters.has(store)) {\r\n return;\r\n }\r\n\r\n const filter = (record: EntityRecord<object>) => {\r\n return record.state.selected === true;\r\n };\r\n this.filters.set(store, store.stateView.addFilter(filter));\r\n }\r\n\r\n /**\r\n * Unfilter a store and delete it from the filters map\r\n */\r\n private unfilterStore(store: EntityStore) {\r\n const filterId = this.filters.get(store);\r\n if (filterId === undefined) {\r\n return;\r\n }\r\n\r\n store.stateView.removeFilter(filterId);\r\n this.filters.delete(store);\r\n }\r\n}\r\n","<mat-form-field class=\"igo-entity-selector\">\r\n <mat-select\r\n [disabled]=\"disabled\"\r\n [value]=\"selected$ | async\"\r\n [multiple]=\"multi\"\r\n [placeholder]=\"placeholder\"\r\n (selectionChange)=\"onSelectionChange($event)\">\r\n <mat-option *ngIf=\"emptyText !== undefined && multi === false\" [value]=\"emptyValue\">{{emptyText}}</mat-option>\r\n <mat-option *ngIf=\"multi === true\" [value]=\"multiSelectValue\">{{multiText$ | async}}</mat-option>\r\n <ng-template ngFor let-record [ngForOf]=\"store.stateView.all$() | async\">\r\n <mat-option [value]=\"record.entity\">\r\n {{titleAccessor(record.entity)}}\r\n </mat-option>\r\n </ng-template>\r\n </mat-select>\r\n</mat-form-field>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n OnInit,\r\n OnDestroy\r\n} from '@angular/core';\r\n\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\n\r\nimport { EntityRecord } from '../shared/entity.interfaces';\r\nimport { EntityStore } from '../shared/store';\r\nimport { EntityStoreWatcher } from '../shared/watcher';\r\nimport { getEntityTitle } from '../shared/entity.utils';\r\n\r\n@Component({\r\n selector: 'igo-entity-selector',\r\n templateUrl: './entity-selector.component.html',\r\n styleUrls: ['./entity-selector.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EntitySelectorComponent implements OnInit, OnDestroy {\r\n\r\n /**\r\n * The selected entity\r\n * @internal\r\n */\r\n readonly selected$ = new BehaviorSubject<object>(undefined);\r\n\r\n /**\r\n * The current multi select option text\r\n * @internal\r\n */\r\n readonly multiText$ = new BehaviorSubject<string>(undefined);\r\n\r\n readonly multiSelectValue = {id: 'IGO_MULTI_SELECT'};\r\n\r\n readonly emptyValue = {id: 'IGO_EMPTY_SELECT'};\r\n\r\n /**\r\n * Subscription to the selected entity\r\n */\r\n private selected$$: Subscription;\r\n\r\n /**\r\n * Store watcher\r\n */\r\n private watcher: EntityStoreWatcher<object>;\r\n\r\n /**\r\n * Entity store\r\n */\r\n @Input() store: EntityStore<object>;\r\n\r\n /**\r\n * Title accessor\r\n */\r\n @Input() titleAccessor: (object) => string = getEntityTitle;\r\n\r\n /**\r\n * Text to display when nothing is selected\r\n */\r\n @Input() emptyText: string = undefined;\r\n\r\n /**\r\n * Wheter selecting many entities is allowed\r\n */\r\n @Input() multi: boolean = false;\r\n\r\n /**\r\n * Text to display for the select all option\r\n */\r\n @Input() multiAllText: string = 'All';\r\n\r\n /**\r\n * Text to display for the select none option\r\n */\r\n @Input() multiNoneText: string = 'None';\r\n\r\n /**\r\n * Field placeholder\r\n */\r\n @Input() placeholder: string;\r\n\r\n /**\r\n * Wheter the selector is disabled or not\r\n */\r\n @Input() disabled: boolean = false;\r\n\r\n /**\r\n * Event emitted when the selection changes\r\n */\r\n @Output() selectedChange = new EventEmitter<{\r\n selected: boolean;\r\n value: object | object[];\r\n }>();\r\n\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n /**\r\n * Create a store watcher and subscribe to the selected entity\r\n * @internal\r\n */\r\n ngOnInit() {\r\n this.watcher = new EntityStoreWatcher(this.store, this.cdRef);\r\n\r\n this.selected$$ = this.store.stateView\r\n .manyBy$((record: EntityRecord<object>) => record.state.selected === true)\r\n .subscribe((records: EntityRecord<object>[]) => {\r\n const entities = records.map((record: EntityRecord<object>) => record.entity);\r\n this.onSelectFromStore(entities);\r\n });\r\n }\r\n\r\n /**\r\n * Unsubscribe to the selected entity and destroy the store watcher\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.watcher.destroy();\r\n this.selected$$.unsubscribe();\r\n }\r\n\r\n /**\r\n * On selection change, update the store's state and emit an event\r\n * @internal\r\n */\r\n onSelectionChange(event: {value: object | undefined}) {\r\n const values = event.value instanceof Array ? event.value : [event.value];\r\n\r\n const multiSelect = values.find((_value: object) => _value === this.multiSelectValue);\r\n let entities = values.filter((_value: object) => _value !== this.multiSelectValue);\r\n if (multiSelect !== undefined) {\r\n if (entities.length === this.store.count) {\r\n entities = [];\r\n } else if (entities.length < this.store.count) {\r\n entities = this.store.all();\r\n }\r\n }\r\n\r\n entities = entities.filter((entity: object) => entity !== this.emptyValue);\r\n if (entities.length === 0) {\r\n this.store.state.updateAll({selected: false});\r\n } else {\r\n this.store.state.updateMany(entities, {selected: true}, true);\r\n }\r\n\r\n const value = this.multi ? entities : event.value;\r\n this.selectedChange.emit({selected: true, value});\r\n }\r\n\r\n private onSelectFromStore(entities: object[]) {\r\n if (this.multi === true) {\r\n this.selected$.next(entities);\r\n } else {\r\n const entity = entities.length > 0 ? entities[0] : undefined;\r\n this.selected$.next(entity);\r\n }\r\n\r\n this.updateMultiToggleWithEntities(entities);\r\n }\r\n\r\n private updateMultiToggleWithEntities(entities: object[]) {\r\n if (entities.length === this.store.count && this.multiText$.value !== this.multiNoneText) {\r\n this.multiText$.next(this.multiNoneText);\r\n } else if (entities.length < this.store.count && this.multiText$.value !== this.multiAllText) {\r\n this.multiText$.next(this.multiAllText);\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[igoStopPropagation]'\r\n})\r\nexport class StopPropagationDirective {\r\n @HostListener('click', ['$event'])\r\n public onClick(event: any): void {\r\n event.stopPropagation();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ChangeDetectionStrategy,\r\n OnChanges,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n OnDestroy\r\n} from '@angular/core';\r\n\r\nimport {\r\n EntityStore\r\n} from '../shared';\r\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { LanguageService, MediaService } from '@igo2/core';\r\nimport { EntityTablePaginatorOptions } from './entity-table-paginator.interface';\r\n\r\n@Component({\r\n selector: 'igo-entity-table-paginator',\r\n templateUrl: './entity-table-paginator.component.html',\r\n styleUrls: ['./entity-table-paginator.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EntityTablePaginatorComponent implements OnChanges, OnDestroy {\r\n\r\n public disabled: boolean = false;\r\n public hidePageSize: boolean = false;\r\n public pageIndex: number = 0;\r\n public pageSize: number = 50;\r\n public pageSizeOptions: number[] = [5, 10, 20, 50, 100, 200];\r\n public showFirstLastButtons: boolean = true;\r\n private count$$: Subscription;\r\n private entitySortChange$$: Subscription;\r\n private paginationLabelTranslation$$: Subscription[] = [];\r\n\r\n @Input() entitySortChange$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n /**\r\n * Entity store\r\n */\r\n @Input() store: EntityStore<object>;\r\n\r\n /**\r\n * Paginator options\r\n */\r\n @Input()\r\n paginatorOptions: EntityTablePaginatorOptions;\r\n\r\n /**\r\n * Event emitted when the paginator changes the page size or page index.\r\n */\r\n @Output() page: EventEmitter<PageEvent>;\r\n\r\n public length: number = 0;\r\n\r\n /**\r\n * Paginator emitted.\r\n */\r\n @Output() paginatorChange: EventEmitter<MatPaginator> = new EventEmitter<MatPaginator>();\r\n\r\n constructor(private languageService: LanguageService, private mediaService: MediaService) {}\r\n\r\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\r\n\r\n ngOnChanges() {\r\n this.unsubscribeAll();\r\n this.count$$ = this.store.stateView.count$.subscribe((count) => {\r\n this.length = count;\r\n this.emitPaginator();\r\n });\r\n this.entitySortChange$$ = this.entitySortChange$.subscribe(() => {\r\n if (this.paginator) {\r\n this.paginator.firstPage();\r\n }\r\n });\r\n this.initPaginatorOptions();\r\n this.translateLabels();\r\n }\r\n\r\n initPaginatorOptions() {\r\n this.disabled = this.paginatorOptions?.disabled || this.disabled;\r\n this.pageIndex = this.paginatorOptions?.pageIndex || this.pageIndex;\r\n this.pageSize = this.paginatorOptions?.pageSize || this.pageSize;\r\n this.pageSizeOptions = this.paginatorOptions?.pageSizeOptions || this.pageSizeOptions;\r\n if (this.mediaService.isMobile()) {\r\n this.showFirstLastButtons = false;\r\n this.hidePageSize = true;\r\n } else {\r\n this.showFirstLastButtons = this.paginatorOptions?.showFirstLastButtons || this.showFirstLastButtons;\r\n this.hidePageSize = this.paginatorOptions?.hidePageSize || this.hidePageSize;\r\n }\r\n }\r\n\r\n translateLabels() {\r\n\r\n this.paginationLabelTranslation$$.push(\r\n this.languageService.translate.get('igo.common.paginator.firstPageLabel').subscribe((label: string) => {\r\n this.paginator._intl.firstPageLabel = label;\r\n }));\r\n\r\n this.paginator._intl.getRangeLabel = this.rangeLabel;\r\n\r\n this.paginationLabelTranslation$$.push(\r\n this.languageService.translate.get('igo.common.paginator.itemsPerPageLabel').subscribe((label: string) => {\r\n this.paginator._intl.itemsPerPageLabel = label;\r\n }));\r\n this.paginationLabelTranslation$$.push(\r\n this.languageService.translate.get('igo.common.paginator.lastPageLabel').subscribe((label: string) => {\r\n this.paginator._intl.lastPageLabel = label;\r\n }));\r\n this.paginationLabelTranslation$$.push(\r\n this.languageService.translate.get('igo.common.paginator.nextPageLabel').subscribe((label: string) => {\r\n this.paginator._intl.nextPageLabel = label;\r\n }));\r\n this.paginationLabelTranslation$$.push(\r\n this.languageService.translate.get('igo.common.paginator.previousPageLabel').subscribe((label: string) => {\r\n this.paginator._intl.previousPageLabel = label;\r\n }));\r\n }\r\n\r\n rangeLabel = (page: number, pageSize: number, length: number) => {\r\n const of: BehaviorSubject<string> = new BehaviorSubject('');\r\n\r\n this.paginationLabelTranslation$$.push(\r\n this.languageService.translate.get('igo.common.paginator.of').subscribe((label: string) => {\r\n of.next(label);\r\n }));\r\n if (length === 0 || pageSize === 0) { return `0 ${of.value} ${length}`; }\r\n length = Math.max(length, 0);\r\n const startIndex = page * pageSize;\r\n const endIndex = startIndex < length ?\r\n Math.min(startIndex + pageSize, length) :\r\n startIndex + pageSize;\r\n return `${startIndex + 1} - ${endIndex} ${of.value} ${length}`;\r\n };\r\n\r\n private unsubscribeAll() {\r\n this.paginationLabelTranslation$$.map(sub => sub.unsubscribe());\r\n if (this.count$$) { this.count$$.unsubscribe(); }\r\n if (this.entitySortChange$$) { this.entitySortChange$$.unsubscribe(); }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribeAll();\r\n }\r\n\r\n emitPaginator() {\r\n this.paginatorChange.emit(this.paginator);\r\n }\r\n}\r\n","<mat-paginator \r\n [disabled]=\"disabled\"\r\n [hidePageSize]=\"hidePageSize\"\r\n [length]=\"length\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n [showFirstLastButtons]=\"showFirstLastButtons\"\r\n (page)=\"emitPaginator()\">\r\n</mat-paginator>\r\n","import {\r\n Directive,\r\n HostListener,\r\n Input,\r\n ElementRef\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[igoImageError]'\r\n})\r\nexport class ImageErrorDirective {\r\n\r\n @Input() errorImageUrl: string = './assets/igo2/common/images/na.png';\r\n @Input() hideError: boolean = false;\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n @HostListener(\"error\", ['$event'])\r\n public onError(event: any): void {\r\n if (this.hideError) {\r\n this.el.nativeElement.style.display = \"none\";\r\n } else {\r\n event.target.src = this.errorImageUrl;\r\n }\r\n\r\n }\r\n\r\n}\r\n","import {\r\n Directive,\r\n Input,\r\n ElementRef,\r\n Renderer2,\r\n EventEmitter,\r\n Output,\r\n HostListener\r\n} from '@angular/core';\r\n\r\nimport scrollIntoView from 'scroll-into-view-if-needed';\r\n\r\nimport { EntityTableScrollBehavior } from '../shared/entity.enums';\r\n\r\n/**\r\n * Directive that handles an entity table row click and selection.\r\n */\r\n@Directive({\r\n selector: '[igoEntityTableRow]'\r\n})\r\nexport class EntityTableRowDirective {\r\n\r\n /**\r\n * Class added to a selected row\r\n */\r\n static selectedCls = 'igo-entity-table-row-selected';\r\n\r\n /**\r\n * Class added to a highlighted row\r\n */\r\n static highlightedCls = 'igo-entity-table-row-highlighted';\r\n\r\n /**\r\n * Whether a row supports selection\r\n */\r\n @Input() selection = false;\r\n\r\n /**\r\n * Whether clicking a row should select it (if selection is true)\r\n */\r\n @Input() selectOnClick: boolean = true;\r\n\r\n /**\r\n * Whether the selected row should be highlighted\r\n */\r\n @Input() highlightSelection: boolean = true;\r\n\r\n /**\r\n * Whether a row is selected\r\n */\r\n @Input()\r\n set selected(value: boolean) {\r\n if (this.selection === false) { return; }\r\n if (value === this._selected) { return; }\r\n\r\n this.toggleSelected(value);\r\n this.scroll();\r\n }\r\n get selected(): boolean {\r\n return this._selected;\r\n }\r\n private _selected = false;\r\n\r\n /**\r\n * Scroll behavior on selection\r\n */\r\n @Input()\r\n scrollBehavior: EntityTableScrollBehavior = EntityTableScrollBehavior.Auto;\r\n\r\n /**\r\n * Event emitted when a row is selected\r\n */\r\n @Output() select = new EventEmitter<EntityTableRowDirective>();\r\n\r\n /**\r\n * When a row is clicked, select it if it's supported\r\n * @ignore\r\n */\r\n @HostListener('click')\r\n onClick() {\r\n if (this.selection === false || this.selectOnClick === false) {\r\n return;\r\n }\r\n\r\n this.toggleSelected(true);\r\n this.select.emit(this);\r\n }\r\n\r\n constructor(private renderer: Renderer2, private el: ElementRef) {}\r\n\r\n /**\r\n * Select a row and add or remove the selected class from it\r\n * @param selected Whether the row should be selected\r\n */\r\n private toggleSelected(selected: boolean) {\r\n this._selected = selected;\r\n if (selected === true) {\r\n this.addCls(EntityTableRowDirective.selectedCls);\r\n if (this.highlightSelection === true) {\r\n this.addCls(EntityTableRowDirective.highlightedCls);\r\n }\r\n } else {\r\n this.removeCls(EntityTableRowDirective.selectedCls);\r\n this.removeCls(EntityTableRowDirective.highlightedCls);\r\n }\r\n }\r\n\r\n /**\r\n * Scroll to the selected row\r\n */\r\n private scroll() {\r\n if (this._selected === true) {\r\n scrollIntoView(this.el.nativeElement, {\r\n scrollMode: 'if-needed',\r\n behavior: 'smooth',\r\n block: 'end',\r\n inline: 'nearest'\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Add the selected CSS class\r\n */\r\n private addCls(cls: string) {\r\n this.renderer.addClass(this.el.nativeElement, cls);\r\n }\r\n\r\n /**\r\n * Remove the selected CSS class\r\n */\r\n private removeCls(cls: string) {\r\n this.renderer.removeClass(this.el.nativeElement, cls);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({ name: 'sanitizeHtml' })\r\nexport class SanitizeHtmlPipe implements PipeTransform {\r\n constructor(private _sanitizer: DomSanitizer) {\r\n }\r\n transform(v: string): SafeHtml {\r\n return this._sanitizer.bypassSecurityTrustHtml(v);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\n\r\nimport { Cacheable } from 'ts-cacheable';\r\nimport { Observable } from 'rxjs';\r\nimport { catchError, switchMap } from 'rxjs/operators';\r\nimport { ConfigService } from '@igo2/core';\r\n\r\n@Pipe({\r\n name: 'secureImage'\r\n})\r\nexport class SecureImagePipe implements PipeTransform {\r\n constructor(\r\n private http: HttpClient,\r\n private configService?: ConfigService) {}\r\n\r\n @Cacheable({\r\n maxCacheCount: 20\r\n })\r\n transform(url: string): Observable<string> {\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'text/plain',\r\n activityInterceptor: 'false',\r\n interceptError: 'false'\r\n });\r\n\r\n const regexDepot = new RegExp(this.configService?.getConfig('depot.url') + '.*?(?=\"|$)');\r\n if (regexDepot.test(url)) {\r\n url = url.match(regexDepot)[0];\r\n }\r\n\r\n return this.http\r\n .get(url, {\r\n headers,\r\n responseType: 'blob'\r\n })\r\n .pipe(\r\n catchError((err) => {\r\n err.error.caught = true;\r\n err.error.toDisplay = false;\r\n throw err;\r\n }),\r\n switchMap((blob) => {\r\n return new Observable((observer) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onloadend = () => {\r\n observer.next(reader.result);\r\n observer.complete();\r\n };\r\n });\r\n })\r\n ) as Observable<string>;\r\n }\r\n}\r\n","<div class=\"table-container\" [ngStyle]=\"{'height': tableHeight}\">\r\n <table mat-table matSort [ngClass]=\"getTableClass()\" [dataSource]=\"dataSource\" [trackBy]=\"getTrackByFunction()\" (matSortChange)=\"onSort($event)\">\r\n <ng-container matColumnDef=\"selectionCheckbox\" class=\"mat-cell-checkbox\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngIf=\"selectMany\">\r\n <ng-container *ngIf=\"selectionState$ | async as selectionState\">\r\n <mat-checkbox (change)=\"onToggleRows($event.checked)\" [checked]=\"selectionState === entityTableSelectionState.All\"\r\n [indeterminate]=\"selectionState === entityTableSelectionState.Some\">\r\n </mat-checkbox>\r\n </ng-container>\r\n </ng-container>\r\n </th>\r\n <td mat-cell *matCellDef=\"let record\">\r\n <mat-checkbox (mousedown)=\"$event.shiftKey ? $event.preventDefault() : null\" (click)=\"$event.shiftKey ?\r\n onShiftToggleRow(!rowIsSelected(record), record, $event) : $event.stopPropagation()\" (change)=\"onToggleRow($event.checked,record)\"\r\n [checked]=\"rowIsSelected(record)\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container [matColumnDef]=\"column.name\" *ngFor=\"let column of template.columns\">\r\n <ng-container *ngIf=\"columnIsSortable(column)\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header [matTooltip]=\"column.tooltip ? column.tooltip : undefined\">\r\n {{column.title}}\r\n </th>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!columnIsSortable(column)\">\r\n <th mat-header-cell *matHeaderCellDef [matTooltip]=\"column.tooltip ? column.tooltip : undefined\">\r\n {{column.title}}\r\n </th>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getColumnRenderer(column) as columnRenderer\">\r\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.Default\">\r\n <ng-container *matCellDef=\"let record\">\r\n <td mat-cell class=\"mat-cell-text\" *ngIf=\"!isUrl(getValue(record, column));else isAnUrlDefault\" [ngClass]=\"getCellClass(record, column)\">\r\n {{getValue(record, column)}}\r\n </td>\r\n <ng-template #isAnUrlDefault>\r\n <td mat-cell class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\r\n <a href=\"{{getValue(record, column)}}\" target='_blank' rel=\"noopener noreferrer\" (click)=\"$event.stopPropagation()\">\r\n <img igoImageError *ngIf=\"isImg(getValue(record, column));else notImg\" src=\"{{(getValue(record, column) | secureImage) | async}}\" width=\"50\" heigth=\"auto\">\r\n <ng-template #notImg><span>{{\r\n 'igo.common.entity-table.targetHtmlUrl' | translate }}\r\n </span></ng-template>\r\n </a>\r\n </td>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.HTML\">\r\n <ng-container *matCellDef=\"let record\">\r\n <td mat-cell class=\"mat-cell-text\" *ngIf=\"!isUrl(getValue(record, column));else isAnUrlHTML\" [ngClass]=\"getCellClass(record, column)\"\r\n [innerHTML]=\"getValue(record, column)\">\r\n </td>\r\n <ng-template #isAnUrlHTML>\r\n <td mat-cell class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\r\n <a href=\"{{getValue(record, column)}}\" target='_blank' rel=\"noopener noreferrer\" (click)=\"$event.stopPropagation()\">\r\n <img igoImageError *ngIf=\"isImg(getValue(record, column));else notImg\" src=\"{{(getValue(record, column) | secureImage) | async}}\" width=\"50\" heigth=\"auto\">\r\n <ng-template #notImg><span>{{ 'igo.geo.targetHtmlUrl' |\r\n translate }} </span></ng-template>\r\n </a>\r\n </td>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.UnsanitizedHTML\">\r\n <ng-container *matCellDef=\"let record\">\r\n <td mat-cell class=\"mat-cell-text edition\" [formGroup]=\"formGroup\" *ngIf=\"isEdition(record);else isUnsanitizedHTML\"\r\n [ngClass]=\"getCellClass(record, column)\">\r\n <div class=\"date-picker\" *ngIf=\"column.type === 'date'\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <input matInput [matDatepicker]=\"picker\" [formControlName]=\"column.name\" value=\"{{getValue(record, column)}}\"\r\n (dateChange)=\"onDateChange(column.name, record, $event)\">\r\n <mat-datepicker #picker></mat-datepicker>\r\n </div>\r\n <input matInput type=\"time\" *ngIf=\"column.type === 'time'\" [formControlName]=\"column.name\" step=\"900\" (focus)=\"column.onFocus($event)\"\r\n (keypress)=\"column.onChange($event)\" (blur)=\"column.onBlur($event)\">\r\n <input matInput type=\"number\" class=\"class_number_edition\" *ngIf=\"column.type === 'number'\" [formControlName]=\"column.name\" step=\"{{column.step}}\"\r\n value=\"{{getValue(record,column)}}\" (input)=\"onValueChange(column.name, record, $event)\"\r\n readonly=\"{{getValidationAttributeValue(column, 'readonly')}}\" required=\"{{getValidationAttributeValue(column, 'mandatory')}}\"\r\n min=\"{{getValidationAttributeValue(column, 'minValue')}}\" max=\"{{getValidationAttributeValue(column, 'maxValue')}}\">\r\n <input matInput type=\"text\" *ngIf=\"!column.type || column.type ==='string'\" [formControlName]=\"column.name\"\r\n value=\"{{getValue(record, column)}}\" (input)=\"onValueChange(column.name, record, $event)\"\r\n readonly=\"{{getValidationAttributeValue(column, 'readonly')}}\" required=\"{{getValidationAttributeValue(column, 'mandatory')}}\">\r\n <mat-checkbox *ngIf=\"column.type === 'boolean'\" [formControlName]=\"column.name\" [checked]=\"getValue(record,column)\"\r\n (change)=\"onBooleanValueChange(column.name, record,$event)\"></mat-checkbox>\r\n <mat-select *ngIf=\"column.type === 'list'\" required=\"{{getValidationAttributeValue(column, 'mandatory')}}\"\r\n [formControlName]=\"column.name\" [multiple]=\"column.multiple\" (selectionChange)=\"onSelectValueChange(column.name, record, $event)\"\r\n [value]=\"getValue(record, column)\">\r\n <mat-option *ngFor=\"let option of column.domainValues\" [value]=\"option.id\" [disabled]=\"option.disabled\">\r\n {{ option.value }}\r\n </mat-option>\r\n </mat-select>\r\n <input matInput type=\"text\" [formControlName]=\"column.name\" *ngIf=\"column.type === 'autocomplete'\" [matAutocomplete]=\"auto\"\r\n required=\"{{getValidationAttributeValue(column, 'mandatory')}}\" value=\"{{getValue(record, column)}}\"\r\n readonly=\"{{getValidationAttributeValue(column, 'readonly')}}\">\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onAutocompleteValueChange(column, record, $event)\"\r\n panelWidth=\"430px\">\r\n <mat-option *ngFor=\"let option of filteredOptions[column.name] | async\"\r\n [value]=\"option.id\">\r\n {{ option.value }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </td>\r\n <ng-template #isUnsanitizedHTML>\r\n <td mat-cell class=\"mat-cell-text\" *ngIf=\"!isUrl(getValue(record, column));else isAnUrlUnsanitizedHTML\" [ngClass]=\"getCellClass(record, column)\"\r\n [innerHTML]=\"getValue(record, column) | sanitizeHtml\">\r\n </td>\r\n <ng-template #isAnUrlUnsanitizedHTML>\r\n <td mat-cell class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\r\n <a href=\"{{getValue(record, column)}}\" target='_blank' rel=\"noopener noreferrer\" (click)=\"$event.stopPropagation()\">\r\n <img igoImageError *ngIf=\"isImg(getValue(record, column));else notImg\" src=\"{{(getValue(record, column) | secureImage) | async}}\" width=\"50\" heigth=\"auto\">\r\n <ng-template #notImg><span>{{ 'igo.geo.targetHtmlUrl' | translate }} </span></ng-template>\r\n </a>\r\n </td>\r\n </ng-template>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.Icon\">\r\n <td mat-cell *matCellDef=\"let record\" class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\r\n <mat-icon *ngIf=\"column.onClick\" svgIcon=\"{{getValue(record, column)|| column.icon}}\" (click)=\"column.onClick($event)\"></mat-icon>\r\n <mat-icon *ngIf=\"!column.onClick\" svgIcon=\"{{getValue(record, column)|| column.icon}}\"></mat-icon>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.ButtonGroup\">\r\n <ng-container *matCellDef=\"let record\">\r\n <td mat-cell class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\r\n <span *ngFor=\"let button of getValue(record, column)\">\r\n <ng-container *ngIf=\"isEdition(record) === button.editMode || button.editMode === undefined\">\r\n <button *ngIf=\"button.style === 'mat-icon-button'\" igoStopPropagation mat-icon-button\r\n [color]=\"button.color\" (mousedown)=\"onButtonClick(button.click, record)\" [disabled]=\"button.disabled\">\r\n <mat-icon svgIcon=\"{{button.icon}}\"></mat-icon>\r\n </button>\r\n <button *ngIf=\"button.style !== 'mat-icon-button'\" igoStopPropagation mat-mini-fab\r\n [color]=\"button.color\" (mousedown)=\"onButtonClick(button.click, record)\" [disabled]=\"button.disabled\">\r\n <mat-icon svgIcon=\"{{button.icon}}\"></mat-icon>\r\n </button>\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"headers; sticky: fixedHeader\" [ngClass]=\"getHeaderClass()\">\r\n </tr>\r\n <tr mat-row igoEntityTableRow *matRowDef=\"let record; columns: headers;\" [scrollBehavior]=\"scrollBehavior\" [ngClass]=\"getRowClass(record)\" [selection]=\"selection\" [selected]=\"rowIsSelected(record)\" (select)=\"onRowSelect(record)\" (click)=\"onRowClick(record)\">\r\n </tr>\r\n </table>\r\n <igo-entity-table-paginator *ngIf=\"withPaginator\" [store]=\"store\" [paginatorOptions]=\"paginatorOptions\" [entitySortChange$]=\"entitySortChange$\" (paginatorChange)=\"paginatorChange($event)\">\r\n </igo-entity-table-paginator>\r\n</div>","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n OnInit,\r\n OnDestroy,\r\n OnChanges,\r\n SimpleChanges,\r\n ElementRef,\r\n Optional,\r\n Self\r\n} from '@angular/core';\r\n\r\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\r\n\r\nimport {\r\n EntityKey,\r\n EntityRecord,\r\n EntityState,\r\n EntityStore,\r\n EntityTableTemplate,\r\n EntityTableColumn,\r\n EntityTableColumnRenderer,\r\n EntityTableSelectionState,\r\n EntityTableScrollBehavior\r\n} from '../shared';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { EntityTablePaginatorOptions } from '../entity-table-paginator/entity-table-paginator.interface';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { UntypedFormBuilder, NgControl, NgForm, FormControlName, UntypedFormGroup } from '@angular/forms';\r\nimport { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { DateAdapter, ErrorStateMatcher } from '@angular/material/core';\r\nimport { map } from 'rxjs/operators';\r\nimport { default as moment } from 'moment';\r\n\r\n@Component({\r\n selector: 'igo-entity-table',\r\n templateUrl: './entity-table.component.html',\r\n styleUrls: ['./entity-table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: MatFormFieldControl, useExisting: EntityTableComponent }]\r\n})\r\nexport class EntityTableComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n entitySortChange$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n public formGroup: UntypedFormGroup = new UntypedFormGroup({});\r\n\r\n public filteredOptions = {};\r\n\r\n /**\r\n * Reference to the column renderer types\r\n * @internal\r\n */\r\n entityTableColumnRenderer = EntityTableColumnRenderer;\r\n\r\n /**\r\n * Reference to the selection's state\r\n * @internal\r\n */\r\n entityTableSelectionState = EntityTableSelectionState;\r\n\r\n /**\r\n * Observable of the selection,s state\r\n * @internal\r\n */\r\n readonly selectionState$: BehaviorSubject<EntityTableSelectionState> = new BehaviorSubject(undefined);\r\n\r\n /**\r\n * Subscription to the store's selection\r\n */\r\n private selection$$: Subscription;\r\n\r\n /**\r\n * Subscription to the dataSource\r\n */\r\n private dataSource$$: Subscription;\r\n\r\n /**\r\n * The last record checked. Useful for selecting\r\n * multiple records by holding the shift key and checking\r\n * checkboxes.\r\n */\r\n private lastRecordCheckedKey: EntityKey;\r\n\r\n /**\r\n * Entity store\r\n */\r\n @Input() store: EntityStore<object>;\r\n\r\n /**\r\n * Table paginator\r\n */\r\n @Input() set paginator(value: MatPaginator) {\r\n this._paginator = value;\r\n this.dataSource.paginator = value;\r\n }\r\n\r\n get paginator(): MatPaginator {\r\n return this._paginator;\r\n }\r\n private _paginator: MatPaginator;\r\n\r\n /**\r\n * Table template\r\n */\r\n @Input() template: EntityTableTemplate;\r\n\r\n /**\r\n * Scroll behavior on selection\r\n */\r\n @Input()\r\n scrollBehavior: EntityTableScrollBehavior = EntityTableScrollBehavior.Auto;\r\n\r\n /**\r\n * Whether nulls should be first when sorting\r\n */\r\n @Input()\r\n sortNullsFirst: boolean = false;\r\n\r\n /**\r\n * Show the table paginator or not. False by default.\r\n */\r\n @Input()\r\n withPaginator: boolean = false;\r\n\r\n /**\r\n * Paginator options\r\n */\r\n @Input()\r\n paginatorOptions: EntityTablePaginatorOptions;\r\n\r\n /**\r\n * Event emitted when an entity (row) is clicked\r\n */\r\n @Output() entityClick = new EventEmitter<object>();\r\n\r\n /**\r\n * Event emitted when an entity (row) is selected\r\n */\r\n @Output() entitySelectChange = new EventEmitter<{\r\n added: object[];\r\n }>();\r\n\r\n /**\r\n * Event emitted when the table sort is changed.\r\n */\r\n @Output() entitySortChange: EventEmitter<{column: EntityTableColumn, direction: string}> = new EventEmitter(undefined);\r\n\r\n /**\r\n * Table headers\r\n * @internal\r\n */\r\n get headers(): string[] {\r\n let columns = this.template.columns\r\n .filter((column: EntityTableColumn) => column.visible !== false)\r\n .map((column: EntityTableColumn) => column.name);\r\n\r\n if (this.selectionCheckbox === true) {\r\n columns = ['selectionCheckbox'].concat(columns);\r\n }\r\n\r\n return columns;\r\n }\r\n\r\n /**\r\n * Data source consumable by the underlying material table\r\n * @internal\r\n */\r\n dataSource = new MatTableDataSource<object>();\r\n\r\n /**\r\n * Whether selection is supported\r\n * @internal\r\n */\r\n get selection(): boolean { return this.template.selection || false; }\r\n\r\n /**\r\n * Whether a selection checkbox should be displayed\r\n * @internal\r\n */\r\n get selectionCheckbox(): boolean { return this.template.selectionCheckbox || false; }\r\n\r\n /**\r\n * Whether selection many entities should eb supported\r\n * @internal\r\n */\r\n get selectMany(): boolean { return this.template.selectMany || false; }\r\n\r\n /**\r\n * Whether selection many entities should eb supported\r\n * @internal\r\n */\r\n get fixedHeader(): boolean { return this.template.fixedHeader === undefined ? true : this.template.fixedHeader; }\r\n\r\n get tableHeight(): string { return this.template.tableHeight ? this.template.tableHeight : 'auto'; }\r\n\r\n constructor(private cdRef: ChangeDetectorRef,\r\n private formBuilder: UntypedFormBuilder,\r\n protected _focusMonitor: FocusMonitor,\r\n protected _elementRef: ElementRef<HTMLElement>,\r\n @Optional() @Self() public ngControl: NgControl,\r\n @Optional() protected _parentForm: NgForm,\r\n @Optional() protected _controlName: FormControlName,\r\n protected _defaultErrorStateMatcher: ErrorStateMatcher,\r\n private dateAdapter: DateAdapter<Date>\r\n ) {\r\n this.dateAdapter.setLocale('fr-CA');\r\n }\r\n\r\n /**\r\n * Track the selection state to properly display the selection checkboxes\r\n * @internal\r\n */\r\n ngOnInit() {\r\n this.handleDatasource();\r\n this.dataSource.paginator = this.paginator;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n ngOnChanges(changes: SimpleChanges) {\r\n const store = changes.store;\r\n if (store && store.currentValue !== store.previousValue) {\r\n this.handleDatasource();\r\n }\r\n }\r\n\r\n /**\r\n * Process text or number value change (edition)\r\n */\r\n onValueChange(column: string, record: EntityRecord<any>, event) {\r\n const key = this.getColumnKeyWithoutPropertiesTag(column);\r\n record.entity.properties[key] = event.target.value;\r\n }\r\n\r\n /**\r\n * Process boolean value change (edition)\r\n */\r\n onBooleanValueChange(column: string, record: EntityRecord<any>, event) {\r\n const key = this.getColumnKeyWithoutPropertiesTag(column);\r\n record.entity.properties[key] = event.checked;\r\n }\r\n\r\n /**\r\n * Process select value change (edition)\r\n */\r\n onSelectValueChange(column: string, record: EntityRecord<any>, event) {\r\n const key = this.getColumnKeyWithoutPropertiesTag(column);\r\n record.entity.properties[key] = event.value;\r\n }\r\n\r\n /**\r\n * Process autocomplete value change (edition)\r\n */\r\n onAutocompleteValueChange(column: EntityTableColumn, record: EntityRecord<any>, event) {\r\n this.formGroup.controls[column.name].setValue(event.option.viewValue);\r\n const key = this.getColumnKeyWithoutPropertiesTag(column.name);\r\n record.entity.properties[key] = event.option.value;\r\n }\r\n\r\n /**\r\n * Process date value change (edition)\r\n */\r\n onDateChange(column: string, record: EntityRecord<any>, event) {\r\n const format = \"YYYY-MM-DD\";\r\n const value = moment(event.value).format(format);\r\n const key = this.getColumnKeyWithoutPropertiesTag(column);\r\n record.entity.properties[key] = value;\r\n }\r\n\r\n /**\r\n * Enable edition mode for one row\r\n * More than one row can be edited at the same time\r\n */\r\n private enableEdit(record: EntityRecord<any>) {\r\n const item = record.entity.properties || record.entity;\r\n this.template.columns.forEach(column => {\r\n column.title = column.validation?.mandatory && !column.title.includes('*') ? column.title + ' *' : column.title;\r\n\r\n const key = this.getColumnKeyWithoutPropertiesTag(column.name);\r\n if (column.type === 'boolean') {\r\n if (!item[key] || item[key] === null) {\r\n item[key] = false;\r\n } else if (typeof item[key] === 'string') {\r\n item[key] = JSON.parse(item[key].toLowerCase());\r\n }\r\n this.formGroup.setControl(column.name, this.formBuilder.control(\r\n item[key]\r\n ));\r\n } else if (column.type === 'list') {\r\n if (column.multiple) {\r\n this.formGroup.setControl(column.name, this.formBuilder.control(\r\n [item[key]]\r\n ));\r\n } else {\r\n this.formGroup.setControl(column.name, this.formBuilder.control(\r\n item[key]\r\n ));\r\n\r\n typeof item[key] === 'string' ?\r\n this.formGroup.controls[column.name].setValue(parseInt(item[key])) :\r\n this.formGroup.controls[column.name].setValue(item[key]);\r\n }\r\n } else if (column.type === 'autocomplete') {\r\n this.formGroup.setControl(column.name, this.formBuilder.control(\r\n item[key]\r\n ));\r\n\r\n this.filteredOptions[column.name] = new Observable<any[]>();\r\n this.filteredOptions[column.name] =\r\n this.formGroup.controls[column.name].valueChanges.pipe(\r\n map(value => {\r\n if (value?.length) {\r\n return column.domainValues?.filter((option) => {\r\n const filterNormalized = value ? value.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : '';\r\n const featureNameNormalized = option.value.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\r\n return featureNameNormalized.includes(filterNormalized);\r\n });\r\n }\r\n })\r\n );\r\n\r\n let formControlValue = item[key];\r\n column.domainValues.forEach(option => {\r\n if (typeof formControlValue === 'string' && /^\\d+$/.test(formControlValue)) {\r\n formControlValue = parseInt(formControlValue);\r\n }\r\n if (option.value === formControlValue || option.id === formControlValue) {\r\n formControlValue = option.value;\r\n }\r\n });\r\n\r\n this.formGroup.controls[column.name].setValue(formControlValue);\r\n if (this.isEdition(record) && column.linkColumnForce) {\r\n const entity = record.entity as any;\r\n this.formGroup.controls[column.name].setValue(\r\n entity?.properties[this.getColumnKeyWithoutPropertiesTag(column.linkColumnForce)]\r\n );\r\n }\r\n } else if (column.type === 'date') {\r\n if (column.visible !== false) {\r\n if (item[key]) {\r\n let date = moment(item[key]);\r\n item[key] = date.utc().format('YYYY-MM-DD');\r\n this.formGroup.setControl(column.name, this.formBuilder.control(\r\n item[key]\r\n ));\r\n } else {\r\n const newKey = this.getColumnKeyWithoutPropertiesTag(column.name);\r\n record.entity.properties[newKey] = null;\r\n this.formGroup.setControl(column.name, this.formBuilder.control(\r\n null\r\n ));\r\n }\r\n }\r\n } else {\r\n this.formGroup.setControl(column.name, this.formBuilder.control(\r\n item[key]\r\n ));\r\n }\r\n\r\n if (this.formGroup.controls[column.name] && this.getValidationAttributeValue(column, 'readonly')) {\r\n this.formGroup.controls[column.name].disable();\r\n }\r\n });\r\n }\r\n\r\n private handleDatasource() {\r\n this.unsubscribeStore();\r\n this.selection$$ = this.store.stateView\r\n .manyBy$((record: EntityRecord<object>) => record.state.selected === true)\r\n .subscribe((records: EntityRecord<object>[]) => {\r\n const firstSelected = records[0];\r\n const firstSelectedStateviewPosition = this.store.stateView.all().indexOf(firstSelected);\r\n const pageMax = this.paginator ? this.paginator.pageSize * (this.paginator.pageIndex + 1) : 0;\r\n const pageMin = this.paginator ? pageMax - this.paginator.pageSize : 0;\r\n\r\n if (\r\n this.paginator &&\r\n (firstSelectedStateviewPosition < pageMin ||\r\n firstSelectedStateviewPosition >= pageMax)) {\r\n const pageToReach = Math.floor(firstSelectedStateviewPosition / this.paginator.pageSize);\r\n this.dataSource.paginator.pageIndex = pageToReach;\r\n }\r\n this.selectionState$.next(this.computeSelectionState(records));\r\n });\r\n this.dataSource$$ = this.store.stateView.all$().subscribe((all) => {\r\n if (all[0]) {\r\n this.enableEdit(all[0]);\r\n }\r\n this.dataSource.data = all;\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Unbind the store watcher\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.unsubscribeStore();\r\n }\r\n\r\n private unsubscribeStore() {\r\n if (this.selection$$) {\r\n this.selection$$.unsubscribe();\r\n }\r\n if (this.dataSource$$) {\r\n this.dataSource$$.unsubscribe();\r\n }\r\n }\r\n\r\n /**\r\n * Trackby function\r\n * @param record Record\r\n * @param index Record index\r\n * @internal\r\n */\r\n getTrackByFunction() {\r\n return (index: number, record: EntityRecord<object, EntityState>) => {\r\n return record.ref;\r\n };\r\n }\r\n\r\n /**\r\n * Trigger a refresh of thre table. This can be useful when\r\n * the data source doesn't emit a new value but for some reason\r\n * the records need an update.\r\n * @internal\r\n */\r\n refresh() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n paginatorChange(event: MatPaginator) {\r\n this.paginator = event;\r\n }\r\n\r\n /**\r\n * On sort, sort the store\r\n * @param event Sort event\r\n * @internal\r\n */\r\n onSort(event: {active: string, direction: string}) {\r\n const direction = event.direction;\r\n const column = this.template.columns\r\n .find((c: EntityTableColumn) => c.name === event.active);\r\n\r\n if (direction === 'asc' || direction === 'desc') {\r\n this.store.stateView.sort({\r\n valueAccessor: (record: EntityRecord<object>) => this.getValue(record, column),\r\n direction,\r\n nullsFirst: this.sortNullsFirst\r\n });\r\n this.entitySortChange.emit({column, direction});\r\n this.entitySortChange$.next(true);\r\n } else {\r\n this.store.stateView.sort(undefined);\r\n }\r\n }\r\n\r\n /**\r\n * When an entity is clicked, emit an event\r\n * @param record Record\r\n * @internal\r\n */\r\n onRowClick(record: EntityRecord<object>) {\r\n this.lastRecordCheckedKey = this.store.stateView.getKey(record);\r\n this.entityClick.emit(record.entity);\r\n }\r\n\r\n /**\r\n * When an entity is selected, select it in the store and emit an event. Even if\r\n * \"many\" is set to true, this method always select a single, exclusive row. Selecting\r\n * multiple rows should be achieved by using the checkboxes.\r\n * @param record Record\r\n * @internal\r\n */\r\n onRowSelect(record: EntityRecord<object>) {\r\n if (this.selection === false) { return; }\r\n\r\n const entity = record.entity;\r\n this.store.state.update(entity, {selected: true}, true);\r\n this.entitySelectChange.emit({added: [entity]});\r\n }\r\n\r\n /**\r\n * Select or unselect all rows at once. On select, emit an event.\r\n * @param toggle Select or unselect\r\n * @internal\r\n */\r\n onToggleRows(toggle: boolean) {\r\n if (this.selection === false) { return; }\r\n\r\n this.store.state.updateAll({selected: toggle});\r\n if (toggle === true) {\r\n const entities = this.store.stateView\r\n .all()\r\n .map((record: EntityRecord<object>) => record.entity);\r\n this.entitySelectChange.emit({added: [entities]});\r\n }\r\n }\r\n\r\n /**\r\n * When an entity is toggled, select or unselect it in the store. On select,\r\n * emit an event.\r\n * @param toggle Select or unselect\r\n * @param record Record\r\n * @internal\r\n */\r\n onToggleRow(toggle: boolean, record: EntityRecord<object>) {\r\n if (this.selection === false) { return; }\r\n\r\n const entity = record.entity;\r\n const exclusive = toggle === true && !this.selectMany;\r\n this.store.state.update(entity, {selected: toggle}, exclusive);\r\n if (toggle === true) {\r\n this.entitySelectChange.emit({added: [entity]});\r\n }\r\n this.lastRecordCheckedKey = this.store.stateView.getKey(record);\r\n }\r\n\r\n /**\r\n * When an entity is toggled, select or unselect it in the store. On select,\r\n * emit an event.\r\n * @param toggle Select or unselect\r\n * @param record Record\r\n * @internal\r\n */\r\n onShiftToggleRow(toggle: boolean, record: EntityRecord<object>, event: MouseEvent) {\r\n if (this.selection === false) { return; }\r\n\r\n if (this.selectMany === false || this.lastRecordCheckedKey === undefined) {\r\n this.onToggleRow(toggle, record);\r\n return;\r\n }\r\n\r\n // This is a workaround mat checkbox wrong behavior\r\n // when the shift key is held.\r\n // See https://github.com/angular/components/issues/6232\r\n const range = window.document.createRange();\r\n range.selectNode(event.target as HTMLElement);\r\n window.getSelection().removeAllRanges();\r\n window.getSelection().addRange(range);\r\n event.stopImmediatePropagation();\r\n\r\n const records = this.store.stateView.all();\r\n const recordIndex = records.indexOf(record);\r\n const lastRecordChecked = this.store.stateView.get(this.lastRecordCheckedKey);\r\n const lastRecordIndex = records.indexOf(lastRecordChecked);\r\n const indexes = [recordIndex, lastRecordIndex];\r\n const selectRecords = records.slice(Math.min(...indexes), Math.max(...indexes) + 1);\r\n\r\n const entities = selectRecords.map((_record: EntityRecord<object>) => _record.entity);\r\n this.store.state.updateMany(entities, {selected: toggle});\r\n if (toggle === true) {\r\n this.entitySelectChange.emit({added: entities});\r\n }\r\n this.lastRecordCheckedKey = this.store.stateView.getKey(record);\r\n }\r\n\r\n /**\r\n * Compute the selection state\r\n * @returns Whether all, some or no rows are selected\r\n * @internal\r\n */\r\n private computeSelectionState(selectedRecords: EntityRecord<object>[]): EntityTableSelectionState {\r\n const states = EntityTableSelectionState;\r\n const selectionCount = selectedRecords.length;\r\n return selectionCount === 0 ?\r\n states.None :\r\n (selectionCount === this.store.stateView.count ? states.All : states.Some);\r\n }\r\n\r\n /**\r\n * Whether a column is sortable\r\n * @param column Column\r\n * @returns True if a column is sortable\r\n * @internal\r\n */\r\n columnIsSortable(column: EntityTableColumn): boolean {\r\n let sortable = column.sort;\r\n if (sortable === undefined) {\r\n sortable = this.template.sort === undefined ? false : this.template.sort;\r\n }\r\n return sortable;\r\n }\r\n\r\n /**\r\n * Whether a row is should be selected based on the underlying entity state\r\n * @param record Record\r\n * @returns True if a row should be selected\r\n * @internal\r\n */\r\n rowIsSelected(record: EntityRecord<object>): boolean {\r\n const state = record.state;\r\n return state.selected ? state.selected : false;\r\n }\r\n\r\n isImg(value) {\r\n if (this.isUrl(value)) {\r\n return (\r\n ['jpg', 'png', 'gif'].indexOf(value.split('.').pop().toLowerCase()) !== -1\r\n );\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n isUrl(value) {\r\n if (typeof value === 'string') {\r\n return (\r\n value.slice(0, 8) === 'https://' || value.slice(0, 7) === 'http://'\r\n );\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Method to access an entity's values\r\n * @param record Record\r\n * @param column Column\r\n * @returns Any value\r\n * @internal\r\n */\r\n getValue(record: EntityRecord<object>, column: EntityTableColumn): any {\r\n const entity = record.entity;\r\n let value;\r\n if (column.valueAccessor !== undefined) {\r\n return column.valueAccessor(entity, record);\r\n }\r\n if (this.template.valueAccessor !== undefined) {\r\n return this.template.valueAccessor(entity, column.name, record);\r\n }\r\n value = this.store.getProperty(entity, column.name);\r\n\r\n if (column.type === 'boolean') {\r\n if (value === undefined || value === null || value === '') {\r\n value = false;\r\n } else if (typeof value !== 'boolean' && value !== undefined) {\r\n if (typeof value === 'number'){\r\n value = Boolean(value);\r\n } else {\r\n value = JSON.parse(value.toLowerCase());\r\n }\r\n }\r\n if (!this.isEdition(record)){\r\n value = value ? '✓' : ''; // check mark\r\n }\r\n } else if (column.type === 'list' && value && column.domainValues) {\r\n const entity = record.entity as any;\r\n if (column.multiple) {\r\n let list_id;\r\n typeof value === 'string' ? list_id = value.match(/[\\w.-]+/g).map(Number) : list_id = value;\r\n let list_option = [];\r\n\r\n column.domainValues.forEach(option => {\r\n if (list_id.includes(option.id)) {\r\n if (record.edition) {\r\n list_option.push(option.id);\r\n } else {\r\n list_option.push(option.value);\r\n }\r\n }\r\n });\r\n\r\n this.isEdition(record) ? value = list_id : value = list_option;\r\n } else {\r\n if (!this.isEdition(record) && column.linkColumnForce) {\r\n value = entity?.properties[this.getColumnKeyWithoutPropertiesTag(column.linkColumnForce)];\r\n } else {\r\n column.domainValues.forEach(option => {\r\n if (typeof value === 'string' && /^\\d+$/.test(value)) {\r\n value = parseInt(value);\r\n }\r\n if (option.value === value || option.id === value) {\r\n this.isEdition(record) ? value = option.id : value = option.value;\r\n }\r\n });\r\n }\r\n }\r\n } else if (column.type === 'autocomplete' && value && column.domainValues) {\r\n const entity = record.entity as any;\r\n if (!this.isEdition(record) && column.linkColumnForce) {\r\n value = entity?.properties[this.getColumnKeyWithoutPropertiesTag(column.linkColumnForce)];\r\n } else {\r\n column.domainValues.forEach(option => {\r\n if (typeof value === 'string' && /^\\d+$/.test(value)) {\r\n value = parseInt(value);\r\n }\r\n if (option.value === value || option.id === value) {\r\n value = option.value;\r\n }\r\n });\r\n }\r\n } else if (column.type === 'date') {\r\n if (this.isEdition(record)) {\r\n if (value) {\r\n let date = moment(value);\r\n value = date.format();\r\n this.formGroup.controls[column.name].setValue(value);\r\n }\r\n } else if (!this.isEdition(record) && value === null) {\r\n value = \"\";\r\n }\r\n }\r\n\r\n if (value === undefined) {\r\n value = '';\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Method to access an entity's validation values\r\n * @param column Column\r\n * @param validationType string\r\n * @returns Any value (false if no validation or not the one concerned)\r\n * @internal\r\n */\r\n getValidationAttributeValue(column: EntityTableColumn, validationType: string): any {\r\n if (column.validation !== undefined && column.validation[validationType] !== undefined) {\r\n return column.validation[validationType];\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n public isEdition(record) {\r\n return record.entity.edition ? true : false;\r\n }\r\n\r\n /**\r\n * Return the type of renderer of a column\r\n * @param column Column\r\n * @returns Renderer type\r\n * @internal\r\n */\r\n getColumnRenderer(column: EntityTableColumn): EntityTableColumnRenderer {\r\n if (column.renderer !== undefined) {\r\n return column.renderer;\r\n }\r\n return EntityTableColumnRenderer.Default;\r\n }\r\n\r\n /**\r\n * Return the table ngClass\r\n * @returns ngClass\r\n * @internal\r\n */\r\n getTableClass(): {[key: string]: boolean} {\r\n return {\r\n 'igo-entity-table-with-selection': this.selection\r\n };\r\n }\r\n\r\n /**\r\n * Return a header ngClass\r\n * @returns ngClass\r\n * @internal\r\n */\r\n getHeaderClass(): {[key: string]: boolean} {\r\n const func = this.template.headerClassFunc;\r\n if (func instanceof Function) {\r\n return func();\r\n }\r\n return {};\r\n }\r\n\r\n /**\r\n * Return a row ngClass\r\n * @param record Record\r\n * @returns ngClass\r\n * @internal\r\n */\r\n getRowClass(record: EntityRecord<object>): {[key: string]: boolean} {\r\n const entity = record.entity;\r\n const func = this.template.rowClassFunc;\r\n if (func instanceof Function) {\r\n return func(entity, record);\r\n }\r\n return {};\r\n }\r\n\r\n /**\r\n * Return a row ngClass\r\n * @param record Record\r\n * @param column Column\r\n * @returns ngClass\r\n * @internal\r\n */\r\n getCellClass(record: EntityRecord<object>, column: EntityTableColumn): {[key: string]: boolean} {\r\n const entity = record.entity;\r\n const cls = {};\r\n\r\n const tableFunc = this.template.cellClassFunc;\r\n if (tableFunc instanceof Function) {\r\n Object.assign(cls, tableFunc(entity, column, record));\r\n }\r\n\r\n const columnFunc = column.cellClassFunc;\r\n if (columnFunc instanceof Function) {\r\n Object.assign(cls, columnFunc(entity, record));\r\n }\r\n\r\n return cls;\r\n }\r\n\r\n /**\r\n * When a button is clicked\r\n * @param func Function\r\n * @param record Record\r\n * @internal\r\n */\r\n onButtonClick(\r\n clickFunc: (entity: object, record?: EntityRecord<object>) => void,\r\n record: EntityRecord<object>\r\n ) {\r\n this.enableEdit(record);\r\n if (typeof clickFunc === 'function') {\r\n clickFunc(record.entity, record);\r\n }\r\n }\r\n\r\n /**\r\n * Retrieve column name without his \"properties\" tag (useful for edition workspace properties)\r\n */\r\n public getColumnKeyWithoutPropertiesTag(column: string) {\r\n if (column.includes('properties.')) {\r\n return column.split('.')[1];\r\n }\r\n return column;\r\n }\r\n}\r\n","export enum ActionbarMode {\r\n Dock = 'dock',\r\n Overlay = 'overlay',\r\n Context = 'context'\r\n}\r\n","<mat-list-item *ngIf=\"!action.checkbox\"\r\n matTooltipClass=\"actionbarItemTooltip\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"withTooltip ? ((tooltip$ | async) || title | translate) : ''\"\r\n [ngClass]=\"ngClass$ | async\"\r\n (click)=\"onClick()\">\r\n <button *ngIf=\"withIcon\"\r\n mat-list-avatar\r\n mat-icon-button\r\n [color]=\"color\"\r\n [disabled]=\"disabled$ | async\">\r\n <mat-icon *ngIf=\"withIcon\" svgIcon=\"{{icon$ | async}}\"></mat-icon>\r\n </button>\r\n <h4 *ngIf=\"withTitle\" matLine>{{title | translate}}</h4>\r\n</mat-list-item>\r\n\r\n<mat-list-item class=\"item-checkbox\" *ngIf=\"action.checkbox\"\r\n matTooltipClass=\"actionbarItemTooltip\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"withTooltip ? ((tooltip$ | async) || title | translate) : ''\"\r\n [ngClass]=\"ngClass$ | async\">\r\n <mat-checkbox *ngIf=\"withTitle\"\r\n (change)=\"action.handler()\"\r\n [checked]=\"checkCondition$ | async\">\r\n {{title | translate}}\r\n </mat-checkbox>\r\n</mat-list-item>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n OnDestroy\r\n} from '@angular/core';\r\n\r\nimport { BehaviorSubject, Subscription, isObservable } from 'rxjs';\r\n\r\nimport { Action } from '../shared/action.interfaces';\r\n\r\n /**\r\n * An action button\r\n */\r\n@Component({\r\n selector: 'igo-actionbar-item',\r\n templateUrl: './actionbar-item.component.html',\r\n styleUrls: ['./actionbar-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ActionbarItemComponent implements OnInit, OnDestroy {\r\n\r\n readonly disabled$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n readonly checkCondition$: BehaviorSubject<boolean> = new BehaviorSubject(undefined);\r\n\r\n readonly icon$: BehaviorSubject<string> = new BehaviorSubject(undefined);\r\n\r\n readonly tooltip$: BehaviorSubject<string> = new BehaviorSubject(undefined);\r\n\r\n readonly noDisplay$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n readonly ngClass$: BehaviorSubject<{[key: string]: boolean}> = new BehaviorSubject({});\r\n\r\n private ngClass$$: Subscription;\r\n\r\n private disabled$$: Subscription;\r\n\r\n private availability$$: Subscription;\r\n\r\n private icon$$: Subscription;\r\n\r\n private checkCondition$$: Subscription;\r\n\r\n private tooltip$$: Subscription;\r\n\r\n private noDisplay$$: Subscription;\r\n\r\n private display$$: Subscription;\r\n\r\n /**\r\n * Action\r\n */\r\n @Input() action: Action;\r\n\r\n /**\r\n * Color\r\n */\r\n @Input() color = 'default';\r\n\r\n /**\r\n * Whether the action title is displayed\r\n */\r\n @Input() withTitle = true;\r\n\r\n /**\r\n * Whether the action icon is displayed\r\n */\r\n @Input() withIcon = true;\r\n\r\n /**\r\n * Whether a tooltip should be shown\r\n */\r\n @Input() withTooltip = true;\r\n\r\n /**\r\n * Whether the action is disabled\r\n */\r\n @Input()\r\n set disabled(value: boolean) { this.disabled$.next(value); }\r\n get disabled(): boolean { return this.disabled$.value; }\r\n\r\n /**\r\n * Whether the action is display or not\r\n */\r\n @Input()\r\n set noDisplay(value: boolean) { this.noDisplay$.next(value); }\r\n get noDisplay(): boolean { return this.noDisplay$.value; }\r\n\r\n /**\r\n * Event emitted when the action button is clicked\r\n */\r\n @Output() trigger: EventEmitter<Action> = new EventEmitter();\r\n\r\n /**\r\n * @internal\r\n */\r\n get title(): string { return this.action.title; }\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n const args = this.action.args || [];\r\n\r\n if (this.action.ngClass !== undefined) {\r\n this.ngClass$$ = this.action.ngClass(...args)\r\n .subscribe((ngClass: {[key: string]: boolean}) => this.updateNgClass(ngClass));\r\n }\r\n\r\n if (isObservable(this.action.icon)) {\r\n this.icon$$ = this.action.icon\r\n .subscribe((icon: string) => this.updateIcon(icon));\r\n } else {\r\n this.updateIcon(this.action.icon);\r\n }\r\n\r\n if (isObservable(this.action.checkCondition)) {\r\n this.checkCondition$$ = this.action.checkCondition\r\n .subscribe((checkCondition: boolean) => this.updateCheckCondition(checkCondition));\r\n } else {\r\n this.updateCheckCondition(this.action.checkCondition);\r\n }\r\n\r\n if (isObservable(this.action.tooltip)) {\r\n this.tooltip$$ = this.action.tooltip\r\n .subscribe((tooltip: string) => this.updateTooltip(tooltip));\r\n } else {\r\n this.updateTooltip(this.action.tooltip);\r\n }\r\n\r\n if (this.action.availability !== undefined) {\r\n this.availability$$ = this.action.availability(...args)\r\n .subscribe((available: boolean) => this.disabled = !available);\r\n }\r\n\r\n this.disabled$$ = this.disabled$\r\n .subscribe((disabled: boolean) => this.updateNgClass({'igo-actionbar-item-disabled': disabled}));\r\n\r\n if (this.action.display !== undefined) {\r\n this.display$$ = this.action.display(...args)\r\n .subscribe((display: boolean) => this.noDisplay = !display);\r\n }\r\n\r\n this.noDisplay$$ = this.noDisplay$\r\n .subscribe((noDisplay: boolean) => this.updateNgClass({'igo-actionbar-item-no-display': noDisplay}));\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.ngClass$$ !== undefined) {\r\n this.ngClass$$.unsubscribe();\r\n this.ngClass$$ = undefined;\r\n }\r\n\r\n if (this.availability$$ !== undefined) {\r\n this.availability$$.unsubscribe();\r\n this.availability$$ = undefined;\r\n }\r\n\r\n if (this.display$$ !== undefined) {\r\n this.display$$.unsubscribe();\r\n this.display$$ = undefined;\r\n }\r\n\r\n if (this.checkCondition$$ !== undefined) {\r\n this.checkCondition$$.unsubscribe();\r\n this.checkCondition$$ = undefined;\r\n }\r\n\r\n if (this.icon$$ !== undefined) {\r\n this.icon$$.unsubscribe();\r\n this.icon$$ = undefined;\r\n }\r\n\r\n if (this.tooltip$$ !== undefined) {\r\n this.tooltip$$.unsubscribe();\r\n this.tooltip$$ = undefined;\r\n }\r\n\r\n this.disabled$$.unsubscribe();\r\n this.noDisplay$$.unsubscribe();\r\n }\r\n\r\n /**\r\n * When the action button is clicked, emit the 'trigger' event but don't\r\n * invoke the action handler. This is handled by the parent component.\r\n * @internal\r\n */\r\n onClick() {\r\n if (this.disabled === true) {\r\n return;\r\n }\r\n this.trigger.emit(this.action);\r\n }\r\n\r\n private updateNgClass(ngClass: {[key: string]: boolean}) {\r\n this.ngClass$.next(Object.assign({}, this.ngClass$.value, ngClass));\r\n }\r\n\r\n private updateTooltip(tooltip: string) {\r\n this.tooltip$.next(tooltip);\r\n }\r\n\r\n private updateCheckCondition(checkCondition: boolean) {\r\n this.checkCondition$.next(checkCondition);\r\n }\r\n\r\n private updateIcon(icon: string) {\r\n this.icon$.next(icon);\r\n }\r\n}\r\n","<mat-list *ngIf=\"mode === actionbarMode.Dock\">\r\n\r\n <div *ngIf=\"heightCondition && positionConditionTop && isDesktop\"\r\n id=\"topChevron\">\r\n <button\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.common.actionbar.scrollUp' | translate\"\r\n (click)=\"scrollUp()\">\r\n <mat-icon svgIcon=\"chevron-up\"></mat-icon>\r\n </button>\r\n </div>\r\n\r\n <igo-actionbar-item\r\n *ngIf=\"withToggleButton\"\r\n color=\"accent\"\r\n [withTitle]=\"false\"\r\n [withIcon]=\"true\"\r\n [color]=\"color\"\r\n [disabled]=\"store.view.empty\"\r\n [action]=\"toggleCollapseAction\"\r\n (trigger)=\"onTriggerAction(toggleCollapseAction)\">\r\n </igo-actionbar-item>\r\n\r\n <ng-template #buttonContent *ngIf=\"!collapsed\" ngFor let-action [ngForOf]=\"store.view.all$() | async\">\r\n <igo-actionbar-item\r\n color=\"accent\"\r\n [withTitle]=\"withTitle\"\r\n [withIcon]=\"withIcon\"\r\n [withTooltip]=\"withTooltip\"\r\n [color]=\"color\"\r\n [disabled]=\"store.state.get(action).disabled\"\r\n [action]=\"action\"\r\n (trigger)=\"onTriggerAction(action)\">\r\n </igo-actionbar-item>\r\n </ng-template>\r\n\r\n <div *ngIf=\"heightCondition && positionConditionLow && isDesktop\"\r\n id=\"lowChevron\">\r\n <button\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.common.actionbar.scrollDown' | translate\"\r\n (click)=\"scrollDown()\">\r\n <mat-icon svgIcon=\"chevron-down\"></mat-icon>\r\n </button>\r\n </div>\r\n\r\n</mat-list>\r\n\r\n<div *ngIf=\"mode === actionbarMode.Overlay\">\r\n <button class=\"buttonOverlay\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.common.actionbar.icon' | translate\"\r\n [matMenuTriggerFor]=\"actionbarMenu\"\r\n [disabled]=\"store.view.empty\"\r\n [color]=\"iconColor\">\r\n <mat-icon [svgIcon]=\"icon\"></mat-icon>\r\n </button>\r\n\r\n <mat-menu\r\n #actionbarMenu=\"matMenu\"\r\n class=\"igo-compact-menu igo-no-min-width-menu\"\r\n overlapTrigger=\"true\"\r\n [xPosition]=\"xPosition\"\r\n [yPosition]=\"yPosition\"\r\n [class]=\"overlayClass\">\r\n\r\n <mat-list>\r\n <ng-template ngFor let-action [ngForOf]=\"store.view.all$() | async\">\r\n <igo-actionbar-item\r\n color=\"accent\"\r\n [withTitle]=\"withTitle\"\r\n [withIcon]=\"withIcon\"\r\n [color]=\"color\"\r\n [action]=\"action\"\r\n (trigger)=\"onTriggerAction(action)\">\r\n </igo-actionbar-item>\r\n </ng-template>\r\n </mat-list>\r\n </mat-menu>\r\n</div>\r\n<mat-card *ngIf=\"mode === actionbarMode.Context\" class=\"context-menu-card mat-elevation-z4\">\r\n <mat-list>\r\n <ng-template ngFor let-action [ngForOf]=\"store.view.all$() | async\">\r\n <igo-actionbar-item\r\n color=\"accent\"\r\n [withTitle]=\"withTitle\"\r\n [withIcon]=\"withIcon\"\r\n [color]=\"color\"\r\n [action]=\"action\"\r\n (trigger)=\"onTriggerAction(action)\">\r\n </igo-actionbar-item>\r\n <br/>\r\n </ng-template>\r\n </mat-list>\r\n</mat-card>\r\n","import {\r\n Component,\r\n Input,\r\n HostBinding,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges,\r\n ElementRef\r\n} from '@angular/core';\r\n\r\nimport { MediaService, Media } from '@igo2/core';\r\nimport { EntityStoreWatcher } from '../../entity';\r\nimport { Action } from '../shared/action.interfaces';\r\nimport { ActionbarMode } from '../shared/action.enums';\r\nimport { ActionStore } from '../shared/store';\r\nimport { Overlay } from '@angular/cdk/overlay';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n/**\r\n * A list of action buttons.\r\n * This component can be displayed in one of two way: 'dock' or 'overlay'\r\n */\r\n@Component({\r\n selector: 'igo-actionbar',\r\n templateUrl: './actionbar.component.html',\r\n styleUrls: ['./actionbar.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ActionbarComponent implements OnDestroy, OnChanges {\r\n\r\n /**\r\n * Reference to the ActionbarMode enum for use in the template\r\n * @internal\r\n */\r\n actionbarMode = ActionbarMode;\r\n\r\n /**\r\n * Whether the actionbar is collapsed (Dock mode)\r\n * @internal\r\n */\r\n collapsed = false;\r\n\r\n /**\r\n * Toggle collapse action (Dock)\r\n * @internal\r\n */\r\n toggleCollapseAction = {\r\n id: 'actionbar_toggle',\r\n icon: 'dots-vertical',\r\n handler: () => {\r\n this.collapsed = !this.collapsed;\r\n }\r\n };\r\n\r\n /**\r\n * Action store watcher\r\n * @internal\r\n */\r\n private watcher: EntityStoreWatcher<Action>;\r\n\r\n /**\r\n * Height Condition for scroll button\r\n */\r\n heightCondition$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n /**\r\n * Position Condition for top scroll button\r\n */\r\n positionConditionTop$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n /**\r\n * Position Condition for low scroll button\r\n */\r\n positionConditionLow$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n /**\r\n * Action store\r\n */\r\n @Input() store: ActionStore;\r\n\r\n /**\r\n * Actionbar mode\r\n */\r\n @Input() mode: ActionbarMode = ActionbarMode.Dock;\r\n\r\n /**\r\n * Whether a toggle button should be displayed (Dock mode)\r\n */\r\n @Input() withToggleButton = false;\r\n\r\n /**\r\n * Whether a the actionbar should display buttons horizontally\r\n */\r\n @Input() horizontal = false;\r\n\r\n /**\r\n * Color\r\n */\r\n @Input() color = 'default';\r\n\r\n /**\r\n * Color of the button if action mode === overlay\r\n */\r\n @Input() iconColor = 'default';\r\n\r\n /**\r\n * Whether action titles are displayed\r\n */\r\n @Input() withTitle = true;\r\n\r\n /**\r\n * Whether action tooltips are displayed\r\n */\r\n @Input() withTooltip = true;\r\n\r\n /**\r\n * Whether action titles are displayed (condition for scroll button)\r\n */\r\n @Input() scrollActive = true;\r\n\r\n /**\r\n * Whether action icons are displayed\r\n */\r\n @Input() withIcon = true;\r\n\r\n /**\r\n * Which icon want to be shown\r\n */\r\n @Input() icon = 'dots-horizontal';\r\n\r\n /**\r\n * Overlay X position\r\n */\r\n @Input() xPosition = 'before';\r\n\r\n /**\r\n * Overlay Y position\r\n */\r\n @Input() yPosition = 'above';\r\n\r\n /**\r\n * Class to add to the actionbar overlay\r\n */\r\n @Input()\r\n set overlayClass(value: string) {\r\n this._overlayClass = value;\r\n }\r\n get overlayClass(): string {\r\n return [this._overlayClass, 'igo-actionbar-overlay'].join(' ');\r\n }\r\n private _overlayClass = '';\r\n\r\n /**\r\n * @ignore\r\n */\r\n @HostBinding('class.with-title')\r\n get withTitleClass() {\r\n return this.withTitle;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n @HostBinding('class.with-icon')\r\n get withIconClass() {\r\n return this.withIcon;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n @HostBinding('class.horizontal')\r\n get horizontalClass() {\r\n return this.horizontal;\r\n }\r\n\r\n get heightCondition(): boolean {\r\n const el = this.elRef.nativeElement;\r\n if (this.scrollActive === false) {\r\n if (el.clientHeight < el.scrollHeight) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n get positionConditionTop(): boolean {\r\n if (this.elRef.nativeElement.scrollTop === 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n get positionConditionLow(): boolean {\r\n const el = this.elRef.nativeElement;\r\n if (el.scrollTop >= (el.scrollHeight - el.clientHeight)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n get isDesktop(): boolean {\r\n return this.mediaService.getMedia() === Media.Desktop;\r\n }\r\n\r\n constructor(\r\n public overlay: Overlay,\r\n private elRef: ElementRef,\r\n private cdRef: ChangeDetectorRef,\r\n public mediaService: MediaService) {}\r\n\r\n /**\r\n * @internal\r\n */\r\n ngOnChanges(changes: SimpleChanges) {\r\n const store = changes.store;\r\n if (store && store.currentValue !== store.previousValue) {\r\n if (this.watcher !== undefined) {\r\n this.watcher.destroy();\r\n }\r\n this.watcher = new EntityStoreWatcher(this.store, this.cdRef);\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.watcher.destroy();\r\n }\r\n\r\n /**\r\n * Invoke the action handler\r\n * @internal\r\n */\r\n onTriggerAction(action: Action) {\r\n const args = action.args || [];\r\n action.handler(...args);\r\n }\r\n\r\n scrollDown() {\r\n this.elRef.nativeElement.scrollBy(0, 52);\r\n }\r\n\r\n scrollUp() {\r\n this.elRef.nativeElement.scrollBy(0, -52);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\n\r\nimport { ActionbarComponent } from './actionbar.component';\r\nimport { ActionbarItemComponent } from './actionbar-item.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoLanguageModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n MatMenuModule,\r\n MatListModule,\r\n MatCardModule,\r\n MatCheckboxModule\r\n ],\r\n exports: [ActionbarComponent],\r\n declarations: [ActionbarComponent, ActionbarItemComponent]\r\n})\r\nexport class IgoActionbarModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoActionbarModule } from './actionbar/actionbar.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoActionbarModule\r\n ],\r\n exports: [\r\n IgoActionbarModule\r\n ],\r\n declarations: [],\r\n providers: []\r\n})\r\nexport class IgoActionModule {}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'igo-backdrop',\r\n templateUrl: './backdrop.component.html',\r\n styleUrls: ['./backdrop.component.scss']\r\n})\r\nexport class BackdropComponent {\r\n @Input()\r\n get shown(): boolean {\r\n return this._shown;\r\n }\r\n set shown(value: boolean) {\r\n this._shown = value;\r\n }\r\n private _shown: boolean;\r\n\r\n constructor() {}\r\n}\r\n","<div [ngClass]=\"{'igo-backdrop-shown': shown}\"></div>\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { BackdropComponent } from './backdrop.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [BackdropComponent],\r\n exports: [BackdropComponent]\r\n})\r\nexport class IgoBackdropModule {\r\n static forRoot(): ModuleWithProviders<IgoBackdropModule> {\r\n return {\r\n ngModule: IgoBackdropModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { Directive, Input, ElementRef, OnInit } from '@angular/core';\r\nimport { MatIconRegistry } from '@angular/material/icon';\r\n\r\n\r\n/**\r\n * This directive allow to add an icon inside a matBadge.\r\n * A value must be set into the matBadge directive ex: matBadge=\"icon\".\r\n * The badge content will be overrided by this current directive.\r\n */\r\n@Directive({\r\n selector: '[igoMatBadgeIcon]'\r\n})\r\nexport class IgoBadgeIconDirective implements OnInit {\r\n @Input()\r\n set igoMatBadgeIcon(value: string) {\r\n this.matIconRegistry.getNamedSvgIcon(value).subscribe((svgObj) => {\r\n this.svg = svgObj;\r\n this.updateSvg();\r\n });\r\n }\r\n private svg: SVGElement;\r\n\r\n @Input()\r\n set matBadgeHidden(value: boolean) {\r\n this.hidden = value;\r\n this.updateHidden();\r\n }\r\n private hidden = false;\r\n\r\n @Input()\r\n set matBadgeDisabled(value: boolean) {\r\n this.disabled = value;\r\n this.updateDisabled();\r\n }\r\n private disabled = false;\r\n\r\n @Input()\r\n set igoMatBadgeInverseColor(value: boolean) {\r\n this.inverseColor = value;\r\n this.updateColor();\r\n }\r\n private inverseColor = false;\r\n\r\n @Input()\r\n set igoMatBadgeInheritColor(value: boolean) {\r\n this.inheritColor = value;\r\n this.updateColor();\r\n }\r\n private inheritColor = false;\r\n\r\n @Input()\r\n set igoMatBadgeColor(value: string) {\r\n this.color = value;\r\n this.updateColor();\r\n }\r\n private color;\r\n\r\n @Input()\r\n set igoMatBadgeBackgroundColor(value: string) {\r\n this.backgroundColor = value;\r\n this.updateColor();\r\n }\r\n private backgroundColor;\r\n\r\n get badge() {\r\n return this.el.nativeElement.querySelector('.mat-badge-content');\r\n }\r\n\r\n private originalColor: string;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private matIconRegistry: MatIconRegistry\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.badge.style.alignItems = 'center';\r\n this.badge.style.justifyContent = 'center';\r\n\r\n this.updateHidden();\r\n this.updateColor();\r\n this.updateSvg();\r\n }\r\n\r\n private updateSvg() {\r\n if (!this.badge) {\r\n return;\r\n }\r\n this.badge.innerHTML = '';\r\n if (this.svg) {\r\n this.badge.appendChild(this.svg);\r\n }\r\n }\r\n private updateColor() {\r\n if (!this.badge) {\r\n return;\r\n }\r\n\r\n if (this.color || this.backgroundColor) {\r\n this.badge.style.color = this.color ? this.color : '';\r\n this.badge.style.background = this.backgroundColor ? this.backgroundColor : '';\r\n } else if (this.inheritColor) {\r\n if (this.inverseColor) {\r\n this.badge.style.color = 'currentColor';\r\n this.badge.style.background = 'none';\r\n } else {\r\n this.badge.style.color = '';\r\n this.badge.style.background = 'currentColor';\r\n }\r\n } else if (!this.inheritColor) {\r\n if (this.inverseColor) {\r\n this.badge.style.color = window\r\n .getComputedStyle(this.badge, null)\r\n .getPropertyValue('background-color');\r\n this.badge.style.background = 'none';\r\n } else {\r\n this.badge.style.color = '';\r\n this.badge.style.background = '';\r\n }\r\n }\r\n this.originalColor = this.badge.style.color;\r\n this.updateDisabled();\r\n }\r\n\r\n private updateHidden() {\r\n if (!this.badge) {\r\n return;\r\n }\r\n this.badge.style.display = this.hidden ? 'none' : 'flex';\r\n }\r\n\r\n private updateDisabled() {\r\n if (!this.badge || !this.inverseColor) {\r\n return;\r\n }\r\n if (this.disabled) {\r\n this.originalColor = this.badge.style.color;\r\n this.badge.style.color = '#b9b9b9';\r\n } else {\r\n this.badge.style.color = this.originalColor;\r\n }\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { IgoBadgeIconDirective } from './badge-icon.directive';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@NgModule({\r\n imports: [MatBadgeModule, MatIconModule],\r\n declarations: [IgoBadgeIconDirective],\r\n exports: [MatBadgeModule, IgoBadgeIconDirective]\r\n})\r\nexport class IgoMatBadgeIconModule {\r\n static forRoot(): ModuleWithProviders<IgoMatBadgeIconModule> {\r\n return {\r\n ngModule: IgoMatBadgeIconModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Output\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[igoClickout]'\r\n})\r\nexport class ClickoutDirective {\r\n @Output() clickout = new EventEmitter<MouseEvent>();\r\n\r\n @HostListener('document:click', ['$event', '$event.target'])\r\n handleMouseClick(event: MouseEvent, target: HTMLElement) {\r\n if (!target) {\r\n return;\r\n }\r\n\r\n if (!this.el.nativeElement.contains(target)) {\r\n this.clickout.emit(event);\r\n }\r\n }\r\n\r\n constructor(private el: ElementRef) {}\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { ClickoutDirective } from './clickout.directive';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [ClickoutDirective],\r\n exports: [ClickoutDirective]\r\n})\r\nexport class IgoClickoutModule {\r\n static forRoot(): ModuleWithProviders<IgoClickoutModule> {\r\n return {\r\n ngModule: IgoClickoutModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'clone'\r\n})\r\nexport class ClonePipe implements PipeTransform {\r\n transform(value: any, args?: any): any {\r\n if (value === undefined) {\r\n return value;\r\n }\r\n\r\n if (value instanceof Array) {\r\n return value.map(obj => Object.assign(Object.create(obj), obj));\r\n } else {\r\n return Object.assign(Object.create(value), value);\r\n }\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { ClonePipe } from './clone.pipe';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [ClonePipe],\r\n exports: [ClonePipe]\r\n})\r\nexport class IgoCloneModule {\r\n static forRoot(): ModuleWithProviders<IgoCloneModule> {\r\n return {\r\n ngModule: IgoCloneModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import {\r\n Directive,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n HostListener,\r\n ElementRef,\r\n Renderer2\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[igoCollapse]'\r\n})\r\nexport class CollapseDirective {\r\n @Input()\r\n get target() {\r\n return this._target;\r\n }\r\n set target(value: Element) {\r\n this._target = value;\r\n }\r\n private _target: Element;\r\n\r\n @Input()\r\n get collapsed(): boolean {\r\n return this._collapsed;\r\n }\r\n set collapsed(collapsed: boolean) {\r\n collapsed ? this.collapseTarget() : this.expandTarget();\r\n this._collapsed = collapsed;\r\n this.toggle.emit(collapsed);\r\n }\r\n private _collapsed = false;\r\n\r\n @Output() toggle: EventEmitter<boolean> = new EventEmitter();\r\n\r\n @HostListener('click')\r\n click() {\r\n this.collapsed = !this.collapsed;\r\n }\r\n\r\n constructor(private renderer: Renderer2, private el: ElementRef) {}\r\n\r\n private collapseTarget() {\r\n this.renderer.addClass(this.target, 'igo-collapsed');\r\n this.renderer.addClass(this.el.nativeElement, 'collapsed');\r\n }\r\n\r\n private expandTarget() {\r\n this.renderer.removeClass(this.target, 'igo-collapsed');\r\n this.renderer.removeClass(this.el.nativeElement, 'collapsed');\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'igo-collapsible',\r\n templateUrl: './collapsible.component.html',\r\n styleUrls: ['./collapsible.component.scss']\r\n})\r\nexport class CollapsibleComponent {\r\n @Input()\r\n get title() {\r\n return this._title;\r\n }\r\n set title(value: string) {\r\n this._title = value;\r\n }\r\n private _title = '';\r\n\r\n @Input()\r\n get collapsed() {\r\n return this._collapsed;\r\n }\r\n set collapsed(value: boolean) {\r\n this._collapsed = value;\r\n this.toggle.emit(value);\r\n }\r\n private _collapsed = false;\r\n\r\n @Output() toggle: EventEmitter<boolean> = new EventEmitter();\r\n}\r\n","<mat-list-item>\r\n <mat-icon\r\n svgIcon=\"chevron-up\" \r\n class=\"igo-chevron\"\r\n mat-list-avatar\r\n igoCollapse\r\n [target]=\"content\"\r\n [collapsed]=\"collapsed\"\r\n (toggle)=\"collapsed = $event\">\r\n </mat-icon>\r\n <h4 matLine>{{title}}</h4>\r\n</mat-list-item>\r\n\r\n<div #content>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\n\r\nimport { CollapseDirective } from './collapse.directive';\r\nimport { CollapsibleComponent } from './collapsible.component';\r\n\r\n@NgModule({\r\n imports: [MatIconModule, MatListModule],\r\n declarations: [CollapsibleComponent, CollapseDirective],\r\n exports: [CollapsibleComponent, CollapseDirective]\r\n})\r\nexport class IgoCollapsibleModule {\r\n static forRoot(): ModuleWithProviders<IgoCollapsibleModule> {\r\n return {\r\n ngModule: IgoCollapsibleModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'igo-confirm-dialog',\r\n templateUrl: './confirm-dialog.component.html',\r\n styleUrls: ['./confirm-dialog.component.scss']\r\n})\r\nexport class ConfirmDialogComponent {\r\n public confirmMessage: string;\r\n\r\n constructor(public dialogRef: MatDialogRef<ConfirmDialogComponent>) {}\r\n}\r\n","<h2 mat-dialog-title class=\"mat-typography\">{{'igo.common.confirmDialog.title' | translate}}</h2>\r\n<div mat-dialog-content class=\"mat-typography\">{{confirmMessage}}</div>\r\n<div mat-dialog-actions>\r\n <button mat-button color=\"primary\" (click)=\"dialogRef.close(true)\">{{'igo.common.confirmDialog.confirmBtn' | translate}}</button>\r\n <button mat-button (click)=\"dialogRef.close(false)\">{{'igo.common.confirmDialog.cancelBtn' | translate}}</button>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { LanguageService } from '@igo2/core';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { ConfirmDialogComponent } from './confirm-dialog.component';\r\n\r\n@Injectable()\r\nexport class ConfirmDialogService {\r\n constructor(private dialog: MatDialog, private languageService: LanguageService) {}\r\n\r\n public open(message: string): Observable<any> {\r\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\r\n disableClose: false\r\n });\r\n dialogRef.componentInstance.confirmMessage = this.languageService.translate.instant(message);\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\n\r\nimport { ConfirmDialogComponent } from './confirm-dialog.component';\r\nimport { ConfirmDialogService } from './confirm-dialog.service';\r\n\r\n@NgModule({\r\n imports: [MatButtonModule, MatDialogModule, IgoLanguageModule],\r\n declarations: [ConfirmDialogComponent],\r\n exports: [ConfirmDialogComponent],\r\n providers: [ConfirmDialogService]\r\n})\r\nexport class IgoConfirmDialogModule {\r\n static forRoot(): ModuleWithProviders<IgoConfirmDialogModule> {\r\n return {\r\n ngModule: IgoConfirmDialogModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport type { TemplateRef } from '@angular/core';\r\n\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { filter, take } from 'rxjs/operators';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\n\r\n@Directive({\r\n selector: '[igoContextMenu]'\r\n})\r\nexport class ContextMenuDirective {\r\n private overlayRef: OverlayRef | null;\r\n private sub: Subscription;\r\n\r\n @Input('igoContextMenu') menuContext: TemplateRef<any>;\r\n @Output() menuPosition = new EventEmitter<{ x: number; y: number }>();\r\n\r\n constructor(\r\n public overlay: Overlay,\r\n public viewContainerRef: ViewContainerRef,\r\n private elementRef: ElementRef\r\n ) {}\r\n\r\n @HostListener('longpress', ['$event'])\r\n @HostListener('contextmenu', ['$event'])\r\n public onContextMenu(e: MouseEvent | TouchEvent): void {\r\n let x;\r\n let y;\r\n if (e instanceof TouchEvent) {\r\n x = e.touches[0].pageX;\r\n y = e.touches[0].pageY;\r\n } else if (e instanceof MouseEvent) {\r\n x = e.x;\r\n y = e.y;\r\n }\r\n if (!x || !y) {\r\n return;\r\n }\r\n\r\n this.close();\r\n e.preventDefault();\r\n this.menuPosition.emit({ x, y });\r\n this.overlayRef = null;\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo({ x, y })\r\n .withPositions([\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top'\r\n }\r\n ]);\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.close()\r\n });\r\n this.overlayRef.attach(\r\n new TemplatePortal(this.menuContext, this.viewContainerRef, {\r\n $implicit: undefined\r\n })\r\n );\r\n\r\n this.sub = fromEvent<MouseEvent>(document, 'click')\r\n .pipe(\r\n filter(event => {\r\n const clickTarget = event.target as HTMLElement;\r\n this.close();\r\n return (\r\n !!this.overlayRef &&\r\n !this.overlayRef.overlayElement.contains(clickTarget)\r\n );\r\n }),\r\n take(1)\r\n )\r\n .subscribe(() => this.close());\r\n\r\n this.sub = fromEvent<MouseEvent>(document, 'contextmenu')\r\n .pipe(\r\n filter(event => {\r\n const clickTarget = event.target as HTMLElement;\r\n if (\r\n clickTarget &&\r\n !this.elementRef.nativeElement.contains(clickTarget) &&\r\n !this.overlayRef.overlayElement.contains(clickTarget)\r\n ) {\r\n return true;\r\n } else {\r\n event.preventDefault();\r\n }\r\n }),\r\n take(1)\r\n )\r\n .subscribe(() => this.close());\r\n }\r\n\r\n close() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null;\r\n }\r\n if (this.sub) {\r\n this.sub.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Directive, HostListener, Output, EventEmitter, Input } from '@angular/core';\r\nimport { userAgent } from '@igo2/utils';\r\n\r\n\r\n/**\r\n * IgoLongPress trigger longpress event after a define duration.\r\n * This directive exist to patch the unavailable contextmenu event on iOS.\r\n * @param touchDuration touch duration in ms, default value is 400ms\r\n * @param iOSOnly define if longpress is triggered only for iOS, default value = true\r\n */\r\n@Directive({\r\n selector: '[igoLongPress]'\r\n})\r\nexport class LongPressDirective {\r\n private touchTimeout: any;\r\n @Input() touchDuration: number = 400;\r\n @Input() onlyIOS: boolean = true;\r\n @Output() longpress = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n\r\n @HostListener('touchstart', ['$event'])\r\n public touchstart(e: TouchEvent) {\r\n if (e.touches.length > 1) {\r\n this.touchEnd();\r\n return;\r\n }\r\n this.touchTimeout = setTimeout(() => {\r\n if (this.onlyIOS) {\r\n if (userAgent.getOSName() === 'iOS') {\r\n this.longpress.emit(e);\r\n }\r\n } else {\r\n this.longpress.emit(e);\r\n }\r\n }, this.touchDuration);\r\n }\r\n @HostListener('touchmove')\r\n @HostListener('touchcancel')\r\n @HostListener('touchend')\r\n public touchend() {\r\n this.touchEnd();\r\n }\r\n\r\n\r\n private touchEnd() {\r\n clearTimeout(this.touchTimeout);\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { ContextMenuDirective } from './context-menu.directive';\r\nimport { LongPressDirective } from './long-press.directive';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [ContextMenuDirective, LongPressDirective],\r\n exports: [ContextMenuDirective, LongPressDirective]\r\n})\r\nexport class IgoContextMenuModule {\r\n static forRoot(): ModuleWithProviders<IgoContextMenuModule> {\r\n return {\r\n ngModule: IgoContextMenuModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'igo-custom-html',\r\n templateUrl: './custom-html.component.html',\r\n styleUrls: ['./custom-html.component.scss']\r\n})\r\nexport class CustomHtmlComponent {\r\n @Input()\r\n get html(): string {\r\n return this._html;\r\n }\r\n set html(value: string) {\r\n this._html = value;\r\n }\r\n private _html = '';\r\n\r\n constructor() {}\r\n}\r\n","<div class=\"custom-html\" [innerHTML]=\"html | sanitizeHtml\"></div>\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\n\r\nimport { CustomHtmlComponent } from './custom-html.component';\r\nimport { SanitizeHtmlPipe } from './custom-html.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n IgoLanguageModule\r\n ],\r\n exports: [SanitizeHtmlPipe, CustomHtmlComponent],\r\n declarations: [SanitizeHtmlPipe, CustomHtmlComponent]\r\n})\r\nexport class IgoCustomHtmlModule {\r\n static forRoot(): ModuleWithProviders<IgoCustomHtmlModule> {\r\n return {\r\n ngModule: IgoCustomHtmlModule\r\n };\r\n }\r\n}\r\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { throwError } from 'rxjs';\r\n\r\nimport { DOMOptions, DOMValue } from './dom.interfaces';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DOMService {\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n async getDom(dom: DOMOptions): Promise<DOMValue[]> {\r\n const url = dom.url;\r\n let result: DOMValue[];\r\n\r\n await this.http.get<any>(url).pipe(\r\n map(response => {\r\n result = response;\r\n return response;\r\n }),\r\n catchError((err: HttpErrorResponse) => {\r\n return throwError(err);\r\n })\r\n ).toPromise();\r\n\r\n return result;\r\n }\r\n\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { DOMService } from './dom.service';\r\n\r\n@NgModule({\r\n providers: [DOMService]\r\n})\r\nexport class IgoDOMModule {\r\n static forRoot(): ModuleWithProviders<IgoDOMModule> {\r\n return {\r\n ngModule: IgoDOMModule,\r\n providers: [\r\n DOMService\r\n ]\r\n };\r\n }\r\n}\r\n","import {\r\n Directive,\r\n HostListener,\r\n HostBinding,\r\n EventEmitter,\r\n Output,\r\n Input\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[igoDragAndDrop]'\r\n})\r\nexport class DragAndDropDirective {\r\n\r\n @Input() allowedExtensions: Array<string> = [];\r\n\r\n @Output() protected filesDropped: EventEmitter<File[]> = new EventEmitter();\r\n\r\n @Output() protected filesInvalid: EventEmitter<File[]> = new EventEmitter();\r\n\r\n @HostBinding('style.background') private background = 'inherit';\r\n\r\n @HostListener('dragover', ['$event'])\r\n public onDragOver(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.background = '#999';\r\n }\r\n\r\n @HostListener('dragleave', ['$event'])\r\n public onDragLeave(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.background = 'inherit';\r\n }\r\n\r\n @HostListener('drop', ['$event'])\r\n public onDrop(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n if (evt.alreadyFired) {\r\n return;\r\n }\r\n evt.alreadyFired = true;\r\n\r\n this.background = 'inherit';\r\n const filesObj = this.validExtensions(evt);\r\n if (filesObj.valid.length) {\r\n this.filesDropped.emit(filesObj.valid);\r\n }\r\n if (filesObj.invalid.length) {\r\n this.filesInvalid.emit(filesObj.invalid);\r\n }\r\n }\r\n\r\n private validExtensions(evt) {\r\n const files = evt.dataTransfer.files;\r\n const filesObj = {\r\n valid: [],\r\n invalid: []\r\n };\r\n if (files.length > 0) {\r\n for (const file of files) {\r\n const ext = file.name.split('.')[file.name.split('.').length - 1];\r\n if (\r\n this.allowedExtensions.length === 0 ||\r\n (\r\n this.allowedExtensions.lastIndexOf(ext) !== -1 &&\r\n file.size !== 0\r\n )\r\n ) {\r\n filesObj.valid.push(file);\r\n } else {\r\n filesObj.invalid.push(file);\r\n }\r\n }\r\n }\r\n\r\n return filesObj;\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { DragAndDropDirective } from './drag-drop.directive';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [DragAndDropDirective],\r\n exports: [DragAndDropDirective]\r\n})\r\nexport class IgoDrapDropModule {\r\n static forRoot(): ModuleWithProviders<IgoDrapDropModule> {\r\n return {\r\n ngModule: IgoDrapDropModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import {\r\n ComponentFactory,\r\n ComponentRef,\r\n ViewContainerRef\r\n} from '@angular/core';\r\n\r\nimport { Observable, Subscription } from 'rxjs';\r\n\r\n/**\r\n * This class is used in the DynamicComponentOutlet component. It holds\r\n * a reference to a component factory and can render that component\r\n * in a target element on demand. It's also possible to set inputs\r\n * and to subscribe to outputs.\r\n */\r\nexport class DynamicComponent<C> {\r\n\r\n /**\r\n * Component reference\r\n */\r\n private componentRef: ComponentRef<C>;\r\n\r\n /**\r\n * Subscriptions to the component's outputs. Those need\r\n * to be unsubscribed when the component is destroyed.\r\n */\r\n private subscriptions: Subscription[] = [];\r\n\r\n /**\r\n * Component target element\r\n */\r\n private target: ViewContainerRef;\r\n\r\n /**\r\n * Component inputs\r\n */\r\n private inputs: {[key: string]: any} = {};\r\n\r\n /**\r\n * Subscriptions to the component's async inputs\r\n */\r\n private inputs$$: {[key: string]: Subscription} = {};\r\n\r\n /**\r\n * Subscribers to the component's outputs\r\n */\r\n private subscribers: {[key: string]: (event: any) => void} = {};\r\n\r\n constructor(private componentFactory: ComponentFactory<C>) {}\r\n\r\n /**\r\n * Render the component to a target element.\r\n * Set it's inputs and subscribe to it's outputs.\r\n * @param target Target element\r\n */\r\n setTarget(target: ViewContainerRef) {\r\n this.target = target;\r\n this.componentRef = target.createComponent(this.componentFactory);\r\n this.updateInputs(this.inputs);\r\n this.updateSubscribers(this.subscribers);\r\n }\r\n\r\n /**\r\n * Destroy this component. That means, removing from it's target\r\n * element and unsubscribing to it's outputs.\r\n */\r\n destroy() {\r\n if (this.target !== undefined) {\r\n this.target.clear();\r\n }\r\n if (this.componentRef !== undefined) {\r\n this.componentRef.destroy();\r\n this.componentRef = undefined;\r\n }\r\n this.unobserveAllInputs();\r\n this.unsubscribeAll();\r\n }\r\n\r\n /**\r\n * Update the component inputs. This is an update so any\r\n * key not defined won't be overwritten.\r\n */\r\n updateInputs(inputs: {[key: string]: any}) {\r\n this.inputs = inputs;\r\n if (this.componentRef === undefined) {\r\n return;\r\n }\r\n\r\n const instance = this.componentRef.instance;\r\n const allowedInputs = this.componentFactory.inputs;\r\n allowedInputs.forEach((value: {propName: string; templateName: string; }) => {\r\n const key = value.propName;\r\n\r\n this.unobserveInput(key);\r\n\r\n const inputValue = inputs[key];\r\n if (inputs.hasOwnProperty(key)) {\r\n if (inputValue instanceof Observable) {\r\n this.observeInput(key, inputValue);\r\n } else {\r\n this.setInputValue(instance, key, inputValue);\r\n }\r\n }\r\n });\r\n\r\n if (typeof (instance as any).onUpdateInputs === 'function') {\r\n (instance as any).onUpdateInputs();\r\n }\r\n }\r\n\r\n /**\r\n * Set an instance's input value\r\n * @param instance Component instance\r\n * @param key Input key\r\n * @param value Input value\r\n */\r\n private setInputValue(instance: C, key: string, value: any) {\r\n const currentValue = instance[key];\r\n if (value === currentValue) {\r\n return;\r\n }\r\n\r\n const prototype = Object.getPrototypeOf(instance);\r\n const descriptor = Object.getOwnPropertyDescriptor(prototype, key);\r\n if (descriptor !== undefined && descriptor.set !== undefined) {\r\n descriptor.set.call(instance, value);\r\n } else {\r\n instance[key] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Update the component subscribers. This is an update so any\r\n * key not defined won't be overwritten.\r\n */\r\n updateSubscribers(subscribers: {[key: string]: (event: any) => void}) {\r\n this.subscribers = subscribers;\r\n if (this.componentRef === undefined) {\r\n return;\r\n }\r\n\r\n const instance = this.componentRef.instance;\r\n const allowedSubscribers = this.componentFactory.outputs;\r\n allowedSubscribers.forEach((value: {propName: string; templateName: string; }) => {\r\n const key = value.propName;\r\n if (subscribers.hasOwnProperty(key)) {\r\n const emitter = instance[key];\r\n const subscriber = subscribers[key];\r\n if (Array.isArray(subscriber)) {\r\n subscriber.forEach((_subscriber) => {\r\n this.subscriptions.push(emitter.subscribe(_subscriber));\r\n });\r\n } else {\r\n this.subscriptions.push(emitter.subscribe(subscriber));\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Subscribe to an observable input and update the component's input value\r\n * accordingly\r\n * @param key Input key\r\n * @param observable Observable\r\n */\r\n private observeInput(key: string, observable: Observable<any>) {\r\n this.inputs$$[key] = observable.subscribe((value: any) => {\r\n const instance = this.componentRef.instance;\r\n this.setInputValue(instance, key, value);\r\n\r\n if (typeof (instance as any).onUpdateInputs === 'function') {\r\n (instance as any).onUpdateInputs();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Unsubscribe to an observable input\r\n * @param key Input key\r\n */\r\n private unobserveInput(key: string) {\r\n if (this.inputs$$[key] !== undefined) {\r\n this.inputs$$[key].unsubscribe();\r\n this.inputs$$[key] = undefined;\r\n }\r\n }\r\n\r\n /**\r\n * Unsubscribe to all outputs.\r\n */\r\n private unobserveAllInputs() {\r\n Object.values(this.inputs$$).forEach((s: Subscription | undefined) => {\r\n if (s !== undefined) {\r\n s.unsubscribe();\r\n }\r\n });\r\n this.inputs$$ = {};\r\n }\r\n\r\n /**\r\n * Unsubscribe to all outputs.\r\n */\r\n private unsubscribeAll() {\r\n this.subscriptions.forEach((s: Subscription) => s.unsubscribe());\r\n this.subscriptions = [];\r\n }\r\n\r\n}\r\n","import {\r\n ComponentFactoryResolver,\r\n Injectable\r\n} from '@angular/core';\r\n\r\nimport { DynamicComponent } from './dynamic-component';\r\n\r\n/**\r\n * Service to creates DynamicComponent instances from base component classes\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DynamicComponentService {\r\n\r\n constructor(private resolver: ComponentFactoryResolver) {}\r\n\r\n /**\r\n * Creates a DynamicComponent instance from a base component class\r\n * @param componentCls The component class\r\n * @returns DynamicComponent instance\r\n */\r\n create(componentCls: any): DynamicComponent<any> {\r\n const factory = this.resolver.resolveComponentFactory(componentCls as any);\r\n return new DynamicComponent<typeof componentCls>(factory);\r\n }\r\n}\r\n","import {\r\n Input,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n Component,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges,\r\n ViewContainerRef,\r\n ViewChild\r\n} from '@angular/core';\r\n\r\nimport { ObjectUtils } from '@igo2/utils';\r\n\r\nimport { DynamicComponent } from '../shared/dynamic-component';\r\nimport { DynamicComponentService } from '../shared/dynamic-component.service';\r\n\r\n@Component({\r\n selector: 'igo-dynamic-outlet',\r\n templateUrl: 'dynamic-outlet.component.html',\r\n styleUrls: ['dynamic-outlet.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DynamicOutletComponent implements OnChanges, OnDestroy {\r\n /**\r\n * The dynamic component base class or the dynamic component itself\r\n */\r\n @Input() component: DynamicComponent<any> | any;\r\n\r\n /**\r\n * The dynamic component inputs\r\n */\r\n @Input() inputs: { [key: string]: any } = {};\r\n\r\n /**\r\n * The subscribers to the dynamic component outputs\r\n */\r\n @Input() subscribers: { [key: string]: (event: any) => void } = {};\r\n\r\n /**\r\n * The dynamic component\r\n */\r\n private dynamicComponent: DynamicComponent<any>;\r\n\r\n /**\r\n * The view element to render the component to\r\n * @ignore\r\n */\r\n @ViewChild('target', { read: ViewContainerRef, static: true })\r\n private target: ViewContainerRef;\r\n\r\n constructor(\r\n private dynamicComponentService: DynamicComponentService,\r\n private cdRef: ChangeDetectorRef\r\n ) {}\r\n\r\n /**\r\n * If the dynamic component changes, create it.\r\n * If the inputs or subscribers change, update the current component's\r\n * inputs or subscribers.\r\n * @internal\r\n */\r\n ngOnChanges(changes: SimpleChanges) {\r\n const component = changes.component;\r\n const inputs = changes.inputs;\r\n const subscribers = changes.subscribers;\r\n const eq = ObjectUtils.objectsAreEquivalent;\r\n\r\n if (!component || !component.currentValue) {\r\n return;\r\n }\r\n\r\n if (component.currentValue !== component.previousValue) {\r\n this.createComponent(component.currentValue);\r\n } else {\r\n const inputsAreEquivalents =\r\n inputs && eq(inputs.currentValue || {}, inputs.previousValue || {});\r\n const subscribersAreEquivalents =\r\n subscribers &&\r\n eq(subscribers.currentValue || {}, subscribers.previousValue || {});\r\n\r\n if (inputsAreEquivalents === false) {\r\n this.updateInputs();\r\n }\r\n\r\n if (subscribersAreEquivalents === false) {\r\n this.updateSubscribers();\r\n }\r\n }\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Destroy the dynamic component and all it's subscribers\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n if (this.dynamicComponent) {\r\n this.dynamicComponent.destroy();\r\n }\r\n }\r\n\r\n /**\r\n * Create a DynamicComponent out of the component class and render it.\r\n * @internal\r\n */\r\n private createComponent(component: DynamicComponent<any> | any) {\r\n if (this.dynamicComponent !== undefined) {\r\n this.dynamicComponent.destroy();\r\n }\r\n this.dynamicComponent =\r\n component instanceof DynamicComponent\r\n ? component\r\n : this.dynamicComponentService.create(component);\r\n this.renderComponent();\r\n }\r\n\r\n /**\r\n * Create and render the dynamic component. Set it's inputs and subscribers\r\n * @internal\r\n */\r\n private renderComponent() {\r\n this.updateInputs();\r\n this.updateSubscribers();\r\n this.dynamicComponent.setTarget(this.target);\r\n }\r\n\r\n /**\r\n * Update the dynamic component inputs. This is an update so any\r\n * key not defined won't be overwritten.\r\n * @internal\r\n */\r\n private updateInputs() {\r\n this.dynamicComponent.updateInputs(this.inputs);\r\n }\r\n\r\n /**\r\n * Update the dynamic component subscribers. This is an update so any\r\n * key not defined won't be overwritten.\r\n * @internal\r\n */\r\n private updateSubscribers() {\r\n this.dynamicComponent.updateSubscribers(this.subscribers);\r\n }\r\n}\r\n","<ng-template #target></ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { DynamicOutletComponent } from './dynamic-outlet.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n DynamicOutletComponent\r\n ],\r\n declarations: [\r\n DynamicOutletComponent\r\n ]\r\n})\r\nexport class IgoDynamicOutletModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoDynamicOutletModule } from './dynamic-outlet/dynamic-outlet.module';\r\nimport { DynamicComponentService } from './shared/dynamic-component.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoDynamicOutletModule\r\n ],\r\n exports: [\r\n IgoDynamicOutletModule\r\n ],\r\n providers: [\r\n DynamicComponentService\r\n ]\r\n})\r\nexport class IgoDynamicComponentModule {}\r\n","import { Component, OnInit, OnDestroy, Input, ViewChild, ElementRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { Media, MediaService } from '@igo2/core';\r\n\r\nimport { FlexibleState, FlexibleDirection } from './flexible.type';\r\n\r\n@Component({\r\n selector: 'igo-flexible',\r\n templateUrl: './flexible.component.html',\r\n styleUrls: ['./flexible.component.scss']\r\n})\r\nexport class FlexibleComponent implements OnInit, OnDestroy {\r\n static transitionTime = 250;\r\n\r\n @ViewChild('flexibleMain', { static: true }) main;\r\n\r\n @Input()\r\n get initial(): string {\r\n return this._initial;\r\n }\r\n set initial(value: string) {\r\n this._initial = value;\r\n }\r\n private _initial = '0';\r\n\r\n @Input()\r\n get collapsed(): string {\r\n return this._collapsed;\r\n }\r\n set collapsed(value: string) {\r\n this._collapsed = value;\r\n }\r\n private _collapsed = '0';\r\n\r\n @Input()\r\n get expanded(): string {\r\n return this._expanded;\r\n }\r\n set expanded(value: string) {\r\n this._expanded = value;\r\n }\r\n private _expanded = '100%';\r\n\r\n @Input()\r\n get initialMobile(): string {\r\n return this._initialMobile;\r\n }\r\n set initialMobile(value: string) {\r\n this._initialMobile = value;\r\n }\r\n private _initialMobile: string = this.expanded;\r\n\r\n @Input()\r\n get collapsedMobile(): string {\r\n return this._collapsedMobile;\r\n }\r\n set collapsedMobile(value: string) {\r\n this._collapsedMobile = value;\r\n }\r\n private _collapsedMobile: string = this.collapsed;\r\n\r\n @Input()\r\n get expandedMobile(): string {\r\n return this._expandedMobile;\r\n }\r\n set expandedMobile(value: string) {\r\n this._expandedMobile = value;\r\n }\r\n private _expandedMobile: string = this.expanded;\r\n\r\n @Input()\r\n get direction(): FlexibleDirection {\r\n return this._direction;\r\n }\r\n set direction(value: FlexibleDirection) {\r\n this._direction = value;\r\n }\r\n private _direction: FlexibleDirection = 'column';\r\n\r\n @Input()\r\n get state(): FlexibleState {\r\n return this._state;\r\n }\r\n set state(value: FlexibleState) {\r\n const sizes = {\r\n initial: this.initial,\r\n collapsed: this.collapsed,\r\n expanded: this.expanded\r\n };\r\n\r\n if (this.mediaService.isMobile()) {\r\n Object.assign(sizes, {\r\n initial: this.initialMobile,\r\n collapsed: this.collapsedMobile,\r\n expanded: this.expandedMobile\r\n });\r\n }\r\n\r\n const size = sizes[value];\r\n if (size !== undefined) {\r\n this.setSize(size);\r\n setTimeout(() => {\r\n this._state = value;\r\n }, FlexibleComponent.transitionTime);\r\n }\r\n }\r\n private _state: FlexibleState = 'initial';\r\n\r\n private mediaService$$: Subscription;\r\n\r\n constructor(private el: ElementRef, private mediaService: MediaService) {}\r\n\r\n ngOnInit() {\r\n this.el.nativeElement.className += this.direction;\r\n\r\n // Since this component supports different sizes\r\n // on mobile, force a redraw when the media changes\r\n this.mediaService$$ = this.mediaService.media$.subscribe(\r\n (media: Media) => (this.state = this.state)\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.mediaService$$) {\r\n this.mediaService$$.unsubscribe();\r\n }\r\n }\r\n\r\n private setSize(size: string) {\r\n this._state = 'transition';\r\n\r\n if (this.direction === 'column') {\r\n this.main.nativeElement.style.height = size;\r\n } else if (this.direction === 'row') {\r\n this.main.nativeElement.style.width = size;\r\n }\r\n }\r\n}\r\n","<div #flexibleMain class=\"igo-flexible-main {{state}} {{direction}}\">\r\n <div class=\"igo-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n<div class=\"igo-flexible-fill\">\r\n <div>\r\n \t<div class=\"igo-container\">\r\n <ng-content select=\"[igoFlexibleFill]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { FlexibleComponent } from './flexible.component';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [FlexibleComponent],\r\n exports: [FlexibleComponent]\r\n})\r\nexport class IgoFlexibleModule {\r\n static forRoot(): ModuleWithProviders<IgoFlexibleModule> {\r\n return {\r\n ngModule: IgoFlexibleModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { AbstractControl } from '@angular/forms';\r\n\r\nimport { Form, FormField, FormFieldGroup } from './form.interfaces';\r\n\r\nexport function formControlIsRequired(control: AbstractControl): boolean {\r\n if (control.validator) {\r\n const validator = control.validator({} as AbstractControl);\r\n if (validator && validator.required) {\r\n return true;\r\n }\r\n }\r\n\r\n if ((control as any).controls) {\r\n const requiredControl = Object.keys((control as any).controls).find((key: string) => {\r\n return formControlIsRequired((control as any).controls[key]);\r\n });\r\n return requiredControl !== undefined;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport function getDefaultErrorMessages(): {[key: string]: string} {\r\n return {\r\n required: 'igo.common.form.errors.required'\r\n };\r\n}\r\n\r\nexport function getControlErrorMessage(control: AbstractControl, messages: {[key: string]: string}): string {\r\n const errors = control.errors || {};\r\n const errorKeys = Object.keys(errors);\r\n const errorMessages = errorKeys\r\n .map((key: string) => messages[key])\r\n .filter((message: string) => message !== undefined);\r\n return errorMessages.length > 0 ? errorMessages[0] : '';\r\n}\r\n\r\nexport function getAllFormFields(form: Form): FormField[] {\r\n return form.groups.reduce((acc: FormField[], group: FormFieldGroup) => {\r\n return acc.concat(group.fields);\r\n }, [].concat(form.fields));\r\n}\r\n\r\nexport function getFormFieldByName(form: Form, name: string): FormField {\r\n const fields = getAllFormFields(form);\r\n return fields.find((field: FormField) => {\r\n return field.name === name;\r\n });\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnChanges,\r\n SimpleChanges,\r\n ChangeDetectionStrategy,\r\n ViewChild,\r\n ElementRef\r\n} from '@angular/core';\r\n\r\nimport { t } from 'typy';\r\n\r\nimport { Form, FormField, FormFieldGroup } from '../shared/form.interfaces';\r\nimport { getAllFormFields } from '../shared/form.utils';\r\n\r\n/**\r\n * A configurable form\r\n */\r\n@Component({\r\n selector: 'igo-form',\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormComponent implements OnChanges {\r\n\r\n /**\r\n * Form\r\n */\r\n @Input() form: Form;\r\n\r\n /**\r\n * Input data\r\n */\r\n @Input() formData: { [key: string]: any};\r\n\r\n /**\r\n * Form autocomplete\r\n */\r\n @Input() autocomplete: string = 'off';\r\n\r\n /**\r\n * Event emitted when the form is submitted\r\n */\r\n @Output() submitForm = new EventEmitter<{[key: string]: any}>();\r\n\r\n @ViewChild('buttons', { static: true }) buttons: ElementRef;\r\n\r\n get hasButtons(): boolean {\r\n return this.buttons.nativeElement.children.length !== 0;\r\n }\r\n\r\n constructor() {}\r\n\r\n /**\r\n * Is the entity or the template change, recreate the form or repopulate it.\r\n * @internal\r\n */\r\n ngOnChanges(changes: SimpleChanges) {\r\n const formData = changes.formData;\r\n if (formData && formData.currentValue !== formData.previousValue) {\r\n if (formData.currentValue === undefined) {\r\n this.clear();\r\n } else {\r\n this.setData(formData.currentValue);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Transform the form data to a feature and emit an event\r\n * @param event Form submit event\r\n * @internal\r\n */\r\n onSubmit() {\r\n this.submitForm.emit(this.getData());\r\n }\r\n\r\n getData(): { [key: string]: any} {\r\n const data = {};\r\n getAllFormFields(this.form).forEach((field: FormField) => {\r\n this.updateDataWithFormField(data, field);\r\n });\r\n return data;\r\n }\r\n\r\n private setData(data: {[key: string]: any}) {\r\n this.form.fields.forEach((field: FormField) => {\r\n field.control.setValue(t(data, field.name).safeObject);\r\n });\r\n\r\n this.form.groups.forEach((group: FormFieldGroup) => {\r\n group.fields.forEach((field: FormField) => {\r\n field.control.setValue(t(data, field.name).safeObject);\r\n });\r\n });\r\n }\r\n\r\n private updateDataWithFormField(data: { [key: string]: any}, field: FormField) {\r\n const control = field.control;\r\n if (!control.disabled) {\r\n data[field.name] = control.value;\r\n }\r\n }\r\n\r\n /**\r\n * Clear form\r\n */\r\n private clear() {\r\n this.form.control.reset();\r\n }\r\n\r\n}\r\n","\r\n<form\r\n [autocomplete]=\"autocomplete\"\r\n [formGroup]=\"form.control\"\r\n (ngSubmit)=\"onSubmit()\">\r\n <div class=\"igo-form-body\" [ngClass]=\"{'igo-form-body-with-buttons': hasButtons}\">\r\n <div class=\"igo-form-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div #buttons class=\"igo-form-buttons\">\r\n <ng-content select=\"[formButtons]\"></ng-content>\r\n </div>\r\n </div>\r\n</form>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { FormComponent } from './form.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [\r\n FormComponent,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n declarations: [\r\n FormComponent\r\n ]\r\n})\r\nexport class IgoFormFormModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { UntypedFormBuilder, Validators, ValidatorFn } from '@angular/forms';\r\n\r\nimport {\r\n Form,\r\n FormField,\r\n FormFieldConfig,\r\n FormFieldGroup,\r\n FormFieldGroupConfig\r\n} from './form.interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormService {\r\n\r\n constructor(private formBuilder: UntypedFormBuilder) {}\r\n\r\n form(fields: FormField[], groups: FormFieldGroup[]): Form {\r\n const control = this.formBuilder.group({});\r\n fields.forEach((field: FormField) => {\r\n control.addControl(field.name, field.control);\r\n });\r\n groups.forEach((group: FormFieldGroup) => {\r\n control.addControl(group.name, group.control);\r\n });\r\n\r\n return {fields, groups, control};\r\n }\r\n\r\n group(config: FormFieldGroupConfig, fields: FormField[]): FormFieldGroup {\r\n const options = config.options || {};\r\n const control = this.formBuilder.group({});\r\n fields.forEach((field: FormField) => {\r\n control.addControl(field.name, field.control);\r\n });\r\n\r\n if (options.validator) {\r\n const validators = this.getValidators(options.validator); // convert string to actual validator\r\n control.setValidators(validators);\r\n }\r\n\r\n return Object.assign({}, config, {fields, control}) as FormFieldGroup;\r\n }\r\n\r\n field(config: FormFieldConfig): FormField {\r\n const options = config.options || {};\r\n const state = {\r\n value: '',\r\n disabled: options.disabled\r\n };\r\n const control = this.formBuilder.control(state);\r\n\r\n if (options.validator) {\r\n const validators = this.getValidators(options.validator); // convert string to actual validator\r\n control.setValidators(validators);\r\n }\r\n\r\n return Object.assign({type: 'text'}, config, {control}) as FormField;\r\n }\r\n\r\n extendFieldConfig(config: FormFieldConfig, partial: Partial<FormFieldConfig>): FormFieldConfig {\r\n const options = Object.assign({}, config.options || {}, partial.options || {});\r\n const inputs = Object.assign({}, config.inputs || {}, partial.inputs || {});\r\n const subscribers = Object.assign({}, config.subscribers || {}, partial.subscribers || {});\r\n return Object.assign({}, config, {options, inputs, subscribers});\r\n }\r\n\r\n private getValidators(validatorOption: string | string[] | ValidatorFn): ValidatorFn | ValidatorFn[] {\r\n if (Array.isArray(validatorOption)) {\r\n return validatorOption.map((validatorStr) => {\r\n return this.getValidator(validatorStr);\r\n });\r\n }\r\n\r\n return this.getValidator(validatorOption);\r\n }\r\n\r\n private getValidator(validatorStr: string | ValidatorFn): ValidatorFn {\r\n if (typeof validatorStr !== 'string') {\r\n return validatorStr;\r\n }\r\n\r\n // regex pattern to extract arguments from string for e.g applying on \"minLength(8)\" would extract 8\r\n const re = /^([a-zA-Z]{3,15})\\((.{0,20})\\)$/;\r\n const match = validatorStr.match(re);\r\n\r\n if (!match) {\r\n return Validators[validatorStr];\r\n }\r\n\r\n const name = match[1];\r\n const args = match[2];\r\n return Validators[name](args);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Service where all available form fields are registered.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormFieldService {\r\n\r\n static fields: {[key: string]: any} = {};\r\n\r\n static register(type: string, component: any) {\r\n FormFieldService.fields[type] = component;\r\n }\r\n\r\n constructor() {}\r\n\r\n /**\r\n * Return field component by type\r\n * @param type Field type\r\n * @returns Field component\r\n */\r\n getFieldByType(type: string): any {\r\n return FormFieldService.fields[type];\r\n }\r\n\r\n}\r\n","import { FormFieldService } from './form-field.service';\r\n\r\nexport function IgoFormFieldComponent(type: string): (cls: any) => any {\r\n return (compType: any) => {\r\n FormFieldService.register(type, compType);\r\n };\r\n}\r\n","\r\n\r\n<ng-container *ngIf=\"field !== undefined\">\r\n <igo-dynamic-outlet\r\n [component]=\"getFieldComponent()\"\r\n [inputs]=\"getFieldInputs()\"\r\n [subscribers]=\"getFieldSubscribers()\">\r\n </igo-dynamic-outlet>\r\n</ng-container>\r\n","import {\r\n Component,\r\n Input,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\n\r\nimport { FormField, FormFieldInputs, FormFieldOptions } from '../shared/form.interfaces';\r\nimport { FormFieldService } from '../shared/form-field.service';\r\nimport { getDefaultErrorMessages } from '../shared';\r\n\r\n/**\r\n * This component renders the proper form input based on\r\n * the field configuration it receives.\r\n */\r\n@Component({\r\n selector: 'igo-form-field',\r\n templateUrl: './form-field.component.html',\r\n styleUrls: ['./form-field.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormFieldComponent {\r\n\r\n /**\r\n * Field configuration\r\n */\r\n @Input() field: FormField;\r\n\r\n /**\r\n * Field inputs cache\r\n */\r\n private fieldInputs: FormFieldInputs = undefined;\r\n\r\n /**\r\n * Field subscribers cache\r\n */\r\n private fieldSubscribers: {[key: string]: ({field: FormField, control: FormControl}) => void } = undefined;\r\n\r\n get fieldOptions(): FormFieldOptions {\r\n return this.field.options || {};\r\n }\r\n\r\n constructor(private formFieldService: FormFieldService) {}\r\n\r\n getFieldComponent(): any {\r\n return this.formFieldService.getFieldByType(this.field.type || 'text');\r\n }\r\n\r\n getFieldInputs(): FormFieldInputs {\r\n if (this.fieldInputs !== undefined) {\r\n return this.fieldInputs;\r\n }\r\n\r\n const errors = this.fieldOptions.errors || {};\r\n this.fieldInputs = Object.assign(\r\n {\r\n placeholder: this.field.title,\r\n disableSwitch: this.fieldOptions.disableSwitch || false\r\n },\r\n Object.assign({}, this.field.inputs || {}),\r\n {\r\n formControl: this.field.control,\r\n errors: Object.assign({}, getDefaultErrorMessages(), errors)\r\n }\r\n );\r\n return this.fieldInputs;\r\n }\r\n\r\n getFieldSubscribers(): {[key: string]: ({field: FormField, control: FormControl}) => void } {\r\n if (this.fieldSubscribers !== undefined) {\r\n return this.fieldSubscribers;\r\n }\r\n\r\n this.fieldSubscribers = Object.assign({}, this.field.subscribers || {});\r\n return this.fieldSubscribers;\r\n }\r\n}\r\n","<mat-form-field>\r\n <mat-select\r\n [required]=\"required\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"formControl\">\r\n <mat-option *ngFor=\"let choice of choices$ | async\" [value]=\"choice.value\">\r\n {{choice.title}}\r\n </mat-option>\r\n </mat-select>\r\n <mat-icon\r\n *ngIf=\"disableSwitch === true\"\r\n class=\"igo-form-disable-switch\"\r\n [svgIcon]=\"(disabled$ | async) === true ? 'checkbox-blank-outline' : 'checkbox-marked-outline'\"\r\n (click)=\"onDisableSwitchClick()\"\r\n matPrefix>\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors\">{{getErrorMessage() | translate}}</mat-error>\r\n</mat-form-field>\r\n","import {\r\n Input,\r\n Component,\r\n ChangeDetectionStrategy,\r\n OnInit\r\n} from '@angular/core';\r\nimport type { UntypedFormControl } from '@angular/forms';\r\n\r\nimport { BehaviorSubject, } from 'rxjs';\r\n\r\nimport { formControlIsRequired, getControlErrorMessage } from '../shared/form.utils';\r\nimport { FormFieldSelectChoice } from '../shared/form.interfaces';\r\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\r\n\r\n/**\r\n * This component renders a select field\r\n */\r\n@IgoFormFieldComponent('select')\r\n@Component({\r\n selector: 'igo-form-field-select',\r\n templateUrl: './form-field-select.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormFieldSelectComponent implements OnInit {\r\n\r\n readonly disabled$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n /**\r\n * Select input choices\r\n */\r\n @Input()\r\n set choices(value: FormFieldSelectChoice[]) { this.choices$.next(value); }\r\n get choices(): FormFieldSelectChoice[] { return this.choices$.value; }\r\n readonly choices$: BehaviorSubject<FormFieldSelectChoice[]> = new BehaviorSubject([]);\r\n\r\n /**\r\n * The field's form control\r\n */\r\n @Input() formControl: UntypedFormControl;\r\n\r\n /**\r\n * Field placeholder\r\n */\r\n @Input() placeholder: string;\r\n\r\n /**\r\n * Field placeholder\r\n */\r\n @Input() errors: {[key: string]: string};\r\n\r\n /**\r\n * Wheter a disable switch should be available\r\n */\r\n @Input() disableSwitch: boolean = false;\r\n\r\n /**\r\n * Whether the field is required\r\n */\r\n get required(): boolean {\r\n return formControlIsRequired(this.formControl);\r\n }\r\n\r\n ngOnInit() {\r\n this.disabled$.next(this.formControl.disabled);\r\n }\r\n\r\n /**\r\n * Get error message\r\n */\r\n getErrorMessage(): string {\r\n return getControlErrorMessage(this.formControl, this.errors);\r\n }\r\n\r\n onDisableSwitchClick() {\r\n this.toggleDisabled();\r\n }\r\n\r\n private toggleDisabled() {\r\n const disabled = !this.disabled$.value;\r\n if (disabled === true) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n this.disabled$.next(disabled);\r\n }\r\n\r\n}\r\n","<mat-form-field>\r\n <input\r\n matInput\r\n [required]=\"required\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"formControl\">\r\n <mat-icon\r\n *ngIf=\"disableSwitch === true\"\r\n class=\"igo-form-disable-switch\"\r\n [svgIcon]=\"(disabled$ | async) === true ? 'checkbox-blank-outline' : 'checkbox-marked-outline'\"\r\n (click)=\"onDisableSwitchClick()\"\r\n matPrefix>\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors\">{{getErrorMessage() | translate}}</mat-error>\r\n</mat-form-field>\r\n","import {\r\n Input,\r\n Component,\r\n ChangeDetectionStrategy,\r\n OnInit\r\n} from '@angular/core';\r\nimport type { UntypedFormControl } from '@angular/forms';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport {\r\n formControlIsRequired,\r\n getControlErrorMessage\r\n} from '../shared/form.utils';\r\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\r\n\r\n/**\r\n * This component renders a text field\r\n */\r\n@IgoFormFieldComponent('text')\r\n@Component({\r\n selector: 'igo-form-field-text',\r\n templateUrl: './form-field-text.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormFieldTextComponent implements OnInit {\r\n\r\n disabled$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n /**\r\n * The field's form control\r\n */\r\n @Input() formControl: UntypedFormControl;\r\n\r\n /**\r\n * Field placeholder\r\n */\r\n @Input() placeholder: string;\r\n\r\n /**\r\n * Field placeholder\r\n */\r\n @Input() errors: {[key: string]: string};\r\n\r\n /**\r\n * Wheter a disable switch should be available\r\n */\r\n @Input() disableSwitch: boolean = false;\r\n\r\n /**\r\n * Whether the field is required\r\n */\r\n get required(): boolean {\r\n return formControlIsRequired(this.formControl);\r\n }\r\n\r\n ngOnInit() {\r\n this.disabled$.next(this.formControl.disabled);\r\n }\r\n\r\n /**\r\n * Get error message\r\n */\r\n getErrorMessage(): string {\r\n return getControlErrorMessage(this.formControl, this.errors);\r\n }\r\n\r\n onDisableSwitchClick() {\r\n this.toggleDisabled();\r\n }\r\n\r\n private toggleDisabled() {\r\n const disabled = !this.disabled$.value;\r\n if (disabled === true) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n this.disabled$.next(disabled);\r\n }\r\n\r\n}\r\n","<mat-form-field>\r\n <textarea\r\n matInput\r\n [required]=\"required\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"formControl\">\r\n </textarea>\r\n <mat-icon\r\n *ngIf=\"disableSwitch === true\"\r\n class=\"igo-form-disable-switch\"\r\n [svgIcon]=\"(disabled$ | async) === true ? 'checkbox-blank-outline' : 'checkbox-marked-outline'\"\r\n (click)=\"onDisableSwitchClick()\"\r\n matPrefix>\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors\">{{getErrorMessage() | translate}}</mat-error>\r\n</mat-form-field>\r\n","import {\r\n Input,\r\n Component,\r\n ChangeDetectionStrategy,\r\n OnInit\r\n} from '@angular/core';\r\nimport type { UntypedFormControl } from '@angular/forms';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { formControlIsRequired, getControlErrorMessage } from '../shared/form.utils';\r\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\r\n\r\n/**\r\n * This component renders a textarea field\r\n */\r\n@IgoFormFieldComponent('textarea')\r\n@Component({\r\n selector: 'igo-form-field-textarea',\r\n templateUrl: './form-field-textarea.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormFieldTextareaComponent implements OnInit {\r\n\r\n disabled$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n /**\r\n * The field's form control\r\n */\r\n @Input() formControl: UntypedFormControl;\r\n\r\n /**\r\n * Field placeholder\r\n */\r\n @Input() placeholder: string;\r\n\r\n /**\r\n * Field placeholder\r\n */\r\n @Input() errors: {[key: string]: string};\r\n\r\n /**\r\n * Wheter a disable switch should be available\r\n */\r\n @Input() disableSwitch: boolean = false;\r\n\r\n /**\r\n * Whether the field is required\r\n */\r\n get required(): boolean {\r\n return formControlIsRequired(this.formControl);\r\n }\r\n\r\n ngOnInit() {\r\n this.disabled$.next(this.formControl.disabled);\r\n }\r\n\r\n /**\r\n * Get error message\r\n */\r\n getErrorMessage(): string {\r\n return getControlErrorMessage(this.formControl, this.errors);\r\n }\r\n\r\n onDisableSwitchClick() {\r\n this.toggleDisabled();\r\n }\r\n\r\n private toggleDisabled() {\r\n const disabled = !this.disabled$.value;\r\n if (disabled === true) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n this.disabled$.next(disabled);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\nimport { IgoDynamicOutletModule } from '../../dynamic-component/dynamic-outlet/dynamic-outlet.module';\r\n\r\nimport { FormFieldComponent } from './form-field.component';\r\nimport { FormFieldSelectComponent } from './form-field-select.component';\r\nimport { FormFieldTextComponent } from './form-field-text.component';\r\nimport { FormFieldTextareaComponent } from './form-field-textarea.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n IgoLanguageModule,\r\n IgoDynamicOutletModule\r\n ],\r\n exports: [\r\n FormFieldComponent,\r\n FormFieldSelectComponent,\r\n FormFieldTextComponent,\r\n FormFieldTextareaComponent\r\n ],\r\n declarations: [\r\n FormFieldComponent,\r\n FormFieldSelectComponent,\r\n FormFieldTextComponent,\r\n FormFieldTextareaComponent\r\n ]\r\n})\r\nexport class IgoFormFieldModule {}\r\n","<div\r\n *ngIf=\"group && group.fields.length > 0\"\r\n class=\"igo-form-group-fields\">\r\n <div\r\n *ngFor=\"let field of group.fields\"\r\n class=\"igo-form-field-wrapper\"\r\n [ngClass]=\"getFieldNgClass(field)\">\r\n <igo-form-field [field]=\"field\"></igo-form-field>\r\n </div>\r\n</div>\r\n\r\n<div class=\"igo-form-group-extra-content\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<mat-error *ngIf=\"formControl.errors\">{{getErrorMessage() | translate}}</mat-error>\r\n","import {\r\n Component,\r\n Input,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\n\r\nimport { getControlErrorMessage } from '../shared/form.utils';\r\nimport { FormField, FormFieldGroup } from '../shared/form.interfaces';\r\n\r\n/**\r\n * A configurable form, optionnally bound to an entity\r\n * (for example in case of un update). Submitting that form\r\n * emits an event with the form data but no other operation is performed.\r\n */\r\n@Component({\r\n selector: 'igo-form-group',\r\n templateUrl: './form-group.component.html',\r\n styleUrls: ['./form-group.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormGroupComponent {\r\n\r\n /**\r\n * Form field group\r\n */\r\n @Input() group: FormFieldGroup;\r\n\r\n /**\r\n * Field placeholder\r\n */\r\n @Input() errors: {[key: string]: string};\r\n\r\n /**\r\n * Form group control\r\n */\r\n get formControl(): UntypedFormGroup { return this.group.control; }\r\n\r\n constructor() {}\r\n\r\n /**\r\n * Return the number of columns a field should occupy.\r\n * The maximum allowed is 2, even if the field config says more.\r\n * @param field Field\r\n * @returns Number of columns\r\n * @internal\r\n */\r\n getFieldColSpan(field: FormField): number {\r\n let colSpan = 2;\r\n const options = field.options || {};\r\n if (options.cols && options.cols > 0) {\r\n colSpan = Math.min(options.cols, 2);\r\n }\r\n\r\n return colSpan;\r\n }\r\n\r\n /**\r\n * Return the number of columns a field should occupy.\r\n * The maximum allowed is 2, even if the field config says more.\r\n * @param field Field\r\n * @returns Number of columns\r\n * @internal\r\n */\r\n getFieldNgClass(field: FormField): {[key: string]: boolean} {\r\n const colspan = this.getFieldColSpan(field);\r\n return {[`igo-form-field-colspan-${colspan}`]: true};\r\n }\r\n\r\n /**\r\n * Get error message\r\n */\r\n getErrorMessage(): string {\r\n const options = this.group.options || {};\r\n return getControlErrorMessage(this.formControl, options.errors || {});\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\n\r\nimport { IgoFormFieldModule } from '../form-field/form-field.module';\r\nimport { FormGroupComponent } from './form-group.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatFormFieldModule,\r\n IgoLanguageModule,\r\n IgoFormFieldModule\r\n ],\r\n exports: [\r\n FormGroupComponent\r\n ],\r\n declarations: [\r\n FormGroupComponent\r\n ]\r\n})\r\nexport class IgoFormGroupModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoFormFormModule } from './form/form.module';\r\nimport { IgoFormGroupModule } from './form-group/form-group.module';\r\nimport { IgoFormFieldModule } from './form-field/form-field.module';\r\nimport { FormService } from './shared/form.service';\r\nimport { FormFieldService } from './shared/form-field.service';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoFormGroupModule,\r\n IgoFormFieldModule\r\n ],\r\n exports: [\r\n IgoFormFormModule,\r\n IgoFormGroupModule,\r\n IgoFormFieldModule\r\n ],\r\n declarations: [],\r\n providers: [\r\n FormService,\r\n FormFieldService\r\n ]\r\n})\r\nexport class IgoFormModule {}\r\n","import { Component, EventEmitter, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'igo-home-button',\r\n templateUrl: './home-button.component.html',\r\n styleUrls: ['./home-button.component.scss']\r\n})\r\nexport class HomeButtonComponent {\r\n\r\n @Output() unselectButton = new EventEmitter<any>();\r\n\r\n constructor() {}\r\n\r\n onUnselectButtonClick() {\r\n this.unselectButton.emit();\r\n }\r\n}\r\n","<button\r\n id=\"homeButton\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.context.sidenav.mainMenu' | translate\"\r\n (click)=\"onUnselectButtonClick()\">\r\n <mat-icon svgIcon=\"home\"></mat-icon>\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IgoLanguageModule } from '@igo2/core';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { HomeButtonComponent } from './home-button.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n IgoLanguageModule\r\n ],\r\n exports: [HomeButtonComponent],\r\n declarations: [HomeButtonComponent],\r\n providers: []\r\n})\r\nexport class IgoHomeButtonModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { MatSelectModule } from '@angular/material/select';\r\n\r\nimport { EntitySelectorComponent } from './entity-selector.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatSelectModule\r\n ],\r\n exports: [EntitySelectorComponent],\r\n declarations: [EntitySelectorComponent]\r\n})\r\nexport class IgoEntitySelectorModule {}\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[igoStopDropPropagation]'\r\n})\r\nexport class StopDropPropagationDirective {\r\n @HostListener('drop', ['$event'])\r\n public onDrop(event: any): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { StopDropPropagationDirective } from './stop-drop-propagation.directive';\r\nimport { StopPropagationDirective } from './stop-propagation.directive';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [StopDropPropagationDirective, StopPropagationDirective],\r\n exports: [StopDropPropagationDirective, StopPropagationDirective]\r\n})\r\nexport class IgoStopPropagationModule {\r\n static forRoot(): ModuleWithProviders<IgoStopPropagationModule> {\r\n return {\r\n ngModule: IgoStopPropagationModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { EntityTablePaginatorComponent } from './entity-table-paginator.component';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n MatPaginatorModule,\r\n ],\r\n exports: [\r\n EntityTablePaginatorComponent\r\n ],\r\n declarations: [\r\n EntityTablePaginatorComponent,\r\n ]\r\n})\r\nexport class IgoEntityTablePaginatorModule {}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { ImageErrorDirective } from './image-error.directive';\r\nimport { SecureImagePipe } from './secure-image.pipe';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [SecureImagePipe, ImageErrorDirective],\r\n exports: [SecureImagePipe, ImageErrorDirective]\r\n})\r\nexport class IgoImageModule {\r\n static forRoot(): ModuleWithProviders<IgoImageModule> {\r\n return {\r\n ngModule: IgoImageModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\n\r\nimport { IgoStopPropagationModule } from '../../stop-propagation/stop-propagation.module';\r\nimport { IgoCustomHtmlModule } from '../../custom-html/custom-html.module';\r\nimport { EntityTableRowDirective } from './entity-table-row.directive';\r\nimport { EntityTableComponent } from './entity-table.component';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { IgoEntityTablePaginatorModule } from '../entity-table-paginator/entity-table-paginator.module';\r\nimport { IgoImageModule } from '../../image/image.module';\r\nimport { IgoLanguageModule } from '@igo2/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatSelectModule } from '@angular/material/select';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatTableModule,\r\n MatAutocompleteModule,\r\n MatSortModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatPaginatorModule,\r\n MatSelectModule,\r\n IgoStopPropagationModule,\r\n IgoCustomHtmlModule,\r\n IgoEntityTablePaginatorModule,\r\n IgoImageModule,\r\n IgoLanguageModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatDatepickerModule,\r\n MatTooltipModule\r\n ],\r\n exports: [\r\n EntityTableComponent\r\n ],\r\n declarations: [\r\n EntityTableComponent,\r\n EntityTableRowDirective\r\n ]\r\n})\r\nexport class IgoEntityTableModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoEntitySelectorModule } from './entity-selector/entity-selector.module';\r\nimport { IgoEntityTableModule } from './entity-table/entity-table.module';\r\nimport { IgoEntityTablePaginatorModule } from './entity-table-paginator/entity-table-paginator.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n IgoEntitySelectorModule,\r\n IgoEntityTableModule,\r\n IgoEntityTablePaginatorModule\r\n ],\r\n declarations: []\r\n})\r\nexport class IgoEntityModule {}\r\n","import { catchError } from 'rxjs/operators';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport { InteractiveTourOptions } from './interactive-tour.interface';\r\nimport { ConfigService } from '@igo2/core';\r\n\r\n@Injectable()\r\nexport class InteractiveTourLoader {\r\n private jsonURL: string;\r\n private allToursOptions;\r\n\r\n constructor(private http: HttpClient, private configService: ConfigService) {\r\n this.jsonURL = this.getPathToConfigFile();\r\n }\r\n\r\n public loadConfigTour() {\r\n this.getJSON()\r\n .subscribe(\r\n (data) => {\r\n this.allToursOptions = data;\r\n },\r\n (err) => {\r\n throw new Error(`Problem with Interactive tour configuration file: interactiveTour.json not find. Check if the file and is path is set correctly.`);\r\n }\r\n );\r\n }\r\n\r\n public getPathToConfigFile(): string {\r\n return (\r\n this.configService.getConfig('interactiveTour.pathToConfigFile') ||\r\n './config/interactiveTour.json'\r\n );\r\n }\r\n\r\n public getJSON(): Observable<any> {\r\n return this.http.get(this.jsonURL).pipe(\r\n catchError((e) => {\r\n e.error.caught = true;\r\n throw e;\r\n })\r\n );\r\n }\r\n\r\n public getTourOptionData(toolName): InteractiveTourOptions {\r\n if (this.allToursOptions === undefined) {\r\n return undefined;\r\n }\r\n let nameInConfigFile = toolName;\r\n nameInConfigFile = nameInConfigFile.replace(/\\s/g, '');\r\n return this.allToursOptions[nameInConfigFile];\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ShepherdService } from 'angular-shepherd';\r\n\r\nimport { ConfigService, MediaService, LanguageService } from '@igo2/core';\r\nimport { InteractiveTourLoader } from './interactive-tour.loader';\r\nimport {\r\n InteractiveTourOptions,\r\n InteractiveTourStep,\r\n InteractiveTourAction\r\n} from './interactive-tour.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InteractiveTourService {\r\n private previousStep: InteractiveTourStep;\r\n private nextIndex = 1;\r\n\r\n constructor(\r\n private configService: ConfigService,\r\n private mediaService: MediaService,\r\n private languageService: LanguageService,\r\n private interactiveTourLoader: InteractiveTourLoader,\r\n private shepherdService: ShepherdService\r\n ) {\r\n if (this.isAppHaveTour()) {\r\n this.interactiveTourLoader.loadConfigTour();\r\n }\r\n }\r\n\r\n public isAppHaveTour() {\r\n const haveTour = this.configService.getConfig('interactiveTour.activateInteractiveTour');\r\n if (haveTour === undefined) {\r\n return true;\r\n } else {\r\n return haveTour;\r\n }\r\n }\r\n\r\n public isToolHaveTourConfig(toolName: string): boolean {\r\n const checkTourActiveOptions = this.interactiveTourLoader.getTourOptionData(\r\n toolName\r\n );\r\n if (checkTourActiveOptions === undefined) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n public disabledTourButton(toolName: string): boolean {\r\n const stepConfig: InteractiveTourOptions = this.interactiveTourLoader.getTourOptionData(\r\n toolName\r\n );\r\n\r\n if (stepConfig?.conditions) {\r\n for (const condition of stepConfig?.conditions) {\r\n if (document.querySelector(condition) === null) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public isMobile(): boolean {\r\n return this.mediaService.isMobile();\r\n }\r\n\r\n public isTourDisplayInMobile(): boolean {\r\n const showInMobile = this.configService.getConfig(\r\n 'interactiveTour.tourInMobile'\r\n );\r\n if (showInMobile === undefined) {\r\n return true;\r\n }\r\n return this.configService.getConfig('interactiveTour.tourInMobile');\r\n }\r\n\r\n private getButtons(buttonKind?: 'first' | 'last' | 'noBackButton') {\r\n if (buttonKind === 'noBackButton') {\r\n return [\r\n {\r\n classes: 'shepherd-button-primary',\r\n text: this.languageService.translate.instant(\r\n 'igo.common.interactiveTour.nextButton'\r\n ),\r\n type: 'next'\r\n }\r\n ];\r\n }\r\n if (buttonKind === 'first') {\r\n return [\r\n {\r\n classes: 'shepherd-button-secondary',\r\n text: this.languageService.translate.instant(\r\n 'igo.common.interactiveTour.exitButton'\r\n ),\r\n type: 'cancel'\r\n },\r\n {\r\n classes: 'shepherd-button-primary',\r\n text: this.languageService.translate.instant(\r\n 'igo.common.interactiveTour.nextButton'\r\n ),\r\n type: 'next'\r\n }\r\n ];\r\n }\r\n\r\n if (buttonKind === 'last') {\r\n return [\r\n {\r\n classes: 'shepherd-button-secondary',\r\n text: this.languageService.translate.instant(\r\n 'igo.common.interactiveTour.backButton'\r\n ),\r\n type: 'back'\r\n },\r\n {\r\n classes: 'shepherd-button-primary',\r\n text: this.languageService.translate.instant(\r\n 'igo.common.interactiveTour.exitButton'\r\n ),\r\n type: 'cancel'\r\n }\r\n ];\r\n }\r\n\r\n return [\r\n {\r\n classes: 'shepherd-button-secondary',\r\n text: this.languageService.translate.instant(\r\n 'igo.common.interactiveTour.backButton'\r\n ),\r\n type: 'back'\r\n },\r\n {\r\n classes: 'shepherd-button-primary',\r\n text: this.languageService.translate.instant(\r\n 'igo.common.interactiveTour.nextButton'\r\n ),\r\n type: 'next'\r\n }\r\n ];\r\n }\r\n\r\n private getAction(actionName: string) {\r\n const action = {\r\n click: 'click'\r\n };\r\n return action[actionName.toLowerCase()];\r\n }\r\n\r\n private addProgress() {\r\n const self = this as any;\r\n let nbTry = 0;\r\n const maxTry = 21;\r\n const checkExist = setInterval(() => {\r\n if (self.getCurrentStep()) {\r\n if (self.getCurrentStep().options.attachTo.element && !document.querySelector(self.getCurrentStep().options.attachTo.element)) {\r\n self.cancel();\r\n clearInterval(checkExist);\r\n return;\r\n } else {\r\n const currentStepElement = self.getCurrentStep().getElement();\r\n if (currentStepElement) {\r\n const shepherdList = currentStepElement.querySelectorAll('.shepherd-content, .shepherd-text');\r\n shepherdList.forEach(element => {\r\n element.classList.add('mat-typography');\r\n });\r\n }\r\n const header = currentStepElement\r\n ? currentStepElement.querySelector('.shepherd-header')\r\n : undefined;\r\n\r\n nbTry++;\r\n if (header || nbTry > maxTry) {\r\n clearInterval(checkExist);\r\n }\r\n\r\n if (header) {\r\n const stepsArray = self.steps;\r\n const progress = document.createElement('span');\r\n progress.className = 'shepherd-progress';\r\n progress.innerText = `${\r\n stepsArray.indexOf(self.getCurrentStep()) + 1\r\n }/${stepsArray.length}`;\r\n header.insertBefore(\r\n progress,\r\n currentStepElement.querySelector('.shepherd-cancel-icon')\r\n );\r\n }\r\n }\r\n }\r\n }, 100);\r\n }\r\n\r\n private checkNext(index, tour, service) {\r\n if (tour.getCurrentStep()) {\r\n if (tour.getCurrentStep().options.attachTo.element && document.querySelector(tour.getCurrentStep().options.attachTo.element)) {\r\n tour.complete();\r\n return;\r\n }\r\n\r\n if (index.index === tour.steps.length - 1) {\r\n tour.complete();\r\n return;\r\n }\r\n\r\n tour.steps.splice(index.index, 1);\r\n const nextStep = tour.steps[index.index];\r\n if (nextStep.options.attachTo.element && !document.querySelector(nextStep.options.attachTo.element)) {\r\n service.checkNext(index, tour, service);\r\n } else {\r\n tour._setupModal();\r\n tour.show(nextStep.id);\r\n }\r\n }\r\n }\r\n\r\n private executeAction(\r\n step: InteractiveTourStep,\r\n actionConfig: InteractiveTourAction\r\n ) {\r\n if (!actionConfig) {\r\n return;\r\n }\r\n\r\n if (\r\n actionConfig.condition &&\r\n ((actionConfig.condition.charAt(0) === '!' &&\r\n document.querySelector(actionConfig.condition.slice(1))) ||\r\n (actionConfig.condition.charAt(0) !== '!' &&\r\n !document.querySelector(actionConfig.condition)))\r\n ) {\r\n return;\r\n }\r\n\r\n const element: HTMLElement = document.querySelector(\r\n actionConfig.element || step.element\r\n ) as HTMLElement;\r\n const action = this.getAction(actionConfig.action);\r\n if (element && action) {\r\n element[action]();\r\n }\r\n }\r\n\r\n private executeActionPromise(\r\n step: InteractiveTourStep,\r\n actionConfig: InteractiveTourAction\r\n ) {\r\n return new Promise<void>((resolve) => {\r\n this.executeAction(step, actionConfig);\r\n if (!actionConfig || !actionConfig.waitFor) {\r\n resolve();\r\n return;\r\n }\r\n let nbTry = 0;\r\n const maxTry = actionConfig.maxWait ? actionConfig.maxWait / 100 : 20;\r\n const checkExist = setInterval(() => {\r\n nbTry++;\r\n if (nbTry > maxTry || document.querySelector(actionConfig.waitFor)) {\r\n clearInterval(checkExist);\r\n resolve();\r\n }\r\n }, 100);\r\n });\r\n }\r\n\r\n private getShepherdSteps(stepConfig: InteractiveTourOptions) {\r\n const shepherdSteps = [];\r\n\r\n let i = 0;\r\n for (const step of stepConfig.steps) {\r\n shepherdSteps.push({\r\n attachTo: {\r\n element: step.element,\r\n on: step.position || stepConfig.position\r\n },\r\n popperOptions: {\r\n modifiers: [{ name: 'offset', options: { offset: [0, 15] } }]\r\n },\r\n beforeShowPromise: () => {\r\n return Promise.all([\r\n this.executeActionPromise(\r\n this.previousStep,\r\n this.previousStep ? this.previousStep.beforeChange : undefined\r\n ),\r\n this.executeActionPromise(step, step.beforeShow)\r\n ]);\r\n },\r\n buttons: this.getButtons(\r\n i === 0\r\n ? 'first'\r\n : i + 1 === stepConfig.steps.length\r\n ? 'last'\r\n : stepConfig.steps[i].noBackButton\r\n ? 'noBackButton'\r\n : undefined\r\n ),\r\n classes: step.class,\r\n highlightClass: step.highlightClass,\r\n scrollTo: step.scrollToElement || stepConfig.scrollToElement || true,\r\n canClickTarget: step.disableInteraction\r\n ? !step.disableInteraction\r\n : undefined,\r\n title: this.languageService.translate.instant(\r\n step.title || stepConfig.title\r\n ),\r\n text: [this.languageService.translate.instant(step.text)],\r\n when: {\r\n show: () => {\r\n this.executeAction(step, step.onShow);\r\n },\r\n hide: () => {\r\n this.previousStep = step;\r\n this.executeAction(step, step.onHide);\r\n }\r\n }\r\n });\r\n i++;\r\n }\r\n\r\n return shepherdSteps;\r\n }\r\n\r\n public startTour(toolName: string) {\r\n const stepConfig: InteractiveTourOptions = this.interactiveTourLoader.getTourOptionData(\r\n toolName\r\n );\r\n\r\n this.shepherdService.defaultStepOptions = {\r\n classes: stepConfig.class,\r\n highlightClass: stepConfig.highlightClass,\r\n canClickTarget: stepConfig.disableInteraction\r\n ? !stepConfig.disableInteraction\r\n : true,\r\n cancelIcon: {\r\n enabled: true\r\n }\r\n };\r\n\r\n const shepherdSteps = this.getShepherdSteps(stepConfig);\r\n\r\n this.shepherdService.modal = true;\r\n this.shepherdService.confirmCancel = false;\r\n this.shepherdService.addSteps(shepherdSteps);\r\n\r\n this.shepherdService.tourObject.on('show', this.addProgress);\r\n this.shepherdService.tourObject.on('cancel', (index) => {\r\n this.checkNext(index, this.shepherdService.tourObject, this);\r\n });\r\n\r\n this.shepherdService.start();\r\n }\r\n}\r\n","import { EntityRecord, EntityStore } from '../../entity';\r\nimport { Tool, ToolboxOptions } from './tool.interface';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\n\r\n/**\r\n * Service where all available tools and their component are registered.\r\n */\r\nexport class Toolbox {\r\n /**\r\n * Observable of the active tool\r\n */\r\n activeTool$: BehaviorSubject<Tool> = new BehaviorSubject(undefined);\r\n\r\n /**\r\n * Ordered list of tool names to display in a toolbar\r\n */\r\n toolbar$: BehaviorSubject<string[]> = new BehaviorSubject([]);\r\n\r\n /**\r\n * Observable of the active tool\r\n */\r\n private activeTool$$: Subscription;\r\n\r\n /**\r\n * Active tool history. Useful for activating the previous tool.\r\n */\r\n private activeToolHistory: string[] = [];\r\n\r\n /**\r\n * Tool store\r\n */\r\n private store = new EntityStore<Tool>([], {\r\n getKey: (tool: Tool) => tool.name\r\n });\r\n\r\n get tools$(): BehaviorSubject<Tool[]> {\r\n return this.store.entities$;\r\n }\r\n\r\n constructor(private options: ToolboxOptions = {}) {\r\n this.setToolbar(options.toolbar);\r\n this.initStore();\r\n }\r\n\r\n /**\r\n * Destroy the toolbox\r\n */\r\n destroy() {\r\n this.activeTool$$.unsubscribe();\r\n this.store.destroy();\r\n }\r\n\r\n /**\r\n * Return a tool\r\n * @param name Tool name\r\n * @returns tool Tool\r\n */\r\n getTool(name: string): Tool {\r\n return this.store.get(name);\r\n }\r\n\r\n /**\r\n * Return all tools\r\n * @returns Array of tools\r\n */\r\n getTools(): Tool[] {\r\n return this.store.all();\r\n }\r\n\r\n /**\r\n * Set tool configurations\r\n * @param tools Tools\r\n */\r\n setTools(tools: Tool[]) {\r\n this.store.load(tools);\r\n }\r\n\r\n /**\r\n * Get toolbar\r\n * @returns Toolbar value\r\n */\r\n getToolbar(): string[] {\r\n return this.toolbar$.getValue();\r\n }\r\n\r\n /**\r\n * Set toolbar\r\n * @param toolbar A list of tool names\r\n */\r\n setToolbar(toolbar: string[]) {\r\n this.toolbar$.next(toolbar || []);\r\n }\r\n\r\n /**\r\n * Activate a tool (and deactivate other tools)\r\n * @param name Tool name\r\n * @param options Tool options\r\n */\r\n activateTool(name: string, options: { [key: string]: any } = {}) {\r\n const tool = this.getTool(name);\r\n if (tool === undefined) {\r\n return;\r\n }\r\n\r\n this.store.state.update(tool, { active: true, options }, true);\r\n }\r\n\r\n /**\r\n * Activate the previous tool, if any\r\n */\r\n activatePreviousTool() {\r\n if (this.activeToolHistory.length <= 1) {\r\n this.deactivateTool();\r\n return;\r\n }\r\n const [previous, current] = this.activeToolHistory.splice(-2, 2);\r\n this.activateTool(previous);\r\n }\r\n\r\n /**\r\n * Activate the tool below, if any\r\n */\r\n /* activateBelowTool() {\r\n const arrayTools = this.getToolbar();\r\n const index = arrayTools.findIndex(t => t === this.activeTool$.getValue().name);\r\n if (arrayTools[index + 1] !== undefined) {\r\n this.deactivateTool();\r\n const below = arrayTools[index + 1];\r\n this.activateTool(below);\r\n } else {\r\n this.deactivateTool();\r\n const below = arrayTools[0];\r\n this.activateTool(below);\r\n }\r\n } */\r\n\r\n /**\r\n * Activate the tool above, if any\r\n */\r\n /* activateAboveTool() {\r\n const arrayTools = this.getToolbar();\r\n const index = arrayTools.findIndex(t => t === this.activeTool$.getValue().name);\r\n if (arrayTools[index - 1] !== undefined) {\r\n this.deactivateTool();\r\n const above = arrayTools[index - 1];\r\n this.activateTool(above);\r\n } else {\r\n this.deactivateTool();\r\n const above = arrayTools[arrayTools.length - 1];\r\n this.activateTool(above);\r\n }\r\n } */\r\n\r\n /**\r\n * Deactivate the active tool\r\n */\r\n deactivateTool() {\r\n this.clearActiveToolHistory();\r\n this.store.state.updateAll({ active: false });\r\n }\r\n\r\n /**\r\n * Initialize the tool store and start observing the active tool\r\n */\r\n private initStore() {\r\n this.store = new EntityStore<Tool>([], {\r\n getKey: (entity: Tool) => entity.name\r\n });\r\n\r\n this.activeTool$$ = this.store.stateView\r\n .firstBy$((record: EntityRecord<Tool>) => record.state.active === true)\r\n .subscribe((record: EntityRecord<Tool>) => {\r\n if (record === undefined) {\r\n this.setActiveTool(undefined);\r\n return;\r\n }\r\n\r\n const tool = record.entity;\r\n const options = Object.assign(\r\n {},\r\n tool.options || {},\r\n record.state.options || {}\r\n );\r\n this.setActiveTool(Object.assign({}, tool, { options }));\r\n });\r\n }\r\n\r\n /**\r\n * Set the active tool and update the tool history\r\n * @param tool Tool\r\n */\r\n private setActiveTool(tool: Tool | undefined) {\r\n this.activeTool$.next(tool);\r\n if (tool === undefined) {\r\n this.clearActiveToolHistory();\r\n } else {\r\n this.activeToolHistory = this.activeToolHistory\r\n .filter((name: string) => name !== tool.name)\r\n .concat([tool.name]);\r\n }\r\n }\r\n\r\n /**\r\n * Clear the tool history\r\n */\r\n private clearActiveToolHistory() {\r\n this.activeToolHistory = [];\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { Tool } from './tool.interface';\r\nimport { Toolbox } from './toolbox';\r\n\r\n/**\r\n * Service where runtime tool configurations are registered\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToolService {\r\n static tools: { [key: string]: Tool } = {};\r\n\r\n /**\r\n * Toolbox that holds main tools\r\n */\r\n public toolbox: Toolbox = new Toolbox();\r\n\r\n static register(tool: Tool) {\r\n ToolService.tools[tool.name] = tool;\r\n }\r\n\r\n constructor() {\r\n this.toolbox.setTools(this.getTools());\r\n }\r\n\r\n /**\r\n * Return a tool\r\n * @param name Tool name\r\n * @returns tool Tool\r\n */\r\n getTool(name: string): Tool {\r\n return ToolService.tools[name];\r\n }\r\n\r\n /**\r\n * Return all tools\r\n * @returns tTols\r\n */\r\n getTools(): Tool[] {\r\n return Object.values(ToolService.tools);\r\n }\r\n}\r\n","<button *ngIf=\"showTourButton\"\r\n (click) = \"startInteractiveTour()\"\r\n [ngClass]=\"getClass()\"\r\n mat-raised-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [disabled]=disabledTourButton>\r\n <span class=\"interactive-tour-button-title\">{{'igo.common.interactiveTour.buttonTitle' | translate}} {{(discoverTitleInLocale$ | async) | translate}}</span>\r\n <mat-icon\r\n svgIcon=\"presentation-play\"\r\n [matTooltip]=\"disabledTourButton ?\r\n ('igo.common.interactiveTour.disaledTooltipTourToolButton' | translate) :\r\n ('igo.common.interactiveTour.tooltipTourToolButton' | translate)\">\r\n </mat-icon>\r\n</button>\r\n","import { Component, ViewEncapsulation, Input } from '@angular/core';\r\nimport { InteractiveTourService } from './interactive-tour.service';\r\nimport { ToolService } from '../tool/shared/tool.service';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'igo-interactive-tour',\r\n templateUrl: './interactive-tour.component.html',\r\n styleUrls: ['./interactive-tour.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class InteractiveTourComponent {\r\n /**\r\n * Toolbox that holds main tools\r\n */\r\n @Input() tourToStart: string = '';\r\n @Input() styleButton: string;\r\n @Input() discoverTitleInLocale$: Observable<string> = of('IGO');\r\n\r\n getClass() {\r\n return {\r\n 'tour-button-tool-icon': this.styleButton === 'icon',\r\n 'tour-button-tool': this.styleButton === 'raised'\r\n };\r\n }\r\n\r\n get toolbox() {\r\n return this.toolService.toolbox;\r\n }\r\n\r\n getTourToStart() {\r\n if (this.tourToStart) {\r\n return this.tourToStart;\r\n } else {\r\n return this.activeToolName;\r\n }\r\n }\r\n\r\n get activeToolName() {\r\n if (this.toolbox) {\r\n if (this.isActiveTool) {\r\n return this.toolbox.activeTool$.getValue().name;\r\n } else {\r\n return 'global';\r\n }\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n get isActiveTool(): boolean {\r\n if (this.toolbox) {\r\n return this.toolbox.activeTool$.getValue() !== undefined;\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n get isToolHaveTour(): boolean {\r\n if (this.activeToolName === 'about' && !this.tourToStart) {\r\n return false;\r\n }\r\n return this.interactiveTourService.isToolHaveTourConfig(\r\n this.getTourToStart()\r\n );\r\n }\r\n\r\n get showTourButton(): boolean {\r\n // 2 conditions to show: have Tour on tool in Config file and if we are in mobile displayInMobile= true\r\n let haveTour: boolean;\r\n haveTour = this.isToolHaveTour;\r\n if (haveTour === false) {\r\n return false;\r\n }\r\n\r\n let inMobileAndShow: boolean;\r\n if (this.interactiveTourService.isMobile()) {\r\n inMobileAndShow = this.isTourDisplayInMobile;\r\n if (inMobileAndShow === false) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n get isTourDisplayInMobile(): boolean {\r\n return this.interactiveTourService.isTourDisplayInMobile();\r\n }\r\n\r\n get disabledTourButton(): boolean {\r\n return this.interactiveTourService.disabledTourButton(this.activeToolName);\r\n }\r\n\r\n constructor(\r\n private interactiveTourService: InteractiveTourService,\r\n private toolService: ToolService\r\n ) {}\r\n\r\n startInteractiveTour() {\r\n const tour = this.getTourToStart();\r\n if (tour) {\r\n this.interactiveTourService.startTour(tour);\r\n } else {\r\n return;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\nimport { InteractiveTourService } from './interactive-tour.service';\r\nimport { InteractiveTourComponent } from './interactive-tour.component';\r\nimport { InteractiveTourLoader } from './interactive-tour.loader';\r\n\r\n@NgModule({\r\n declarations: [InteractiveTourComponent],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n IgoLanguageModule\r\n ],\r\n providers: [InteractiveTourService, InteractiveTourLoader],\r\n exports: [InteractiveTourComponent]\r\n})\r\nexport class IgoInteractiveTourModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'keyvalue'\r\n})\r\nexport class KeyValuePipe implements PipeTransform {\r\n transform(value: any, args?: any): any {\r\n const keyValues = [];\r\n Object.getOwnPropertyNames(value).forEach((key: string) =>\r\n keyValues.push({ key, value: value[key] })\r\n );\r\n\r\n return keyValues;\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { KeyValuePipe } from './keyvalue.pipe';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [KeyValuePipe],\r\n exports: [KeyValuePipe]\r\n})\r\nexport class IgoKeyValueModule {\r\n static forRoot(): ModuleWithProviders<IgoKeyValueModule> {\r\n return {\r\n ngModule: IgoKeyValueModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","<h1 mat-dialog-title class=\"mat-typography\">{{ title }}</h1>\r\n\r\n<div mat-dialog-content class=\"mat-typography\">\r\n <ng-container *ngTemplateOutlet=\"loopObject;context:{ obj: data }\"></ng-container>\r\n\r\n <ng-template #loopObject let-obj='obj' let-baseKey='baseKey'>\r\n <ng-container *ngFor=\"let property of obj | keyvalue\">\r\n <ng-container *ngIf=\"ignoreKeys.indexOf(getKey(baseKey, property.key)) === -1\">\r\n\r\n <ng-container *ngIf=\"isObject(property.value); else notObject\">\r\n <ng-container *ngTemplateOutlet=\"loopObject;context:{ obj: property.value, baseKey: getKey(baseKey, property.key) }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #notObject>\r\n <p><span><b>{{getKey(baseKey, property.key)}}</b> : </span><span class=\"propertyValue\" [innerHtml]=\"property.value\"></span></p>\r\n </ng-template>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n</div>\r\n\r\n<div mat-dialog-actions>\r\n <button mat-button color=\"primary\"\r\n (click)=\"dialogRef.close(false)\">\r\n OK\r\n </button>\r\n</div>\r\n","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'igo-json-dialog',\r\n templateUrl: './json-dialog.component.html'\r\n})\r\nexport class JsonDialogComponent {\r\n public title: string;\r\n public data: any;\r\n public ignoreKeys: string[];\r\n\r\n constructor(public dialogRef: MatDialogRef<JsonDialogComponent>) {}\r\n\r\n isObject(val) {\r\n return typeof val === 'object' && !Array.isArray(val);\r\n }\r\n\r\n getKey(baseKey, key) {\r\n return (baseKey ? baseKey + '.' : '') + key;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { JsonDialogComponent } from './json-dialog.component';\r\n\r\n@Injectable()\r\nexport class JsonDialogService {\r\n constructor(private dialog: MatDialog) {}\r\n\r\n public open(title: any, data, ignoreKeys?: string[]): Observable<any> {\r\n const dialogRef = this.dialog.open(JsonDialogComponent, {\r\n disableClose: false\r\n });\r\n dialogRef.componentInstance.data = data;\r\n dialogRef.componentInstance.title = title;\r\n dialogRef.componentInstance.ignoreKeys = ignoreKeys;\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\n\r\nimport { IgoKeyValueModule } from '../keyvalue/keyvalue.module';\r\n\r\nimport { JsonDialogComponent } from './json-dialog.component';\r\nimport { JsonDialogService } from './json-dialog.service';\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatButtonModule, MatDialogModule, IgoKeyValueModule],\r\n exports: [JsonDialogComponent],\r\n declarations: [JsonDialogComponent],\r\n providers: [JsonDialogService]\r\n})\r\nexport class IgoJsonDialogModule {\r\n static forRoot(): ModuleWithProviders<IgoJsonDialogModule> {\r\n return {\r\n ngModule: IgoJsonDialogModule\r\n };\r\n }\r\n}\r\n","import {\r\n Directive,\r\n Input,\r\n Output,\r\n ElementRef,\r\n Renderer2,\r\n HostListener,\r\n EventEmitter\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[igoListItem]'\r\n})\r\nexport class ListItemDirective {\r\n\r\n static focusedCls = 'igo-list-item-focused';\r\n static selectedCls = 'igo-list-item-selected';\r\n static disabledCls = 'igo-list-item-disabled';\r\n\r\n @Input()\r\n get color() {\r\n return this._color;\r\n }\r\n set color(value: string) {\r\n this._color = value;\r\n }\r\n private _color = 'primary';\r\n\r\n @Input()\r\n get focused() {\r\n return this._focused;\r\n }\r\n set focused(value: boolean) {\r\n if (value === this._focused) {\r\n return;\r\n }\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n value ? this.beforeFocus.emit(this) : this.beforeUnfocus.emit(this);\r\n\r\n this._focused = value;\r\n if (this.selected !== true) {\r\n this.toggleFocusedClass();\r\n }\r\n\r\n value ? this.focus.emit(this) : this.unfocus.emit(this);\r\n }\r\n private _focused = false;\r\n\r\n @Input()\r\n get selected() {\r\n return this._selected;\r\n }\r\n set selected(value: boolean) {\r\n if (value === this._selected) {\r\n return;\r\n }\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n value ? this.beforeSelect.emit(this) : this.beforeUnselect.emit(this);\r\n\r\n this._selected = value;\r\n this._focused = value;\r\n this.toggleSelectedClass();\r\n\r\n value ? this.select.emit(this) : this.unselect.emit(this);\r\n }\r\n private _selected = false;\r\n\r\n @Input()\r\n get disabled() {\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n if (value === this._disabled) {\r\n return;\r\n }\r\n\r\n if (value === true) {\r\n this.selected = false;\r\n }\r\n\r\n value ? this.beforeDisable.emit(this) : this.beforeEnable.emit(this);\r\n\r\n this._disabled = value;\r\n this.toggleDisabledClass();\r\n\r\n value ? this.disable.emit(this) : this.enable.emit(this);\r\n }\r\n private _disabled = false;\r\n\r\n @Output() beforeSelect = new EventEmitter<ListItemDirective>();\r\n @Output() beforeFocus = new EventEmitter<ListItemDirective>();\r\n @Output() beforeUnselect = new EventEmitter<ListItemDirective>();\r\n @Output() beforeUnfocus = new EventEmitter<ListItemDirective>();\r\n @Output() beforeDisable = new EventEmitter<ListItemDirective>();\r\n @Output() beforeEnable = new EventEmitter<ListItemDirective>();\r\n @Output() focus = new EventEmitter<ListItemDirective>();\r\n @Output() unfocus = new EventEmitter<ListItemDirective>();\r\n @Output() select = new EventEmitter<ListItemDirective>();\r\n @Output() unselect = new EventEmitter<ListItemDirective>();\r\n @Output() disable = new EventEmitter<ListItemDirective>();\r\n @Output() enable = new EventEmitter<ListItemDirective>();\r\n\r\n @HostListener('click')\r\n onClick() {\r\n this.selected = true;\r\n }\r\n\r\n constructor(public renderer: Renderer2, public el: ElementRef) {}\r\n\r\n getOffsetTop(): number {\r\n const padding = 5;\r\n\r\n return this.el.nativeElement.offsetTop - padding;\r\n }\r\n\r\n private toggleFocusedClass() {\r\n if (this.focused) {\r\n this.addCls(ListItemDirective.focusedCls);\r\n } else {\r\n this.removeCls(ListItemDirective.focusedCls);\r\n }\r\n }\r\n\r\n private toggleSelectedClass() {\r\n if (this.selected) {\r\n this.addCls(ListItemDirective.selectedCls);\r\n this.removeCls(ListItemDirective.focusedCls);\r\n } else {\r\n this.removeCls(ListItemDirective.selectedCls);\r\n }\r\n }\r\n\r\n private toggleDisabledClass() {\r\n if (this.disabled) {\r\n this.addCls(ListItemDirective.disabledCls);\r\n } else {\r\n this.removeCls(ListItemDirective.disabledCls);\r\n }\r\n }\r\n\r\n private addCls(cls: string) {\r\n this.renderer.addClass(this.el.nativeElement, cls);\r\n }\r\n\r\n private removeCls(cls: string) {\r\n this.renderer.removeClass(this.el.nativeElement, cls);\r\n }\r\n}\r\n","import {\r\n Component,\r\n AfterViewInit,\r\n OnInit,\r\n OnDestroy,\r\n Input,\r\n ContentChildren,\r\n HostListener,\r\n ElementRef\r\n} from '@angular/core';\r\nimport type { QueryList } from '@angular/core';\r\n\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { ListItemDirective } from './list-item.directive';\r\n\r\n@Component({\r\n selector: 'igo-list',\r\n templateUrl: './list.component.html',\r\n styleUrls: ['./list.component.scss']\r\n})\r\nexport class ListComponent implements AfterViewInit, OnInit, OnDestroy {\r\n @Input()\r\n get navigation() {\r\n return this._navigation;\r\n }\r\n set navigation(value: boolean) {\r\n this._navigation = value;\r\n }\r\n private _navigation = true;\r\n\r\n @Input()\r\n get selection() {\r\n return this._selection;\r\n }\r\n set selection(value: boolean) {\r\n this._selection = value;\r\n }\r\n private _selection = true;\r\n\r\n get selectedItem() {\r\n return this._selectedItem;\r\n }\r\n set selectedItem(value: ListItemDirective) {\r\n this.focusedItem = value;\r\n this._selectedItem = value;\r\n }\r\n private _selectedItem: ListItemDirective;\r\n\r\n get focusedItem() {\r\n return this._focusedItem;\r\n }\r\n set focusedItem(value: ListItemDirective) {\r\n this._focusedItem = value;\r\n }\r\n private _focusedItem: ListItemDirective;\r\n\r\n private navigationEnabled: boolean;\r\n private listItems$$: Subscription;\r\n private subscriptions: Subscription[] = [];\r\n\r\n @ContentChildren(ListItemDirective, { descendants: true })\r\n listItems: QueryList<ListItemDirective>;\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n @HostListener('document:enter', ['$event'])\r\n handleKeyboardEvent(event: KeyboardEvent) {\r\n // It would be nice to be able to unsubscribe to the event\r\n // completely but until ES7 this won't be possible because\r\n // document events are not observables\r\n if (this.navigationEnabled) {\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n this.navigate(event.key);\r\n } else if (event.key === 'Enter') {\r\n this.select(this.focusedItem);\r\n }\r\n }\r\n }\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n ngOnInit() {\r\n this.enableNavigation();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.listItems.length) {\r\n this.init();\r\n }\r\n\r\n this.listItems$$ = this.listItems.changes.subscribe(\r\n (items: ListItemDirective[]) => this.init()\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.listItems$$.unsubscribe();\r\n }\r\n\r\n focus(item?: ListItemDirective) {\r\n if (!this.selection) {\r\n return;\r\n }\r\n\r\n this.unfocus();\r\n\r\n // We need to make this check because dynamic\r\n // lists such as in the search results list may fail\r\n if (item !== undefined) {\r\n item.focused = true;\r\n }\r\n }\r\n\r\n unfocus() {\r\n if (this.focusedItem !== undefined) {\r\n this.focusedItem.focused = false;\r\n }\r\n\r\n this.focusedItem = undefined;\r\n }\r\n\r\n focusNext() {\r\n const items = this.listItems.toArray();\r\n let item;\r\n const igoList = this.el.nativeElement;\r\n let disabled = true;\r\n let index = this.getFocusedIndex();\r\n if (index === undefined) {\r\n index = -1;\r\n }\r\n\r\n while (disabled && index < items.length - 1) {\r\n index += 1;\r\n item = items[index];\r\n disabled = item.disabled;\r\n }\r\n\r\n if (item !== undefined) {\r\n this.focus(item);\r\n }\r\n\r\n if (!items[index + 1]) {\r\n igoList.scrollTop = igoList.scrollHeight - igoList.clientHeight;\r\n return;\r\n }\r\n\r\n if (item !== undefined && !this.isScrolledIntoView(item.el.nativeElement)) {\r\n igoList.scrollTop =\r\n item.el.nativeElement.offsetTop +\r\n item.el.nativeElement.children[0].offsetHeight -\r\n igoList.clientHeight;\r\n }\r\n }\r\n\r\n focusPrevious() {\r\n const items = this.listItems.toArray();\r\n let item: ListItemDirective;\r\n const igoList = this.el.nativeElement;\r\n let disabled = true;\r\n let index = this.getFocusedIndex();\r\n\r\n while (disabled && index > 0) {\r\n index -= 1;\r\n item = items[index];\r\n disabled = item.disabled;\r\n }\r\n\r\n if (item !== undefined) {\r\n this.focus(item);\r\n }\r\n\r\n if (!items[index - 1]) {\r\n igoList.scrollTop = 0;\r\n return;\r\n }\r\n\r\n if (item !== undefined && !this.isScrolledIntoView(item.el.nativeElement)) {\r\n const padding = 3;\r\n igoList.scrollTop = item.el.nativeElement.offsetTop - padding;\r\n }\r\n }\r\n\r\n select(item?: ListItemDirective) {\r\n if (!this.selection) {\r\n return;\r\n }\r\n\r\n this.unselect();\r\n\r\n if (item !== undefined) {\r\n item.selected = true;\r\n }\r\n }\r\n\r\n unselect() {\r\n this.unfocus();\r\n\r\n if (this.selectedItem !== undefined) {\r\n this.selectedItem.selected = false;\r\n }\r\n\r\n this.selectedItem = undefined;\r\n }\r\n\r\n enableNavigation() {\r\n if (this.navigation) {\r\n this.navigationEnabled = true;\r\n }\r\n }\r\n\r\n disableNavigation() {\r\n this.navigationEnabled = false;\r\n }\r\n\r\n scrollToItem(item: ListItemDirective) {\r\n this.el.nativeElement.scrollTop = item.getOffsetTop();\r\n }\r\n\r\n isScrolledIntoView(elem) {\r\n const docViewTop =\r\n this.el.nativeElement.scrollTop + this.el.nativeElement.offsetTop;\r\n const docViewBottom = docViewTop + this.el.nativeElement.clientHeight;\r\n\r\n const elemTop = elem.offsetTop;\r\n const elemBottom = elemTop + elem.children[0].offsetHeight;\r\n return elemBottom <= docViewBottom && elemTop >= docViewTop;\r\n }\r\n\r\n private init() {\r\n this.subscribe();\r\n\r\n this.selectedItem = this.findSelectedItem();\r\n this.focusedItem = this.findFocusedItem();\r\n\r\n this.enableNavigation();\r\n }\r\n\r\n private subscribe() {\r\n this.unsubscribe();\r\n\r\n this.listItems.toArray().forEach(item => {\r\n this.subscriptions.push(\r\n item.beforeSelect.subscribe((item2: ListItemDirective) =>\r\n this.handleItemBeforeSelect(item2)\r\n )\r\n );\r\n\r\n this.subscriptions.push(\r\n item.select.subscribe((item2: ListItemDirective) =>\r\n this.handleItemSelect(item2)\r\n )\r\n );\r\n\r\n this.subscriptions.push(\r\n item.beforeFocus.subscribe((item2: ListItemDirective) =>\r\n this.handleItemBeforeFocus(item2)\r\n )\r\n );\r\n\r\n this.subscriptions.push(\r\n item.focus.subscribe((item2: ListItemDirective) =>\r\n this.handleItemFocus(item2)\r\n )\r\n );\r\n }, this);\r\n }\r\n\r\n private unsubscribe() {\r\n this.subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\r\n this.subscriptions = [];\r\n }\r\n\r\n private handleItemBeforeFocus(item: ListItemDirective) {\r\n if (item !== this.focusedItem) {\r\n this.unfocus();\r\n }\r\n }\r\n\r\n private handleItemFocus(item: ListItemDirective) {\r\n this.focusedItem = item;\r\n }\r\n\r\n private handleItemBeforeSelect(item: ListItemDirective) {\r\n if (item !== this.focusedItem) {\r\n this.unselect();\r\n }\r\n }\r\n\r\n private handleItemSelect(item: ListItemDirective) {\r\n this.selectedItem = item;\r\n }\r\n\r\n private findSelectedItem() {\r\n return this.listItems.toArray().find(item => item.selected);\r\n }\r\n\r\n private findFocusedItem() {\r\n return this.listItems.toArray().find(item => item.focused);\r\n }\r\n\r\n private getFocusedIndex() {\r\n return this.listItems\r\n .toArray()\r\n .findIndex(item => item === this.focusedItem);\r\n }\r\n\r\n private navigate(key: string) {\r\n switch (key) {\r\n case 'ArrowUp':\r\n this.focusPrevious();\r\n break;\r\n case 'ArrowDown':\r\n this.focusNext();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","<mat-list\r\n igoClickout\r\n [ngClass]=\"{'selectable': selection}\"\r\n (clickout)=\"disableNavigation()\"\r\n (click)=\"enableNavigation()\">\r\n <ng-content></ng-content>\r\n</mat-list>\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\n\r\nimport { IgoClickoutModule } from '../clickout/clickout.module';\r\n\r\nimport { ListItemDirective } from './list-item.directive';\r\nimport { ListComponent } from './list.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatIconModule, MatListModule, IgoClickoutModule],\r\n declarations: [ListItemDirective, ListComponent],\r\n exports: [ListItemDirective, ListComponent]\r\n})\r\nexport class IgoListModule {\r\n static forRoot(): ModuleWithProviders<IgoListModule> {\r\n return {\r\n ngModule: IgoListModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","<div *ngIf=\"withHeader\" class=\"igo-panel-header mat-typography\" title=\"\" [ngClass]=\"{'igo-cursor-pointer': cursorPointer === true}\">\r\n <h3>\r\n <ng-content select=\"[panelLeftButton]\"></ng-content>\r\n <div class=\"igo-panel-title\">\r\n {{ title }}\r\n <ng-content select=\"[panelHeader]\"></ng-content>\r\n </div>\r\n <ng-content select=\"[panelRightButton]\"></ng-content>\r\n </h3>\r\n</div>\r\n<div class=\"igo-panel-content\" title=\"\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import {\r\n Component,\r\n Input,\r\n ChangeDetectionStrategy,\r\n HostBinding\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'igo-panel',\r\n templateUrl: './panel.component.html',\r\n styleUrls: ['./panel.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PanelComponent {\r\n @Input() title: string;\r\n\r\n @Input()\r\n @HostBinding('class.igo-panel-with-header')\r\n get withHeader(): boolean {\r\n return this._withHeader;\r\n }\r\n set withHeader(value: boolean) {\r\n this._withHeader = value;\r\n }\r\n private _withHeader = true;\r\n\r\n @Input() cursorPointer: boolean = false;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PanelComponent } from './panel.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n exports: [PanelComponent],\r\n declarations: [PanelComponent]\r\n})\r\nexport class IgoPanelModule {}\r\n","import { Directive, Self, HostListener, Renderer2 } from '@angular/core';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\n\r\n/**\r\n * <igoSidenavShim> directive.\r\n *\r\n * This directive prevents a material sidenav with mode=\"side\"\r\n * from focusing an element after it's closed\r\n */\r\n@Directive({\r\n selector: '[igoSidenavShim]'\r\n})\r\nexport class SidenavShimDirective {\r\n private focusedElement: HTMLElement;\r\n private blurElement: HTMLElement;\r\n\r\n @HostListener('open', ['$event'])\r\n onOpen() {\r\n this.focusedElement = document.activeElement as HTMLElement;\r\n }\r\n\r\n @HostListener('close-start', ['$event'])\r\n onCloseStart() {\r\n const focusedElement = document.activeElement as HTMLElement;\r\n if (focusedElement !== this.focusedElement) {\r\n this.blurElement = this.focusedElement;\r\n } else {\r\n this.blurElement = undefined;\r\n }\r\n }\r\n\r\n @HostListener('close', ['$event'])\r\n onClose() {\r\n if (this.blurElement) {\r\n this.renderer.selectRootElement(this.blurElement).blur();\r\n }\r\n\r\n this.blurElement = undefined;\r\n this.focusedElement = undefined;\r\n }\r\n\r\n constructor(@Self() component: MatSidenav, private renderer: Renderer2) {}\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { SidenavShimDirective } from './sidenav-shim.directive';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [SidenavShimDirective],\r\n exports: [SidenavShimDirective]\r\n})\r\nexport class IgoSidenavModule {\r\n static forRoot(): ModuleWithProviders<IgoSidenavModule> {\r\n return {\r\n ngModule: IgoSidenavModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'igo-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrls: ['./spinner.component.scss']\r\n})\r\nexport class SpinnerComponent {\r\n\r\n public shown$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n @Input()\r\n set shown(value: boolean) { this.shown$.next(value); }\r\n get shown(): boolean { return this.shown$.value; }\r\n\r\n constructor() {}\r\n\r\n show() {\r\n this.shown = true;\r\n }\r\n\r\n hide() {\r\n this.shown = false;\r\n }\r\n}\r\n","<div\r\n [ngClass]=\"{'igo-spinner-container': true, 'igo-spinner-shown': (shown$ | async)}\">\r\n <div class=\"igo-spinner-background\"></div>\r\n <mat-progress-spinner diameter=\"40\" mode=\"indeterminate\"></mat-progress-spinner>\r\n</div>\r\n","import { Directive, Self, OnInit, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { ActivityService } from '@igo2/core';\r\nimport { SpinnerComponent } from './spinner.component';\r\n\r\n/**\r\n * A directive to bind a SpinnerComponent to the activity service.\r\n * The activity service tracks any HTTP request and this directive\r\n * will display the spinner it's attached to when the activity counter\r\n * is greater than 0.\r\n */\r\n@Directive({\r\n selector: '[igoSpinnerActivity]'\r\n})\r\nexport class SpinnerActivityDirective implements OnInit, OnDestroy {\r\n /**\r\n * Subscription to the activity service counter\r\n */\r\n private counter$$: Subscription;\r\n\r\n constructor(\r\n @Self() private spinner: SpinnerComponent,\r\n private activityService: ActivityService\r\n ) {}\r\n\r\n /**\r\n * Subscribe to the activity service counter and display the spinner\r\n * when it's is greater than 0.\r\n * @internal\r\n */\r\n ngOnInit() {\r\n this.counter$$ = this.activityService.counter$\r\n .pipe(debounceTime(50))\r\n .subscribe((count: number) => {\r\n count > 0 ? this.spinner.show() : this.spinner.hide();\r\n });\r\n }\r\n\r\n /**\r\n * Unsubcribe to the activity service counter.\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.counter$$.unsubscribe();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\nimport { SpinnerActivityDirective } from './spinner-activity.directive';\r\nimport { SpinnerComponent } from './spinner.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatProgressSpinnerModule],\r\n declarations: [SpinnerActivityDirective, SpinnerComponent],\r\n exports: [SpinnerActivityDirective, SpinnerComponent]\r\n})\r\nexport class IgoSpinnerModule {}\r\n","import { DataSource } from '@angular/cdk/table';\r\nimport { MatSort } from '@angular/material/sort';\r\n\r\nimport { Observable, BehaviorSubject, merge } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { ObjectUtils } from '@igo2/utils';\r\n\r\nimport { TableDatabase, TableModel } from './index';\r\n\r\nexport class TableDataSource extends DataSource<any> {\r\n get filter(): string {\r\n return this._filterChange.value;\r\n }\r\n set filter(filter: string) {\r\n this._filterChange.next(filter);\r\n }\r\n private _filterChange = new BehaviorSubject('');\r\n\r\n constructor(\r\n private _database: TableDatabase,\r\n private _model: TableModel,\r\n private _sort: MatSort\r\n ) {\r\n super();\r\n }\r\n\r\n // Connect function called by the table to retrieve one stream containing\r\n // the data to render.\r\n connect(): Observable<any[]> {\r\n if (!this._database) {\r\n return merge([]);\r\n }\r\n const displayDataChanges = [\r\n this._database.dataChange,\r\n this._filterChange,\r\n this._sort.sortChange\r\n ];\r\n\r\n return merge(...displayDataChanges).pipe(\r\n map(() => {\r\n return this.getFilteredData(this._database.data);\r\n }),\r\n map(data => {\r\n return this.getSortedData(data);\r\n })\r\n );\r\n }\r\n\r\n disconnect() {}\r\n\r\n getFilteredData(data): any[] {\r\n if (!this.filter) {\r\n return data;\r\n }\r\n return data.slice().filter((item: any) => {\r\n const searchStr: string = this._model.columns\r\n .filter(c => c.filterable)\r\n .map(c => ObjectUtils.resolve(item, c.name))\r\n .join(' ')\r\n .toLowerCase();\r\n\r\n return searchStr.indexOf(this.filter.toLowerCase()) !== -1;\r\n });\r\n }\r\n\r\n getSortedData(data): any[] {\r\n if (!this._sort.active || this._sort.direction === '') {\r\n return data;\r\n }\r\n\r\n return data.sort((a, b) => {\r\n const propertyA: number | string = ObjectUtils.resolve(\r\n a,\r\n this._sort.active\r\n );\r\n const propertyB: number | string = ObjectUtils.resolve(\r\n b,\r\n this._sort.active\r\n );\r\n\r\n return ObjectUtils.naturalCompare(\r\n propertyB,\r\n propertyA,\r\n this._sort.direction\r\n );\r\n });\r\n }\r\n}\r\n","export enum TableActionColor {\r\n primary,\r\n accent,\r\n warn\r\n}\r\n","<div class='table-box'>\r\n <div class='table-header' *ngIf=\"hasFilterInput\">\r\n <mat-form-field floatPlaceholder='never'>\r\n <input matInput #filter [placeholder]=\"'igo.common.table.filter' | translate\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class='table-container'>\r\n <table mat-table #table [dataSource]='dataSource' matSort>\r\n\r\n <!-- Checkbox Column -->\r\n <ng-container matColumnDef=\"selectionCheckbox\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container [matColumnDef]='column.name' *ngFor='let column of model.columns'>\r\n <ng-container *ngIf='column.sortable'>\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header> {{column.title}} </th>\r\n </ng-container>\r\n\r\n <ng-container *ngIf='!column.sortable'>\r\n <th mat-header-cell *matHeaderCellDef> {{column.title}} </th>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!column.html; else cellHTML\">\r\n <td mat-cell *matCellDef='let row' class=\"mat-cell-text\"\r\n [ngClass]=\"model.cellClassFunc ? model.cellClassFunc(row, column) : {}\">\r\n {{getValue(row, column.name)}}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-template #cellHTML>\r\n <td mat-cell *matCellDef='let row' class=\"mat-cell-text\"\r\n [ngClass]=\"model.cellClassFunc ? model.cellClassFunc(row, column) : {}\"\r\n [innerHTML]=\"getValue(row, column.name)\">\r\n </td>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <!-- Action Column -->\r\n <ng-container matColumnDef='action'>\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef='let row'>\r\n <button *ngFor='let action of model.actions'\r\n mat-mini-fab\r\n [color]='getActionColor(action.color)'\r\n (click)='handleClickAction($event, action, row)'>\r\n <mat-icon svgIcon=\"{{action.icon}}\"></mat-icon>\r\n </button>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef='displayedColumns;'></tr>\r\n <tr mat-row\r\n *matRowDef='let row; columns: displayedColumns;'\r\n [ngClass]=\"model.rowClassFunc ? model.rowClassFunc(row) : {}\"\r\n (click)=\"selection.toggle(row)\">\r\n </tr>\r\n\r\n </table>\r\n </div>\r\n\r\n</div>\r\n","import {\r\n Component,\r\n ElementRef,\r\n ViewChild,\r\n Input,\r\n Output,\r\n OnChanges,\r\n OnInit,\r\n AfterViewInit,\r\n EventEmitter\r\n} from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\n\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { fromEvent } from 'rxjs';\r\n\r\nimport { ObjectUtils } from '@igo2/utils';\r\n\r\nimport { TableModel } from './table-model.interface';\r\nimport { TableDatabase } from './table-database';\r\nimport { TableDataSource } from './table-datasource';\r\nimport { TableActionColor } from './table-action-color.enum';\r\n\r\n@Component({\r\n selector: 'igo-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss']\r\n})\r\nexport class TableComponent implements OnChanges, OnInit, AfterViewInit {\r\n @Input()\r\n get database(): TableDatabase {\r\n return this._database;\r\n }\r\n set database(value: TableDatabase) {\r\n this._database = value;\r\n }\r\n private _database: TableDatabase;\r\n\r\n @Input()\r\n get model(): TableModel {\r\n return this._model;\r\n }\r\n set model(value: TableModel) {\r\n this._model = value;\r\n }\r\n private _model: TableModel;\r\n\r\n @Input()\r\n get hasFilterInput(): boolean {\r\n return this._hasFIlterInput;\r\n }\r\n set hasFilterInput(value: boolean) {\r\n this._hasFIlterInput = value;\r\n }\r\n private _hasFIlterInput = true;\r\n\r\n public displayedColumns;\r\n public dataSource: TableDataSource | null;\r\n public selection = new SelectionModel<any>(true, []);\r\n\r\n @Output()\r\n select = new EventEmitter<{\r\n added: any[];\r\n removed: any[];\r\n source: SelectionModel<any>;\r\n }>();\r\n\r\n @ViewChild('filter') filter: ElementRef;\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n ngOnInit() {\r\n this.dataSource = new TableDataSource(this.database, this.model, this.sort);\r\n\r\n if (this.model) {\r\n this.displayedColumns = this.model.columns\r\n .filter(c => c.displayed !== false)\r\n .map(c => c.name);\r\n\r\n if (this.model.selectionCheckbox) {\r\n this.displayedColumns.unshift('selectionCheckbox');\r\n }\r\n if (this.model.actions && this.model.actions.length) {\r\n this.displayedColumns.push('action');\r\n }\r\n }\r\n\r\n this.selection.changed.subscribe(e => this.select.emit(e));\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.filter) {\r\n fromEvent(this.filter.nativeElement, 'keyup')\r\n .pipe(\r\n debounceTime(150),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(() => {\r\n if (!this.dataSource) {\r\n return;\r\n }\r\n this.dataSource.filter = this.filter.nativeElement.value;\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges(change) {\r\n if (change.database) {\r\n this.dataSource = new TableDataSource(\r\n this.database,\r\n this.model,\r\n this.sort\r\n );\r\n this.selection.clear();\r\n }\r\n }\r\n\r\n getActionColor(colorId: number): string {\r\n return TableActionColor[colorId];\r\n }\r\n\r\n getValue(row, key) {\r\n return ObjectUtils.resolve(row, key);\r\n }\r\n\r\n /** Whether the number of selected elements matches the total number of rows. */\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.database.data.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n this.isAllSelected()\r\n ? this.selection.clear()\r\n : this.database.data.forEach(row => this.selection.select(row));\r\n }\r\n\r\n handleClickAction(event, action, row) {\r\n event.stopPropagation();\r\n action.click(row);\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CdkTableModule } from '@angular/cdk/table';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatTableModule } from '@angular/material/table';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\n\r\nimport { TableComponent } from './table.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CdkTableModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTableModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatSortModule,\r\n MatCheckboxModule,\r\n IgoLanguageModule\r\n ],\r\n declarations: [TableComponent],\r\n exports: [TableComponent]\r\n})\r\nexport class IgoTableModule {\r\n static forRoot(): ModuleWithProviders<IgoTableModule> {\r\n return {\r\n ngModule: IgoTableModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { EntityStore } from '../../entity';\r\nimport { Action } from './action.interfaces';\r\n\r\n/**\r\n * The class is a specialized version of an EntityStore that stores\r\n * actions.\r\n */\r\nexport class ActionStore extends EntityStore<Action> {\r\n\r\n}\r\n","export enum ToolboxColor {\r\n White = 'white',\r\n Grey = 'grey',\r\n Primary = 'primary'\r\n}\r\n","import {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n AnimationTriggerMetadata\r\n} from '@angular/animations';\r\n\r\nexport function toolSlideInOut(\r\n speed = '300ms',\r\n type = 'ease-in-out'\r\n): AnimationTriggerMetadata {\r\n return trigger('toolSlideInOut', [\r\n state(\r\n 'enter',\r\n style({\r\n transform: 'translate3d(0, 0, 0)'\r\n })\r\n ),\r\n transition('void => enter', animate(speed + ' ' + type))\r\n ]);\r\n}\r\n","<igo-actionbar\r\n *ngIf=\"(toolbar$ | async).length > 0\"\r\n [store]=\"actionStore\"\r\n [withIcon]=\"true\"\r\n [withTitle]=\"toolbarWithTitle$ | async\"\r\n [withTooltip]=\"(toolbarWithTitle$ | async) === false\"\r\n [scrollActive]=\"toolbarWithTitle$ | async\"\r\n [horizontal]=\"false\">\r\n</igo-actionbar>\r\n\r\n<div\r\n *ngIf=\"activeTool$ | async as tool\"\r\n class=\"igo-tool-container\"\r\n [ngClass]=\"{'igo-tool-container-with-toolbar': !actionStore.empty, 'igo-tool-container-with-animation': animate}\"\r\n [@toolSlideInOut]=\"animation$ | async\"\r\n (@toolSlideInOut.start)=\"onAnimationStart()\"\r\n (@toolSlideInOut.done)=\"onAnimationComplete()\">\r\n\r\n <igo-dynamic-outlet\r\n [component]=\"tool.component\"\r\n [inputs]=\"getToolInputs(tool)\">\r\n </igo-dynamic-outlet>\r\n\r\n</div>\r\n","import {\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n HostBinding,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\n\r\nimport { Subscription, BehaviorSubject, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { Action, ActionStore } from '../../action';\r\nimport { Tool } from '../shared/tool.interface';\r\nimport { ToolboxColor } from '../shared/toolbox.enums';\r\nimport { Toolbox } from '../shared/toolbox';\r\nimport { toolSlideInOut } from './toolbox.animation';\r\n\r\n@Component({\r\n selector: 'igo-toolbox',\r\n templateUrl: 'toolbox.component.html',\r\n styleUrls: ['toolbox.component.scss'],\r\n animations: [toolSlideInOut()],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ToolboxComponent implements OnInit, OnDestroy {\r\n /**\r\n * Observable of the active tool\r\n */\r\n activeTool$: BehaviorSubject<Tool> = new BehaviorSubject(undefined);\r\n\r\n /**\r\n * Store of actions that toggle tools\r\n */\r\n actionStore: ActionStore = new ActionStore([]);\r\n\r\n /**\r\n * Observable of he anmation state\r\n */\r\n animation$: BehaviorSubject<string> = new BehaviorSubject('none');\r\n\r\n /**\r\n * Observable of the toolbar\r\n */\r\n toolbar$: BehaviorSubject<string[]> = new BehaviorSubject([]);\r\n\r\n /**\r\n * Whether the Toolbar should display actions' titles\r\n */\r\n toolbarWithTitle$: Observable<boolean> = this.activeTool$.pipe(\r\n map((tool: Tool | undefined) => tool === undefined)\r\n );\r\n\r\n /**\r\n * Subscription to the active tool\r\n */\r\n private activeTool$$: Subscription;\r\n\r\n /**\r\n * Subscription to the toolbar\r\n */\r\n private toolbar$$: Subscription;\r\n\r\n /**\r\n * Observable of the ongoing animation. This is useful when\r\n * multiple animations are triggered at once i.e. when the user clicks\r\n * too fast on different actions\r\n */\r\n private animating$ = new BehaviorSubject<boolean>(false);\r\n\r\n /**\r\n * Subscription to the ongoing animation\r\n */\r\n private animating$$: Subscription;\r\n\r\n /**\r\n * Toolbox\r\n */\r\n @Input() toolbox: Toolbox;\r\n\r\n /**\r\n * Whether the toolbox should animate the first tool entering\r\n */\r\n @Input() animate: boolean = false;\r\n\r\n /**\r\n * Color of Toolbox\r\n */\r\n @Input() color: ToolboxColor = ToolboxColor.White;\r\n\r\n /**\r\n * @ignore\r\n */\r\n @HostBinding('class.color-grey')\r\n get classColorGrey() {\r\n return this.color === ToolboxColor.Grey;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n @HostBinding('class.color-primary')\r\n get classColorPrimary() {\r\n return this.color === ToolboxColor.Primary;\r\n }\r\n\r\n /**\r\n * Initialize the toolbar and subscribe to the active tool\r\n * @internal\r\n */\r\n ngOnInit() {\r\n this.toolbar$$ = this.toolbox.toolbar$.subscribe((toolbar: string[]) =>\r\n this.onToolbarChange(toolbar)\r\n );\r\n this.activeTool$$ = this.toolbox.activeTool$.subscribe((tool: Tool) =>\r\n this.onActiveToolChange(tool)\r\n );\r\n }\r\n\r\n /**\r\n * Unsubscribe to the active tool and destroy the action store\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.toolbar$$.unsubscribe();\r\n this.activeTool$$.unsubscribe();\r\n this.actionStore.destroy();\r\n }\r\n\r\n /**\r\n * Track the starting animation\r\n * @internal\r\n */\r\n onAnimationStart() {\r\n this.animating$.next(true);\r\n }\r\n\r\n /**\r\n * Untrack the completed animation\r\n * @internal\r\n */\r\n onAnimationComplete() {\r\n this.animating$.next(false);\r\n }\r\n\r\n /**\r\n * Return a tool's inputs\r\n * @param tool Tool\r\n * @returns Tool inputs\r\n * @internal\r\n */\r\n getToolInputs(tool: Tool): { [key: string]: any } {\r\n return tool.options || {};\r\n }\r\n\r\n /**\r\n * Initialize an action store\r\n * @param toolbar Toolbar\r\n */\r\n private onToolbarChange(toolbar: string[]) {\r\n this.setToolbar(toolbar);\r\n }\r\n\r\n /**\r\n * Activate a tool and trigger an animation or not\r\n * @param tool Tool to activate\r\n */\r\n private onActiveToolChange(tool: Tool) {\r\n if (!this.animate) {\r\n this.setActiveTool(tool);\r\n return;\r\n }\r\n this.onAnimate(() => this.setActiveTool(tool));\r\n }\r\n\r\n /**\r\n * Set the active tool\r\n * @param tool Tool to activate\r\n */\r\n private setActiveTool(tool: Tool | undefined) {\r\n if (tool === undefined) {\r\n this.actionStore.state.updateAll({ active: false });\r\n } else {\r\n const action = this.actionStore.get(tool.name);\r\n if (action !== undefined) {\r\n this.actionStore.state.update(action, { active: true }, true);\r\n }\r\n }\r\n\r\n this.activeTool$.next(tool);\r\n if (this.animate) {\r\n this.animation$.next('enter');\r\n }\r\n }\r\n\r\n /**\r\n * Initialize the toolbar\r\n */\r\n private setToolbar(toolbar: string[]) {\r\n const actions = toolbar.reduce((acc: Action[], toolName: string) => {\r\n const tool = this.toolbox.getTool(toolName);\r\n if (tool === undefined) {\r\n return acc;\r\n }\r\n\r\n acc.push({\r\n id: tool.name,\r\n title: tool.title,\r\n icon: tool.icon,\r\n // iconImage: tool.iconImage,\r\n tooltip: tool.tooltip,\r\n args: [tool, this.toolbox],\r\n handler: (_tool: Tool, _toolbox: Toolbox) => {\r\n _toolbox.activateTool(_tool.name);\r\n },\r\n ngClass: (_tool: Tool, _toolbox: Toolbox) => {\r\n return this.toolbox.activeTool$.pipe(\r\n map((activeTool: Tool) => {\r\n let toolActivated = false;\r\n if (activeTool !== undefined && _tool.name === activeTool.name) {\r\n toolActivated = true;\r\n }\r\n\r\n let childrenToolActivated = false;\r\n if (\r\n activeTool !== undefined &&\r\n _tool.name === activeTool.parent\r\n ) {\r\n childrenToolActivated = true;\r\n }\r\n\r\n return {\r\n 'tool-activated': toolActivated,\r\n 'children-tool-activated': childrenToolActivated\r\n };\r\n })\r\n );\r\n }\r\n });\r\n return acc;\r\n }, []);\r\n this.actionStore.load(actions);\r\n this.toolbar$.next(toolbar);\r\n }\r\n\r\n /**\r\n * Observe the ongoing animation and ignore any incoming animation\r\n * while one is still ongoing.\r\n * @param callback Callback to execute when the animation completes\r\n */\r\n private onAnimate(callback: () => void) {\r\n this.unAnimate();\r\n this.animating$$ = this.animating$.subscribe((animation: boolean) => {\r\n if (!animation) {\r\n callback.call(this);\r\n this.unAnimate();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Stop observing an animation when it's complete\r\n */\r\n private unAnimate() {\r\n if (this.animating$$) {\r\n this.animating$$.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoActionModule } from '../../action/action.module';\r\nimport {\r\n IgoDynamicComponentModule\r\n} from '../../dynamic-component/dynamic-component.module';\r\n\r\nimport { ToolboxComponent } from './toolbox.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoActionModule,\r\n IgoDynamicComponentModule\r\n ],\r\n exports: [\r\n ToolboxComponent\r\n ],\r\n declarations: [\r\n ToolboxComponent\r\n ]\r\n})\r\nexport class IgoToolboxModule {}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { ToolService } from './shared/tool.service';\r\nimport { IgoToolboxModule } from './toolbox/toolbox.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n IgoToolboxModule\r\n ],\r\n declarations: []\r\n})\r\nexport class IgoToolModule {\r\n static forRoot(): ModuleWithProviders<IgoToolModule> {\r\n return {\r\n ngModule: IgoToolModule,\r\n providers: [\r\n ToolService\r\n ]\r\n };\r\n }\r\n}\r\n","<igo-dynamic-outlet\r\n *ngIf=\"widget\"\r\n [component]=\"widget\"\r\n [inputs]=\"inputs\"\r\n [subscribers]=\"getEffectiveSubscribers()\">\r\n</igo-dynamic-outlet>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n OnDestroy\r\n} from '@angular/core';\r\n\r\nimport { DynamicComponent } from '../../dynamic-component';\r\n\r\nimport { WidgetComponent } from '../shared/widget.interfaces';\r\n\r\n/**\r\n * This component dynamically renders a widget. It also subscribes\r\n * to the widget's 'cancel' and 'complete' events and destroys it\r\n * when any of those event is emitted.\r\n */\r\n@Component({\r\n selector: 'igo-widget-outlet',\r\n templateUrl: './widget-outlet.component.html',\r\n styleUrls: ['./widget-outlet.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class WidgetOutletComponent implements OnDestroy {\r\n\r\n /**\r\n * Widget subscribers to 'cancel' and 'complete'\r\n * @internal\r\n */\r\n private baseSubscribers = {\r\n cancel: (event: any) => this.onCancel(event),\r\n complete: (event: any) => this.onComplete(event)\r\n };\r\n\r\n /**\r\n * Widget\r\n */\r\n @Input() widget: DynamicComponent<WidgetComponent>;\r\n\r\n /**\r\n * Widget inputs\r\n */\r\n @Input() inputs: {[key: string]: any};\r\n\r\n /**\r\n * Widget subscribers\r\n */\r\n @Input() subscribers: {[key: string]: (event: any) => void} = {};\r\n\r\n /**\r\n * Event emitted when the widget emits 'complete'\r\n */\r\n @Output() complete = new EventEmitter<any>();\r\n\r\n /**\r\n * Event emitted when the widget emits 'cancel'\r\n */\r\n @Output() cancel = new EventEmitter<any>();\r\n\r\n constructor() {}\r\n\r\n /**\r\n * Destroy the current widget and all it's inner subscriptions\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.destroyWidget();\r\n }\r\n\r\n /**\r\n * Get the effective subscribers. That means a combination of the base\r\n * subscribers and any subscriber given as input.\r\n * @returns Combined subscribers\r\n * @internal\r\n */\r\n getEffectiveSubscribers(): {[key: string]: (event: any) => void} {\r\n const subscribers = Object.assign({}, this.subscribers);\r\n\r\n // Base subscribers\r\n Object.keys(this.baseSubscribers).forEach((key: string) => {\r\n const subscriber = subscribers[key];\r\n const baseSubscriber = this.baseSubscribers[key];\r\n if (subscriber !== undefined) {\r\n subscribers[key] = (event: any) => {\r\n subscriber(event);\r\n baseSubscriber(event);\r\n };\r\n } else {\r\n subscribers[key] = baseSubscriber;\r\n }\r\n });\r\n\r\n return subscribers;\r\n }\r\n\r\n /**\r\n * When the widget emits 'cancel', propagate that event and destroy\r\n * the widget\r\n */\r\n private onCancel(event: any) {\r\n this.cancel.emit(event);\r\n this.destroyWidget();\r\n }\r\n\r\n /**\r\n * When the widget emits 'complete', propagate that event and destroy\r\n * the widget\r\n */\r\n private onComplete(event: any) {\r\n this.complete.emit(event);\r\n this.destroyWidget();\r\n }\r\n\r\n /**\r\n * Destroy the current widget\r\n */\r\n private destroyWidget() {\r\n if (this.widget !== undefined) {\r\n this.widget.destroy();\r\n }\r\n this.widget = undefined;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport {\r\n IgoDynamicComponentModule\r\n} from '../../dynamic-component/dynamic-component.module';\r\n\r\nimport { WidgetOutletComponent } from './widget-outlet.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoDynamicComponentModule\r\n ],\r\n exports: [\r\n WidgetOutletComponent\r\n ],\r\n declarations: [\r\n WidgetOutletComponent\r\n ]\r\n})\r\nexport class IgoWidgetOutletModule {}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { DynamicComponentService } from '../../dynamic-component/shared/dynamic-component.service';\r\n\r\nimport { Widget } from './widget';\r\nimport { WidgetComponent } from './widget.interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WidgetService {\r\n\r\n constructor(private dynamicComponentService: DynamicComponentService) {}\r\n\r\n create(widgetCls: any): Widget {\r\n return this.dynamicComponentService.create(widgetCls as WidgetComponent);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoWidgetOutletModule } from './widget-outlet/widget-outlet.module';\r\nimport { WidgetService } from './shared/widget.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoWidgetOutletModule\r\n ],\r\n exports: [\r\n IgoWidgetOutletModule\r\n ],\r\n declarations: [],\r\n providers: [\r\n WidgetService\r\n ]\r\n})\r\nexport class IgoWidgetModule {}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\n\r\nimport { getEntityTitle } from '../../entity';\r\nimport { Workspace } from '../shared/workspace';\r\nimport { WorkspaceStore } from '../shared/store';\r\n\r\n/**\r\n * Drop list that activates the selected workspace emit an event.\r\n */\r\n@Component({\r\n selector: 'igo-workspace-selector',\r\n templateUrl: './workspace-selector.component.html',\r\n styleUrls: ['./workspace-selector.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class WorkspaceSelectorComponent {\r\n\r\n /**\r\n * Store that holds the available workspaces.\r\n */\r\n @Input() store: WorkspaceStore;\r\n\r\n /**\r\n * Wheither the selector must be disabled or not.\r\n */\r\n @Input() disabled: boolean;\r\n\r\n /**\r\n * Event emitted when an workspace is selected or unselected\r\n */\r\n @Output() selectedChange = new EventEmitter<{\r\n selected: boolean;\r\n value: Workspace;\r\n }>();\r\n\r\n /**\r\n * @internal\r\n */\r\n getWorkspaceTitle(workspace: Workspace): string {\r\n return getEntityTitle(workspace);\r\n }\r\n\r\n /**\r\n * When an workspace is manually selected, select it into the\r\n * store and emit an event.\r\n * @internal\r\n * @param event The selection change event\r\n */\r\n onSelectedChange(event: {value: Workspace}) {\r\n const workspace = event.value;\r\n this.store.activateWorkspace(workspace);\r\n this.selectedChange.emit({selected: true, value: workspace});\r\n }\r\n\r\n}\r\n","<igo-entity-selector\r\n [store]=\"store\"\r\n [multi]=\"false\"\r\n [titleAccessor]=\"getWorkspaceTitle\"\r\n [disabled]=\"disabled\"\r\n (selectedChange)=\"onSelectedChange($event)\">\r\n</igo-entity-selector>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoEntitySelectorModule } from '../../entity/entity-selector/entity-selector.module';\r\nimport { WorkspaceSelectorComponent } from './workspace-selector.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoEntitySelectorModule\r\n ],\r\n exports: [\r\n WorkspaceSelectorComponent\r\n ],\r\n declarations: [\r\n WorkspaceSelectorComponent\r\n ]\r\n})\r\nexport class IgoWorkspaceSelectorModule {}\r\n","<ng-container *ngIf=\"widget$ | async as widget\">\r\n <igo-widget-outlet\r\n [widget]=\"widget\"\r\n [inputs]=\"widgetInputs$ | async\"\r\n [subscribers]=\"widgetSubscribers$ | async\"\r\n (cancel)=\"onWidgetCancel(widget)\"\r\n (complete)=\"onWidgetComplete(widget)\">\r\n </igo-widget-outlet>\r\n</ng-container>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { Widget } from '../../widget';\r\nimport { Workspace } from '../shared/workspace';\r\n\r\n/**\r\n * This component dynamically render an Workspace's active widget.\r\n * It also deactivate that widget whenever the widget's component\r\n * emit the 'cancel' or 'complete' event.\r\n */\r\n@Component({\r\n selector: 'igo-workspace-widget-outlet',\r\n templateUrl: './workspace-widget-outlet.component.html',\r\n styleUrls: ['./workspace-widget-outlet.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class WorkspaceWidgetOutletComponent {\r\n\r\n /**\r\n * Workspace\r\n */\r\n @Input() workspace: Workspace;\r\n\r\n /**\r\n * Event emitted when a widget is deactivate which happens\r\n * when the widget's component emits the 'cancel' or 'complete' event.\r\n */\r\n @Output() deactivateWidget = new EventEmitter<Widget>();\r\n\r\n /**\r\n * Observable of the workspace's active widget\r\n * @internal\r\n */\r\n get widget$(): BehaviorSubject<Widget> { return this.workspace.widget$; }\r\n\r\n /**\r\n * Observable of the workspace's widget inputs\r\n * @internal\r\n */\r\n get widgetInputs$(): BehaviorSubject<{[key: string]: any}> {\r\n return this.workspace.widgetInputs$;\r\n }\r\n\r\n /**\r\n * Observable of the workspace's widget inputs\r\n * @internal\r\n */\r\n get widgetSubscribers$(): BehaviorSubject<{[key: string]: (event: any) => void}> {\r\n return this.workspace.widgetSubscribers$;\r\n }\r\n\r\n constructor() {}\r\n\r\n /**\r\n * When a widget's component emit the 'cancel' event,\r\n * deactivate that widget and emit the 'deactivateWidget' event.\r\n * @param widget Widget\r\n * @internal\r\n */\r\n onWidgetCancel(widget: Widget) {\r\n this.workspace.deactivateWidget();\r\n this.deactivateWidget.emit(widget);\r\n }\r\n\r\n /**\r\n * When a widget's component emit the 'cancel' event,\r\n * deactivate that widget and emit the 'deactivateWidget' event.\r\n * @param widget Widget\r\n * @internal\r\n */\r\n onWidgetComplete(widget: Widget) {\r\n this.workspace.deactivateWidget();\r\n this.deactivateWidget.emit(widget);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoWidgetOutletModule } from '../../widget/widget-outlet/widget-outlet.module';\r\n\r\nimport { WorkspaceWidgetOutletComponent } from './workspace-widget-outlet.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoWidgetOutletModule\r\n ],\r\n exports: [\r\n WorkspaceWidgetOutletComponent\r\n ],\r\n declarations: [\r\n WorkspaceWidgetOutletComponent\r\n ]\r\n})\r\nexport class IgoWorkspaceWidgetOutletModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoWorkspaceSelectorModule } from './workspace-selector/workspace-selector.module';\r\nimport { IgoWorkspaceWidgetOutletModule } from './workspace-widget-outlet/workspace-widget-outlet.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n IgoWorkspaceSelectorModule,\r\n IgoWorkspaceWidgetOutletModule\r\n ],\r\n declarations: []\r\n})\r\nexport class IgoWorkspaceModule {}\r\n","import { BehaviorSubject } from 'rxjs';\r\n\r\nexport class TableDatabase {\r\n /** Stream that emits whenever the data has been modified. */\r\n dataChange: BehaviorSubject<any[]> = new BehaviorSubject<any[]>([]);\r\n get data(): any[] {\r\n return this.dataChange.value;\r\n }\r\n\r\n constructor(data?) {\r\n if (data) {\r\n this.dataChange.next(data);\r\n }\r\n }\r\n\r\n set(data) {\r\n this.dataChange.next(data);\r\n }\r\n\r\n add(item) {\r\n const copiedData = this.data.slice();\r\n copiedData.push(item);\r\n this.set(copiedData);\r\n }\r\n\r\n remove(item) {\r\n const copiedData = this.data.slice();\r\n const index = copiedData.indexOf(item);\r\n copiedData.splice(index, 1);\r\n this.set(copiedData);\r\n }\r\n}\r\n","import { Tool } from './tool.interface';\r\nimport { ToolService } from './tool.service';\r\n\r\nexport function ToolComponent(tool: Partial<Tool>): (cls: any) => any {\r\n return (compType: any) => {\r\n ToolService.register(Object.assign({}, tool, {\r\n component: compType\r\n } as Tool));\r\n };\r\n}\r\n","import { DynamicComponent } from '../../dynamic-component/shared/dynamic-component';\r\nimport { WidgetComponent } from './widget.interfaces';\r\n\r\nexport class Widget extends DynamicComponent<WidgetComponent> {}\r\n","import { EntityStore } from '../../entity';\r\nimport { Workspace } from './workspace';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n/**\r\n * The class is a specialized version of an EntityStore that stores\r\n * workspaces.\r\n */\r\nexport class WorkspaceStore extends EntityStore<Workspace> {\r\n\r\n activeWorkspace$: BehaviorSubject<Workspace> = new BehaviorSubject(undefined);\r\n\r\n /**\r\n * Activate the an workspace workspace and deactivate the one currently active\r\n * @param workspace Workspace\r\n */\r\n activateWorkspace(workspace: Workspace) {\r\n const active = this.activeWorkspace$.value;\r\n if (active !== undefined) {\r\n active.deactivate();\r\n }\r\n\r\n this.deactivateWorkspace();\r\n if (workspace !== undefined) {\r\n this.state.update(workspace, {active: true, selected: true}, true);\r\n this.activeWorkspace$.next(workspace);\r\n workspace.activate();\r\n }\r\n }\r\n\r\n /**\r\n * Deactivate the current workspace\r\n * @param workspace Workspace\r\n */\r\n deactivateWorkspace() {\r\n const active = this.activeWorkspace$.value;\r\n if (active !== undefined) {\r\n active.deactivate();\r\n this.activeWorkspace$.next(undefined);\r\n }\r\n }\r\n\r\n}\r\n","import { Subscription, BehaviorSubject, Subject } from 'rxjs';\r\n\r\nimport { ActionStore } from '../../action';\r\nimport { Widget } from '../../widget';\r\nimport { EntityStore } from '../../entity';\r\n\r\nimport { WorkspaceOptions } from './workspace.interfaces';\r\n\r\n/**\r\n * This class is responsible of managing the relations between\r\n * entities and the actions that consume them. It also defines an\r\n * entity table template that may be used by an entity table component.\r\n */\r\nexport class Workspace<E extends object = object> {\r\n\r\n /**\r\n * Observable of the selected widget\r\n */\r\n readonly widget$ = new BehaviorSubject<Widget>(undefined);\r\n\r\n /**\r\n * Observable of the selected widget's inputs\r\n */\r\n readonly widgetInputs$ = new BehaviorSubject<{[key: string]: any}>({});\r\n\r\n /**\r\n * Observable of the selected widget's subscribers\r\n */\r\n readonly widgetSubscribers$ = new BehaviorSubject<{[key: string]: (event: any) => void}>({});\r\n\r\n /**\r\n * Subscription to the selected entity\r\n */\r\n private entities$$: Subscription;\r\n\r\n /**\r\n * State change that trigger an update of the actions availability\r\n */\r\n private change: Subject<void> = new Subject();\r\n\r\n /**\r\n * Subscription to state changes\r\n */\r\n private change$: Subscription;\r\n\r\n /**\r\n * Workspace id\r\n */\r\n get id(): string { return this.options.id; }\r\n\r\n /**\r\n * Workspace title\r\n */\r\n get title(): string { return this.options.title; }\r\n\r\n /**\r\n * Workspace title\r\n */\r\n get meta(): {[key: string]: any} { return this.options.meta || {}; }\r\n\r\n /**\r\n * Entities store\r\n */\r\n get entityStore(): EntityStore<E> { return this.options.entityStore as EntityStore<E>; }\r\n\r\n /**\r\n * Actions store (some actions activate a widget)\r\n */\r\n get actionStore(): ActionStore { return this.options.actionStore; }\r\n\r\n /**\r\n * Selected widget\r\n */\r\n get widget(): Widget { return this.widget$.value; }\r\n\r\n /**\r\n * Whether a widget is selected\r\n */\r\n get hasWidget(): boolean { return this.widget !== undefined; }\r\n\r\n constructor(protected options: WorkspaceOptions) {}\r\n\r\n /**\r\n * Whether this strategy is active\r\n * @internal\r\n */\r\n get active(): boolean { return this.active$.value; }\r\n readonly active$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n /**\r\n * Activate the workspace. By doing that, the workspace will observe\r\n * the selected entity (from the store) and update the actions availability.\r\n * For example, some actions require an entity to be selected.\r\n */\r\n activate() {\r\n if (this.active === true) {\r\n this.deactivate();\r\n }\r\n this.active$.next(true);\r\n\r\n if (this.entityStore !== undefined) {\r\n this.entities$$ = this.entityStore.stateView.all$()\r\n .subscribe(() => this.onStateChange());\r\n }\r\n\r\n this.change.next();\r\n }\r\n\r\n /**\r\n * Deactivate the workspace. Unsubcribe to the selected entity.\r\n */\r\n deactivate() {\r\n this.active$.next(false);\r\n this.deactivateWidget();\r\n\r\n if (this.entities$$ !== undefined) {\r\n this.entities$$.unsubscribe();\r\n }\r\n if (this.change$ !== undefined) {\r\n this.change$.unsubscribe();\r\n }\r\n }\r\n\r\n /**\r\n * Activate a widget. In itself, activating a widget doesn't render it but,\r\n * if an WorkspaceWidgetOutlet component is bound to this workspace, the widget will\r\n * show up.\r\n * @param widget Widget\r\n * @param inputs Inputs the widget will receive\r\n */\r\n activateWidget(\r\n widget: Widget,\r\n inputs: {[key: string]: any} = {},\r\n subscribers: {[key: string]: (event: any) => void} = {}\r\n ) {\r\n this.widget$.next(widget);\r\n this.widgetInputs$.next(inputs);\r\n this.widgetSubscribers$.next(subscribers);\r\n this.change.next();\r\n }\r\n\r\n /**\r\n * Deactivate a widget.\r\n */\r\n deactivateWidget() {\r\n this.widget$.next(undefined);\r\n this.change.next();\r\n }\r\n\r\n /**\r\n * When the state changes, update the actions availability.\r\n */\r\n private onStateChange() {\r\n this.change.next();\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of common\r\n */\r\n\r\nexport * from './lib/action/action.module';\r\nexport * from './lib/action/actionbar/actionbar.module';\r\nexport * from './lib/backdrop/backdrop.module';\r\nexport * from './lib/badge-icon/badge-icon.module';\r\nexport * from './lib/clickout/clickout.module';\r\nexport * from './lib/clone/clone.module';\r\nexport * from './lib/collapsible/collapsible.module';\r\nexport * from './lib/confirm-dialog/confirm-dialog.module';\r\nexport * from './lib/context-menu/context-menu.module';\r\nexport * from './lib/custom-html/custom-html.module';\r\nexport * from './lib/dom/dom.module';\r\nexport * from './lib/drag-drop/drag-drop.module';\r\nexport * from './lib/dynamic-component/dynamic-component.module';\r\nexport * from './lib/dynamic-component/dynamic-outlet/dynamic-outlet.module';\r\nexport * from './lib/flexible/flexible.module';\r\nexport * from './lib/form/form.module';\r\nexport * from './lib/form/form/form.module';\r\nexport * from './lib/home-button/home-button.module';\r\nexport * from './lib/form/form-field/form-field.module';\r\nexport * from './lib/form/form-group/form-group.module';\r\nexport * from './lib/entity/entity.module';\r\nexport * from './lib/entity/entity-selector/entity-selector.module';\r\nexport * from './lib/entity/entity-table/entity-table.module';\r\nexport * from './lib/entity/entity-table-paginator/entity-table-paginator.module';\r\nexport * from './lib/image/image.module';\r\nexport * from './lib/interactive-tour/interactive-tour.module';\r\nexport * from './lib/json-dialog/json-dialog.module';\r\nexport * from './lib/keyvalue/keyvalue.module';\r\nexport * from './lib/list/list.module';\r\nexport * from './lib/panel/panel.module';\r\nexport * from './lib/sidenav/sidenav.module';\r\nexport * from './lib/spinner/spinner.module';\r\nexport * from './lib/stop-propagation/stop-propagation.module';\r\nexport * from './lib/table/table.module';\r\nexport * from './lib/tool/tool.module';\r\nexport * from './lib/tool/toolbox/toolbox.module';\r\nexport * from './lib/widget/widget.module';\r\nexport * from './lib/widget/widget-outlet/widget-outlet.module';\r\nexport * from './lib/workspace/workspace.module';\r\nexport * from './lib/workspace/workspace-selector/workspace-selector.module';\r\nexport * from './lib/workspace/workspace-widget-outlet/workspace-widget-outlet.module';\r\n\r\nexport * from './lib/action';\r\nexport * from './lib/backdrop';\r\nexport * from './lib/badge-icon';\r\nexport * from './lib/clickout';\r\nexport * from './lib/clone';\r\nexport * from './lib/collapsible';\r\nexport * from './lib/confirm-dialog';\r\nexport * from './lib/context-menu';\r\nexport * from './lib/custom-html';\r\nexport * from './lib/drag-drop';\r\nexport * from './lib/dom';\r\nexport * from './lib/dynamic-component';\r\nexport * from './lib/form';\r\nexport * from './lib/home-button';\r\nexport * from './lib/entity';\r\nexport * from './lib/flexible';\r\nexport * from './lib/image';\r\nexport * from './lib/interactive-tour';\r\nexport * from './lib/json-dialog';\r\nexport * from './lib/keyvalue';\r\nexport * from './lib/list';\r\nexport * from './lib/panel';\r\nexport * from './lib/sidenav';\r\nexport * from './lib/spinner';\r\nexport * from './lib/stop-propagation';\r\nexport * from './lib/table';\r\nexport * from './lib/tool';\r\nexport * from './lib/widget';\r\nexport * from './lib/workspace';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3","_c0","i1.DynamicComponentService","_c2","i1.FormFieldService","i2.InteractiveTourLoader","i1.InteractiveTourService","i2.ToolService","_c1","i1.SpinnerComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"igo2-common.mjs","sources":["../../../packages/common/src/lib/entity/shared/entity.enums.ts","../../../packages/common/src/lib/entity/shared/entity.utils.ts","../../../packages/common/src/lib/entity/shared/state.ts","../../../packages/common/src/lib/entity/shared/view.ts","../../../packages/common/src/lib/entity/shared/store.ts","../../../packages/common/src/lib/entity/shared/watcher.ts","../../../packages/common/src/lib/entity/shared/transaction.ts","../../../packages/common/src/lib/entity/shared/strategies/strategy.ts","../../../packages/common/src/lib/entity/shared/strategies/filter-custom-function.ts","../../../packages/common/src/lib/entity/shared/strategies/filter-selection.ts","../../../packages/common/src/lib/entity/entity-selector/entity-selector.component.html","../../../packages/common/src/lib/entity/entity-selector/entity-selector.component.ts","../../../packages/common/src/lib/stop-propagation/stop-propagation.directive.ts","../../../packages/common/src/lib/entity/entity-table-paginator/entity-table-paginator.component.ts","../../../packages/common/src/lib/entity/entity-table-paginator/entity-table-paginator.component.html","../../../packages/common/src/lib/image/image-error.directive.ts","../../../packages/common/src/lib/entity/entity-table/entity-table-row.directive.ts","../../../packages/common/src/lib/custom-html/custom-html.pipe.ts","../../../packages/common/src/lib/image/secure-image.pipe.ts","../../../packages/common/src/lib/entity/entity-table/entity-table.component.html","../../../packages/common/src/lib/entity/entity-table/entity-table.component.ts","../../../packages/common/src/lib/action/shared/action.enums.ts","../../../packages/common/src/lib/action/actionbar/actionbar-item.component.html","../../../packages/common/src/lib/action/actionbar/actionbar-item.component.ts","../../../packages/common/src/lib/action/actionbar/actionbar.component.html","../../../packages/common/src/lib/action/actionbar/actionbar.component.ts","../../../packages/common/src/lib/action/actionbar/actionbar.module.ts","../../../packages/common/src/lib/action/action.module.ts","../../../packages/common/src/lib/backdrop/backdrop.component.ts","../../../packages/common/src/lib/backdrop/backdrop.component.html","../../../packages/common/src/lib/backdrop/backdrop.module.ts","../../../packages/common/src/lib/badge-icon/badge-icon.directive.ts","../../../packages/common/src/lib/badge-icon/badge-icon.module.ts","../../../packages/common/src/lib/clickout/clickout.directive.ts","../../../packages/common/src/lib/clickout/clickout.module.ts","../../../packages/common/src/lib/clone/clone.pipe.ts","../../../packages/common/src/lib/clone/clone.module.ts","../../../packages/common/src/lib/collapsible/collapse.directive.ts","../../../packages/common/src/lib/collapsible/collapsible.component.ts","../../../packages/common/src/lib/collapsible/collapsible.component.html","../../../packages/common/src/lib/collapsible/collapsible.module.ts","../../../packages/common/src/lib/confirm-dialog/confirm-dialog.component.ts","../../../packages/common/src/lib/confirm-dialog/confirm-dialog.component.html","../../../packages/common/src/lib/confirm-dialog/confirm-dialog.service.ts","../../../packages/common/src/lib/confirm-dialog/confirm-dialog.module.ts","../../../packages/common/src/lib/context-menu/context-menu.directive.ts","../../../packages/common/src/lib/context-menu/long-press.directive.ts","../../../packages/common/src/lib/context-menu/context-menu.module.ts","../../../packages/common/src/lib/custom-html/custom-html.component.ts","../../../packages/common/src/lib/custom-html/custom-html.component.html","../../../packages/common/src/lib/custom-html/custom-html.module.ts","../../../packages/common/src/lib/dom/dom.service.ts","../../../packages/common/src/lib/dom/dom.module.ts","../../../packages/common/src/lib/drag-drop/drag-drop.directive.ts","../../../packages/common/src/lib/drag-drop/drag-drop.module.ts","../../../packages/common/src/lib/dynamic-component/shared/dynamic-component.ts","../../../packages/common/src/lib/dynamic-component/shared/dynamic-component.service.ts","../../../packages/common/src/lib/dynamic-component/dynamic-outlet/dynamic-outlet.component.ts","../../../packages/common/src/lib/dynamic-component/dynamic-outlet/dynamic-outlet.component.html","../../../packages/common/src/lib/dynamic-component/dynamic-outlet/dynamic-outlet.module.ts","../../../packages/common/src/lib/dynamic-component/dynamic-component.module.ts","../../../packages/common/src/lib/flexible/flexible.component.ts","../../../packages/common/src/lib/flexible/flexible.component.html","../../../packages/common/src/lib/flexible/flexible.module.ts","../../../packages/common/src/lib/form/shared/form.utils.ts","../../../packages/common/src/lib/form/form/form.component.ts","../../../packages/common/src/lib/form/form/form.component.html","../../../packages/common/src/lib/form/form/form.module.ts","../../../packages/common/src/lib/form/shared/form.service.ts","../../../packages/common/src/lib/form/shared/form-field.service.ts","../../../packages/common/src/lib/form/shared/form-field-component.ts","../../../packages/common/src/lib/form/form-field/form-field.component.html","../../../packages/common/src/lib/form/form-field/form-field.component.ts","../../../packages/common/src/lib/form/form-field/form-field-select.component.html","../../../packages/common/src/lib/form/form-field/form-field-select.component.ts","../../../packages/common/src/lib/form/form-field/form-field-text.component.html","../../../packages/common/src/lib/form/form-field/form-field-text.component.ts","../../../packages/common/src/lib/form/form-field/form-field-textarea.component.html","../../../packages/common/src/lib/form/form-field/form-field-textarea.component.ts","../../../packages/common/src/lib/form/form-field/form-field.module.ts","../../../packages/common/src/lib/form/form-group/form-group.component.html","../../../packages/common/src/lib/form/form-group/form-group.component.ts","../../../packages/common/src/lib/form/form-group/form-group.module.ts","../../../packages/common/src/lib/form/form.module.ts","../../../packages/common/src/lib/home-button/home-button.component.ts","../../../packages/common/src/lib/home-button/home-button.component.html","../../../packages/common/src/lib/home-button/home-button.module.ts","../../../packages/common/src/lib/entity/entity-selector/entity-selector.module.ts","../../../packages/common/src/lib/stop-propagation/stop-drop-propagation.directive.ts","../../../packages/common/src/lib/stop-propagation/stop-propagation.module.ts","../../../packages/common/src/lib/entity/entity-table-paginator/entity-table-paginator.module.ts","../../../packages/common/src/lib/image/image.module.ts","../../../packages/common/src/lib/entity/entity-table/entity-table.module.ts","../../../packages/common/src/lib/entity/entity.module.ts","../../../packages/common/src/lib/interactive-tour/interactive-tour.loader.ts","../../../packages/common/src/lib/interactive-tour/interactive-tour.service.ts","../../../packages/common/src/lib/tool/shared/toolbox.ts","../../../packages/common/src/lib/tool/shared/tool.service.ts","../../../packages/common/src/lib/interactive-tour/interactive-tour.component.html","../../../packages/common/src/lib/interactive-tour/interactive-tour.component.ts","../../../packages/common/src/lib/interactive-tour/interactive-tour.module.ts","../../../packages/common/src/lib/keyvalue/keyvalue.pipe.ts","../../../packages/common/src/lib/keyvalue/keyvalue.module.ts","../../../packages/common/src/lib/json-dialog/json-dialog.component.html","../../../packages/common/src/lib/json-dialog/json-dialog.component.ts","../../../packages/common/src/lib/json-dialog/json-dialog.service.ts","../../../packages/common/src/lib/json-dialog/json-dialog.module.ts","../../../packages/common/src/lib/list/list-item.directive.ts","../../../packages/common/src/lib/list/list.component.ts","../../../packages/common/src/lib/list/list.component.html","../../../packages/common/src/lib/list/list.module.ts","../../../packages/common/src/lib/panel/panel.component.html","../../../packages/common/src/lib/panel/panel.component.ts","../../../packages/common/src/lib/panel/panel.module.ts","../../../packages/common/src/lib/sidenav/sidenav-shim.directive.ts","../../../packages/common/src/lib/sidenav/sidenav.module.ts","../../../packages/common/src/lib/spinner/spinner.component.ts","../../../packages/common/src/lib/spinner/spinner.component.html","../../../packages/common/src/lib/spinner/spinner-activity.directive.ts","../../../packages/common/src/lib/spinner/spinner.module.ts","../../../packages/common/src/lib/table/table-datasource.ts","../../../packages/common/src/lib/table/table-action-color.enum.ts","../../../packages/common/src/lib/table/table.component.html","../../../packages/common/src/lib/table/table.component.ts","../../../packages/common/src/lib/table/table.module.ts","../../../packages/common/src/lib/action/shared/store.ts","../../../packages/common/src/lib/tool/shared/toolbox.enums.ts","../../../packages/common/src/lib/tool/toolbox/toolbox.animation.ts","../../../packages/common/src/lib/tool/toolbox/toolbox.component.html","../../../packages/common/src/lib/tool/toolbox/toolbox.component.ts","../../../packages/common/src/lib/tool/toolbox/toolbox.module.ts","../../../packages/common/src/lib/tool/tool.module.ts","../../../packages/common/src/lib/widget/widget-outlet/widget-outlet.component.html","../../../packages/common/src/lib/widget/widget-outlet/widget-outlet.component.ts","../../../packages/common/src/lib/widget/widget-outlet/widget-outlet.module.ts","../../../packages/common/src/lib/widget/shared/widget.service.ts","../../../packages/common/src/lib/widget/widget.module.ts","../../../packages/common/src/lib/workspace/workspace-selector/workspace-selector.component.ts","../../../packages/common/src/lib/workspace/workspace-selector/workspace-selector.component.html","../../../packages/common/src/lib/workspace/workspace-selector/workspace-selector.module.ts","../../../packages/common/src/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.component.html","../../../packages/common/src/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.component.ts","../../../packages/common/src/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.module.ts","../../../packages/common/src/lib/workspace/workspace.module.ts","../../../packages/common/src/lib/table/table-database.ts","../../../packages/common/src/lib/tool/shared/tool-component.ts","../../../packages/common/src/lib/widget/shared/widget.ts","../../../packages/common/src/lib/workspace/shared/store.ts","../../../packages/common/src/lib/workspace/shared/workspace.ts","../../../packages/common/src/public_api.ts","../../../packages/common/src/igo2-common.ts"],"sourcesContent":["export enum EntityOperationType {\r\n Insert = 'Insert',\r\n Update = 'Update',\r\n Delete = 'Delete'\r\n}\r\n\r\nexport enum EntityTableColumnRenderer {\r\n Default = 'Default',\r\n HTML = 'HTML',\r\n UnsanitizedHTML = 'UnsanitizedHTML',\r\n Editable = 'Editable',\r\n Icon = 'Icon',\r\n ButtonGroup = 'ButtonGroup'\r\n}\r\n\r\nexport enum EntityTableScrollBehavior {\r\n Auto = 'auto',\r\n Instant = 'instant',\r\n Smooth = 'smooth'\r\n}\r\n\r\nexport enum EntityTableSelectionState {\r\n None = 'None',\r\n All = 'All',\r\n Some = 'Some'\r\n}\r\n","import { t } from 'typy';\r\n\r\nimport { EntityKey } from './entity.interfaces';\r\n\r\n/**\r\n * Get an entity's named property. Nested properties are supported\r\n * with the dotted notation. (i.e 'author.name')\r\n *\r\n * Note: this method is a 'best attempt' at getting an entity's property.\r\n * It fits the most common cases but you might need to explicitely define\r\n * a property getter when using an EntityStore, for example.\r\n * @param entity Entity\r\n * @param property Property name\r\n * @returns Property value\r\n */\r\nexport function getEntityProperty(entity: object, property: string): any {\r\n return t(entity, property).safeObject;\r\n}\r\n\r\n/**\r\n * Get an entity's id. An entity's id can be one of:\r\n * 'entity.meta.id', 'entity.meta.idProperty' or 'entity.id'.\r\n *\r\n * Note: See the note in the 'getEntityProperty' documentation.\r\n * @param entity Entity\r\n * @returns Entity id\r\n */\r\nexport function getEntityId(entity: object): EntityKey {\r\n const meta = (entity as any).meta || {};\r\n return meta.id ? meta.id : getEntityProperty(entity, meta.idProperty || 'id');\r\n}\r\n\r\n/**\r\n * Get an entity's title. An entity's title can be one of:\r\n * 'entity.meta.title', 'entity.meta.titleProperty' or 'entity.title'.\r\n * @param entity Entity\r\n * @returns Entity title\r\n */\r\nexport function getEntityTitle(entity: object): string {\r\n const meta = (entity as any).meta || {};\r\n return meta.title ? meta.title : getEntityProperty(entity, meta.titleProperty || 'title');\r\n}\r\n\r\n/**\r\n * Get an entity's HTML title. An entity's HTML title can be one of:\r\n * 'entity.meta.titleHtml', 'entity.meta.titleHtmlProperty' or 'entity.titleHtml'.\r\n * @param entity Entity\r\n * @returns Entity HTML title\r\n */\r\nexport function getEntityTitleHtml(entity: object): string {\r\n const meta = (entity as any).meta || {};\r\n return meta.titleHtml ? meta.titleHtml : getEntityProperty(entity, meta.titleHtmlProperty || 'titleHtml');\r\n}\r\n\r\n/**\r\n * Get an entity's icon. An entity's icon can be one of:\r\n * 'entity.meta.icon', 'entity.meta.iconProperty' or 'entity.icon'.\r\n * @param entity Entity\r\n * @returns Entity icon\r\n */\r\nexport function getEntityIcon(entity: object): string {\r\n const meta = (entity as any).meta || {};\r\n return meta.icon ? meta.icon : getEntityProperty(entity, meta.iconProperty || 'icon');\r\n}\r\n\r\n/**\r\n * Get an entity's revision.\r\n * @param entity Entity\r\n * @returns Entity revision\r\n */\r\nexport function getEntityRevision(entity: object): number {\r\n const meta = (entity as any).meta || {};\r\n return meta.revision || 0;\r\n}\r\n","import { ReplaySubject } from 'rxjs';\r\n\r\nimport { EntityKey, EntityState, EntityStateManagerOptions } from './entity.interfaces';\r\nimport { getEntityId } from './entity.utils';\r\nimport { EntityStore } from './store';\r\n\r\n/**\r\n * This class is used to track a store's entities state\r\n */\r\nexport class EntityStateManager<E extends object, S extends EntityState = EntityState> {\r\n\r\n /**\r\n * State index\r\n */\r\n readonly index = new Map<EntityKey, S>();\r\n\r\n /**\r\n * Change emitter\r\n */\r\n readonly change$ = new ReplaySubject<void>(1);\r\n\r\n /**\r\n * Method to get an entity's id\r\n */\r\n readonly getKey: (E) => EntityKey;\r\n\r\n private store: EntityStore<object> | undefined;\r\n\r\n constructor(options: EntityStateManagerOptions = {}) {\r\n this.store = options.store ? options.store : undefined;\r\n this.getKey = options.getKey\r\n ? options.getKey\r\n : (this.store ? this.store.getKey : getEntityId);\r\n this.next();\r\n }\r\n\r\n /**\r\n * Clear state\r\n */\r\n clear() {\r\n if (this.index.size > 0) {\r\n this.index.clear();\r\n this.next();\r\n }\r\n }\r\n\r\n /**\r\n * Get an entity's state\r\n * @param entity Entity\r\n * @returns State\r\n */\r\n get(entity: E): S {\r\n return (this.index.get(this.getKey(entity)) || {}) as S;\r\n }\r\n\r\n /**\r\n * Set an entity's state\r\n * @param entity Entity\r\n * @param state State\r\n */\r\n set(entity: E, state: S) {\r\n this.setMany([entity], state);\r\n }\r\n\r\n /**\r\n * Set many entitie's state\r\n * @param entitie Entities\r\n * @param state State\r\n */\r\n setMany(entities: E[], state: S) {\r\n entities.forEach((entity: E) => {\r\n this.index.set(this.getKey(entity), Object.assign({}, state));\r\n });\r\n this.next();\r\n }\r\n\r\n /**\r\n * Set state of all entities that already have a state. This is not\r\n * the same as setting the state of all the store's entities.\r\n * @param state State\r\n */\r\n setAll(state: S) {\r\n Array.from(this.index.keys()).forEach((key: EntityKey) => {\r\n this.index.set(key, Object.assign({}, state));\r\n });\r\n this.next();\r\n }\r\n\r\n /**\r\n * Update an entity's state\r\n * @param entity Entity\r\n * @param changes State changes\r\n */\r\n update(entity: E, changes: Partial<S>, exclusive = false) {\r\n this.updateMany([entity], changes, exclusive);\r\n }\r\n\r\n /**\r\n * Update many entitie's state\r\n * @param entitie Entities\r\n * @param changes State changes\r\n */\r\n updateMany(entities: E[], changes: Partial<S>, exclusive = false) {\r\n if (exclusive === true) {\r\n return this.updateManyExclusive(entities, changes);\r\n }\r\n\r\n entities.forEach((entity: E) => {\r\n const state = Object.assign({}, this.get(entity), changes);\r\n this.index.set(this.getKey(entity), state);\r\n });\r\n this.next();\r\n }\r\n\r\n /**\r\n * Reversee an entity's state\r\n * @param entity Entity\r\n * @param keys State keys to reverse\r\n */\r\n reverse(entity: E, keys: string[]) {\r\n this.reverseMany([entity], keys);\r\n }\r\n\r\n /**\r\n * Reverse many entitie's state\r\n * @param entitie Entities\r\n * @param keys State keys to reverse\r\n */\r\n reverseMany(entities: E[], keys: string[]) {\r\n entities.forEach((entity: E) => {\r\n const currentState = this.get(entity);\r\n const changes = keys.reduce((acc: {[key: string]: boolean}, key: string) => {\r\n acc[key] = currentState[key] || false;\r\n return acc;\r\n }, {}) as Partial<S>;\r\n const reversedChanges = this.reverseChanges(changes);\r\n const state = Object.assign({}, currentState, reversedChanges);\r\n this.index.set(this.getKey(entity), state);\r\n });\r\n this.next();\r\n }\r\n\r\n /**\r\n * Update state of all entities that already have a state. This is not\r\n * the same as updating the state of all the store's entities.\r\n * @param changes State\r\n */\r\n updateAll(changes: Partial<S>) {\r\n const allKeys = this.getAllKeys();\r\n Array.from(allKeys).forEach((key: EntityKey) => {\r\n const state = Object.assign({}, this.index.get(key), changes);\r\n this.index.set(key, state);\r\n });\r\n this.next();\r\n }\r\n\r\n /**\r\n * When some state changes are flagged as 'exclusive', reverse\r\n * the state of all other entities. Changes are reversable when\r\n * they are boolean.\r\n * @param entitie Entities\r\n * @param changes State changes\r\n */\r\n private updateManyExclusive(entities: E[], changes: Partial<S>) {\r\n const reverseChanges = this.reverseChanges(changes);\r\n\r\n const keys = entities.map((entity: E) => this.getKey(entity));\r\n const allKeys = new Set(keys.concat(Array.from(this.getAllKeys())));\r\n allKeys.forEach((key: EntityKey) => {\r\n const state = this.index.get(key) || {} as S;\r\n\r\n if (keys.indexOf(key) >= 0) {\r\n this.index.set(key, Object.assign({}, state, changes));\r\n } else {\r\n // Update only if the reverse changes would modify\r\n // a key already present in the current state\r\n const shouldUpdate = Object.keys(reverseChanges).some((changeKey: string) => {\r\n return state[changeKey] !== undefined &&\r\n state[changeKey] !== reverseChanges[changeKey];\r\n });\r\n if (shouldUpdate === true) {\r\n this.index.set(key, Object.assign({}, state, reverseChanges));\r\n }\r\n }\r\n });\r\n\r\n this.next();\r\n }\r\n\r\n /**\r\n * Compute a 'reversed' version of some state changes.\r\n * Changes are reversable when they are boolean.\r\n * @param changes State changes\r\n * @returns Reversed state changes\r\n */\r\n private reverseChanges(changes: Partial<S>): Partial<S> {\r\n return Object.entries(changes).reduce((reverseChanges: Partial<S>, bunch: [string, any]) => {\r\n const [changeKey, value] = bunch;\r\n if (typeof value === typeof true) {\r\n (reverseChanges as object)[changeKey] = !value;\r\n }\r\n return reverseChanges;\r\n }, {});\r\n }\r\n\r\n /**\r\n * Return all the keys in that state and in the store it's bound to, if any.\r\n * @returns Set of keys\r\n */\r\n private getAllKeys(): Set<EntityKey> {\r\n const storeKeys = this.store ? Array.from(this.store.index.keys()) : [];\r\n return new Set(Array.from(this.index.keys()).concat(storeKeys));\r\n }\r\n\r\n /**\r\n * Emit 'change' event\r\n */\r\n private next() {\r\n this.change$.next();\r\n }\r\n\r\n}\r\n","import { BehaviorSubject, Observable, Subscription, combineLatest } from 'rxjs';\r\nimport { debounceTime, map, skip } from 'rxjs/operators';\r\n\r\nimport { ObjectUtils, uuid } from '@igo2/utils';\r\nimport {\r\n EntityKey,\r\n EntityFilterClause,\r\n EntitySortClause,\r\n EntityJoinClause\r\n} from './entity.interfaces';\r\n\r\n/**\r\n * An entity view streams entities from an observable source. These entities\r\n * can be filtered or sorted without affecting the source. A view can also\r\n * combine data from multiple sources, joined together.\r\n */\r\nexport class EntityView<E extends object, V extends object = E> {\r\n\r\n /**\r\n * Observable stream of values\r\n */\r\n readonly values$ = new BehaviorSubject<V[]>([]);\r\n\r\n /**\r\n * Subscription to the source (and joined sources) values\r\n */\r\n private values$$: Subscription;\r\n\r\n /**\r\n * Whether this view has been lifted\r\n */\r\n private lifted = false;\r\n\r\n /**\r\n * Join clauses\r\n */\r\n private joins: EntityJoinClause[] = [];\r\n\r\n /**\r\n * Observable of a filter clause\r\n */\r\n private filter$ = new BehaviorSubject(undefined);\r\n\r\n /**\r\n * Observable of filter clauses\r\n */\r\n private filters$: BehaviorSubject<EntityFilterClause[]> = new BehaviorSubject([]);\r\n\r\n /**\r\n * Filters index\r\n */\r\n private filterIndex: Map<string, EntityFilterClause> = new Map();\r\n\r\n /**\r\n * Observable of a sort clause\r\n */\r\n private sort$ = new BehaviorSubject(undefined);\r\n\r\n /**\r\n * Method for indexing\r\n */\r\n get getKey(): (V) => EntityKey { return this.getKey$.value; }\r\n private getKey$: BehaviorSubject<(V) => EntityKey> = new BehaviorSubject(undefined);\r\n\r\n /**\r\n * Number of entities\r\n */\r\n readonly count$ = new BehaviorSubject<number>(0);\r\n get count(): number { return this.count$.value; }\r\n\r\n /**\r\n * Whether the store is empty\r\n */\r\n readonly empty$ = new BehaviorSubject<boolean>(true);\r\n get empty(): boolean { return this.empty$.value; }\r\n\r\n /**\r\n * Store index\r\n */\r\n get index(): Map<EntityKey, V> { return this._index; }\r\n private _index: Map<EntityKey, V>;\r\n\r\n constructor(private source$: BehaviorSubject<E[]>) {}\r\n\r\n /**\r\n * Get a value from the view by key\r\n * @param key Key\r\n * @returns Value\r\n */\r\n get(key: EntityKey): V {\r\n if (this._index === undefined) {\r\n throw new Error('This view has no index, therefore, this method is unavailable.');\r\n }\r\n return this.index.get(key);\r\n }\r\n\r\n /**\r\n * Get all the values\r\n * @returns Array of values\r\n */\r\n all(): V[] {\r\n return this.values$.value;\r\n }\r\n\r\n /**\r\n * Observe all the values\r\n * @returns Observable of values\r\n */\r\n all$(): BehaviorSubject<V[]> {\r\n return this.values$;\r\n }\r\n\r\n /**\r\n * Get the first value that respects a criteria\r\n * @returns A value\r\n */\r\n firstBy(clause: EntityFilterClause<V>): V {\r\n return this.values$.value.find(clause);\r\n }\r\n\r\n /**\r\n * Observe the first value that respects a criteria\r\n * @returns Observable of a value\r\n */\r\n firstBy$(clause: EntityFilterClause<V>): Observable<V> {\r\n return this.values$.pipe(map((values: V[]) => values.find(clause)));\r\n }\r\n\r\n /**\r\n * Get all the values that respect a criteria\r\n * @returns Array of values\r\n */\r\n manyBy(clause: EntityFilterClause<V>): V[] {\r\n return this.values$.value.filter(clause);\r\n }\r\n\r\n /**\r\n * Observe all the values that respect a criteria\r\n * @returns Observable of values\r\n */\r\n manyBy$(clause: EntityFilterClause<V>): Observable<V[]> {\r\n return this.values$.pipe(map((values: V[]) => values.filter(clause)));\r\n }\r\n\r\n /**\r\n * Clear the filter and sort and unsubscribe from the source\r\n */\r\n clear() {\r\n this.filter(undefined);\r\n this.sort(undefined);\r\n }\r\n\r\n destroy() {\r\n if (this.values$$ !== undefined) {\r\n this.values$$.unsubscribe();\r\n }\r\n this.clear();\r\n }\r\n\r\n /**\r\n * Create an index\r\n * @param getKey Method to get a value's id\r\n * @returns The view\r\n */\r\n createIndex(getKey: (E) => EntityKey): EntityView<E, V> {\r\n this._index = new Map();\r\n this.getKey$.next(getKey);\r\n return this;\r\n }\r\n\r\n /**\r\n * Join another source to the stream (chainable)\r\n * @param clause Join clause\r\n * @returns The view\r\n */\r\n join(clause: EntityJoinClause): EntityView<E, V> {\r\n if (this.lifted === true) {\r\n throw new Error('This view has already been lifted, therefore, no join is allowed.');\r\n }\r\n this.joins.push(clause);\r\n return this;\r\n }\r\n\r\n /**\r\n * Filter values (chainable)\r\n * @param clause Filter clause\r\n * @returns The view\r\n */\r\n filter(clause: EntityFilterClause<V>): EntityView<E, V> {\r\n this.filter$.next(clause);\r\n return this;\r\n }\r\n\r\n /**\r\n * @param clause Filter clause\r\n * @returns The filter id\r\n */\r\n addFilter(clause: EntityFilterClause<V>): string {\r\n const id = uuid();\r\n this.filterIndex.set(id, clause);\r\n this.filters$.next(Array.from(this.filterIndex.values()));\r\n return id;\r\n }\r\n\r\n /**\r\n * Remove a filter by id\r\n * @param clause Filter clause\r\n */\r\n removeFilter(id: string) {\r\n this.filterIndex.delete(id);\r\n this.filters$.next(Array.from(this.filterIndex.values()));\r\n }\r\n\r\n /**\r\n * Sort values (chainable)\r\n * @param clauseSort clause\r\n * @returns The view\r\n */\r\n sort(clause: EntitySortClause<V>): EntityView<E, V> {\r\n this.sort$.next(clause);\r\n return this;\r\n }\r\n\r\n /**\r\n * Create the final observable\r\n * @returns Observable\r\n */\r\n lift() {\r\n this.lifted = true;\r\n const source$ = this.joins.length > 0 ? this.liftJoinedSource() : this.liftSource();\r\n const observables$ = [\r\n source$,\r\n this.filters$,\r\n this.filter$,\r\n this.sort$,\r\n this.getKey$\r\n ];\r\n\r\n this.values$$ = combineLatest(observables$)\r\n .pipe(skip(1), debounceTime(5))\r\n .subscribe((bunch: any[]) => {\r\n const [_values, filters, filter, sort, getKey] = bunch;\r\n const values = this.processValues(_values, filters, filter, sort);\r\n const generateIndex = getKey !== undefined;\r\n this.setValues(values, generateIndex);\r\n });\r\n }\r\n\r\n /**\r\n * Create the source observable when no joins are defined\r\n * @returns Observable\r\n */\r\n private liftSource(): Observable<V[]> {\r\n return this.source$ as any as Observable<V[]>;\r\n }\r\n\r\n /**\r\n * Create the source observable when joins are defined\r\n * @returns Observable\r\n */\r\n private liftJoinedSource(): Observable<V[]> {\r\n const sources$ = [this.source$, combineLatest(\r\n this.joins.map((join: EntityJoinClause) => join.source)\r\n )];\r\n\r\n return combineLatest(sources$)\r\n .pipe(\r\n map((bunch: [E[], any[]]) => {\r\n const [entities, joinData] = bunch;\r\n return entities.reduce((values: V[], entity: E) => {\r\n const value = this.computeJoinedValue(entity, joinData);\r\n if (value !== undefined) {\r\n values.push(value);\r\n }\r\n return values;\r\n }, []);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Apply joins to a source's entity and return the final value\r\n * @returns Final value\r\n */\r\n private computeJoinedValue(entity: E, joinData: any[]): V | undefined {\r\n let value = entity as Partial<V>;\r\n let joinIndex = 0;\r\n while (value !== undefined && joinIndex < this.joins.length) {\r\n value = this.joins[joinIndex].reduce(value, joinData[joinIndex]);\r\n joinIndex += 1;\r\n }\r\n return value as V;\r\n }\r\n\r\n /**\r\n * Filter and sort values before streaming them\r\n * @param values Values\r\n * @param filters Filter clauses\r\n * @param filter Filter clause\r\n * @param sort Sort clause\r\n * @returns Filtered and sorted values\r\n */\r\n private processValues(\r\n values: V[], filters: EntityFilterClause[], filter: EntityFilterClause, sort: EntitySortClause\r\n ): V[] {\r\n values = values.slice(0);\r\n values = this.filterValues(values, filters.concat([filter]));\r\n values = this.sortValues(values, sort);\r\n return values;\r\n }\r\n\r\n /**\r\n * Filter values\r\n * @param values Values\r\n * @param filters Filter clauses\r\n * @returns Filtered values\r\n */\r\n private filterValues(values: V[], clauses: EntityFilterClause[]): V[] {\r\n if (clauses.length === 0) { return values; }\r\n\r\n return values\r\n .filter((value: V) => {\r\n return clauses\r\n .filter((clause: EntityFilterClause) => clause !== undefined)\r\n .every((clause: EntityFilterClause) => clause(value));\r\n });\r\n }\r\n\r\n /**\r\n * Sort values\r\n * @param values Values\r\n * @param sort Sort clause\r\n * @returns Sorted values\r\n */\r\n private sortValues(values: V[], clause: EntitySortClause): V[] {\r\n if (clause === undefined) { return values; }\r\n return values.sort((v1: V, v2: V) => {\r\n return ObjectUtils.naturalCompare(\r\n clause.valueAccessor(v1),\r\n clause.valueAccessor(v2),\r\n clause.direction,\r\n clause.nullsFirst\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * Set value and optionally generate an index\r\n * @param values Values\r\n * @param generateIndex boolean\r\n */\r\n private setValues(values: V[], generateIndex: boolean) {\r\n if (generateIndex === true) {\r\n this._index = this.generateIndex(values);\r\n }\r\n\r\n this.values$.next(values);\r\n\r\n const count = values.length;\r\n const empty = count === 0;\r\n this.count$.next(count);\r\n this.empty$.next(empty);\r\n }\r\n\r\n /**\r\n * Generate a complete index of all the values\r\n * @param entities Entities\r\n * @returns Index\r\n */\r\n private generateIndex(values: V[]): Map<EntityKey, V> {\r\n const entries = values.map((value: V) => [this.getKey(value), value]);\r\n return new Map(entries as [EntityKey, V][]);\r\n }\r\n}\r\n","import { BehaviorSubject } from 'rxjs';\r\n\r\nimport { EntityStateManager } from './state';\r\nimport { EntityView } from './view';\r\nimport { EntityKey, EntityState, EntityRecord, EntityStoreOptions } from './entity.interfaces';\r\nimport { getEntityId, getEntityProperty } from './entity.utils';\r\nimport { EntityStoreStrategy } from './strategies/strategy';\r\n\r\n/**\r\n * An entity store class holds any number of entities\r\n * as well as their state. It can be observed, filtered and sorted and\r\n * provides methods to insert, update or delete entities.\r\n */\r\nexport class EntityStore<E extends object = object, S extends EntityState = EntityState> {\r\n\r\n /**\r\n * Observable of the raw entities\r\n */\r\n readonly entities$ = new BehaviorSubject<E[]>([]);\r\n\r\n /**\r\n * Number of entities\r\n */\r\n readonly count$ = new BehaviorSubject<number>(0);\r\n get count(): number { return this.count$.value; }\r\n\r\n /**\r\n * Whether the store is empty\r\n */\r\n readonly empty$ = new BehaviorSubject<boolean>(true);\r\n get empty(): boolean { return this.empty$.value; }\r\n\r\n /**\r\n * Entity store state\r\n */\r\n readonly state: EntityStateManager<E, S>;\r\n\r\n /**\r\n * View of all the entities\r\n */\r\n readonly view: EntityView<E>;\r\n\r\n /**\r\n * View of all the entities and their state\r\n */\r\n readonly stateView: EntityView<E, EntityRecord<E, S>>;\r\n\r\n /**\r\n * Method to get an entity's id\r\n */\r\n readonly getKey: (E) => EntityKey;\r\n\r\n /**\r\n * Method to get an entity's named property\r\n */\r\n readonly getProperty: (E, prop: string) => any;\r\n\r\n /**\r\n * Store index\r\n */\r\n get index(): Map<EntityKey, E> { return this._index; }\r\n private _index: Map<EntityKey, E>;\r\n\r\n /**\r\n * Store index\r\n */\r\n get pristine(): boolean { return this._pristine; }\r\n private _pristine: boolean = true;\r\n\r\n /**\r\n * Strategies\r\n */\r\n private strategies: EntityStoreStrategy[] = [];\r\n\r\n constructor(entities: E[], options: EntityStoreOptions = {}) {\r\n this.getKey = options.getKey ? options.getKey : getEntityId;\r\n this.getProperty = options.getProperty ? options.getProperty : getEntityProperty;\r\n\r\n this.state = this.createStateManager();\r\n this.view = this.createDataView();\r\n this.stateView = this.createStateView();\r\n\r\n this.view.lift();\r\n this.stateView.lift();\r\n\r\n if (entities.length > 0) {\r\n this.load(entities);\r\n } else {\r\n this._index = this.generateIndex(entities);\r\n }\r\n }\r\n\r\n /**\r\n * Get an entity from the store by key\r\n * @param key Key\r\n * @returns Entity\r\n */\r\n get(key: EntityKey): E {\r\n return this.index.get(key);\r\n }\r\n\r\n /**\r\n * Get all entities in the store\r\n * @returns Array of entities\r\n */\r\n all(): E[] {\r\n return this.entities$.value;\r\n }\r\n\r\n /**\r\n * Set this store's entities\r\n * @param entities Entities\r\n */\r\n load(entities: E[], pristine: boolean = true) {\r\n this._index = this.generateIndex(entities);\r\n this._pristine = pristine;\r\n this.next();\r\n }\r\n\r\n /**\r\n * Clear the store's entities but keep the state and views intact.\r\n * Views won't return any data but future data will be subject to the\r\n * current views filter and sort\r\n */\r\n softClear() {\r\n if (this.index && this.index.size > 0) {\r\n this.index.clear();\r\n this._pristine = true;\r\n this.next();\r\n } else if (this.index) {\r\n this.updateCount();\r\n }\r\n }\r\n\r\n /**\r\n * Clear the store's entities, state and views\r\n */\r\n clear() {\r\n this.stateView.clear();\r\n this.view.clear();\r\n this.state.clear();\r\n this.softClear();\r\n }\r\n\r\n destroy() {\r\n this.stateView.destroy();\r\n this.view.destroy();\r\n this.clear();\r\n }\r\n\r\n /**\r\n * Insert an entity into the store\r\n * @param entity Entity\r\n */\r\n insert(entity: E) {\r\n this.insertMany([entity]);\r\n }\r\n\r\n /**\r\n * Insert many entities into the store\r\n * @param entities Entities\r\n */\r\n insertMany(entities: E[]) {\r\n entities.forEach((entity: E) => this.index.set(this.getKey(entity), entity));\r\n this._pristine = false;\r\n this.next();\r\n }\r\n\r\n /**\r\n * Update or insert an entity into the store\r\n * @param entity Entity\r\n */\r\n update(entity: E) {\r\n this.updateMany([entity]);\r\n }\r\n\r\n /**\r\n * Update or insert many entities into the store\r\n * @param entities Entities\r\n */\r\n updateMany(entities: E[]) {\r\n entities.forEach((entity: E) => this.index.set(this.getKey(entity), entity));\r\n this._pristine = false;\r\n this.next();\r\n }\r\n\r\n /**\r\n * Delete an entity from the store\r\n * @param entity Entity\r\n */\r\n delete(entity: E) {\r\n this.deleteMany([entity]);\r\n }\r\n\r\n /**\r\n * Delete many entities from the store\r\n * @param entities Entities\r\n */\r\n deleteMany(entities: E[]) {\r\n entities.forEach((entity: E) => this.index.delete(this.getKey(entity)));\r\n this._pristine = false;\r\n this.next();\r\n }\r\n\r\n /**\r\n * Add a strategy to this store\r\n * @param strategy Entity store strategy\r\n * @returns Entity store\r\n */\r\n addStrategy(strategy: EntityStoreStrategy, activate: boolean = false): EntityStore {\r\n const existingStrategy = this.strategies.find((_strategy: EntityStoreStrategy) => {\r\n return strategy.constructor === _strategy.constructor;\r\n });\r\n if (existingStrategy !== undefined) {\r\n throw new Error('A strategy of this type already exists on that EntityStore.');\r\n }\r\n\r\n this.strategies.push(strategy);\r\n strategy.bindStore(this);\r\n\r\n if (activate === true) {\r\n strategy.activate();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Remove a strategy from this store\r\n * @param strategy Entity store strategy\r\n * @returns Entity store\r\n */\r\n removeStrategy(strategy: EntityStoreStrategy): EntityStore {\r\n const index = this.strategies.indexOf(strategy);\r\n if (index >= 0) {\r\n this.strategies.splice(index, 1);\r\n strategy.unbindStore(this);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Return strategies of a given type\r\n * @param type Entity store strategy class\r\n * @returns Strategies\r\n */\r\n getStrategyOfType(type: typeof EntityStoreStrategy): EntityStoreStrategy {\r\n return this.strategies.find((strategy: EntityStoreStrategy) => {\r\n return strategy instanceof type;\r\n });\r\n }\r\n\r\n /**\r\n * Activate strategies of a given type\r\n * @param type Entity store strategy class\r\n */\r\n activateStrategyOfType(type: typeof EntityStoreStrategy) {\r\n const strategy = this.getStrategyOfType(type);\r\n if (strategy !== undefined) {\r\n strategy.activate();\r\n }\r\n }\r\n\r\n /**\r\n * Deactivate strategies of a given type\r\n * @param type Entity store strategy class\r\n */\r\n deactivateStrategyOfType(type: typeof EntityStoreStrategy) {\r\n const strategy = this.getStrategyOfType(type);\r\n if (strategy !== undefined) {\r\n strategy.deactivate();\r\n }\r\n }\r\n\r\n /**\r\n * Generate a complete index of all the entities\r\n * @param entities Entities\r\n * @returns Index\r\n */\r\n private generateIndex(entities: E[]): Map<EntityKey, E> {\r\n const entries = entities.map((entity: E) => [this.getKey(entity), entity]);\r\n return new Map(entries as [EntityKey, E][]);\r\n }\r\n\r\n /**\r\n * Push the index's entities into the entities$ observable\r\n */\r\n private next() {\r\n this.entities$.next(Array.from(this.index.values()));\r\n this.updateCount();\r\n }\r\n\r\n /**\r\n * Update the store's count and empty\r\n */\r\n private updateCount() {\r\n const count = this.index.size;\r\n const empty = count === 0;\r\n this.count$.next(count);\r\n this.empty$.next(empty);\r\n }\r\n\r\n /**\r\n * Create the entity state manager\r\n * @returns EntityStateManager\r\n */\r\n private createStateManager() {\r\n return new EntityStateManager<E, S>({store: this});\r\n }\r\n\r\n /**\r\n * Create the data view\r\n * @returns EntityView<E>\r\n */\r\n private createDataView() {\r\n return new EntityView<E>(this.entities$);\r\n }\r\n\r\n /**\r\n * Create the state view\r\n * @returns EntityView<EntityRecord<E>>\r\n */\r\n private createStateView() {\r\n return new EntityView<E, EntityRecord<E, S>>(this.view.all$())\r\n .join({\r\n source: this.state.change$,\r\n reduce: (entity: E): EntityRecord<E, S> => {\r\n const key = this.getKey(entity);\r\n const state = this.state.get(entity);\r\n const currentRecord = this.stateView.get(key);\r\n\r\n if (\r\n currentRecord !== undefined &&\r\n currentRecord.entity === entity &&\r\n this.statesAreTheSame(currentRecord.state, state)\r\n ) {\r\n return currentRecord;\r\n }\r\n\r\n const revision = currentRecord ? currentRecord.revision + 1 : 1;\r\n const ref = `${key}-${revision}`;\r\n return {entity, state, revision, ref};\r\n }\r\n })\r\n .createIndex((record: EntityRecord<E, S>) => this.getKey(record.entity));\r\n }\r\n\r\n private statesAreTheSame(currentState: S, newState: S): boolean {\r\n if (currentState === newState) {\r\n return true;\r\n }\r\n\r\n const currentStateIsEmpty = Object.keys(currentState).length === 0;\r\n const newStateIsEmpty = Object.keys(newState).length === 0;\r\n return currentStateIsEmpty && newStateIsEmpty;\r\n }\r\n\r\n}\r\n","import { ChangeDetectorRef } from '@angular/core';\r\n\r\nimport { Subscription } from 'rxjs';\r\nimport { skip } from 'rxjs/operators';\r\n\r\nimport { ObjectUtils } from '@igo2/utils';\r\nimport { EntityKey } from './entity.interfaces';\r\n\r\nimport { EntityStore } from './store';\r\n\r\n/**\r\n * This class is used to synchronize a component's changes\r\n * detection with an EntityStore changes. For example, it is frequent\r\n * to have a component subscribe to a store's selected entity and, at the same time,\r\n * this component provides a way to select an entity with, let's say, a click.\r\n *\r\n * This class automatically handles those case and triggers the compoent's\r\n * change detection when needed.\r\n *\r\n * Note: If the component observes the store's stateView, a workspace is\r\n * probably not required because the stateView catches any changes to the\r\n * entities and their state.\r\n */\r\nexport class EntityStoreWatcher<E extends object> {\r\n\r\n /**\r\n * Component change detector\r\n */\r\n private cdRef: ChangeDetectorRef;\r\n\r\n /**\r\n * Entity store\r\n */\r\n private store: EntityStore<E>;\r\n\r\n /**\r\n * Component inner state\r\n */\r\n private innerStateIndex = new Map<EntityKey, {[key: string]: any}>();\r\n\r\n /**\r\n * Subscription to the store's entities\r\n */\r\n private entities$$: Subscription;\r\n\r\n /**\r\n * Subscription to the store's state\r\n */\r\n private state$$: Subscription;\r\n\r\n constructor(store?: EntityStore<E>, cdRef?: ChangeDetectorRef) {\r\n this.setChangeDetector(cdRef);\r\n this.setStore(store);\r\n }\r\n\r\n destroy() {\r\n this.setChangeDetector(undefined);\r\n this.setStore(undefined);\r\n }\r\n\r\n /**\r\n * Bind this workspace to a store and start watching for changes\r\n * @param store Entity store\r\n */\r\n setStore(store?: EntityStore<E>) {\r\n if (store === undefined) {\r\n this.teardownObservers();\r\n this.innerStateIndex.clear();\r\n this.store = undefined;\r\n return;\r\n }\r\n\r\n this.setStore(undefined);\r\n this.store = store;\r\n this.setupObservers();\r\n this.detectChanges();\r\n }\r\n\r\n /**\r\n * Bind this workspace to a component's change detector\r\n * @param cdRef Change detector\r\n */\r\n setChangeDetector(cdRef?: ChangeDetectorRef) {\r\n this.cdRef = cdRef;\r\n }\r\n\r\n /**\r\n * Set up observers on a store's entities and their state\r\n * @param store Entity store\r\n */\r\n private setupObservers() {\r\n this.teardownObservers();\r\n\r\n this.entities$$ = this.store.entities$\r\n .subscribe((entities: E[]) => this.onEntitiesChange(entities));\r\n\r\n this.state$$ = this.store.state.change$\r\n .pipe(skip(1))\r\n .subscribe(() => this.onStateChange());\r\n }\r\n\r\n /**\r\n * Teardown store observers\r\n */\r\n private teardownObservers() {\r\n if (this.entities$$ !== undefined) {\r\n this.entities$$.unsubscribe();\r\n }\r\n if (this.state$$ !== undefined) {\r\n this.state$$.unsubscribe();\r\n }\r\n this.entities$$ = undefined;\r\n this.state$$ = undefined;\r\n }\r\n\r\n /**\r\n * When the entities change, always trigger the changes detection\r\n */\r\n private onEntitiesChange(entities: E[]) {\r\n this.detectChanges();\r\n }\r\n\r\n /**\r\n * When the entities state change, trigger the change detection\r\n * only if the component has not handled these changes yet. For example,\r\n * the component might have initiated thoses changes itself.\r\n */\r\n private onStateChange() {\r\n let changesDetected = false;\r\n const storeIndex = this.store.state.index;\r\n const innerIndex = this.innerStateIndex;\r\n\r\n if (storeIndex.size !== innerIndex.size) {\r\n changesDetected = this.detectChanges();\r\n }\r\n\r\n const storeKeys = Array.from(storeIndex.keys());\r\n for (const key of storeKeys) {\r\n const storeValue = storeIndex.get(key);\r\n const innerValue = innerIndex.get(key);\r\n if (changesDetected === false) {\r\n if (innerValue === undefined) {\r\n changesDetected = this.detectChanges();\r\n } else if (!ObjectUtils.objectsAreEquivalent(storeValue, innerValue)) {\r\n changesDetected = this.detectChanges();\r\n }\r\n }\r\n\r\n this.innerStateIndex.set(key, Object.assign({}, storeValue));\r\n }\r\n }\r\n\r\n /**\r\n * Trigger the change detection of the workspace is bound to a change detector\r\n */\r\n private detectChanges() {\r\n if (this.cdRef !== undefined) {\r\n this.cdRef.detectChanges();\r\n }\r\n return true;\r\n }\r\n\r\n}\r\n","import { Observable, of } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport {\r\n EntityKey,\r\n EntityTransactionOptions,\r\n EntityOperation,\r\n EntityOperationState\r\n} from './entity.interfaces';\r\nimport { EntityStore } from './store';\r\nimport { EntityOperationType } from './entity.enums';\r\nimport { getEntityId } from './entity.utils';\r\n\r\nexport type EntityTransactionCommitHandler = (\r\n transaction: EntityTransaction,\r\n operations: EntityOperation[]\r\n) => Observable<any>;\r\n\r\n/**\r\n * This class holds a reference to the insert, update and delete\r\n * operations performed on a store. This is useful to commit\r\n * these operations in a single pass or to cancel them.\r\n */\r\nexport class EntityTransaction {\r\n\r\n /**\r\n * Store holding the operations on another store\r\n */\r\n readonly operations: EntityStore<EntityOperation, EntityOperationState>;\r\n\r\n /**\r\n * Method to get an entity's id\r\n */\r\n readonly getKey: (E) => EntityKey;\r\n\r\n /**\r\n * Whether there are pending operations\r\n */\r\n get empty$(): BehaviorSubject<boolean> { return this.operations.empty$; }\r\n\r\n /**\r\n * Whether there are pending operations\r\n */\r\n get empty(): boolean { return this.empty$.value; }\r\n\r\n /**\r\n * Whether thise store is in commit phase\r\n */\r\n get inCommitPhase(): boolean { return this.inCommitPhase$.value; }\r\n readonly inCommitPhase$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n constructor(options: EntityTransactionOptions = {}) {\r\n this.getKey = options.getKey ? options.getKey : getEntityId;\r\n this.operations = new EntityStore<EntityOperation, EntityOperationState>([], {\r\n getKey: (operation: EntityOperation) => operation.key\r\n });\r\n }\r\n\r\n destroy() {\r\n this.operations.destroy();\r\n }\r\n\r\n /**\r\n * Insert an entity into a store. If no store is specified, an insert\r\n * operation is still created but the transaction won't add the new\r\n * entity to the store.\r\n * @param current The entity to insert\r\n * @param store Optional: The store to insert the entity into\r\n * @param meta Optional: Any metadata on the operation\r\n */\r\n insert(current: object, store?: EntityStore<object>, meta?: {[key: string]: any}) {\r\n const existingOperation = this.getOperationByEntity(current);\r\n if (existingOperation !== undefined) {\r\n this.removeOperation(existingOperation);\r\n }\r\n\r\n this.doInsert(current, store, meta);\r\n }\r\n\r\n /**\r\n * Update an entity in a store. If no store is specified, an update\r\n * operation is still created but the transaction won't update the\r\n * entity into the store.\r\n * @param previous The entity before update\r\n * @param current The entity after update\r\n * @param store Optional: The store to update the entity into\r\n * @param meta Optional: Any metadata on the operation\r\n */\r\n update(previous: object, current: object, store?: EntityStore<object>, meta?: {[key: string]: any}) {\r\n const existingOperation = this.getOperationByEntity(current);\r\n if (existingOperation !== undefined) {\r\n this.removeOperation(existingOperation);\r\n if (existingOperation.type === EntityOperationType.Insert) {\r\n this.doInsert(current, store, meta);\r\n return;\r\n } else if (existingOperation.type === EntityOperationType.Update) {\r\n previous = existingOperation.previous;\r\n }\r\n }\r\n\r\n this.doUpdate(previous, current, store, meta);\r\n }\r\n\r\n /**\r\n * Delete an entity from a store. If no store is specified, a delete\r\n * operation is still created but the transaction won't remove the\r\n * entity from the store.\r\n * @param previous The entity before delete\r\n * @param store Optional: The store to delete the entity from\r\n * @param meta Optional: Any metadata on the operation\r\n */\r\n delete(previous: object, store?: EntityStore<object>, meta?: {[key: string]: any}) {\r\n const existingOperation = this.getOperationByEntity(previous);\r\n if (existingOperation !== undefined) {\r\n this.removeOperation(existingOperation);\r\n if (existingOperation.type === EntityOperationType.Insert) {\r\n if (store !== undefined) {\r\n store.delete(previous);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n this.doDelete(previous, store, meta);\r\n }\r\n\r\n /**\r\n * Commit operations the transaction. This method doesn't do much\r\n * in itself. The handler it receives does the hard work and it's\r\n * implementation is left to the caller. This method simply wraps\r\n * the handler into an error catching mechanism to update\r\n * the transaction afterward. The caller needs to subscribe to this\r\n * method's output (observable) for the commit to be performed.\r\n * @param operations Operations to commit\r\n * @param handler Function that handles the commit operation\r\n * @returns The handler output (observable)\r\n */\r\n commit(operations: EntityOperation[], handler: EntityTransactionCommitHandler): Observable<any> {\r\n this.inCommitPhase$.next(true);\r\n\r\n return handler(this, operations)\r\n .pipe(\r\n catchError(() => of(new Error())),\r\n tap((result: any) => {\r\n if (result instanceof Error) {\r\n this.onCommitError(operations);\r\n } else {\r\n this.onCommitSuccess(operations);\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Commit all the operations of the transaction.\r\n * @param handler Function that handles the commit operation\r\n * @returns The handler output (observable)\r\n */\r\n commitAll(handler: EntityTransactionCommitHandler): Observable<any> {\r\n const operations = this.getOperationsInCommit();\r\n return this.commit(operations, handler);\r\n }\r\n\r\n /**\r\n * Rollback this transaction\r\n */\r\n rollback() {\r\n this.rollbackOperations(this.operations.all());\r\n }\r\n\r\n /**\r\n * Rollback specific operations\r\n */\r\n rollbackOperations(operations: EntityOperation[]) {\r\n this.checkInCommitPhase();\r\n\r\n const operationsFactory = () => new Map([\r\n [EntityOperationType.Delete, []],\r\n [EntityOperationType.Update, []],\r\n [EntityOperationType.Insert, []]\r\n ]);\r\n const storesOperations = new Map();\r\n\r\n // Group operations by store and by operation type.\r\n // Grouping operations allows us to revert them in bacth, thus, triggering\r\n // observables only one per operation type.\r\n for (const operation of operations) {\r\n const store = operation.store;\r\n if (operation.store === undefined) { continue; }\r\n\r\n let storeOperations = storesOperations.get(store);\r\n if (storeOperations === undefined) {\r\n storeOperations = operationsFactory();\r\n storesOperations.set(store, storeOperations);\r\n }\r\n storeOperations.get(operation.type).push(operation);\r\n }\r\n\r\n Array.from(storesOperations.keys()).forEach((store: EntityStore<object>) => {\r\n const storeOperations = storesOperations.get(store);\r\n\r\n const deletes = storeOperations.get(EntityOperationType.Delete);\r\n store.insertMany(deletes.map((_delete: EntityOperation) => _delete.previous));\r\n\r\n const updates = storeOperations.get(EntityOperationType.Update);\r\n store.updateMany(updates.map((_update: EntityOperation) => _update.previous));\r\n\r\n const inserts = storeOperations.get(EntityOperationType.Insert);\r\n store.deleteMany(inserts.map((_insert: EntityOperation) => _insert.current));\r\n });\r\n\r\n this.operations.deleteMany(operations);\r\n this.inCommitPhase$.next(false);\r\n }\r\n\r\n /**\r\n * Clear this transaction\r\n * @todo Raise event and synchronize stores?\r\n */\r\n clear() {\r\n this.operations.clear();\r\n this.inCommitPhase$.next(false);\r\n }\r\n\r\n /**\r\n * Get any existing operation on an entity\r\n * @param entity Entity\r\n * @returns Either an insert, update or delete operation\r\n */\r\n getOperationByEntity(entity: object): EntityOperation {\r\n return this.operations.get(this.getKey(entity));\r\n }\r\n\r\n /**\r\n * Merge another transaction in this one\r\n * @param transaction Another transaction\r\n */\r\n mergeTransaction(transaction: EntityTransaction) {\r\n this.checkInCommitPhase();\r\n\r\n const operations = transaction.operations.all();\r\n operations.forEach((operation: EntityOperation) => {\r\n this.addOperation(operation);\r\n });\r\n }\r\n\r\n /**\r\n * Create an insert operation and add an entity to the store\r\n * @param current The entity to insert\r\n * @param store Optional: The store to insert the entity into\r\n * @param meta Optional: Any metadata on the operation\r\n */\r\n private doInsert(current: object, store?: EntityStore<object>, meta?: {[key: string]: any}) {\r\n this.addOperation({\r\n key: this.getKey(current),\r\n type: EntityOperationType.Insert,\r\n previous: undefined,\r\n current,\r\n store,\r\n meta\r\n });\r\n\r\n if (store !== undefined) {\r\n store.insert(current);\r\n }\r\n }\r\n\r\n /**\r\n * Create an update operation and update an entity into the store\r\n * @param previous The entity before update\r\n * @param current The entity after update\r\n * @param store Optional: The store to update the entity into\r\n * @param meta Optional: Any metadata on the operation\r\n */\r\n private doUpdate(previous: object, current: object, store?: EntityStore<object>, meta?: {[key: string]: any}) {\r\n this.addOperation({\r\n key: this.getKey(current),\r\n type: EntityOperationType.Update,\r\n previous,\r\n current,\r\n store,\r\n meta\r\n });\r\n\r\n if (store !== undefined) {\r\n store.update(current);\r\n }\r\n }\r\n\r\n /**\r\n * Create a delete operation and delete an entity from the store\r\n * @param previous The entity before delete\r\n * @param store Optional: The store to delete the entity from\r\n * @param meta Optional: Any metadata on the operation\r\n */\r\n private doDelete(previous: object, store?: EntityStore<object>, meta?: {[key: string]: any}) {\r\n this.addOperation({\r\n key: this.getKey(previous),\r\n type: EntityOperationType.Delete,\r\n previous,\r\n current: undefined,\r\n store,\r\n meta\r\n });\r\n\r\n if (store !== undefined) {\r\n store.delete(previous);\r\n }\r\n }\r\n\r\n /**\r\n * Remove committed operations from store\r\n * @param operations Commited operations\r\n * @todo Raise event and synchronize stores?\r\n */\r\n private resolveOperations(operations: EntityOperation[]) {\r\n this.operations.deleteMany(operations);\r\n }\r\n\r\n /**\r\n * On commit success, resolve commited operations and exit commit phase\r\n * @param operations Commited operations\r\n */\r\n private onCommitSuccess(operations: EntityOperation[]) {\r\n this.resolveOperations(operations);\r\n this.inCommitPhase$.next(false);\r\n }\r\n\r\n /**\r\n * On commit error, abort transaction\r\n * @param operations Commited operations\r\n */\r\n private onCommitError(operations: EntityOperation[]) {\r\n this.inCommitPhase$.next(false);\r\n }\r\n\r\n /**\r\n * Add an operation to the operations store\r\n * @param operation Operation to add\r\n */\r\n private addOperation(operation: EntityOperation) {\r\n this.checkInCommitPhase();\r\n\r\n this.operations.insert(operation);\r\n this.operations.state.update(operation, {added: true});\r\n }\r\n\r\n /**\r\n * Remove an operation from the operations store\r\n * @param operation Operation to remove\r\n */\r\n private removeOperation(operation: EntityOperation) {\r\n this.checkInCommitPhase();\r\n\r\n this.operations.delete(operation);\r\n this.operations.state.update(operation, {added: false});\r\n }\r\n\r\n /**\r\n * Get all the operations to commit\r\n * @returns Operations to commit\r\n */\r\n private getOperationsInCommit(): EntityOperation[] {\r\n return this.operations.stateView\r\n .manyBy((value: {entity: EntityOperation, state: EntityOperationState}) => {\r\n return value.state.added === true;\r\n })\r\n .map((value: {entity: EntityOperation, state: EntityOperationState}) => value.entity);\r\n }\r\n\r\n /**\r\n * Check if the transaction is in the commit phase and throw an error if it is\r\n */\r\n private checkInCommitPhase() {\r\n if (this.inCommitPhase === true) {\r\n throw new Error('This transaction is in the commit phase. Cannot complete this operation.');\r\n }\r\n }\r\n}\r\n","import { BehaviorSubject } from 'rxjs';\r\n\r\nimport { EntityStoreStrategyOptions } from '../entity.interfaces';\r\nimport { EntityStore } from '../store';\r\n\r\n/**\r\n * Entity store strategies. They can do pretty much anything during a store's\r\n * lifetime. For example, they may act as triggers when something happens.\r\n * Sharing a strategy is a good idea when multiple strategies would have\r\n * on cancelling effect on each other.\r\n *\r\n * At creation, strategy is inactive and needs to be manually activated.\r\n */\r\nexport class EntityStoreStrategy {\r\n\r\n /**\r\n * Feature store\r\n * @internal\r\n */\r\n protected stores: EntityStore[] = [];\r\n\r\n /**\r\n * Whether this strategy is active\r\n * @internal\r\n */\r\n get active(): boolean { return this.active$.value; }\r\n readonly active$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n constructor(protected options: EntityStoreStrategyOptions = {}) {\r\n this.options = options;\r\n }\r\n\r\n /**\r\n * Activate the strategy. If it's already active, it'll be deactivated\r\n * and activated again.\r\n */\r\n activate() {\r\n if (this.active === true) {\r\n this.doDeactivate();\r\n }\r\n this.active$.next(true);\r\n this.doActivate();\r\n }\r\n\r\n /**\r\n * Activate the strategy. If it's already active, it'll be deactivated\r\n * and activated again.\r\n */\r\n deactivate() {\r\n this.active$.next(false);\r\n this.doDeactivate();\r\n }\r\n\r\n /**\r\n * Bind this strategy to a store\r\n * @param store Feature store\r\n */\r\n bindStore(store: EntityStore) {\r\n if (this.stores.indexOf(store) < 0) {\r\n this.stores.push(store);\r\n }\r\n }\r\n\r\n /**\r\n * Unbind this strategy from store\r\n * @param store Feature store\r\n */\r\n unbindStore(store: EntityStore) {\r\n const index = this.stores.indexOf(store);\r\n if (index >= 0) {\r\n this.stores.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Do the stataegy activation\r\n * @internal\r\n */\r\n protected doActivate() {}\r\n\r\n /**\r\n * Do the strategy deactivation\r\n * @internal\r\n */\r\n protected doDeactivate() {}\r\n\r\n}\r\n","import { EntityStoreStrategyFuncOptions } from '../entity.interfaces';\r\nimport { EntityStore } from '../store';\r\nimport { EntityStoreStrategy } from './strategy';\r\n\r\n/**\r\n * When active, this strategy filters a store's stateView to return\r\n * selected entities only.\r\n */\r\nexport class EntityStoreFilterCustomFuncStrategy extends EntityStoreStrategy {\r\n\r\n constructor(protected options: EntityStoreStrategyFuncOptions) {\r\n super(options);\r\n }\r\n\r\n /**\r\n * Store / filter ids map\r\n */\r\n private filters: Map<EntityStore, string> = new Map();\r\n\r\n /**\r\n * Bind this strategy to a store and start filtering it\r\n * @param store Entity store\r\n */\r\n bindStore(store: EntityStore) {\r\n super.bindStore(store);\r\n if (this.active === true) {\r\n this.filterStore(store);\r\n }\r\n }\r\n\r\n /**\r\n * Unbind this strategy from a store and stop filtering it\r\n * @param store Entity store\r\n */\r\n unbindStore(store: EntityStore) {\r\n super.unbindStore(store);\r\n if (this.active === true) {\r\n this.unfilterStore(store);\r\n }\r\n }\r\n\r\n /**\r\n * Start filtering all stores\r\n * @internal\r\n */\r\n protected doActivate() {\r\n this.filterAll();\r\n }\r\n\r\n /**\r\n * Stop filtering all stores\r\n * @internal\r\n */\r\n protected doDeactivate() {\r\n this.unfilterAll();\r\n }\r\n\r\n /**\r\n * Filter all stores\r\n */\r\n private filterAll() {\r\n this.stores.forEach((store: EntityStore) => this.filterStore(store));\r\n }\r\n\r\n /**\r\n * Unfilter all stores\r\n */\r\n private unfilterAll() {\r\n this.stores.forEach((store: EntityStore) => this.unfilterStore(store));\r\n }\r\n\r\n /**\r\n * Filter a store and add it to the filters map\r\n */\r\n private filterStore(store: EntityStore) {\r\n this.filters.set(store, store.stateView.addFilter(this.options.filterClauseFunc));\r\n }\r\n\r\n /**\r\n * Unfilter a store and delete it from the filters map\r\n */\r\n private unfilterStore(store: EntityStore) {\r\n const filterId = this.filters.get(store);\r\n if (filterId === undefined) {\r\n return;\r\n }\r\n\r\n store.stateView.removeFilter(filterId);\r\n this.filters.delete(store);\r\n }\r\n}\r\n","import { EntityRecord } from '../entity.interfaces';\r\nimport { EntityStore } from '../store';\r\nimport { EntityStoreStrategy } from './strategy';\r\n\r\n/**\r\n * When active, this strategy filters a store's stateView to return\r\n * selected entities only.\r\n */\r\nexport class EntityStoreFilterSelectionStrategy extends EntityStoreStrategy {\r\n\r\n /**\r\n * Store / filter ids map\r\n */\r\n private filters: Map<EntityStore, string> = new Map();\r\n\r\n /**\r\n * Bind this strategy to a store and start filtering it\r\n * @param store Entity store\r\n */\r\n bindStore(store: EntityStore) {\r\n super.bindStore(store);\r\n if (this.active === true) {\r\n this.filterStore(store);\r\n }\r\n }\r\n\r\n /**\r\n * Unbind this strategy from a store and stop filtering it\r\n * @param store Entity store\r\n */\r\n unbindStore(store: EntityStore) {\r\n super.unbindStore(store);\r\n if (this.active === true) {\r\n this.unfilterStore(store);\r\n }\r\n }\r\n\r\n /**\r\n * Start filtering all stores\r\n * @internal\r\n */\r\n protected doActivate() {\r\n this.filterAll();\r\n }\r\n\r\n /**\r\n * Stop filtering all stores\r\n * @internal\r\n */\r\n protected doDeactivate() {\r\n this.unfilterAll();\r\n }\r\n\r\n /**\r\n * Filter all stores\r\n */\r\n private filterAll() {\r\n this.stores.forEach((store: EntityStore) => this.filterStore(store));\r\n }\r\n\r\n /**\r\n * Unfilter all stores\r\n */\r\n private unfilterAll() {\r\n this.stores.forEach((store: EntityStore) => this.unfilterStore(store));\r\n }\r\n\r\n /**\r\n * Filter a store and add it to the filters map\r\n */\r\n private filterStore(store: EntityStore) {\r\n if (this.filters.has(store)) {\r\n return;\r\n }\r\n\r\n const filter = (record: EntityRecord<object>) => {\r\n return record.state.selected === true;\r\n };\r\n this.filters.set(store, store.stateView.addFilter(filter));\r\n }\r\n\r\n /**\r\n * Unfilter a store and delete it from the filters map\r\n */\r\n private unfilterStore(store: EntityStore) {\r\n const filterId = this.filters.get(store);\r\n if (filterId === undefined) {\r\n return;\r\n }\r\n\r\n store.stateView.removeFilter(filterId);\r\n this.filters.delete(store);\r\n }\r\n}\r\n","<mat-form-field class=\"igo-entity-selector\">\r\n <mat-select\r\n [disabled]=\"disabled\"\r\n [value]=\"selected$ | async\"\r\n [multiple]=\"multi\"\r\n [placeholder]=\"placeholder\"\r\n (selectionChange)=\"onSelectionChange($event)\">\r\n <mat-option *ngIf=\"emptyText !== undefined && multi === false\" [value]=\"emptyValue\">{{emptyText}}</mat-option>\r\n <mat-option *ngIf=\"multi === true\" [value]=\"multiSelectValue\">{{multiText$ | async}}</mat-option>\r\n <ng-template ngFor let-record [ngForOf]=\"store.stateView.all$() | async\">\r\n <mat-option [value]=\"record.entity\">\r\n {{titleAccessor(record.entity)}}\r\n </mat-option>\r\n </ng-template>\r\n </mat-select>\r\n</mat-form-field>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n OnInit,\r\n OnDestroy\r\n} from '@angular/core';\r\n\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\n\r\nimport { EntityRecord } from '../shared/entity.interfaces';\r\nimport { EntityStore } from '../shared/store';\r\nimport { EntityStoreWatcher } from '../shared/watcher';\r\nimport { getEntityTitle } from '../shared/entity.utils';\r\n\r\n@Component({\r\n selector: 'igo-entity-selector',\r\n templateUrl: './entity-selector.component.html',\r\n styleUrls: ['./entity-selector.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EntitySelectorComponent implements OnInit, OnDestroy {\r\n\r\n /**\r\n * The selected entity\r\n * @internal\r\n */\r\n readonly selected$ = new BehaviorSubject<object>(undefined);\r\n\r\n /**\r\n * The current multi select option text\r\n * @internal\r\n */\r\n readonly multiText$ = new BehaviorSubject<string>(undefined);\r\n\r\n readonly multiSelectValue = {id: 'IGO_MULTI_SELECT'};\r\n\r\n readonly emptyValue = {id: 'IGO_EMPTY_SELECT'};\r\n\r\n /**\r\n * Subscription to the selected entity\r\n */\r\n private selected$$: Subscription;\r\n\r\n /**\r\n * Store watcher\r\n */\r\n private watcher: EntityStoreWatcher<object>;\r\n\r\n /**\r\n * Entity store\r\n */\r\n @Input() store: EntityStore<object>;\r\n\r\n /**\r\n * Title accessor\r\n */\r\n @Input() titleAccessor: (object) => string = getEntityTitle;\r\n\r\n /**\r\n * Text to display when nothing is selected\r\n */\r\n @Input() emptyText: string = undefined;\r\n\r\n /**\r\n * Wheter selecting many entities is allowed\r\n */\r\n @Input() multi: boolean = false;\r\n\r\n /**\r\n * Text to display for the select all option\r\n */\r\n @Input() multiAllText: string = 'All';\r\n\r\n /**\r\n * Text to display for the select none option\r\n */\r\n @Input() multiNoneText: string = 'None';\r\n\r\n /**\r\n * Field placeholder\r\n */\r\n @Input() placeholder: string;\r\n\r\n /**\r\n * Wheter the selector is disabled or not\r\n */\r\n @Input() disabled: boolean = false;\r\n\r\n /**\r\n * Event emitted when the selection changes\r\n */\r\n @Output() selectedChange = new EventEmitter<{\r\n selected: boolean;\r\n value: object | object[];\r\n }>();\r\n\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n /**\r\n * Create a store watcher and subscribe to the selected entity\r\n * @internal\r\n */\r\n ngOnInit() {\r\n this.watcher = new EntityStoreWatcher(this.store, this.cdRef);\r\n\r\n this.selected$$ = this.store.stateView\r\n .manyBy$((record: EntityRecord<object>) => record.state.selected === true)\r\n .subscribe((records: EntityRecord<object>[]) => {\r\n const entities = records.map((record: EntityRecord<object>) => record.entity);\r\n this.onSelectFromStore(entities);\r\n });\r\n }\r\n\r\n /**\r\n * Unsubscribe to the selected entity and destroy the store watcher\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.watcher.destroy();\r\n this.selected$$.unsubscribe();\r\n }\r\n\r\n /**\r\n * On selection change, update the store's state and emit an event\r\n * @internal\r\n */\r\n onSelectionChange(event: {value: object | undefined}) {\r\n const values = event.value instanceof Array ? event.value : [event.value];\r\n\r\n const multiSelect = values.find((_value: object) => _value === this.multiSelectValue);\r\n let entities = values.filter((_value: object) => _value !== this.multiSelectValue);\r\n if (multiSelect !== undefined) {\r\n if (entities.length === this.store.count) {\r\n entities = [];\r\n } else if (entities.length < this.store.count) {\r\n entities = this.store.all();\r\n }\r\n }\r\n\r\n entities = entities.filter((entity: object) => entity !== this.emptyValue);\r\n if (entities.length === 0) {\r\n this.store.state.updateAll({selected: false});\r\n } else {\r\n this.store.state.updateMany(entities, {selected: true}, true);\r\n }\r\n\r\n const value = this.multi ? entities : event.value;\r\n this.selectedChange.emit({selected: true, value});\r\n }\r\n\r\n private onSelectFromStore(entities: object[]) {\r\n if (this.multi === true) {\r\n this.selected$.next(entities);\r\n } else {\r\n const entity = entities.length > 0 ? entities[0] : undefined;\r\n this.selected$.next(entity);\r\n }\r\n\r\n this.updateMultiToggleWithEntities(entities);\r\n }\r\n\r\n private updateMultiToggleWithEntities(entities: object[]) {\r\n if (entities.length === this.store.count && this.multiText$.value !== this.multiNoneText) {\r\n this.multiText$.next(this.multiNoneText);\r\n } else if (entities.length < this.store.count && this.multiText$.value !== this.multiAllText) {\r\n this.multiText$.next(this.multiAllText);\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[igoStopPropagation]'\r\n})\r\nexport class StopPropagationDirective {\r\n @HostListener('click', ['$event'])\r\n public onClick(event: any): void {\r\n event.stopPropagation();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ChangeDetectionStrategy,\r\n OnChanges,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n OnDestroy\r\n} from '@angular/core';\r\n\r\nimport {\r\n EntityStore\r\n} from '../shared';\r\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { LanguageService, MediaService } from '@igo2/core';\r\nimport { EntityTablePaginatorOptions } from './entity-table-paginator.interface';\r\n\r\n@Component({\r\n selector: 'igo-entity-table-paginator',\r\n templateUrl: './entity-table-paginator.component.html',\r\n styleUrls: ['./entity-table-paginator.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EntityTablePaginatorComponent implements OnChanges, OnDestroy {\r\n\r\n public disabled: boolean = false;\r\n public hidePageSize: boolean = false;\r\n public pageIndex: number = 0;\r\n public pageSize: number = 50;\r\n public pageSizeOptions: number[] = [5, 10, 20, 50, 100, 200];\r\n public showFirstLastButtons: boolean = true;\r\n private count$$: Subscription;\r\n private entitySortChange$$: Subscription;\r\n private paginationLabelTranslation$$: Subscription[] = [];\r\n\r\n @Input() entitySortChange$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n /**\r\n * Entity store\r\n */\r\n @Input() store: EntityStore<object>;\r\n\r\n /**\r\n * Paginator options\r\n */\r\n @Input()\r\n paginatorOptions: EntityTablePaginatorOptions;\r\n\r\n /**\r\n * Event emitted when the paginator changes the page size or page index.\r\n */\r\n @Output() page: EventEmitter<PageEvent>;\r\n\r\n public length: number = 0;\r\n\r\n /**\r\n * Paginator emitted.\r\n */\r\n @Output() paginatorChange: EventEmitter<MatPaginator> = new EventEmitter<MatPaginator>();\r\n\r\n constructor(private languageService: LanguageService, private mediaService: MediaService) {}\r\n\r\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\r\n\r\n ngOnChanges() {\r\n this.unsubscribeAll();\r\n this.count$$ = this.store.stateView.count$.subscribe((count) => {\r\n this.length = count;\r\n this.emitPaginator();\r\n });\r\n this.entitySortChange$$ = this.entitySortChange$.subscribe(() => {\r\n if (this.paginator) {\r\n this.paginator.firstPage();\r\n }\r\n });\r\n this.initPaginatorOptions();\r\n this.translateLabels();\r\n }\r\n\r\n initPaginatorOptions() {\r\n this.disabled = this.paginatorOptions?.disabled || this.disabled;\r\n this.pageIndex = this.paginatorOptions?.pageIndex || this.pageIndex;\r\n this.pageSize = this.paginatorOptions?.pageSize || this.pageSize;\r\n this.pageSizeOptions = this.paginatorOptions?.pageSizeOptions || this.pageSizeOptions;\r\n if (this.mediaService.isMobile()) {\r\n this.showFirstLastButtons = false;\r\n this.hidePageSize = true;\r\n } else {\r\n this.showFirstLastButtons = this.paginatorOptions?.showFirstLastButtons || this.showFirstLastButtons;\r\n this.hidePageSize = this.paginatorOptions?.hidePageSize || this.hidePageSize;\r\n }\r\n }\r\n\r\n translateLabels() {\r\n\r\n this.paginationLabelTranslation$$.push(\r\n this.languageService.translate.get('igo.common.paginator.firstPageLabel').subscribe((label: string) => {\r\n this.paginator._intl.firstPageLabel = label;\r\n }));\r\n\r\n this.paginator._intl.getRangeLabel = this.rangeLabel;\r\n\r\n this.paginationLabelTranslation$$.push(\r\n this.languageService.translate.get('igo.common.paginator.itemsPerPageLabel').subscribe((label: string) => {\r\n this.paginator._intl.itemsPerPageLabel = label;\r\n }));\r\n this.paginationLabelTranslation$$.push(\r\n this.languageService.translate.get('igo.common.paginator.lastPageLabel').subscribe((label: string) => {\r\n this.paginator._intl.lastPageLabel = label;\r\n }));\r\n this.paginationLabelTranslation$$.push(\r\n this.languageService.translate.get('igo.common.paginator.nextPageLabel').subscribe((label: string) => {\r\n this.paginator._intl.nextPageLabel = label;\r\n }));\r\n this.paginationLabelTranslation$$.push(\r\n this.languageService.translate.get('igo.common.paginator.previousPageLabel').subscribe((label: string) => {\r\n this.paginator._intl.previousPageLabel = label;\r\n }));\r\n }\r\n\r\n rangeLabel = (page: number, pageSize: number, length: number) => {\r\n const of: BehaviorSubject<string> = new BehaviorSubject('');\r\n\r\n this.paginationLabelTranslation$$.push(\r\n this.languageService.translate.get('igo.common.paginator.of').subscribe((label: string) => {\r\n of.next(label);\r\n }));\r\n if (length === 0 || pageSize === 0) { return `0 ${of.value} ${length}`; }\r\n length = Math.max(length, 0);\r\n const startIndex = page * pageSize;\r\n const endIndex = startIndex < length ?\r\n Math.min(startIndex + pageSize, length) :\r\n startIndex + pageSize;\r\n return `${startIndex + 1} - ${endIndex} ${of.value} ${length}`;\r\n };\r\n\r\n private unsubscribeAll() {\r\n this.paginationLabelTranslation$$.map(sub => sub.unsubscribe());\r\n if (this.count$$) { this.count$$.unsubscribe(); }\r\n if (this.entitySortChange$$) { this.entitySortChange$$.unsubscribe(); }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribeAll();\r\n }\r\n\r\n emitPaginator() {\r\n this.paginatorChange.emit(this.paginator);\r\n }\r\n}\r\n","<mat-paginator \r\n [disabled]=\"disabled\"\r\n [hidePageSize]=\"hidePageSize\"\r\n [length]=\"length\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n [showFirstLastButtons]=\"showFirstLastButtons\"\r\n (page)=\"emitPaginator()\">\r\n</mat-paginator>\r\n","import {\r\n Directive,\r\n HostListener,\r\n Input,\r\n ElementRef\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[igoImageError]'\r\n})\r\nexport class ImageErrorDirective {\r\n\r\n @Input() errorImageUrl: string = './assets/igo2/common/images/na.png';\r\n @Input() hideError: boolean = false;\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n @HostListener(\"error\", ['$event'])\r\n public onError(event: any): void {\r\n if (this.hideError) {\r\n this.el.nativeElement.style.display = \"none\";\r\n } else {\r\n event.target.src = this.errorImageUrl;\r\n }\r\n\r\n }\r\n\r\n}\r\n","import {\r\n Directive,\r\n Input,\r\n ElementRef,\r\n Renderer2,\r\n EventEmitter,\r\n Output,\r\n HostListener\r\n} from '@angular/core';\r\n\r\nimport scrollIntoView from 'scroll-into-view-if-needed';\r\n\r\nimport { EntityTableScrollBehavior } from '../shared/entity.enums';\r\n\r\n/**\r\n * Directive that handles an entity table row click and selection.\r\n */\r\n@Directive({\r\n selector: '[igoEntityTableRow]'\r\n})\r\nexport class EntityTableRowDirective {\r\n\r\n /**\r\n * Class added to a selected row\r\n */\r\n static selectedCls = 'igo-entity-table-row-selected';\r\n\r\n /**\r\n * Class added to a highlighted row\r\n */\r\n static highlightedCls = 'igo-entity-table-row-highlighted';\r\n\r\n /**\r\n * Whether a row supports selection\r\n */\r\n @Input() selection = false;\r\n\r\n /**\r\n * Whether clicking a row should select it (if selection is true)\r\n */\r\n @Input() selectOnClick: boolean = true;\r\n\r\n /**\r\n * Whether the selected row should be highlighted\r\n */\r\n @Input() highlightSelection: boolean = true;\r\n\r\n /**\r\n * Whether a row is selected\r\n */\r\n @Input()\r\n set selected(value: boolean) {\r\n if (this.selection === false) { return; }\r\n if (value === this._selected) { return; }\r\n\r\n this.toggleSelected(value);\r\n this.scroll();\r\n }\r\n get selected(): boolean {\r\n return this._selected;\r\n }\r\n private _selected = false;\r\n\r\n /**\r\n * Scroll behavior on selection\r\n */\r\n @Input()\r\n scrollBehavior: EntityTableScrollBehavior = EntityTableScrollBehavior.Auto;\r\n\r\n /**\r\n * Event emitted when a row is selected\r\n */\r\n @Output() select = new EventEmitter<EntityTableRowDirective>();\r\n\r\n /**\r\n * When a row is clicked, select it if it's supported\r\n * @ignore\r\n */\r\n @HostListener('click')\r\n onClick() {\r\n if (this.selection === false || this.selectOnClick === false) {\r\n return;\r\n }\r\n\r\n this.toggleSelected(true);\r\n this.select.emit(this);\r\n }\r\n\r\n constructor(private renderer: Renderer2, private el: ElementRef) {}\r\n\r\n /**\r\n * Select a row and add or remove the selected class from it\r\n * @param selected Whether the row should be selected\r\n */\r\n private toggleSelected(selected: boolean) {\r\n this._selected = selected;\r\n if (selected === true) {\r\n this.addCls(EntityTableRowDirective.selectedCls);\r\n if (this.highlightSelection === true) {\r\n this.addCls(EntityTableRowDirective.highlightedCls);\r\n }\r\n } else {\r\n this.removeCls(EntityTableRowDirective.selectedCls);\r\n this.removeCls(EntityTableRowDirective.highlightedCls);\r\n }\r\n }\r\n\r\n /**\r\n * Scroll to the selected row\r\n */\r\n private scroll() {\r\n if (this._selected === true) {\r\n scrollIntoView(this.el.nativeElement, {\r\n scrollMode: 'if-needed',\r\n behavior: 'smooth',\r\n block: 'end',\r\n inline: 'nearest'\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Add the selected CSS class\r\n */\r\n private addCls(cls: string) {\r\n this.renderer.addClass(this.el.nativeElement, cls);\r\n }\r\n\r\n /**\r\n * Remove the selected CSS class\r\n */\r\n private removeCls(cls: string) {\r\n this.renderer.removeClass(this.el.nativeElement, cls);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({ name: 'sanitizeHtml' })\r\nexport class SanitizeHtmlPipe implements PipeTransform {\r\n constructor(private _sanitizer: DomSanitizer) {\r\n }\r\n transform(v: string): SafeHtml {\r\n return this._sanitizer.bypassSecurityTrustHtml(v);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\n\r\nimport { Cacheable } from 'ts-cacheable';\r\nimport { Observable } from 'rxjs';\r\nimport { catchError, switchMap } from 'rxjs/operators';\r\nimport { ConfigService } from '@igo2/core';\r\n\r\n@Pipe({\r\n name: 'secureImage'\r\n})\r\nexport class SecureImagePipe implements PipeTransform {\r\n constructor(\r\n private http: HttpClient,\r\n private configService?: ConfigService) {}\r\n\r\n @Cacheable({\r\n maxCacheCount: 20\r\n })\r\n transform(url: string): Observable<string> {\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'text/plain',\r\n activityInterceptor: 'false',\r\n interceptError: 'false'\r\n });\r\n\r\n const regexDepot = new RegExp(this.configService?.getConfig('depot.url') + '.*?(?=\"|$)');\r\n if (regexDepot.test(url)) {\r\n url = url.match(regexDepot)[0];\r\n }\r\n\r\n return this.http\r\n .get(url, {\r\n headers,\r\n responseType: 'blob'\r\n })\r\n .pipe(\r\n catchError((err) => {\r\n err.error.caught = true;\r\n err.error.toDisplay = false;\r\n throw err;\r\n }),\r\n switchMap((blob) => {\r\n return new Observable((observer) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onloadend = () => {\r\n observer.next(reader.result);\r\n observer.complete();\r\n };\r\n });\r\n })\r\n ) as Observable<string>;\r\n }\r\n}\r\n","<div class=\"table-container\" [ngStyle]=\"{'height': tableHeight}\">\r\n <table mat-table matSort [ngClass]=\"getTableClass()\" [dataSource]=\"dataSource\" [trackBy]=\"getTrackByFunction()\" (matSortChange)=\"onSort($event)\">\r\n <ng-container matColumnDef=\"selectionCheckbox\" class=\"mat-cell-checkbox\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngIf=\"selectMany\">\r\n <ng-container *ngIf=\"selectionState$ | async as selectionState\">\r\n <mat-checkbox (change)=\"onToggleRows($event.checked)\" [checked]=\"selectionState === entityTableSelectionState.All\"\r\n [indeterminate]=\"selectionState === entityTableSelectionState.Some\">\r\n </mat-checkbox>\r\n </ng-container>\r\n </ng-container>\r\n </th>\r\n <td mat-cell *matCellDef=\"let record\">\r\n <mat-checkbox (mousedown)=\"$event.shiftKey ? $event.preventDefault() : null\" (click)=\"$event.shiftKey ?\r\n onShiftToggleRow(!rowIsSelected(record), record, $event) : $event.stopPropagation()\" (change)=\"onToggleRow($event.checked,record)\"\r\n [checked]=\"rowIsSelected(record)\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container [matColumnDef]=\"column.name\" *ngFor=\"let column of template.columns\">\r\n <ng-container *ngIf=\"columnIsSortable(column)\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header [matTooltip]=\"column.tooltip ? column.tooltip : undefined\">\r\n {{column.title}}\r\n </th>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!columnIsSortable(column)\">\r\n <th mat-header-cell *matHeaderCellDef [matTooltip]=\"column.tooltip ? column.tooltip : undefined\">\r\n {{column.title}}\r\n </th>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getColumnRenderer(column) as columnRenderer\">\r\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.Default\">\r\n <ng-container *matCellDef=\"let record\">\r\n <td mat-cell class=\"mat-cell-text\" *ngIf=\"!isUrl(getValue(record, column));else isAnUrlDefault\" [ngClass]=\"getCellClass(record, column)\">\r\n {{getValue(record, column)}}\r\n </td>\r\n <ng-template #isAnUrlDefault>\r\n <td mat-cell class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\r\n <a href=\"{{getValue(record, column)}}\" target='_blank' rel=\"noopener noreferrer\" (click)=\"$event.stopPropagation()\">\r\n <img igoImageError *ngIf=\"isImg(getValue(record, column));else notImg\" src=\"{{(getValue(record, column) | secureImage) | async}}\" width=\"50\" heigth=\"auto\">\r\n <ng-template #notImg><span>{{\r\n 'igo.common.entity-table.targetHtmlUrl' | translate }}\r\n </span></ng-template>\r\n </a>\r\n </td>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.HTML\">\r\n <ng-container *matCellDef=\"let record\">\r\n <td mat-cell class=\"mat-cell-text\" *ngIf=\"!isUrl(getValue(record, column));else isAnUrlHTML\" [ngClass]=\"getCellClass(record, column)\"\r\n [innerHTML]=\"getValue(record, column)\">\r\n </td>\r\n <ng-template #isAnUrlHTML>\r\n <td mat-cell class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\r\n <a href=\"{{getValue(record, column)}}\" target='_blank' rel=\"noopener noreferrer\" (click)=\"$event.stopPropagation()\">\r\n <img igoImageError *ngIf=\"isImg(getValue(record, column));else notImg\" src=\"{{(getValue(record, column) | secureImage) | async}}\" width=\"50\" heigth=\"auto\">\r\n <ng-template #notImg><span>{{ 'igo.geo.targetHtmlUrl' |\r\n translate }} </span></ng-template>\r\n </a>\r\n </td>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.UnsanitizedHTML\">\r\n <ng-container *matCellDef=\"let record\">\r\n <td mat-cell class=\"mat-cell-text edition\" [formGroup]=\"formGroup\" *ngIf=\"isEdition(record);else isUnsanitizedHTML\"\r\n [ngClass]=\"getCellClass(record, column)\">\r\n <div class=\"date-picker\" *ngIf=\"column.type === 'date'\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <input matInput [matDatepicker]=\"picker\" [formControlName]=\"column.name\" value=\"{{getValue(record, column)}}\"\r\n (dateChange)=\"onDateChange(column.name, record, $event)\">\r\n <mat-datepicker #picker></mat-datepicker>\r\n </div>\r\n <input matInput type=\"time\" *ngIf=\"column.type === 'time'\" [formControlName]=\"column.name\" step=\"900\" (focus)=\"column.onFocus($event)\"\r\n (keypress)=\"column.onChange($event)\" (blur)=\"column.onBlur($event)\">\r\n <input matInput type=\"number\" class=\"class_number_edition\" *ngIf=\"column.type === 'number'\" [formControlName]=\"column.name\" step=\"{{column.step}}\"\r\n value=\"{{getValue(record,column)}}\" (input)=\"onValueChange(column.name, record, $event)\"\r\n readonly=\"{{getValidationAttributeValue(column, 'readonly')}}\" required=\"{{getValidationAttributeValue(column, 'mandatory')}}\"\r\n min=\"{{getValidationAttributeValue(column, 'minValue')}}\" max=\"{{getValidationAttributeValue(column, 'maxValue')}}\">\r\n <input matInput type=\"text\" *ngIf=\"!column.type || column.type ==='string'\" [formControlName]=\"column.name\"\r\n value=\"{{getValue(record, column)}}\" (input)=\"onValueChange(column.name, record, $event)\"\r\n readonly=\"{{getValidationAttributeValue(column, 'readonly')}}\" required=\"{{getValidationAttributeValue(column, 'mandatory')}}\">\r\n <mat-checkbox *ngIf=\"column.type === 'boolean'\" [formControlName]=\"column.name\" [checked]=\"getValue(record,column)\"\r\n (change)=\"onBooleanValueChange(column.name, record,$event)\"></mat-checkbox>\r\n <mat-select *ngIf=\"column.type === 'list'\" required=\"{{getValidationAttributeValue(column, 'mandatory')}}\"\r\n [formControlName]=\"column.name\" [multiple]=\"column.multiple\" (selectionChange)=\"onSelectValueChange(column.name, record, $event)\"\r\n [value]=\"getValue(record, column)\">\r\n <mat-option *ngFor=\"let option of column.domainValues\" [value]=\"option.id\" [disabled]=\"option.disabled\">\r\n {{ option.value }}\r\n </mat-option>\r\n </mat-select>\r\n <input matInput type=\"text\" [formControlName]=\"column.name\" *ngIf=\"column.type === 'autocomplete'\" [matAutocomplete]=\"auto\"\r\n required=\"{{getValidationAttributeValue(column, 'mandatory')}}\" value=\"{{getValue(record, column)}}\"\r\n readonly=\"{{getValidationAttributeValue(column, 'readonly')}}\">\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onAutocompleteValueChange(column, record, $event)\"\r\n panelWidth=\"430px\">\r\n <mat-option *ngFor=\"let option of filteredOptions[column.name] | async\"\r\n [value]=\"option.id\">\r\n {{ option.value }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </td>\r\n <ng-template #isUnsanitizedHTML>\r\n <td mat-cell class=\"mat-cell-text\" *ngIf=\"!isUrl(getValue(record, column));else isAnUrlUnsanitizedHTML\" [ngClass]=\"getCellClass(record, column)\"\r\n [innerHTML]=\"getValue(record, column) | sanitizeHtml\">\r\n </td>\r\n <ng-template #isAnUrlUnsanitizedHTML>\r\n <td mat-cell class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\r\n <a href=\"{{getValue(record, column)}}\" target='_blank' rel=\"noopener noreferrer\" (click)=\"$event.stopPropagation()\">\r\n <img igoImageError *ngIf=\"isImg(getValue(record, column));else notImg\" src=\"{{(getValue(record, column) | secureImage) | async}}\" width=\"50\" heigth=\"auto\">\r\n <ng-template #notImg><span>{{ 'igo.geo.targetHtmlUrl' | translate }} </span></ng-template>\r\n </a>\r\n </td>\r\n </ng-template>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.Icon\">\r\n <td mat-cell *matCellDef=\"let record\" class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\r\n <mat-icon *ngIf=\"column.onClick\" svgIcon=\"{{getValue(record, column)|| column.icon}}\" (click)=\"column.onClick($event)\"></mat-icon>\r\n <mat-icon *ngIf=\"!column.onClick\" svgIcon=\"{{getValue(record, column)|| column.icon}}\"></mat-icon>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"columnRenderer === entityTableColumnRenderer.ButtonGroup\">\r\n <ng-container *matCellDef=\"let record\">\r\n <td mat-cell class=\"mat-cell-text\" [ngClass]=\"getCellClass(record, column)\">\r\n <span *ngFor=\"let button of getValue(record, column)\">\r\n <ng-container *ngIf=\"isEdition(record) === button.editMode || button.editMode === undefined\">\r\n <button *ngIf=\"button.style === 'mat-icon-button'\" igoStopPropagation mat-icon-button\r\n [color]=\"button.color\" (mousedown)=\"onButtonClick(button.click, record)\" [disabled]=\"button.disabled\">\r\n <mat-icon svgIcon=\"{{button.icon}}\"></mat-icon>\r\n </button>\r\n <button *ngIf=\"button.style !== 'mat-icon-button'\" igoStopPropagation mat-mini-fab\r\n [color]=\"button.color\" (mousedown)=\"onButtonClick(button.click, record)\" [disabled]=\"button.disabled\">\r\n <mat-icon svgIcon=\"{{button.icon}}\"></mat-icon>\r\n </button>\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"headers; sticky: fixedHeader\" [ngClass]=\"getHeaderClass()\">\r\n </tr>\r\n <tr mat-row igoEntityTableRow *matRowDef=\"let record; columns: headers;\" [scrollBehavior]=\"scrollBehavior\" [ngClass]=\"getRowClass(record)\" [selection]=\"selection\" [selected]=\"rowIsSelected(record)\" (select)=\"onRowSelect(record)\" (click)=\"onRowClick(record)\">\r\n </tr>\r\n </table>\r\n <igo-entity-table-paginator *ngIf=\"withPaginator\" [store]=\"store\" [paginatorOptions]=\"paginatorOptions\" [entitySortChange$]=\"entitySortChange$\" (paginatorChange)=\"paginatorChange($event)\">\r\n </igo-entity-table-paginator>\r\n</div>","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n OnInit,\r\n OnDestroy,\r\n OnChanges,\r\n SimpleChanges,\r\n ElementRef,\r\n Optional,\r\n Self\r\n} from '@angular/core';\r\n\r\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\r\n\r\nimport {\r\n EntityKey,\r\n EntityRecord,\r\n EntityState,\r\n EntityStore,\r\n EntityTableTemplate,\r\n EntityTableColumn,\r\n EntityTableColumnRenderer,\r\n EntityTableSelectionState,\r\n EntityTableScrollBehavior\r\n} from '../shared';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { EntityTablePaginatorOptions } from '../entity-table-paginator/entity-table-paginator.interface';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { UntypedFormBuilder, NgControl, NgForm, FormControlName, UntypedFormGroup } from '@angular/forms';\r\nimport { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { DateAdapter, ErrorStateMatcher } from '@angular/material/core';\r\nimport { map } from 'rxjs/operators';\r\nimport { default as moment } from 'moment';\r\n\r\n@Component({\r\n selector: 'igo-entity-table',\r\n templateUrl: './entity-table.component.html',\r\n styleUrls: ['./entity-table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: MatFormFieldControl, useExisting: EntityTableComponent }]\r\n})\r\nexport class EntityTableComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n entitySortChange$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n public formGroup: UntypedFormGroup = new UntypedFormGroup({});\r\n\r\n public filteredOptions = {};\r\n\r\n /**\r\n * Reference to the column renderer types\r\n * @internal\r\n */\r\n entityTableColumnRenderer = EntityTableColumnRenderer;\r\n\r\n /**\r\n * Reference to the selection's state\r\n * @internal\r\n */\r\n entityTableSelectionState = EntityTableSelectionState;\r\n\r\n /**\r\n * Observable of the selection,s state\r\n * @internal\r\n */\r\n readonly selectionState$: BehaviorSubject<EntityTableSelectionState> = new BehaviorSubject(undefined);\r\n\r\n /**\r\n * Subscription to the store's selection\r\n */\r\n private selection$$: Subscription;\r\n\r\n /**\r\n * Subscription to the dataSource\r\n */\r\n private dataSource$$: Subscription;\r\n\r\n /**\r\n * The last record checked. Useful for selecting\r\n * multiple records by holding the shift key and checking\r\n * checkboxes.\r\n */\r\n private lastRecordCheckedKey: EntityKey;\r\n\r\n /**\r\n * Entity store\r\n */\r\n @Input() store: EntityStore<object>;\r\n\r\n /**\r\n * Table paginator\r\n */\r\n @Input() set paginator(value: MatPaginator) {\r\n this._paginator = value;\r\n this.dataSource.paginator = value;\r\n }\r\n\r\n get paginator(): MatPaginator {\r\n return this._paginator;\r\n }\r\n private _paginator: MatPaginator;\r\n\r\n /**\r\n * Table template\r\n */\r\n @Input() template: EntityTableTemplate;\r\n\r\n /**\r\n * Scroll behavior on selection\r\n */\r\n @Input()\r\n scrollBehavior: EntityTableScrollBehavior = EntityTableScrollBehavior.Auto;\r\n\r\n /**\r\n * Whether nulls should be first when sorting\r\n */\r\n @Input()\r\n sortNullsFirst: boolean = false;\r\n\r\n /**\r\n * Show the table paginator or not. False by default.\r\n */\r\n @Input()\r\n withPaginator: boolean = false;\r\n\r\n /**\r\n * Paginator options\r\n */\r\n @Input()\r\n paginatorOptions: EntityTablePaginatorOptions;\r\n\r\n /**\r\n * Event emitted when an entity (row) is clicked\r\n */\r\n @Output() entityClick = new EventEmitter<object>();\r\n\r\n /**\r\n * Event emitted when an entity (row) is selected\r\n */\r\n @Output() entitySelectChange = new EventEmitter<{\r\n added: object[];\r\n }>();\r\n\r\n /**\r\n * Event emitted when the table sort is changed.\r\n */\r\n @Output() entitySortChange: EventEmitter<{column: EntityTableColumn, direction: string}> = new EventEmitter(undefined);\r\n\r\n /**\r\n * Table headers\r\n * @internal\r\n */\r\n get headers(): string[] {\r\n let columns = this.template.columns\r\n .filter((column: EntityTableColumn) => column.visible !== false)\r\n .map((column: EntityTableColumn) => column.name);\r\n\r\n if (this.selectionCheckbox === true) {\r\n columns = ['selectionCheckbox'].concat(columns);\r\n }\r\n\r\n return columns;\r\n }\r\n\r\n /**\r\n * Data source consumable by the underlying material table\r\n * @internal\r\n */\r\n dataSource = new MatTableDataSource<object>();\r\n\r\n /**\r\n * Whether selection is supported\r\n * @internal\r\n */\r\n get selection(): boolean { return this.template.selection || false; }\r\n\r\n /**\r\n * Whether a selection checkbox should be displayed\r\n * @internal\r\n */\r\n get selectionCheckbox(): boolean { return this.template.selectionCheckbox || false; }\r\n\r\n /**\r\n * Whether selection many entities should eb supported\r\n * @internal\r\n */\r\n get selectMany(): boolean { return this.template.selectMany || false; }\r\n\r\n /**\r\n * Whether selection many entities should eb supported\r\n * @internal\r\n */\r\n get fixedHeader(): boolean { return this.template.fixedHeader === undefined ? true : this.template.fixedHeader; }\r\n\r\n get tableHeight(): string { return this.template.tableHeight ? this.template.tableHeight : 'auto'; }\r\n\r\n constructor(private cdRef: ChangeDetectorRef,\r\n private formBuilder: UntypedFormBuilder,\r\n protected _focusMonitor: FocusMonitor,\r\n protected _elementRef: ElementRef<HTMLElement>,\r\n @Optional() @Self() public ngControl: NgControl,\r\n @Optional() protected _parentForm: NgForm,\r\n @Optional() protected _controlName: FormControlName,\r\n protected _defaultErrorStateMatcher: ErrorStateMatcher,\r\n private dateAdapter: DateAdapter<Date>\r\n ) {\r\n this.dateAdapter.setLocale('fr-CA');\r\n }\r\n\r\n /**\r\n * Track the selection state to properly display the selection checkboxes\r\n * @internal\r\n */\r\n ngOnInit() {\r\n this.handleDatasource();\r\n this.dataSource.paginator = this.paginator;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n ngOnChanges(changes: SimpleChanges) {\r\n const store = changes.store;\r\n if (store && store.currentValue !== store.previousValue) {\r\n this.handleDatasource();\r\n }\r\n }\r\n\r\n /**\r\n * Process text or number value change (edition)\r\n */\r\n onValueChange(column: string, record: EntityRecord<any>, event) {\r\n const key = this.getColumnKeyWithoutPropertiesTag(column);\r\n record.entity.properties[key] = event.target.value;\r\n }\r\n\r\n /**\r\n * Process boolean value change (edition)\r\n */\r\n onBooleanValueChange(column: string, record: EntityRecord<any>, event) {\r\n const key = this.getColumnKeyWithoutPropertiesTag(column);\r\n record.entity.properties[key] = event.checked;\r\n }\r\n\r\n /**\r\n * Process select value change (edition)\r\n */\r\n onSelectValueChange(column: string, record: EntityRecord<any>, event) {\r\n const key = this.getColumnKeyWithoutPropertiesTag(column);\r\n record.entity.properties[key] = event.value;\r\n }\r\n\r\n /**\r\n * Process autocomplete value change (edition)\r\n */\r\n onAutocompleteValueChange(column: EntityTableColumn, record: EntityRecord<any>, event) {\r\n this.formGroup.controls[column.name].setValue(event.option.viewValue);\r\n const key = this.getColumnKeyWithoutPropertiesTag(column.name);\r\n record.entity.properties[key] = event.option.value;\r\n }\r\n\r\n /**\r\n * Process date value change (edition)\r\n */\r\n onDateChange(column: string, record: EntityRecord<any>, event) {\r\n const format = \"YYYY-MM-DD\";\r\n const value = moment(event.value).format(format);\r\n const key = this.getColumnKeyWithoutPropertiesTag(column);\r\n record.entity.properties[key] = value;\r\n }\r\n\r\n /**\r\n * Enable edition mode for one row\r\n * More than one row can be edited at the same time\r\n */\r\n private enableEdit(record: EntityRecord<any>) {\r\n const item = record.entity.properties || record.entity;\r\n this.template.columns.forEach(column => {\r\n column.title = column.validation?.mandatory && !column.title.includes('*') ? column.title + ' *' : column.title;\r\n\r\n const key = this.getColumnKeyWithoutPropertiesTag(column.name);\r\n if (column.type === 'boolean') {\r\n if (!item[key] || item[key] === null) {\r\n item[key] = false;\r\n } else if (typeof item[key] === 'string') {\r\n item[key] = JSON.parse(item[key].toLowerCase());\r\n }\r\n this.formGroup.setControl(column.name, this.formBuilder.control(\r\n item[key]\r\n ));\r\n } else if (column.type === 'list') {\r\n if (column.multiple) {\r\n this.formGroup.setControl(column.name, this.formBuilder.control(\r\n [item[key]]\r\n ));\r\n } else {\r\n this.formGroup.setControl(column.name, this.formBuilder.control(\r\n item[key]\r\n ));\r\n\r\n typeof item[key] === 'string' ?\r\n this.formGroup.controls[column.name].setValue(parseInt(item[key])) :\r\n this.formGroup.controls[column.name].setValue(item[key]);\r\n }\r\n } else if (column.type === 'autocomplete') {\r\n this.formGroup.setControl(column.name, this.formBuilder.control(\r\n item[key]\r\n ));\r\n\r\n this.filteredOptions[column.name] = new Observable<any[]>();\r\n this.filteredOptions[column.name] =\r\n this.formGroup.controls[column.name].valueChanges.pipe(\r\n map(value => {\r\n if (value?.length) {\r\n return column.domainValues?.filter((option) => {\r\n const filterNormalized = value ? value.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : '';\r\n const featureNameNormalized = option.value.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\r\n return featureNameNormalized.includes(filterNormalized);\r\n });\r\n }\r\n })\r\n );\r\n\r\n let formControlValue = item[key];\r\n column.domainValues.forEach(option => {\r\n if (this.isStringValidNumber(formControlValue)) {\r\n formControlValue = parseInt(formControlValue);\r\n }\r\n if (option.value === formControlValue || option.id === formControlValue) {\r\n formControlValue = option.value;\r\n }\r\n });\r\n\r\n this.formGroup.controls[column.name].setValue(formControlValue);\r\n if (this.isEdition(record) && column.linkColumnForce) {\r\n const entity = record.entity as any;\r\n this.formGroup.controls[column.name].setValue(\r\n entity?.properties[this.getColumnKeyWithoutPropertiesTag(column.linkColumnForce)]\r\n );\r\n }\r\n } else if (column.type === 'date') {\r\n if (column.visible !== false) {\r\n if (item[key]) {\r\n let date = moment(item[key]);\r\n item[key] = date.utc().format('YYYY-MM-DD');\r\n this.formGroup.setControl(column.name, this.formBuilder.control(\r\n item[key]\r\n ));\r\n } else {\r\n const newKey = this.getColumnKeyWithoutPropertiesTag(column.name);\r\n record.entity.properties[newKey] = null;\r\n this.formGroup.setControl(column.name, this.formBuilder.control(\r\n null\r\n ));\r\n }\r\n }\r\n } else {\r\n this.formGroup.setControl(column.name, this.formBuilder.control(\r\n item[key]\r\n ));\r\n }\r\n\r\n if (this.formGroup.controls[column.name] && this.getValidationAttributeValue(column, 'readonly')) {\r\n this.formGroup.controls[column.name].disable();\r\n }\r\n });\r\n }\r\n\r\n private handleDatasource() {\r\n this.unsubscribeStore();\r\n this.selection$$ = this.store.stateView\r\n .manyBy$((record: EntityRecord<object>) => record.state.selected === true)\r\n .subscribe((records: EntityRecord<object>[]) => {\r\n const firstSelected = records[0];\r\n const firstSelectedStateviewPosition = this.store.stateView.all().indexOf(firstSelected);\r\n const pageMax = this.paginator ? this.paginator.pageSize * (this.paginator.pageIndex + 1) : 0;\r\n const pageMin = this.paginator ? pageMax - this.paginator.pageSize : 0;\r\n\r\n if (\r\n this.paginator &&\r\n (firstSelectedStateviewPosition < pageMin ||\r\n firstSelectedStateviewPosition >= pageMax)) {\r\n const pageToReach = Math.floor(firstSelectedStateviewPosition / this.paginator.pageSize);\r\n this.dataSource.paginator.pageIndex = pageToReach;\r\n }\r\n this.selectionState$.next(this.computeSelectionState(records));\r\n });\r\n this.dataSource$$ = this.store.stateView.all$().subscribe((all) => {\r\n if (all[0]) {\r\n this.enableEdit(all[0]);\r\n }\r\n this.dataSource.data = all;\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Unbind the store watcher\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.unsubscribeStore();\r\n }\r\n\r\n private unsubscribeStore() {\r\n if (this.selection$$) {\r\n this.selection$$.unsubscribe();\r\n }\r\n if (this.dataSource$$) {\r\n this.dataSource$$.unsubscribe();\r\n }\r\n }\r\n\r\n /**\r\n * Trackby function\r\n * @param record Record\r\n * @param index Record index\r\n * @internal\r\n */\r\n getTrackByFunction() {\r\n return (index: number, record: EntityRecord<object, EntityState>) => {\r\n return record.ref;\r\n };\r\n }\r\n\r\n /**\r\n * Trigger a refresh of thre table. This can be useful when\r\n * the data source doesn't emit a new value but for some reason\r\n * the records need an update.\r\n * @internal\r\n */\r\n refresh() {\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n paginatorChange(event: MatPaginator) {\r\n this.paginator = event;\r\n }\r\n\r\n /**\r\n * On sort, sort the store\r\n * @param event Sort event\r\n * @internal\r\n */\r\n onSort(event: {active: string, direction: string}) {\r\n const direction = event.direction;\r\n const column = this.template.columns\r\n .find((c: EntityTableColumn) => c.name === event.active);\r\n\r\n if (direction === 'asc' || direction === 'desc') {\r\n this.store.stateView.sort({\r\n valueAccessor: (record: EntityRecord<object>) => this.getValue(record, column),\r\n direction,\r\n nullsFirst: this.sortNullsFirst\r\n });\r\n this.entitySortChange.emit({column, direction});\r\n this.entitySortChange$.next(true);\r\n } else {\r\n this.store.stateView.sort(undefined);\r\n }\r\n }\r\n\r\n /**\r\n * When an entity is clicked, emit an event\r\n * @param record Record\r\n * @internal\r\n */\r\n onRowClick(record: EntityRecord<object>) {\r\n this.lastRecordCheckedKey = this.store.stateView.getKey(record);\r\n this.entityClick.emit(record.entity);\r\n }\r\n\r\n /**\r\n * When an entity is selected, select it in the store and emit an event. Even if\r\n * \"many\" is set to true, this method always select a single, exclusive row. Selecting\r\n * multiple rows should be achieved by using the checkboxes.\r\n * @param record Record\r\n * @internal\r\n */\r\n onRowSelect(record: EntityRecord<object>) {\r\n if (this.selection === false) { return; }\r\n\r\n const entity = record.entity;\r\n this.store.state.update(entity, {selected: true}, true);\r\n this.entitySelectChange.emit({added: [entity]});\r\n }\r\n\r\n /**\r\n * Select or unselect all rows at once. On select, emit an event.\r\n * @param toggle Select or unselect\r\n * @internal\r\n */\r\n onToggleRows(toggle: boolean) {\r\n if (this.selection === false) { return; }\r\n\r\n this.store.state.updateAll({selected: toggle});\r\n if (toggle === true) {\r\n const entities = this.store.stateView\r\n .all()\r\n .map((record: EntityRecord<object>) => record.entity);\r\n this.entitySelectChange.emit({added: [entities]});\r\n }\r\n }\r\n\r\n /**\r\n * When an entity is toggled, select or unselect it in the store. On select,\r\n * emit an event.\r\n * @param toggle Select or unselect\r\n * @param record Record\r\n * @internal\r\n */\r\n onToggleRow(toggle: boolean, record: EntityRecord<object>) {\r\n if (this.selection === false) { return; }\r\n\r\n const entity = record.entity;\r\n const exclusive = toggle === true && !this.selectMany;\r\n this.store.state.update(entity, {selected: toggle}, exclusive);\r\n if (toggle === true) {\r\n this.entitySelectChange.emit({added: [entity]});\r\n }\r\n this.lastRecordCheckedKey = this.store.stateView.getKey(record);\r\n }\r\n\r\n /**\r\n * When an entity is toggled, select or unselect it in the store. On select,\r\n * emit an event.\r\n * @param toggle Select or unselect\r\n * @param record Record\r\n * @internal\r\n */\r\n onShiftToggleRow(toggle: boolean, record: EntityRecord<object>, event: MouseEvent) {\r\n if (this.selection === false) { return; }\r\n\r\n if (this.selectMany === false || this.lastRecordCheckedKey === undefined) {\r\n this.onToggleRow(toggle, record);\r\n return;\r\n }\r\n\r\n // This is a workaround mat checkbox wrong behavior\r\n // when the shift key is held.\r\n // See https://github.com/angular/components/issues/6232\r\n const range = window.document.createRange();\r\n range.selectNode(event.target as HTMLElement);\r\n window.getSelection().removeAllRanges();\r\n window.getSelection().addRange(range);\r\n event.stopImmediatePropagation();\r\n\r\n const records = this.store.stateView.all();\r\n const recordIndex = records.indexOf(record);\r\n const lastRecordChecked = this.store.stateView.get(this.lastRecordCheckedKey);\r\n const lastRecordIndex = records.indexOf(lastRecordChecked);\r\n const indexes = [recordIndex, lastRecordIndex];\r\n const selectRecords = records.slice(Math.min(...indexes), Math.max(...indexes) + 1);\r\n\r\n const entities = selectRecords.map((_record: EntityRecord<object>) => _record.entity);\r\n this.store.state.updateMany(entities, {selected: toggle});\r\n if (toggle === true) {\r\n this.entitySelectChange.emit({added: entities});\r\n }\r\n this.lastRecordCheckedKey = this.store.stateView.getKey(record);\r\n }\r\n\r\n /**\r\n * Compute the selection state\r\n * @returns Whether all, some or no rows are selected\r\n * @internal\r\n */\r\n private computeSelectionState(selectedRecords: EntityRecord<object>[]): EntityTableSelectionState {\r\n const states = EntityTableSelectionState;\r\n const selectionCount = selectedRecords.length;\r\n return selectionCount === 0 ?\r\n states.None :\r\n (selectionCount === this.store.stateView.count ? states.All : states.Some);\r\n }\r\n\r\n /**\r\n * Whether a column is sortable\r\n * @param column Column\r\n * @returns True if a column is sortable\r\n * @internal\r\n */\r\n columnIsSortable(column: EntityTableColumn): boolean {\r\n let sortable = column.sort;\r\n if (sortable === undefined) {\r\n sortable = this.template.sort === undefined ? false : this.template.sort;\r\n }\r\n return sortable;\r\n }\r\n\r\n /**\r\n * Whether a row is should be selected based on the underlying entity state\r\n * @param record Record\r\n * @returns True if a row should be selected\r\n * @internal\r\n */\r\n rowIsSelected(record: EntityRecord<object>): boolean {\r\n const state = record.state;\r\n return state.selected ? state.selected : false;\r\n }\r\n\r\n isImg(value) {\r\n if (this.isUrl(value)) {\r\n return (\r\n ['jpg', 'png', 'gif'].indexOf(value.split('.').pop().toLowerCase()) !== -1\r\n );\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n isUrl(value) {\r\n if (typeof value === 'string') {\r\n return (\r\n value.slice(0, 8) === 'https://' || value.slice(0, 7) === 'http://'\r\n );\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Method to access an entity's values\r\n * @param record Record\r\n * @param column Column\r\n * @returns Any value\r\n * @internal\r\n */\r\n getValue(record: EntityRecord<object>, column: EntityTableColumn): any {\r\n const entity = record.entity;\r\n let value;\r\n if (column.valueAccessor !== undefined) {\r\n return column.valueAccessor(entity, record);\r\n }\r\n if (this.template.valueAccessor !== undefined) {\r\n return this.template.valueAccessor(entity, column.name, record);\r\n }\r\n value = this.store.getProperty(entity, column.name);\r\n\r\n if (column.type === 'boolean') {\r\n if (value === undefined || value === null || value === '') {\r\n value = false;\r\n } else if (typeof value !== 'boolean' && value !== undefined) {\r\n if (typeof value === 'number'){\r\n value = Boolean(value);\r\n } else {\r\n value = JSON.parse(value.toLowerCase());\r\n }\r\n }\r\n if (!this.isEdition(record)){\r\n value = value ? '✓' : ''; // check mark\r\n }\r\n } else if (column.type === 'list' && value && column.domainValues) {\r\n const entity = record.entity as any;\r\n if (column.multiple) {\r\n let list_id;\r\n typeof value === 'string' ? list_id = value.match(/[\\w.-]+/g).map(Number) : list_id = value;\r\n let list_option = [];\r\n\r\n column.domainValues.forEach(option => {\r\n if (list_id.includes(option.id)) {\r\n if (record.edition) {\r\n list_option.push(option.id);\r\n } else {\r\n list_option.push(option.value);\r\n }\r\n }\r\n });\r\n\r\n this.isEdition(record) ? value = list_id : value = list_option;\r\n } else {\r\n if (!this.isEdition(record) && column.linkColumnForce) {\r\n value = entity?.properties[this.getColumnKeyWithoutPropertiesTag(column.linkColumnForce)];\r\n } else {\r\n column.domainValues.forEach(option => {\r\n if (this.isStringValidNumber(value)) {\r\n value = parseInt(value);\r\n }\r\n if (option.value === value || option.id === value) {\r\n this.isEdition(record) ? value = option.id : value = option.value;\r\n }\r\n });\r\n }\r\n }\r\n } else if (column.type === 'autocomplete' && value && column.domainValues) {\r\n const entity = record.entity as any;\r\n if (!this.isEdition(record) && column.linkColumnForce) {\r\n value = entity?.properties[this.getColumnKeyWithoutPropertiesTag(column.linkColumnForce)];\r\n } else {\r\n column.domainValues.forEach(option => {\r\n if (this.isStringValidNumber(value)) {\r\n value = parseInt(value);\r\n }\r\n if (option.value === value || option.id === value) {\r\n value = option.value;\r\n }\r\n });\r\n }\r\n } else if (column.type === 'date') {\r\n if (this.isEdition(record)) {\r\n if (value) {\r\n let date = moment(value);\r\n value = date.format();\r\n this.formGroup.controls[column.name].setValue(value);\r\n }\r\n } else if (!this.isEdition(record) && value === null) {\r\n value = \"\";\r\n }\r\n }\r\n\r\n if (value === undefined) {\r\n value = '';\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Method to access an entity's validation values\r\n * @param column Column\r\n * @param validationType string\r\n * @returns Any value (false if no validation or not the one concerned)\r\n * @internal\r\n */\r\n getValidationAttributeValue(column: EntityTableColumn, validationType: string): any {\r\n if (column.validation !== undefined && column.validation[validationType] !== undefined) {\r\n return column.validation[validationType];\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n public isEdition(record) {\r\n return record.entity.edition ? true : false;\r\n }\r\n\r\n /**\r\n * Return the type of renderer of a column\r\n * @param column Column\r\n * @returns Renderer type\r\n * @internal\r\n */\r\n getColumnRenderer(column: EntityTableColumn): EntityTableColumnRenderer {\r\n if (column.renderer !== undefined) {\r\n return column.renderer;\r\n }\r\n return EntityTableColumnRenderer.Default;\r\n }\r\n\r\n /**\r\n * Return the table ngClass\r\n * @returns ngClass\r\n * @internal\r\n */\r\n getTableClass(): {[key: string]: boolean} {\r\n return {\r\n 'igo-entity-table-with-selection': this.selection\r\n };\r\n }\r\n\r\n /**\r\n * Return a header ngClass\r\n * @returns ngClass\r\n * @internal\r\n */\r\n getHeaderClass(): {[key: string]: boolean} {\r\n const func = this.template.headerClassFunc;\r\n if (func instanceof Function) {\r\n return func();\r\n }\r\n return {};\r\n }\r\n\r\n /**\r\n * Return a row ngClass\r\n * @param record Record\r\n * @returns ngClass\r\n * @internal\r\n */\r\n getRowClass(record: EntityRecord<object>): {[key: string]: boolean} {\r\n const entity = record.entity;\r\n const func = this.template.rowClassFunc;\r\n if (func instanceof Function) {\r\n return func(entity, record);\r\n }\r\n return {};\r\n }\r\n\r\n /**\r\n * Return a row ngClass\r\n * @param record Record\r\n * @param column Column\r\n * @returns ngClass\r\n * @internal\r\n */\r\n getCellClass(record: EntityRecord<object>, column: EntityTableColumn): {[key: string]: boolean} {\r\n const entity = record.entity;\r\n const cls = {};\r\n\r\n const tableFunc = this.template.cellClassFunc;\r\n if (tableFunc instanceof Function) {\r\n Object.assign(cls, tableFunc(entity, column, record));\r\n }\r\n\r\n const columnFunc = column.cellClassFunc;\r\n if (columnFunc instanceof Function) {\r\n Object.assign(cls, columnFunc(entity, record));\r\n }\r\n\r\n return cls;\r\n }\r\n\r\n /**\r\n * When a button is clicked\r\n * @param func Function\r\n * @param record Record\r\n * @internal\r\n */\r\n onButtonClick(\r\n clickFunc: (entity: object, record?: EntityRecord<object>) => void,\r\n record: EntityRecord<object>\r\n ) {\r\n this.enableEdit(record);\r\n if (typeof clickFunc === 'function') {\r\n clickFunc(record.entity, record);\r\n }\r\n }\r\n\r\n /**\r\n * Retrieve column name without his \"properties\" tag (useful for edition workspace properties)\r\n */\r\n public getColumnKeyWithoutPropertiesTag(column: string) {\r\n if (column.includes('properties.')) {\r\n return column.split('.')[1];\r\n }\r\n return column;\r\n }\r\n /**\r\n * Check if string is a valid number\r\n * @param value string\r\n * @returns boolean\r\n */\r\n private isStringValidNumber(value: string): boolean {\r\n return typeof value === 'string' && /^\\d+$/.test(value) && (value.length > 1 && value.charAt(0) !== '0');\r\n }\r\n}\r\n","export enum ActionbarMode {\r\n Dock = 'dock',\r\n Overlay = 'overlay',\r\n Context = 'context'\r\n}\r\n","<mat-list-item *ngIf=\"!action.checkbox\"\r\n matTooltipClass=\"actionbarItemTooltip\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"withTooltip ? ((tooltip$ | async) || title | translate) : ''\"\r\n [ngClass]=\"ngClass$ | async\"\r\n (click)=\"onClick()\">\r\n <button *ngIf=\"withIcon\"\r\n mat-list-avatar\r\n mat-icon-button\r\n [color]=\"color\"\r\n [disabled]=\"disabled$ | async\">\r\n <mat-icon *ngIf=\"withIcon\" svgIcon=\"{{icon$ | async}}\"></mat-icon>\r\n </button>\r\n <h4 *ngIf=\"withTitle\" matLine>{{title | translate}}</h4>\r\n</mat-list-item>\r\n\r\n<mat-list-item class=\"item-checkbox\" *ngIf=\"action.checkbox\"\r\n matTooltipClass=\"actionbarItemTooltip\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"withTooltip ? ((tooltip$ | async) || title | translate) : ''\"\r\n [ngClass]=\"ngClass$ | async\">\r\n <mat-checkbox *ngIf=\"withTitle\"\r\n (change)=\"action.handler()\"\r\n [checked]=\"checkCondition$ | async\">\r\n {{title | translate}}\r\n </mat-checkbox>\r\n</mat-list-item>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n OnDestroy\r\n} from '@angular/core';\r\n\r\nimport { BehaviorSubject, Subscription, isObservable } from 'rxjs';\r\n\r\nimport { Action } from '../shared/action.interfaces';\r\n\r\n /**\r\n * An action button\r\n */\r\n@Component({\r\n selector: 'igo-actionbar-item',\r\n templateUrl: './actionbar-item.component.html',\r\n styleUrls: ['./actionbar-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ActionbarItemComponent implements OnInit, OnDestroy {\r\n\r\n readonly disabled$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n readonly checkCondition$: BehaviorSubject<boolean> = new BehaviorSubject(undefined);\r\n\r\n readonly icon$: BehaviorSubject<string> = new BehaviorSubject(undefined);\r\n\r\n readonly tooltip$: BehaviorSubject<string> = new BehaviorSubject(undefined);\r\n\r\n readonly noDisplay$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n readonly ngClass$: BehaviorSubject<{[key: string]: boolean}> = new BehaviorSubject({});\r\n\r\n private ngClass$$: Subscription;\r\n\r\n private disabled$$: Subscription;\r\n\r\n private availability$$: Subscription;\r\n\r\n private icon$$: Subscription;\r\n\r\n private checkCondition$$: Subscription;\r\n\r\n private tooltip$$: Subscription;\r\n\r\n private noDisplay$$: Subscription;\r\n\r\n private display$$: Subscription;\r\n\r\n /**\r\n * Action\r\n */\r\n @Input() action: Action;\r\n\r\n /**\r\n * Color\r\n */\r\n @Input() color = 'default';\r\n\r\n /**\r\n * Whether the action title is displayed\r\n */\r\n @Input() withTitle = true;\r\n\r\n /**\r\n * Whether the action icon is displayed\r\n */\r\n @Input() withIcon = true;\r\n\r\n /**\r\n * Whether a tooltip should be shown\r\n */\r\n @Input() withTooltip = true;\r\n\r\n /**\r\n * Whether the action is disabled\r\n */\r\n @Input()\r\n set disabled(value: boolean) { this.disabled$.next(value); }\r\n get disabled(): boolean { return this.disabled$.value; }\r\n\r\n /**\r\n * Whether the action is display or not\r\n */\r\n @Input()\r\n set noDisplay(value: boolean) { this.noDisplay$.next(value); }\r\n get noDisplay(): boolean { return this.noDisplay$.value; }\r\n\r\n /**\r\n * Event emitted when the action button is clicked\r\n */\r\n @Output() trigger: EventEmitter<Action> = new EventEmitter();\r\n\r\n /**\r\n * @internal\r\n */\r\n get title(): string { return this.action.title; }\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n const args = this.action.args || [];\r\n\r\n if (this.action.ngClass !== undefined) {\r\n this.ngClass$$ = this.action.ngClass(...args)\r\n .subscribe((ngClass: {[key: string]: boolean}) => this.updateNgClass(ngClass));\r\n }\r\n\r\n if (isObservable(this.action.icon)) {\r\n this.icon$$ = this.action.icon\r\n .subscribe((icon: string) => this.updateIcon(icon));\r\n } else {\r\n this.updateIcon(this.action.icon);\r\n }\r\n\r\n if (isObservable(this.action.checkCondition)) {\r\n this.checkCondition$$ = this.action.checkCondition\r\n .subscribe((checkCondition: boolean) => this.updateCheckCondition(checkCondition));\r\n } else {\r\n this.updateCheckCondition(this.action.checkCondition);\r\n }\r\n\r\n if (isObservable(this.action.tooltip)) {\r\n this.tooltip$$ = this.action.tooltip\r\n .subscribe((tooltip: string) => this.updateTooltip(tooltip));\r\n } else {\r\n this.updateTooltip(this.action.tooltip);\r\n }\r\n\r\n if (this.action.availability !== undefined) {\r\n this.availability$$ = this.action.availability(...args)\r\n .subscribe((available: boolean) => this.disabled = !available);\r\n }\r\n\r\n this.disabled$$ = this.disabled$\r\n .subscribe((disabled: boolean) => this.updateNgClass({'igo-actionbar-item-disabled': disabled}));\r\n\r\n if (this.action.display !== undefined) {\r\n this.display$$ = this.action.display(...args)\r\n .subscribe((display: boolean) => this.noDisplay = !display);\r\n }\r\n\r\n this.noDisplay$$ = this.noDisplay$\r\n .subscribe((noDisplay: boolean) => this.updateNgClass({'igo-actionbar-item-no-display': noDisplay}));\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.ngClass$$ !== undefined) {\r\n this.ngClass$$.unsubscribe();\r\n this.ngClass$$ = undefined;\r\n }\r\n\r\n if (this.availability$$ !== undefined) {\r\n this.availability$$.unsubscribe();\r\n this.availability$$ = undefined;\r\n }\r\n\r\n if (this.display$$ !== undefined) {\r\n this.display$$.unsubscribe();\r\n this.display$$ = undefined;\r\n }\r\n\r\n if (this.checkCondition$$ !== undefined) {\r\n this.checkCondition$$.unsubscribe();\r\n this.checkCondition$$ = undefined;\r\n }\r\n\r\n if (this.icon$$ !== undefined) {\r\n this.icon$$.unsubscribe();\r\n this.icon$$ = undefined;\r\n }\r\n\r\n if (this.tooltip$$ !== undefined) {\r\n this.tooltip$$.unsubscribe();\r\n this.tooltip$$ = undefined;\r\n }\r\n\r\n this.disabled$$.unsubscribe();\r\n this.noDisplay$$.unsubscribe();\r\n }\r\n\r\n /**\r\n * When the action button is clicked, emit the 'trigger' event but don't\r\n * invoke the action handler. This is handled by the parent component.\r\n * @internal\r\n */\r\n onClick() {\r\n if (this.disabled === true) {\r\n return;\r\n }\r\n this.trigger.emit(this.action);\r\n }\r\n\r\n private updateNgClass(ngClass: {[key: string]: boolean}) {\r\n this.ngClass$.next(Object.assign({}, this.ngClass$.value, ngClass));\r\n }\r\n\r\n private updateTooltip(tooltip: string) {\r\n this.tooltip$.next(tooltip);\r\n }\r\n\r\n private updateCheckCondition(checkCondition: boolean) {\r\n this.checkCondition$.next(checkCondition);\r\n }\r\n\r\n private updateIcon(icon: string) {\r\n this.icon$.next(icon);\r\n }\r\n}\r\n","<mat-list *ngIf=\"mode === actionbarMode.Dock\">\r\n\r\n <div *ngIf=\"heightCondition && positionConditionTop && isDesktop\"\r\n id=\"topChevron\">\r\n <button\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.common.actionbar.scrollUp' | translate\"\r\n (click)=\"scrollUp()\">\r\n <mat-icon svgIcon=\"chevron-up\"></mat-icon>\r\n </button>\r\n </div>\r\n\r\n <igo-actionbar-item\r\n *ngIf=\"withToggleButton\"\r\n color=\"accent\"\r\n [withTitle]=\"false\"\r\n [withIcon]=\"true\"\r\n [color]=\"color\"\r\n [disabled]=\"store.view.empty\"\r\n [action]=\"toggleCollapseAction\"\r\n (trigger)=\"onTriggerAction(toggleCollapseAction)\">\r\n </igo-actionbar-item>\r\n\r\n <ng-template #buttonContent *ngIf=\"!collapsed\" ngFor let-action [ngForOf]=\"store.view.all$() | async\">\r\n <igo-actionbar-item\r\n color=\"accent\"\r\n [withTitle]=\"withTitle\"\r\n [withIcon]=\"withIcon\"\r\n [withTooltip]=\"withTooltip\"\r\n [color]=\"color\"\r\n [disabled]=\"store.state.get(action).disabled\"\r\n [action]=\"action\"\r\n (trigger)=\"onTriggerAction(action)\">\r\n </igo-actionbar-item>\r\n </ng-template>\r\n\r\n <div *ngIf=\"heightCondition && positionConditionLow && isDesktop\"\r\n id=\"lowChevron\">\r\n <button\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.common.actionbar.scrollDown' | translate\"\r\n (click)=\"scrollDown()\">\r\n <mat-icon svgIcon=\"chevron-down\"></mat-icon>\r\n </button>\r\n </div>\r\n\r\n</mat-list>\r\n\r\n<div *ngIf=\"mode === actionbarMode.Overlay\">\r\n <button class=\"buttonOverlay\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.common.actionbar.icon' | translate\"\r\n [matMenuTriggerFor]=\"actionbarMenu\"\r\n [disabled]=\"store.view.empty\"\r\n [color]=\"iconColor\">\r\n <mat-icon [svgIcon]=\"icon\"></mat-icon>\r\n </button>\r\n\r\n <mat-menu\r\n #actionbarMenu=\"matMenu\"\r\n class=\"igo-compact-menu igo-no-min-width-menu\"\r\n overlapTrigger=\"true\"\r\n [xPosition]=\"xPosition\"\r\n [yPosition]=\"yPosition\"\r\n [class]=\"overlayClass\">\r\n\r\n <mat-list>\r\n <ng-template ngFor let-action [ngForOf]=\"store.view.all$() | async\">\r\n <igo-actionbar-item\r\n color=\"accent\"\r\n [withTitle]=\"withTitle\"\r\n [withIcon]=\"withIcon\"\r\n [color]=\"color\"\r\n [action]=\"action\"\r\n (trigger)=\"onTriggerAction(action)\">\r\n </igo-actionbar-item>\r\n </ng-template>\r\n </mat-list>\r\n </mat-menu>\r\n</div>\r\n<mat-card *ngIf=\"mode === actionbarMode.Context\" class=\"context-menu-card mat-elevation-z4\">\r\n <mat-list>\r\n <ng-template ngFor let-action [ngForOf]=\"store.view.all$() | async\">\r\n <igo-actionbar-item\r\n color=\"accent\"\r\n [withTitle]=\"withTitle\"\r\n [withIcon]=\"withIcon\"\r\n [color]=\"color\"\r\n [action]=\"action\"\r\n (trigger)=\"onTriggerAction(action)\">\r\n </igo-actionbar-item>\r\n <br/>\r\n </ng-template>\r\n </mat-list>\r\n</mat-card>\r\n","import {\r\n Component,\r\n Input,\r\n HostBinding,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges,\r\n ElementRef\r\n} from '@angular/core';\r\n\r\nimport { MediaService, Media } from '@igo2/core';\r\nimport { EntityStoreWatcher } from '../../entity';\r\nimport { Action } from '../shared/action.interfaces';\r\nimport { ActionbarMode } from '../shared/action.enums';\r\nimport { ActionStore } from '../shared/store';\r\nimport { Overlay } from '@angular/cdk/overlay';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n/**\r\n * A list of action buttons.\r\n * This component can be displayed in one of two way: 'dock' or 'overlay'\r\n */\r\n@Component({\r\n selector: 'igo-actionbar',\r\n templateUrl: './actionbar.component.html',\r\n styleUrls: ['./actionbar.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ActionbarComponent implements OnDestroy, OnChanges {\r\n\r\n /**\r\n * Reference to the ActionbarMode enum for use in the template\r\n * @internal\r\n */\r\n actionbarMode = ActionbarMode;\r\n\r\n /**\r\n * Whether the actionbar is collapsed (Dock mode)\r\n * @internal\r\n */\r\n collapsed = false;\r\n\r\n /**\r\n * Toggle collapse action (Dock)\r\n * @internal\r\n */\r\n toggleCollapseAction = {\r\n id: 'actionbar_toggle',\r\n icon: 'dots-vertical',\r\n handler: () => {\r\n this.collapsed = !this.collapsed;\r\n }\r\n };\r\n\r\n /**\r\n * Action store watcher\r\n * @internal\r\n */\r\n private watcher: EntityStoreWatcher<Action>;\r\n\r\n /**\r\n * Height Condition for scroll button\r\n */\r\n heightCondition$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n /**\r\n * Position Condition for top scroll button\r\n */\r\n positionConditionTop$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n /**\r\n * Position Condition for low scroll button\r\n */\r\n positionConditionLow$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n /**\r\n * Action store\r\n */\r\n @Input() store: ActionStore;\r\n\r\n /**\r\n * Actionbar mode\r\n */\r\n @Input() mode: ActionbarMode = ActionbarMode.Dock;\r\n\r\n /**\r\n * Whether a toggle button should be displayed (Dock mode)\r\n */\r\n @Input() withToggleButton = false;\r\n\r\n /**\r\n * Whether a the actionbar should display buttons horizontally\r\n */\r\n @Input() horizontal = false;\r\n\r\n /**\r\n * Color\r\n */\r\n @Input() color = 'default';\r\n\r\n /**\r\n * Color of the button if action mode === overlay\r\n */\r\n @Input() iconColor = 'default';\r\n\r\n /**\r\n * Whether action titles are displayed\r\n */\r\n @Input() withTitle = true;\r\n\r\n /**\r\n * Whether action tooltips are displayed\r\n */\r\n @Input() withTooltip = true;\r\n\r\n /**\r\n * Whether action titles are displayed (condition for scroll button)\r\n */\r\n @Input() scrollActive = true;\r\n\r\n /**\r\n * Whether action icons are displayed\r\n */\r\n @Input() withIcon = true;\r\n\r\n /**\r\n * Which icon want to be shown\r\n */\r\n @Input() icon = 'dots-horizontal';\r\n\r\n /**\r\n * Overlay X position\r\n */\r\n @Input() xPosition = 'before';\r\n\r\n /**\r\n * Overlay Y position\r\n */\r\n @Input() yPosition = 'above';\r\n\r\n /**\r\n * Class to add to the actionbar overlay\r\n */\r\n @Input()\r\n set overlayClass(value: string) {\r\n this._overlayClass = value;\r\n }\r\n get overlayClass(): string {\r\n return [this._overlayClass, 'igo-actionbar-overlay'].join(' ');\r\n }\r\n private _overlayClass = '';\r\n\r\n /**\r\n * @ignore\r\n */\r\n @HostBinding('class.with-title')\r\n get withTitleClass() {\r\n return this.withTitle;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n @HostBinding('class.with-icon')\r\n get withIconClass() {\r\n return this.withIcon;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n @HostBinding('class.horizontal')\r\n get horizontalClass() {\r\n return this.horizontal;\r\n }\r\n\r\n get heightCondition(): boolean {\r\n const el = this.elRef.nativeElement;\r\n if (this.scrollActive === false) {\r\n if (el.clientHeight < el.scrollHeight) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n get positionConditionTop(): boolean {\r\n if (this.elRef.nativeElement.scrollTop === 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n get positionConditionLow(): boolean {\r\n const el = this.elRef.nativeElement;\r\n if (el.scrollTop >= (el.scrollHeight - el.clientHeight)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n get isDesktop(): boolean {\r\n return this.mediaService.getMedia() === Media.Desktop;\r\n }\r\n\r\n constructor(\r\n public overlay: Overlay,\r\n private elRef: ElementRef,\r\n private cdRef: ChangeDetectorRef,\r\n public mediaService: MediaService) {}\r\n\r\n /**\r\n * @internal\r\n */\r\n ngOnChanges(changes: SimpleChanges) {\r\n const store = changes.store;\r\n if (store && store.currentValue !== store.previousValue) {\r\n if (this.watcher !== undefined) {\r\n this.watcher.destroy();\r\n }\r\n this.watcher = new EntityStoreWatcher(this.store, this.cdRef);\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.watcher.destroy();\r\n }\r\n\r\n /**\r\n * Invoke the action handler\r\n * @internal\r\n */\r\n onTriggerAction(action: Action) {\r\n const args = action.args || [];\r\n action.handler(...args);\r\n }\r\n\r\n scrollDown() {\r\n this.elRef.nativeElement.scrollBy(0, 52);\r\n }\r\n\r\n scrollUp() {\r\n this.elRef.nativeElement.scrollBy(0, -52);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\n\r\nimport { ActionbarComponent } from './actionbar.component';\r\nimport { ActionbarItemComponent } from './actionbar-item.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoLanguageModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n MatMenuModule,\r\n MatListModule,\r\n MatCardModule,\r\n MatCheckboxModule\r\n ],\r\n exports: [ActionbarComponent],\r\n declarations: [ActionbarComponent, ActionbarItemComponent]\r\n})\r\nexport class IgoActionbarModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoActionbarModule } from './actionbar/actionbar.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoActionbarModule\r\n ],\r\n exports: [\r\n IgoActionbarModule\r\n ],\r\n declarations: [],\r\n providers: []\r\n})\r\nexport class IgoActionModule {}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'igo-backdrop',\r\n templateUrl: './backdrop.component.html',\r\n styleUrls: ['./backdrop.component.scss']\r\n})\r\nexport class BackdropComponent {\r\n @Input()\r\n get shown(): boolean {\r\n return this._shown;\r\n }\r\n set shown(value: boolean) {\r\n this._shown = value;\r\n }\r\n private _shown: boolean;\r\n\r\n constructor() {}\r\n}\r\n","<div [ngClass]=\"{'igo-backdrop-shown': shown}\"></div>\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { BackdropComponent } from './backdrop.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [BackdropComponent],\r\n exports: [BackdropComponent]\r\n})\r\nexport class IgoBackdropModule {\r\n static forRoot(): ModuleWithProviders<IgoBackdropModule> {\r\n return {\r\n ngModule: IgoBackdropModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { Directive, Input, ElementRef, OnInit } from '@angular/core';\r\nimport { MatIconRegistry } from '@angular/material/icon';\r\n\r\n\r\n/**\r\n * This directive allow to add an icon inside a matBadge.\r\n * A value must be set into the matBadge directive ex: matBadge=\"icon\".\r\n * The badge content will be overrided by this current directive.\r\n */\r\n@Directive({\r\n selector: '[igoMatBadgeIcon]'\r\n})\r\nexport class IgoBadgeIconDirective implements OnInit {\r\n @Input()\r\n set igoMatBadgeIcon(value: string) {\r\n this.matIconRegistry.getNamedSvgIcon(value).subscribe((svgObj) => {\r\n this.svg = svgObj;\r\n this.updateSvg();\r\n });\r\n }\r\n private svg: SVGElement;\r\n\r\n @Input()\r\n set matBadgeHidden(value: boolean) {\r\n this.hidden = value;\r\n this.updateHidden();\r\n }\r\n private hidden = false;\r\n\r\n @Input()\r\n set matBadgeDisabled(value: boolean) {\r\n this.disabled = value;\r\n this.updateDisabled();\r\n }\r\n private disabled = false;\r\n\r\n @Input()\r\n set igoMatBadgeInverseColor(value: boolean) {\r\n this.inverseColor = value;\r\n this.updateColor();\r\n }\r\n private inverseColor = false;\r\n\r\n @Input()\r\n set igoMatBadgeInheritColor(value: boolean) {\r\n this.inheritColor = value;\r\n this.updateColor();\r\n }\r\n private inheritColor = false;\r\n\r\n @Input()\r\n set igoMatBadgeColor(value: string) {\r\n this.color = value;\r\n this.updateColor();\r\n }\r\n private color;\r\n\r\n @Input()\r\n set igoMatBadgeBackgroundColor(value: string) {\r\n this.backgroundColor = value;\r\n this.updateColor();\r\n }\r\n private backgroundColor;\r\n\r\n get badge() {\r\n return this.el.nativeElement.querySelector('.mat-badge-content');\r\n }\r\n\r\n private originalColor: string;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private matIconRegistry: MatIconRegistry\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.badge.style.alignItems = 'center';\r\n this.badge.style.justifyContent = 'center';\r\n\r\n this.updateHidden();\r\n this.updateColor();\r\n this.updateSvg();\r\n }\r\n\r\n private updateSvg() {\r\n if (!this.badge) {\r\n return;\r\n }\r\n this.badge.innerHTML = '';\r\n if (this.svg) {\r\n this.badge.appendChild(this.svg);\r\n }\r\n }\r\n private updateColor() {\r\n if (!this.badge) {\r\n return;\r\n }\r\n\r\n if (this.color || this.backgroundColor) {\r\n this.badge.style.color = this.color ? this.color : '';\r\n this.badge.style.background = this.backgroundColor ? this.backgroundColor : '';\r\n } else if (this.inheritColor) {\r\n if (this.inverseColor) {\r\n this.badge.style.color = 'currentColor';\r\n this.badge.style.background = 'none';\r\n } else {\r\n this.badge.style.color = '';\r\n this.badge.style.background = 'currentColor';\r\n }\r\n } else if (!this.inheritColor) {\r\n if (this.inverseColor) {\r\n this.badge.style.color = window\r\n .getComputedStyle(this.badge, null)\r\n .getPropertyValue('background-color');\r\n this.badge.style.background = 'none';\r\n } else {\r\n this.badge.style.color = '';\r\n this.badge.style.background = '';\r\n }\r\n }\r\n this.originalColor = this.badge.style.color;\r\n this.updateDisabled();\r\n }\r\n\r\n private updateHidden() {\r\n if (!this.badge) {\r\n return;\r\n }\r\n this.badge.style.display = this.hidden ? 'none' : 'flex';\r\n }\r\n\r\n private updateDisabled() {\r\n if (!this.badge || !this.inverseColor) {\r\n return;\r\n }\r\n if (this.disabled) {\r\n this.originalColor = this.badge.style.color;\r\n this.badge.style.color = '#b9b9b9';\r\n } else {\r\n this.badge.style.color = this.originalColor;\r\n }\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { IgoBadgeIconDirective } from './badge-icon.directive';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@NgModule({\r\n imports: [MatBadgeModule, MatIconModule],\r\n declarations: [IgoBadgeIconDirective],\r\n exports: [MatBadgeModule, IgoBadgeIconDirective]\r\n})\r\nexport class IgoMatBadgeIconModule {\r\n static forRoot(): ModuleWithProviders<IgoMatBadgeIconModule> {\r\n return {\r\n ngModule: IgoMatBadgeIconModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Output\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[igoClickout]'\r\n})\r\nexport class ClickoutDirective {\r\n @Output() clickout = new EventEmitter<MouseEvent>();\r\n\r\n @HostListener('document:click', ['$event', '$event.target'])\r\n handleMouseClick(event: MouseEvent, target: HTMLElement) {\r\n if (!target) {\r\n return;\r\n }\r\n\r\n if (!this.el.nativeElement.contains(target)) {\r\n this.clickout.emit(event);\r\n }\r\n }\r\n\r\n constructor(private el: ElementRef) {}\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { ClickoutDirective } from './clickout.directive';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [ClickoutDirective],\r\n exports: [ClickoutDirective]\r\n})\r\nexport class IgoClickoutModule {\r\n static forRoot(): ModuleWithProviders<IgoClickoutModule> {\r\n return {\r\n ngModule: IgoClickoutModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'clone'\r\n})\r\nexport class ClonePipe implements PipeTransform {\r\n transform(value: any, args?: any): any {\r\n if (value === undefined) {\r\n return value;\r\n }\r\n\r\n if (value instanceof Array) {\r\n return value.map(obj => Object.assign(Object.create(obj), obj));\r\n } else {\r\n return Object.assign(Object.create(value), value);\r\n }\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { ClonePipe } from './clone.pipe';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [ClonePipe],\r\n exports: [ClonePipe]\r\n})\r\nexport class IgoCloneModule {\r\n static forRoot(): ModuleWithProviders<IgoCloneModule> {\r\n return {\r\n ngModule: IgoCloneModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import {\r\n Directive,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n HostListener,\r\n ElementRef,\r\n Renderer2\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[igoCollapse]'\r\n})\r\nexport class CollapseDirective {\r\n @Input()\r\n get target() {\r\n return this._target;\r\n }\r\n set target(value: Element) {\r\n this._target = value;\r\n }\r\n private _target: Element;\r\n\r\n @Input()\r\n get collapsed(): boolean {\r\n return this._collapsed;\r\n }\r\n set collapsed(collapsed: boolean) {\r\n collapsed ? this.collapseTarget() : this.expandTarget();\r\n this._collapsed = collapsed;\r\n this.toggle.emit(collapsed);\r\n }\r\n private _collapsed = false;\r\n\r\n @Output() toggle: EventEmitter<boolean> = new EventEmitter();\r\n\r\n @HostListener('click')\r\n click() {\r\n this.collapsed = !this.collapsed;\r\n }\r\n\r\n constructor(private renderer: Renderer2, private el: ElementRef) {}\r\n\r\n private collapseTarget() {\r\n this.renderer.addClass(this.target, 'igo-collapsed');\r\n this.renderer.addClass(this.el.nativeElement, 'collapsed');\r\n }\r\n\r\n private expandTarget() {\r\n this.renderer.removeClass(this.target, 'igo-collapsed');\r\n this.renderer.removeClass(this.el.nativeElement, 'collapsed');\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'igo-collapsible',\r\n templateUrl: './collapsible.component.html',\r\n styleUrls: ['./collapsible.component.scss']\r\n})\r\nexport class CollapsibleComponent {\r\n @Input()\r\n get title() {\r\n return this._title;\r\n }\r\n set title(value: string) {\r\n this._title = value;\r\n }\r\n private _title = '';\r\n\r\n @Input()\r\n get collapsed() {\r\n return this._collapsed;\r\n }\r\n set collapsed(value: boolean) {\r\n this._collapsed = value;\r\n this.toggle.emit(value);\r\n }\r\n private _collapsed = false;\r\n\r\n @Output() toggle: EventEmitter<boolean> = new EventEmitter();\r\n}\r\n","<mat-list-item>\r\n <mat-icon\r\n svgIcon=\"chevron-up\" \r\n class=\"igo-chevron\"\r\n mat-list-avatar\r\n igoCollapse\r\n [target]=\"content\"\r\n [collapsed]=\"collapsed\"\r\n (toggle)=\"collapsed = $event\">\r\n </mat-icon>\r\n <h4 matLine>{{title}}</h4>\r\n</mat-list-item>\r\n\r\n<div #content>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\n\r\nimport { CollapseDirective } from './collapse.directive';\r\nimport { CollapsibleComponent } from './collapsible.component';\r\n\r\n@NgModule({\r\n imports: [MatIconModule, MatListModule],\r\n declarations: [CollapsibleComponent, CollapseDirective],\r\n exports: [CollapsibleComponent, CollapseDirective]\r\n})\r\nexport class IgoCollapsibleModule {\r\n static forRoot(): ModuleWithProviders<IgoCollapsibleModule> {\r\n return {\r\n ngModule: IgoCollapsibleModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'igo-confirm-dialog',\r\n templateUrl: './confirm-dialog.component.html',\r\n styleUrls: ['./confirm-dialog.component.scss']\r\n})\r\nexport class ConfirmDialogComponent {\r\n public confirmMessage: string;\r\n\r\n constructor(public dialogRef: MatDialogRef<ConfirmDialogComponent>) {}\r\n}\r\n","<h2 mat-dialog-title class=\"mat-typography\">{{'igo.common.confirmDialog.title' | translate}}</h2>\r\n<div mat-dialog-content class=\"mat-typography\">{{confirmMessage}}</div>\r\n<div mat-dialog-actions>\r\n <button mat-button color=\"primary\" (click)=\"dialogRef.close(true)\">{{'igo.common.confirmDialog.confirmBtn' | translate}}</button>\r\n <button mat-button (click)=\"dialogRef.close(false)\">{{'igo.common.confirmDialog.cancelBtn' | translate}}</button>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { LanguageService } from '@igo2/core';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { ConfirmDialogComponent } from './confirm-dialog.component';\r\n\r\n@Injectable()\r\nexport class ConfirmDialogService {\r\n constructor(private dialog: MatDialog, private languageService: LanguageService) {}\r\n\r\n public open(message: string): Observable<any> {\r\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\r\n disableClose: false\r\n });\r\n dialogRef.componentInstance.confirmMessage = this.languageService.translate.instant(message);\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\n\r\nimport { ConfirmDialogComponent } from './confirm-dialog.component';\r\nimport { ConfirmDialogService } from './confirm-dialog.service';\r\n\r\n@NgModule({\r\n imports: [MatButtonModule, MatDialogModule, IgoLanguageModule],\r\n declarations: [ConfirmDialogComponent],\r\n exports: [ConfirmDialogComponent],\r\n providers: [ConfirmDialogService]\r\n})\r\nexport class IgoConfirmDialogModule {\r\n static forRoot(): ModuleWithProviders<IgoConfirmDialogModule> {\r\n return {\r\n ngModule: IgoConfirmDialogModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport type { TemplateRef } from '@angular/core';\r\n\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { filter, take } from 'rxjs/operators';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\n\r\n@Directive({\r\n selector: '[igoContextMenu]'\r\n})\r\nexport class ContextMenuDirective {\r\n private overlayRef: OverlayRef | null;\r\n private sub: Subscription;\r\n\r\n @Input('igoContextMenu') menuContext: TemplateRef<any>;\r\n @Output() menuPosition = new EventEmitter<{ x: number; y: number }>();\r\n\r\n constructor(\r\n public overlay: Overlay,\r\n public viewContainerRef: ViewContainerRef,\r\n private elementRef: ElementRef\r\n ) {}\r\n\r\n @HostListener('longpress', ['$event'])\r\n @HostListener('contextmenu', ['$event'])\r\n public onContextMenu(e: MouseEvent | TouchEvent): void {\r\n let x;\r\n let y;\r\n if (e instanceof TouchEvent) {\r\n x = e.touches[0].pageX;\r\n y = e.touches[0].pageY;\r\n } else if (e instanceof MouseEvent) {\r\n x = e.x;\r\n y = e.y;\r\n }\r\n if (!x || !y) {\r\n return;\r\n }\r\n\r\n this.close();\r\n e.preventDefault();\r\n this.menuPosition.emit({ x, y });\r\n this.overlayRef = null;\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo({ x, y })\r\n .withPositions([\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top'\r\n }\r\n ]);\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.close()\r\n });\r\n this.overlayRef.attach(\r\n new TemplatePortal(this.menuContext, this.viewContainerRef, {\r\n $implicit: undefined\r\n })\r\n );\r\n\r\n this.sub = fromEvent<MouseEvent>(document, 'click')\r\n .pipe(\r\n filter(event => {\r\n const clickTarget = event.target as HTMLElement;\r\n this.close();\r\n return (\r\n !!this.overlayRef &&\r\n !this.overlayRef.overlayElement.contains(clickTarget)\r\n );\r\n }),\r\n take(1)\r\n )\r\n .subscribe(() => this.close());\r\n\r\n this.sub = fromEvent<MouseEvent>(document, 'contextmenu')\r\n .pipe(\r\n filter(event => {\r\n const clickTarget = event.target as HTMLElement;\r\n if (\r\n clickTarget &&\r\n !this.elementRef.nativeElement.contains(clickTarget) &&\r\n !this.overlayRef.overlayElement.contains(clickTarget)\r\n ) {\r\n return true;\r\n } else {\r\n event.preventDefault();\r\n }\r\n }),\r\n take(1)\r\n )\r\n .subscribe(() => this.close());\r\n }\r\n\r\n close() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null;\r\n }\r\n if (this.sub) {\r\n this.sub.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Directive, HostListener, Output, EventEmitter, Input } from '@angular/core';\r\nimport { userAgent } from '@igo2/utils';\r\n\r\n\r\n/**\r\n * IgoLongPress trigger longpress event after a define duration.\r\n * This directive exist to patch the unavailable contextmenu event on iOS.\r\n * @param touchDuration touch duration in ms, default value is 400ms\r\n * @param iOSOnly define if longpress is triggered only for iOS, default value = true\r\n */\r\n@Directive({\r\n selector: '[igoLongPress]'\r\n})\r\nexport class LongPressDirective {\r\n private touchTimeout: any;\r\n @Input() touchDuration: number = 400;\r\n @Input() onlyIOS: boolean = true;\r\n @Output() longpress = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n\r\n @HostListener('touchstart', ['$event'])\r\n public touchstart(e: TouchEvent) {\r\n if (e.touches.length > 1) {\r\n this.touchEnd();\r\n return;\r\n }\r\n this.touchTimeout = setTimeout(() => {\r\n if (this.onlyIOS) {\r\n if (userAgent.getOSName() === 'iOS') {\r\n this.longpress.emit(e);\r\n }\r\n } else {\r\n this.longpress.emit(e);\r\n }\r\n }, this.touchDuration);\r\n }\r\n @HostListener('touchmove')\r\n @HostListener('touchcancel')\r\n @HostListener('touchend')\r\n public touchend() {\r\n this.touchEnd();\r\n }\r\n\r\n\r\n private touchEnd() {\r\n clearTimeout(this.touchTimeout);\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { ContextMenuDirective } from './context-menu.directive';\r\nimport { LongPressDirective } from './long-press.directive';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [ContextMenuDirective, LongPressDirective],\r\n exports: [ContextMenuDirective, LongPressDirective]\r\n})\r\nexport class IgoContextMenuModule {\r\n static forRoot(): ModuleWithProviders<IgoContextMenuModule> {\r\n return {\r\n ngModule: IgoContextMenuModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'igo-custom-html',\r\n templateUrl: './custom-html.component.html',\r\n styleUrls: ['./custom-html.component.scss']\r\n})\r\nexport class CustomHtmlComponent {\r\n @Input()\r\n get html(): string {\r\n return this._html;\r\n }\r\n set html(value: string) {\r\n this._html = value;\r\n }\r\n private _html = '';\r\n\r\n constructor() {}\r\n}\r\n","<div class=\"custom-html\" [innerHTML]=\"html | sanitizeHtml\"></div>\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\n\r\nimport { CustomHtmlComponent } from './custom-html.component';\r\nimport { SanitizeHtmlPipe } from './custom-html.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n IgoLanguageModule\r\n ],\r\n exports: [SanitizeHtmlPipe, CustomHtmlComponent],\r\n declarations: [SanitizeHtmlPipe, CustomHtmlComponent]\r\n})\r\nexport class IgoCustomHtmlModule {\r\n static forRoot(): ModuleWithProviders<IgoCustomHtmlModule> {\r\n return {\r\n ngModule: IgoCustomHtmlModule\r\n };\r\n }\r\n}\r\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { throwError } from 'rxjs';\r\n\r\nimport { DOMOptions, DOMValue } from './dom.interfaces';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DOMService {\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n async getDom(dom: DOMOptions): Promise<DOMValue[]> {\r\n const url = dom.url;\r\n let result: DOMValue[];\r\n\r\n await this.http.get<any>(url).pipe(\r\n map(response => {\r\n result = response;\r\n return response;\r\n }),\r\n catchError((err: HttpErrorResponse) => {\r\n return throwError(err);\r\n })\r\n ).toPromise();\r\n\r\n return result;\r\n }\r\n\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { DOMService } from './dom.service';\r\n\r\n@NgModule({\r\n providers: [DOMService]\r\n})\r\nexport class IgoDOMModule {\r\n static forRoot(): ModuleWithProviders<IgoDOMModule> {\r\n return {\r\n ngModule: IgoDOMModule,\r\n providers: [\r\n DOMService\r\n ]\r\n };\r\n }\r\n}\r\n","import {\r\n Directive,\r\n HostListener,\r\n HostBinding,\r\n EventEmitter,\r\n Output,\r\n Input\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[igoDragAndDrop]'\r\n})\r\nexport class DragAndDropDirective {\r\n\r\n @Input() allowedExtensions: Array<string> = [];\r\n\r\n @Output() protected filesDropped: EventEmitter<File[]> = new EventEmitter();\r\n\r\n @Output() protected filesInvalid: EventEmitter<File[]> = new EventEmitter();\r\n\r\n @HostBinding('style.background') private background = 'inherit';\r\n\r\n @HostListener('dragover', ['$event'])\r\n public onDragOver(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.background = '#999';\r\n }\r\n\r\n @HostListener('dragleave', ['$event'])\r\n public onDragLeave(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.background = 'inherit';\r\n }\r\n\r\n @HostListener('drop', ['$event'])\r\n public onDrop(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n if (evt.alreadyFired) {\r\n return;\r\n }\r\n evt.alreadyFired = true;\r\n\r\n this.background = 'inherit';\r\n const filesObj = this.validExtensions(evt);\r\n if (filesObj.valid.length) {\r\n this.filesDropped.emit(filesObj.valid);\r\n }\r\n if (filesObj.invalid.length) {\r\n this.filesInvalid.emit(filesObj.invalid);\r\n }\r\n }\r\n\r\n private validExtensions(evt) {\r\n const files = evt.dataTransfer.files;\r\n const filesObj = {\r\n valid: [],\r\n invalid: []\r\n };\r\n if (files.length > 0) {\r\n for (const file of files) {\r\n const ext = file.name.split('.')[file.name.split('.').length - 1];\r\n if (\r\n this.allowedExtensions.length === 0 ||\r\n (\r\n this.allowedExtensions.lastIndexOf(ext) !== -1 &&\r\n file.size !== 0\r\n )\r\n ) {\r\n filesObj.valid.push(file);\r\n } else {\r\n filesObj.invalid.push(file);\r\n }\r\n }\r\n }\r\n\r\n return filesObj;\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { DragAndDropDirective } from './drag-drop.directive';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [DragAndDropDirective],\r\n exports: [DragAndDropDirective]\r\n})\r\nexport class IgoDrapDropModule {\r\n static forRoot(): ModuleWithProviders<IgoDrapDropModule> {\r\n return {\r\n ngModule: IgoDrapDropModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import {\r\n ComponentFactory,\r\n ComponentRef,\r\n ViewContainerRef\r\n} from '@angular/core';\r\n\r\nimport { Observable, Subscription } from 'rxjs';\r\n\r\n/**\r\n * This class is used in the DynamicComponentOutlet component. It holds\r\n * a reference to a component factory and can render that component\r\n * in a target element on demand. It's also possible to set inputs\r\n * and to subscribe to outputs.\r\n */\r\nexport class DynamicComponent<C> {\r\n\r\n /**\r\n * Component reference\r\n */\r\n private componentRef: ComponentRef<C>;\r\n\r\n /**\r\n * Subscriptions to the component's outputs. Those need\r\n * to be unsubscribed when the component is destroyed.\r\n */\r\n private subscriptions: Subscription[] = [];\r\n\r\n /**\r\n * Component target element\r\n */\r\n private target: ViewContainerRef;\r\n\r\n /**\r\n * Component inputs\r\n */\r\n private inputs: {[key: string]: any} = {};\r\n\r\n /**\r\n * Subscriptions to the component's async inputs\r\n */\r\n private inputs$$: {[key: string]: Subscription} = {};\r\n\r\n /**\r\n * Subscribers to the component's outputs\r\n */\r\n private subscribers: {[key: string]: (event: any) => void} = {};\r\n\r\n constructor(private componentFactory: ComponentFactory<C>) {}\r\n\r\n /**\r\n * Render the component to a target element.\r\n * Set it's inputs and subscribe to it's outputs.\r\n * @param target Target element\r\n */\r\n setTarget(target: ViewContainerRef) {\r\n this.target = target;\r\n this.componentRef = target.createComponent(this.componentFactory);\r\n this.updateInputs(this.inputs);\r\n this.updateSubscribers(this.subscribers);\r\n }\r\n\r\n /**\r\n * Destroy this component. That means, removing from it's target\r\n * element and unsubscribing to it's outputs.\r\n */\r\n destroy() {\r\n if (this.target !== undefined) {\r\n this.target.clear();\r\n }\r\n if (this.componentRef !== undefined) {\r\n this.componentRef.destroy();\r\n this.componentRef = undefined;\r\n }\r\n this.unobserveAllInputs();\r\n this.unsubscribeAll();\r\n }\r\n\r\n /**\r\n * Update the component inputs. This is an update so any\r\n * key not defined won't be overwritten.\r\n */\r\n updateInputs(inputs: {[key: string]: any}) {\r\n this.inputs = inputs;\r\n if (this.componentRef === undefined) {\r\n return;\r\n }\r\n\r\n const instance = this.componentRef.instance;\r\n const allowedInputs = this.componentFactory.inputs;\r\n allowedInputs.forEach((value: {propName: string; templateName: string; }) => {\r\n const key = value.propName;\r\n\r\n this.unobserveInput(key);\r\n\r\n const inputValue = inputs[key];\r\n if (inputs.hasOwnProperty(key)) {\r\n if (inputValue instanceof Observable) {\r\n this.observeInput(key, inputValue);\r\n } else {\r\n this.setInputValue(instance, key, inputValue);\r\n }\r\n }\r\n });\r\n\r\n if (typeof (instance as any).onUpdateInputs === 'function') {\r\n (instance as any).onUpdateInputs();\r\n }\r\n }\r\n\r\n /**\r\n * Set an instance's input value\r\n * @param instance Component instance\r\n * @param key Input key\r\n * @param value Input value\r\n */\r\n private setInputValue(instance: C, key: string, value: any) {\r\n const currentValue = instance[key];\r\n if (value === currentValue) {\r\n return;\r\n }\r\n\r\n const prototype = Object.getPrototypeOf(instance);\r\n const descriptor = Object.getOwnPropertyDescriptor(prototype, key);\r\n if (descriptor !== undefined && descriptor.set !== undefined) {\r\n descriptor.set.call(instance, value);\r\n } else {\r\n instance[key] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Update the component subscribers. This is an update so any\r\n * key not defined won't be overwritten.\r\n */\r\n updateSubscribers(subscribers: {[key: string]: (event: any) => void}) {\r\n this.subscribers = subscribers;\r\n if (this.componentRef === undefined) {\r\n return;\r\n }\r\n\r\n const instance = this.componentRef.instance;\r\n const allowedSubscribers = this.componentFactory.outputs;\r\n allowedSubscribers.forEach((value: {propName: string; templateName: string; }) => {\r\n const key = value.propName;\r\n if (subscribers.hasOwnProperty(key)) {\r\n const emitter = instance[key];\r\n const subscriber = subscribers[key];\r\n if (Array.isArray(subscriber)) {\r\n subscriber.forEach((_subscriber) => {\r\n this.subscriptions.push(emitter.subscribe(_subscriber));\r\n });\r\n } else {\r\n this.subscriptions.push(emitter.subscribe(subscriber));\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Subscribe to an observable input and update the component's input value\r\n * accordingly\r\n * @param key Input key\r\n * @param observable Observable\r\n */\r\n private observeInput(key: string, observable: Observable<any>) {\r\n this.inputs$$[key] = observable.subscribe((value: any) => {\r\n const instance = this.componentRef.instance;\r\n this.setInputValue(instance, key, value);\r\n\r\n if (typeof (instance as any).onUpdateInputs === 'function') {\r\n (instance as any).onUpdateInputs();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Unsubscribe to an observable input\r\n * @param key Input key\r\n */\r\n private unobserveInput(key: string) {\r\n if (this.inputs$$[key] !== undefined) {\r\n this.inputs$$[key].unsubscribe();\r\n this.inputs$$[key] = undefined;\r\n }\r\n }\r\n\r\n /**\r\n * Unsubscribe to all outputs.\r\n */\r\n private unobserveAllInputs() {\r\n Object.values(this.inputs$$).forEach((s: Subscription | undefined) => {\r\n if (s !== undefined) {\r\n s.unsubscribe();\r\n }\r\n });\r\n this.inputs$$ = {};\r\n }\r\n\r\n /**\r\n * Unsubscribe to all outputs.\r\n */\r\n private unsubscribeAll() {\r\n this.subscriptions.forEach((s: Subscription) => s.unsubscribe());\r\n this.subscriptions = [];\r\n }\r\n\r\n}\r\n","import {\r\n ComponentFactoryResolver,\r\n Injectable\r\n} from '@angular/core';\r\n\r\nimport { DynamicComponent } from './dynamic-component';\r\n\r\n/**\r\n * Service to creates DynamicComponent instances from base component classes\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DynamicComponentService {\r\n\r\n constructor(private resolver: ComponentFactoryResolver) {}\r\n\r\n /**\r\n * Creates a DynamicComponent instance from a base component class\r\n * @param componentCls The component class\r\n * @returns DynamicComponent instance\r\n */\r\n create(componentCls: any): DynamicComponent<any> {\r\n const factory = this.resolver.resolveComponentFactory(componentCls as any);\r\n return new DynamicComponent<typeof componentCls>(factory);\r\n }\r\n}\r\n","import {\r\n Input,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n Component,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges,\r\n ViewContainerRef,\r\n ViewChild\r\n} from '@angular/core';\r\n\r\nimport { ObjectUtils } from '@igo2/utils';\r\n\r\nimport { DynamicComponent } from '../shared/dynamic-component';\r\nimport { DynamicComponentService } from '../shared/dynamic-component.service';\r\n\r\n@Component({\r\n selector: 'igo-dynamic-outlet',\r\n templateUrl: 'dynamic-outlet.component.html',\r\n styleUrls: ['dynamic-outlet.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DynamicOutletComponent implements OnChanges, OnDestroy {\r\n /**\r\n * The dynamic component base class or the dynamic component itself\r\n */\r\n @Input() component: DynamicComponent<any> | any;\r\n\r\n /**\r\n * The dynamic component inputs\r\n */\r\n @Input() inputs: { [key: string]: any } = {};\r\n\r\n /**\r\n * The subscribers to the dynamic component outputs\r\n */\r\n @Input() subscribers: { [key: string]: (event: any) => void } = {};\r\n\r\n /**\r\n * The dynamic component\r\n */\r\n private dynamicComponent: DynamicComponent<any>;\r\n\r\n /**\r\n * The view element to render the component to\r\n * @ignore\r\n */\r\n @ViewChild('target', { read: ViewContainerRef, static: true })\r\n private target: ViewContainerRef;\r\n\r\n constructor(\r\n private dynamicComponentService: DynamicComponentService,\r\n private cdRef: ChangeDetectorRef\r\n ) {}\r\n\r\n /**\r\n * If the dynamic component changes, create it.\r\n * If the inputs or subscribers change, update the current component's\r\n * inputs or subscribers.\r\n * @internal\r\n */\r\n ngOnChanges(changes: SimpleChanges) {\r\n const component = changes.component;\r\n const inputs = changes.inputs;\r\n const subscribers = changes.subscribers;\r\n const eq = ObjectUtils.objectsAreEquivalent;\r\n\r\n if (!component || !component.currentValue) {\r\n return;\r\n }\r\n\r\n if (component.currentValue !== component.previousValue) {\r\n this.createComponent(component.currentValue);\r\n } else {\r\n const inputsAreEquivalents =\r\n inputs && eq(inputs.currentValue || {}, inputs.previousValue || {});\r\n const subscribersAreEquivalents =\r\n subscribers &&\r\n eq(subscribers.currentValue || {}, subscribers.previousValue || {});\r\n\r\n if (inputsAreEquivalents === false) {\r\n this.updateInputs();\r\n }\r\n\r\n if (subscribersAreEquivalents === false) {\r\n this.updateSubscribers();\r\n }\r\n }\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Destroy the dynamic component and all it's subscribers\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n if (this.dynamicComponent) {\r\n this.dynamicComponent.destroy();\r\n }\r\n }\r\n\r\n /**\r\n * Create a DynamicComponent out of the component class and render it.\r\n * @internal\r\n */\r\n private createComponent(component: DynamicComponent<any> | any) {\r\n if (this.dynamicComponent !== undefined) {\r\n this.dynamicComponent.destroy();\r\n }\r\n this.dynamicComponent =\r\n component instanceof DynamicComponent\r\n ? component\r\n : this.dynamicComponentService.create(component);\r\n this.renderComponent();\r\n }\r\n\r\n /**\r\n * Create and render the dynamic component. Set it's inputs and subscribers\r\n * @internal\r\n */\r\n private renderComponent() {\r\n this.updateInputs();\r\n this.updateSubscribers();\r\n this.dynamicComponent.setTarget(this.target);\r\n }\r\n\r\n /**\r\n * Update the dynamic component inputs. This is an update so any\r\n * key not defined won't be overwritten.\r\n * @internal\r\n */\r\n private updateInputs() {\r\n this.dynamicComponent.updateInputs(this.inputs);\r\n }\r\n\r\n /**\r\n * Update the dynamic component subscribers. This is an update so any\r\n * key not defined won't be overwritten.\r\n * @internal\r\n */\r\n private updateSubscribers() {\r\n this.dynamicComponent.updateSubscribers(this.subscribers);\r\n }\r\n}\r\n","<ng-template #target></ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { DynamicOutletComponent } from './dynamic-outlet.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n DynamicOutletComponent\r\n ],\r\n declarations: [\r\n DynamicOutletComponent\r\n ]\r\n})\r\nexport class IgoDynamicOutletModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoDynamicOutletModule } from './dynamic-outlet/dynamic-outlet.module';\r\nimport { DynamicComponentService } from './shared/dynamic-component.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoDynamicOutletModule\r\n ],\r\n exports: [\r\n IgoDynamicOutletModule\r\n ],\r\n providers: [\r\n DynamicComponentService\r\n ]\r\n})\r\nexport class IgoDynamicComponentModule {}\r\n","import { Component, OnInit, OnDestroy, Input, ViewChild, ElementRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { Media, MediaService } from '@igo2/core';\r\n\r\nimport { FlexibleState, FlexibleDirection } from './flexible.type';\r\n\r\n@Component({\r\n selector: 'igo-flexible',\r\n templateUrl: './flexible.component.html',\r\n styleUrls: ['./flexible.component.scss']\r\n})\r\nexport class FlexibleComponent implements OnInit, OnDestroy {\r\n static transitionTime = 250;\r\n\r\n @ViewChild('flexibleMain', { static: true }) main;\r\n\r\n @Input()\r\n get initial(): string {\r\n return this._initial;\r\n }\r\n set initial(value: string) {\r\n this._initial = value;\r\n }\r\n private _initial = '0';\r\n\r\n @Input()\r\n get collapsed(): string {\r\n return this._collapsed;\r\n }\r\n set collapsed(value: string) {\r\n this._collapsed = value;\r\n }\r\n private _collapsed = '0';\r\n\r\n @Input()\r\n get expanded(): string {\r\n return this._expanded;\r\n }\r\n set expanded(value: string) {\r\n this._expanded = value;\r\n }\r\n private _expanded = '100%';\r\n\r\n @Input()\r\n get initialMobile(): string {\r\n return this._initialMobile;\r\n }\r\n set initialMobile(value: string) {\r\n this._initialMobile = value;\r\n }\r\n private _initialMobile: string = this.expanded;\r\n\r\n @Input()\r\n get collapsedMobile(): string {\r\n return this._collapsedMobile;\r\n }\r\n set collapsedMobile(value: string) {\r\n this._collapsedMobile = value;\r\n }\r\n private _collapsedMobile: string = this.collapsed;\r\n\r\n @Input()\r\n get expandedMobile(): string {\r\n return this._expandedMobile;\r\n }\r\n set expandedMobile(value: string) {\r\n this._expandedMobile = value;\r\n }\r\n private _expandedMobile: string = this.expanded;\r\n\r\n @Input()\r\n get direction(): FlexibleDirection {\r\n return this._direction;\r\n }\r\n set direction(value: FlexibleDirection) {\r\n this._direction = value;\r\n }\r\n private _direction: FlexibleDirection = 'column';\r\n\r\n @Input()\r\n get state(): FlexibleState {\r\n return this._state;\r\n }\r\n set state(value: FlexibleState) {\r\n const sizes = {\r\n initial: this.initial,\r\n collapsed: this.collapsed,\r\n expanded: this.expanded\r\n };\r\n\r\n if (this.mediaService.isMobile()) {\r\n Object.assign(sizes, {\r\n initial: this.initialMobile,\r\n collapsed: this.collapsedMobile,\r\n expanded: this.expandedMobile\r\n });\r\n }\r\n\r\n const size = sizes[value];\r\n if (size !== undefined) {\r\n this.setSize(size);\r\n setTimeout(() => {\r\n this._state = value;\r\n }, FlexibleComponent.transitionTime);\r\n }\r\n }\r\n private _state: FlexibleState = 'initial';\r\n\r\n private mediaService$$: Subscription;\r\n\r\n constructor(private el: ElementRef, private mediaService: MediaService) {}\r\n\r\n ngOnInit() {\r\n this.el.nativeElement.className += this.direction;\r\n\r\n // Since this component supports different sizes\r\n // on mobile, force a redraw when the media changes\r\n this.mediaService$$ = this.mediaService.media$.subscribe(\r\n (media: Media) => (this.state = this.state)\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.mediaService$$) {\r\n this.mediaService$$.unsubscribe();\r\n }\r\n }\r\n\r\n private setSize(size: string) {\r\n this._state = 'transition';\r\n\r\n if (this.direction === 'column') {\r\n this.main.nativeElement.style.height = size;\r\n } else if (this.direction === 'row') {\r\n this.main.nativeElement.style.width = size;\r\n }\r\n }\r\n}\r\n","<div #flexibleMain class=\"igo-flexible-main {{state}} {{direction}}\">\r\n <div class=\"igo-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n<div class=\"igo-flexible-fill\">\r\n <div>\r\n \t<div class=\"igo-container\">\r\n <ng-content select=\"[igoFlexibleFill]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { FlexibleComponent } from './flexible.component';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [FlexibleComponent],\r\n exports: [FlexibleComponent]\r\n})\r\nexport class IgoFlexibleModule {\r\n static forRoot(): ModuleWithProviders<IgoFlexibleModule> {\r\n return {\r\n ngModule: IgoFlexibleModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { AbstractControl } from '@angular/forms';\r\n\r\nimport { Form, FormField, FormFieldGroup } from './form.interfaces';\r\n\r\nexport function formControlIsRequired(control: AbstractControl): boolean {\r\n if (control.validator) {\r\n const validator = control.validator({} as AbstractControl);\r\n if (validator && validator.required) {\r\n return true;\r\n }\r\n }\r\n\r\n if ((control as any).controls) {\r\n const requiredControl = Object.keys((control as any).controls).find((key: string) => {\r\n return formControlIsRequired((control as any).controls[key]);\r\n });\r\n return requiredControl !== undefined;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport function getDefaultErrorMessages(): {[key: string]: string} {\r\n return {\r\n required: 'igo.common.form.errors.required'\r\n };\r\n}\r\n\r\nexport function getControlErrorMessage(control: AbstractControl, messages: {[key: string]: string}): string {\r\n const errors = control.errors || {};\r\n const errorKeys = Object.keys(errors);\r\n const errorMessages = errorKeys\r\n .map((key: string) => messages[key])\r\n .filter((message: string) => message !== undefined);\r\n return errorMessages.length > 0 ? errorMessages[0] : '';\r\n}\r\n\r\nexport function getAllFormFields(form: Form): FormField[] {\r\n return form.groups.reduce((acc: FormField[], group: FormFieldGroup) => {\r\n return acc.concat(group.fields);\r\n }, [].concat(form.fields));\r\n}\r\n\r\nexport function getFormFieldByName(form: Form, name: string): FormField {\r\n const fields = getAllFormFields(form);\r\n return fields.find((field: FormField) => {\r\n return field.name === name;\r\n });\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnChanges,\r\n SimpleChanges,\r\n ChangeDetectionStrategy,\r\n ViewChild,\r\n ElementRef\r\n} from '@angular/core';\r\n\r\nimport { t } from 'typy';\r\n\r\nimport { Form, FormField, FormFieldGroup } from '../shared/form.interfaces';\r\nimport { getAllFormFields } from '../shared/form.utils';\r\n\r\n/**\r\n * A configurable form\r\n */\r\n@Component({\r\n selector: 'igo-form',\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormComponent implements OnChanges {\r\n\r\n /**\r\n * Form\r\n */\r\n @Input() form: Form;\r\n\r\n /**\r\n * Input data\r\n */\r\n @Input() formData: { [key: string]: any};\r\n\r\n /**\r\n * Form autocomplete\r\n */\r\n @Input() autocomplete: string = 'off';\r\n\r\n /**\r\n * Event emitted when the form is submitted\r\n */\r\n @Output() submitForm = new EventEmitter<{[key: string]: any}>();\r\n\r\n @ViewChild('buttons', { static: true }) buttons: ElementRef;\r\n\r\n get hasButtons(): boolean {\r\n return this.buttons.nativeElement.children.length !== 0;\r\n }\r\n\r\n constructor() {}\r\n\r\n /**\r\n * Is the entity or the template change, recreate the form or repopulate it.\r\n * @internal\r\n */\r\n ngOnChanges(changes: SimpleChanges) {\r\n const formData = changes.formData;\r\n if (formData && formData.currentValue !== formData.previousValue) {\r\n if (formData.currentValue === undefined) {\r\n this.clear();\r\n } else {\r\n this.setData(formData.currentValue);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Transform the form data to a feature and emit an event\r\n * @param event Form submit event\r\n * @internal\r\n */\r\n onSubmit() {\r\n this.submitForm.emit(this.getData());\r\n }\r\n\r\n getData(): { [key: string]: any} {\r\n const data = {};\r\n getAllFormFields(this.form).forEach((field: FormField) => {\r\n this.updateDataWithFormField(data, field);\r\n });\r\n return data;\r\n }\r\n\r\n private setData(data: {[key: string]: any}) {\r\n this.form.fields.forEach((field: FormField) => {\r\n field.control.setValue(t(data, field.name).safeObject);\r\n });\r\n\r\n this.form.groups.forEach((group: FormFieldGroup) => {\r\n group.fields.forEach((field: FormField) => {\r\n field.control.setValue(t(data, field.name).safeObject);\r\n });\r\n });\r\n }\r\n\r\n private updateDataWithFormField(data: { [key: string]: any}, field: FormField) {\r\n const control = field.control;\r\n if (!control.disabled) {\r\n data[field.name] = control.value;\r\n }\r\n }\r\n\r\n /**\r\n * Clear form\r\n */\r\n private clear() {\r\n this.form.control.reset();\r\n }\r\n\r\n}\r\n","\r\n<form\r\n [autocomplete]=\"autocomplete\"\r\n [formGroup]=\"form.control\"\r\n (ngSubmit)=\"onSubmit()\">\r\n <div class=\"igo-form-body\" [ngClass]=\"{'igo-form-body-with-buttons': hasButtons}\">\r\n <div class=\"igo-form-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div #buttons class=\"igo-form-buttons\">\r\n <ng-content select=\"[formButtons]\"></ng-content>\r\n </div>\r\n </div>\r\n</form>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { FormComponent } from './form.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [\r\n FormComponent,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n declarations: [\r\n FormComponent\r\n ]\r\n})\r\nexport class IgoFormFormModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { UntypedFormBuilder, Validators, ValidatorFn } from '@angular/forms';\r\n\r\nimport {\r\n Form,\r\n FormField,\r\n FormFieldConfig,\r\n FormFieldGroup,\r\n FormFieldGroupConfig\r\n} from './form.interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormService {\r\n\r\n constructor(private formBuilder: UntypedFormBuilder) {}\r\n\r\n form(fields: FormField[], groups: FormFieldGroup[]): Form {\r\n const control = this.formBuilder.group({});\r\n fields.forEach((field: FormField) => {\r\n control.addControl(field.name, field.control);\r\n });\r\n groups.forEach((group: FormFieldGroup) => {\r\n control.addControl(group.name, group.control);\r\n });\r\n\r\n return {fields, groups, control};\r\n }\r\n\r\n group(config: FormFieldGroupConfig, fields: FormField[]): FormFieldGroup {\r\n const options = config.options || {};\r\n const control = this.formBuilder.group({});\r\n fields.forEach((field: FormField) => {\r\n control.addControl(field.name, field.control);\r\n });\r\n\r\n if (options.validator) {\r\n const validators = this.getValidators(options.validator); // convert string to actual validator\r\n control.setValidators(validators);\r\n }\r\n\r\n return Object.assign({}, config, {fields, control}) as FormFieldGroup;\r\n }\r\n\r\n field(config: FormFieldConfig): FormField {\r\n const options = config.options || {};\r\n const state = {\r\n value: '',\r\n disabled: options.disabled\r\n };\r\n const control = this.formBuilder.control(state);\r\n\r\n if (options.validator) {\r\n const validators = this.getValidators(options.validator); // convert string to actual validator\r\n control.setValidators(validators);\r\n }\r\n\r\n return Object.assign({type: 'text'}, config, {control}) as FormField;\r\n }\r\n\r\n extendFieldConfig(config: FormFieldConfig, partial: Partial<FormFieldConfig>): FormFieldConfig {\r\n const options = Object.assign({}, config.options || {}, partial.options || {});\r\n const inputs = Object.assign({}, config.inputs || {}, partial.inputs || {});\r\n const subscribers = Object.assign({}, config.subscribers || {}, partial.subscribers || {});\r\n return Object.assign({}, config, {options, inputs, subscribers});\r\n }\r\n\r\n private getValidators(validatorOption: string | string[] | ValidatorFn): ValidatorFn | ValidatorFn[] {\r\n if (Array.isArray(validatorOption)) {\r\n return validatorOption.map((validatorStr) => {\r\n return this.getValidator(validatorStr);\r\n });\r\n }\r\n\r\n return this.getValidator(validatorOption);\r\n }\r\n\r\n private getValidator(validatorStr: string | ValidatorFn): ValidatorFn {\r\n if (typeof validatorStr !== 'string') {\r\n return validatorStr;\r\n }\r\n\r\n // regex pattern to extract arguments from string for e.g applying on \"minLength(8)\" would extract 8\r\n const re = /^([a-zA-Z]{3,15})\\((.{0,20})\\)$/;\r\n const match = validatorStr.match(re);\r\n\r\n if (!match) {\r\n return Validators[validatorStr];\r\n }\r\n\r\n const name = match[1];\r\n const args = match[2];\r\n return Validators[name](args);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Service where all available form fields are registered.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormFieldService {\r\n\r\n static fields: {[key: string]: any} = {};\r\n\r\n static register(type: string, component: any) {\r\n FormFieldService.fields[type] = component;\r\n }\r\n\r\n constructor() {}\r\n\r\n /**\r\n * Return field component by type\r\n * @param type Field type\r\n * @returns Field component\r\n */\r\n getFieldByType(type: string): any {\r\n return FormFieldService.fields[type];\r\n }\r\n\r\n}\r\n","import { FormFieldService } from './form-field.service';\r\n\r\nexport function IgoFormFieldComponent(type: string): (cls: any) => any {\r\n return (compType: any) => {\r\n FormFieldService.register(type, compType);\r\n };\r\n}\r\n","\r\n\r\n<ng-container *ngIf=\"field !== undefined\">\r\n <igo-dynamic-outlet\r\n [component]=\"getFieldComponent()\"\r\n [inputs]=\"getFieldInputs()\"\r\n [subscribers]=\"getFieldSubscribers()\">\r\n </igo-dynamic-outlet>\r\n</ng-container>\r\n","import {\r\n Component,\r\n Input,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\n\r\nimport { FormField, FormFieldInputs, FormFieldOptions } from '../shared/form.interfaces';\r\nimport { FormFieldService } from '../shared/form-field.service';\r\nimport { getDefaultErrorMessages } from '../shared';\r\n\r\n/**\r\n * This component renders the proper form input based on\r\n * the field configuration it receives.\r\n */\r\n@Component({\r\n selector: 'igo-form-field',\r\n templateUrl: './form-field.component.html',\r\n styleUrls: ['./form-field.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormFieldComponent {\r\n\r\n /**\r\n * Field configuration\r\n */\r\n @Input() field: FormField;\r\n\r\n /**\r\n * Field inputs cache\r\n */\r\n private fieldInputs: FormFieldInputs = undefined;\r\n\r\n /**\r\n * Field subscribers cache\r\n */\r\n private fieldSubscribers: {[key: string]: ({field: FormField, control: FormControl}) => void } = undefined;\r\n\r\n get fieldOptions(): FormFieldOptions {\r\n return this.field.options || {};\r\n }\r\n\r\n constructor(private formFieldService: FormFieldService) {}\r\n\r\n getFieldComponent(): any {\r\n return this.formFieldService.getFieldByType(this.field.type || 'text');\r\n }\r\n\r\n getFieldInputs(): FormFieldInputs {\r\n if (this.fieldInputs !== undefined) {\r\n return this.fieldInputs;\r\n }\r\n\r\n const errors = this.fieldOptions.errors || {};\r\n this.fieldInputs = Object.assign(\r\n {\r\n placeholder: this.field.title,\r\n disableSwitch: this.fieldOptions.disableSwitch || false\r\n },\r\n Object.assign({}, this.field.inputs || {}),\r\n {\r\n formControl: this.field.control,\r\n errors: Object.assign({}, getDefaultErrorMessages(), errors)\r\n }\r\n );\r\n return this.fieldInputs;\r\n }\r\n\r\n getFieldSubscribers(): {[key: string]: ({field: FormField, control: FormControl}) => void } {\r\n if (this.fieldSubscribers !== undefined) {\r\n return this.fieldSubscribers;\r\n }\r\n\r\n this.fieldSubscribers = Object.assign({}, this.field.subscribers || {});\r\n return this.fieldSubscribers;\r\n }\r\n}\r\n","<mat-form-field>\r\n <mat-select\r\n [required]=\"required\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"formControl\">\r\n <mat-option *ngFor=\"let choice of choices$ | async\" [value]=\"choice.value\">\r\n {{choice.title}}\r\n </mat-option>\r\n </mat-select>\r\n <mat-icon\r\n *ngIf=\"disableSwitch === true\"\r\n class=\"igo-form-disable-switch\"\r\n [svgIcon]=\"(disabled$ | async) === true ? 'checkbox-blank-outline' : 'checkbox-marked-outline'\"\r\n (click)=\"onDisableSwitchClick()\"\r\n matPrefix>\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors\">{{getErrorMessage() | translate}}</mat-error>\r\n</mat-form-field>\r\n","import {\r\n Input,\r\n Component,\r\n ChangeDetectionStrategy,\r\n OnInit\r\n} from '@angular/core';\r\nimport type { UntypedFormControl } from '@angular/forms';\r\n\r\nimport { BehaviorSubject, } from 'rxjs';\r\n\r\nimport { formControlIsRequired, getControlErrorMessage } from '../shared/form.utils';\r\nimport { FormFieldSelectChoice } from '../shared/form.interfaces';\r\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\r\n\r\n/**\r\n * This component renders a select field\r\n */\r\n@IgoFormFieldComponent('select')\r\n@Component({\r\n selector: 'igo-form-field-select',\r\n templateUrl: './form-field-select.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormFieldSelectComponent implements OnInit {\r\n\r\n readonly disabled$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n /**\r\n * Select input choices\r\n */\r\n @Input()\r\n set choices(value: FormFieldSelectChoice[]) { this.choices$.next(value); }\r\n get choices(): FormFieldSelectChoice[] { return this.choices$.value; }\r\n readonly choices$: BehaviorSubject<FormFieldSelectChoice[]> = new BehaviorSubject([]);\r\n\r\n /**\r\n * The field's form control\r\n */\r\n @Input() formControl: UntypedFormControl;\r\n\r\n /**\r\n * Field placeholder\r\n */\r\n @Input() placeholder: string;\r\n\r\n /**\r\n * Field placeholder\r\n */\r\n @Input() errors: {[key: string]: string};\r\n\r\n /**\r\n * Wheter a disable switch should be available\r\n */\r\n @Input() disableSwitch: boolean = false;\r\n\r\n /**\r\n * Whether the field is required\r\n */\r\n get required(): boolean {\r\n return formControlIsRequired(this.formControl);\r\n }\r\n\r\n ngOnInit() {\r\n this.disabled$.next(this.formControl.disabled);\r\n }\r\n\r\n /**\r\n * Get error message\r\n */\r\n getErrorMessage(): string {\r\n return getControlErrorMessage(this.formControl, this.errors);\r\n }\r\n\r\n onDisableSwitchClick() {\r\n this.toggleDisabled();\r\n }\r\n\r\n private toggleDisabled() {\r\n const disabled = !this.disabled$.value;\r\n if (disabled === true) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n this.disabled$.next(disabled);\r\n }\r\n\r\n}\r\n","<mat-form-field>\r\n <input\r\n matInput\r\n [required]=\"required\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"formControl\">\r\n <mat-icon\r\n *ngIf=\"disableSwitch === true\"\r\n class=\"igo-form-disable-switch\"\r\n [svgIcon]=\"(disabled$ | async) === true ? 'checkbox-blank-outline' : 'checkbox-marked-outline'\"\r\n (click)=\"onDisableSwitchClick()\"\r\n matPrefix>\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors\">{{getErrorMessage() | translate}}</mat-error>\r\n</mat-form-field>\r\n","import {\r\n Input,\r\n Component,\r\n ChangeDetectionStrategy,\r\n OnInit\r\n} from '@angular/core';\r\nimport type { UntypedFormControl } from '@angular/forms';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport {\r\n formControlIsRequired,\r\n getControlErrorMessage\r\n} from '../shared/form.utils';\r\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\r\n\r\n/**\r\n * This component renders a text field\r\n */\r\n@IgoFormFieldComponent('text')\r\n@Component({\r\n selector: 'igo-form-field-text',\r\n templateUrl: './form-field-text.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormFieldTextComponent implements OnInit {\r\n\r\n disabled$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n /**\r\n * The field's form control\r\n */\r\n @Input() formControl: UntypedFormControl;\r\n\r\n /**\r\n * Field placeholder\r\n */\r\n @Input() placeholder: string;\r\n\r\n /**\r\n * Field placeholder\r\n */\r\n @Input() errors: {[key: string]: string};\r\n\r\n /**\r\n * Wheter a disable switch should be available\r\n */\r\n @Input() disableSwitch: boolean = false;\r\n\r\n /**\r\n * Whether the field is required\r\n */\r\n get required(): boolean {\r\n return formControlIsRequired(this.formControl);\r\n }\r\n\r\n ngOnInit() {\r\n this.disabled$.next(this.formControl.disabled);\r\n }\r\n\r\n /**\r\n * Get error message\r\n */\r\n getErrorMessage(): string {\r\n return getControlErrorMessage(this.formControl, this.errors);\r\n }\r\n\r\n onDisableSwitchClick() {\r\n this.toggleDisabled();\r\n }\r\n\r\n private toggleDisabled() {\r\n const disabled = !this.disabled$.value;\r\n if (disabled === true) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n this.disabled$.next(disabled);\r\n }\r\n\r\n}\r\n","<mat-form-field>\r\n <textarea\r\n matInput\r\n [required]=\"required\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"formControl\">\r\n </textarea>\r\n <mat-icon\r\n *ngIf=\"disableSwitch === true\"\r\n class=\"igo-form-disable-switch\"\r\n [svgIcon]=\"(disabled$ | async) === true ? 'checkbox-blank-outline' : 'checkbox-marked-outline'\"\r\n (click)=\"onDisableSwitchClick()\"\r\n matPrefix>\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors\">{{getErrorMessage() | translate}}</mat-error>\r\n</mat-form-field>\r\n","import {\r\n Input,\r\n Component,\r\n ChangeDetectionStrategy,\r\n OnInit\r\n} from '@angular/core';\r\nimport type { UntypedFormControl } from '@angular/forms';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { formControlIsRequired, getControlErrorMessage } from '../shared/form.utils';\r\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\r\n\r\n/**\r\n * This component renders a textarea field\r\n */\r\n@IgoFormFieldComponent('textarea')\r\n@Component({\r\n selector: 'igo-form-field-textarea',\r\n templateUrl: './form-field-textarea.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormFieldTextareaComponent implements OnInit {\r\n\r\n disabled$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n /**\r\n * The field's form control\r\n */\r\n @Input() formControl: UntypedFormControl;\r\n\r\n /**\r\n * Field placeholder\r\n */\r\n @Input() placeholder: string;\r\n\r\n /**\r\n * Field placeholder\r\n */\r\n @Input() errors: {[key: string]: string};\r\n\r\n /**\r\n * Wheter a disable switch should be available\r\n */\r\n @Input() disableSwitch: boolean = false;\r\n\r\n /**\r\n * Whether the field is required\r\n */\r\n get required(): boolean {\r\n return formControlIsRequired(this.formControl);\r\n }\r\n\r\n ngOnInit() {\r\n this.disabled$.next(this.formControl.disabled);\r\n }\r\n\r\n /**\r\n * Get error message\r\n */\r\n getErrorMessage(): string {\r\n return getControlErrorMessage(this.formControl, this.errors);\r\n }\r\n\r\n onDisableSwitchClick() {\r\n this.toggleDisabled();\r\n }\r\n\r\n private toggleDisabled() {\r\n const disabled = !this.disabled$.value;\r\n if (disabled === true) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n this.disabled$.next(disabled);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\nimport { IgoDynamicOutletModule } from '../../dynamic-component/dynamic-outlet/dynamic-outlet.module';\r\n\r\nimport { FormFieldComponent } from './form-field.component';\r\nimport { FormFieldSelectComponent } from './form-field-select.component';\r\nimport { FormFieldTextComponent } from './form-field-text.component';\r\nimport { FormFieldTextareaComponent } from './form-field-textarea.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n IgoLanguageModule,\r\n IgoDynamicOutletModule\r\n ],\r\n exports: [\r\n FormFieldComponent,\r\n FormFieldSelectComponent,\r\n FormFieldTextComponent,\r\n FormFieldTextareaComponent\r\n ],\r\n declarations: [\r\n FormFieldComponent,\r\n FormFieldSelectComponent,\r\n FormFieldTextComponent,\r\n FormFieldTextareaComponent\r\n ]\r\n})\r\nexport class IgoFormFieldModule {}\r\n","<div\r\n *ngIf=\"group && group.fields.length > 0\"\r\n class=\"igo-form-group-fields\">\r\n <div\r\n *ngFor=\"let field of group.fields\"\r\n class=\"igo-form-field-wrapper\"\r\n [ngClass]=\"getFieldNgClass(field)\">\r\n <igo-form-field [field]=\"field\"></igo-form-field>\r\n </div>\r\n</div>\r\n\r\n<div class=\"igo-form-group-extra-content\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<mat-error *ngIf=\"formControl.errors\">{{getErrorMessage() | translate}}</mat-error>\r\n","import {\r\n Component,\r\n Input,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\n\r\nimport { getControlErrorMessage } from '../shared/form.utils';\r\nimport { FormField, FormFieldGroup } from '../shared/form.interfaces';\r\n\r\n/**\r\n * A configurable form, optionnally bound to an entity\r\n * (for example in case of un update). Submitting that form\r\n * emits an event with the form data but no other operation is performed.\r\n */\r\n@Component({\r\n selector: 'igo-form-group',\r\n templateUrl: './form-group.component.html',\r\n styleUrls: ['./form-group.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormGroupComponent {\r\n\r\n /**\r\n * Form field group\r\n */\r\n @Input() group: FormFieldGroup;\r\n\r\n /**\r\n * Field placeholder\r\n */\r\n @Input() errors: {[key: string]: string};\r\n\r\n /**\r\n * Form group control\r\n */\r\n get formControl(): UntypedFormGroup { return this.group.control; }\r\n\r\n constructor() {}\r\n\r\n /**\r\n * Return the number of columns a field should occupy.\r\n * The maximum allowed is 2, even if the field config says more.\r\n * @param field Field\r\n * @returns Number of columns\r\n * @internal\r\n */\r\n getFieldColSpan(field: FormField): number {\r\n let colSpan = 2;\r\n const options = field.options || {};\r\n if (options.cols && options.cols > 0) {\r\n colSpan = Math.min(options.cols, 2);\r\n }\r\n\r\n return colSpan;\r\n }\r\n\r\n /**\r\n * Return the number of columns a field should occupy.\r\n * The maximum allowed is 2, even if the field config says more.\r\n * @param field Field\r\n * @returns Number of columns\r\n * @internal\r\n */\r\n getFieldNgClass(field: FormField): {[key: string]: boolean} {\r\n const colspan = this.getFieldColSpan(field);\r\n return {[`igo-form-field-colspan-${colspan}`]: true};\r\n }\r\n\r\n /**\r\n * Get error message\r\n */\r\n getErrorMessage(): string {\r\n const options = this.group.options || {};\r\n return getControlErrorMessage(this.formControl, options.errors || {});\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\n\r\nimport { IgoFormFieldModule } from '../form-field/form-field.module';\r\nimport { FormGroupComponent } from './form-group.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatFormFieldModule,\r\n IgoLanguageModule,\r\n IgoFormFieldModule\r\n ],\r\n exports: [\r\n FormGroupComponent\r\n ],\r\n declarations: [\r\n FormGroupComponent\r\n ]\r\n})\r\nexport class IgoFormGroupModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoFormFormModule } from './form/form.module';\r\nimport { IgoFormGroupModule } from './form-group/form-group.module';\r\nimport { IgoFormFieldModule } from './form-field/form-field.module';\r\nimport { FormService } from './shared/form.service';\r\nimport { FormFieldService } from './shared/form-field.service';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoFormGroupModule,\r\n IgoFormFieldModule\r\n ],\r\n exports: [\r\n IgoFormFormModule,\r\n IgoFormGroupModule,\r\n IgoFormFieldModule\r\n ],\r\n declarations: [],\r\n providers: [\r\n FormService,\r\n FormFieldService\r\n ]\r\n})\r\nexport class IgoFormModule {}\r\n","import { Component, EventEmitter, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'igo-home-button',\r\n templateUrl: './home-button.component.html',\r\n styleUrls: ['./home-button.component.scss']\r\n})\r\nexport class HomeButtonComponent {\r\n\r\n @Output() unselectButton = new EventEmitter<any>();\r\n\r\n constructor() {}\r\n\r\n onUnselectButtonClick() {\r\n this.unselectButton.emit();\r\n }\r\n}\r\n","<button\r\n id=\"homeButton\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.context.sidenav.mainMenu' | translate\"\r\n (click)=\"onUnselectButtonClick()\">\r\n <mat-icon svgIcon=\"home\"></mat-icon>\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IgoLanguageModule } from '@igo2/core';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { HomeButtonComponent } from './home-button.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n IgoLanguageModule\r\n ],\r\n exports: [HomeButtonComponent],\r\n declarations: [HomeButtonComponent],\r\n providers: []\r\n})\r\nexport class IgoHomeButtonModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { MatSelectModule } from '@angular/material/select';\r\n\r\nimport { EntitySelectorComponent } from './entity-selector.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatSelectModule\r\n ],\r\n exports: [EntitySelectorComponent],\r\n declarations: [EntitySelectorComponent]\r\n})\r\nexport class IgoEntitySelectorModule {}\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[igoStopDropPropagation]'\r\n})\r\nexport class StopDropPropagationDirective {\r\n @HostListener('drop', ['$event'])\r\n public onDrop(event: any): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { StopDropPropagationDirective } from './stop-drop-propagation.directive';\r\nimport { StopPropagationDirective } from './stop-propagation.directive';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [StopDropPropagationDirective, StopPropagationDirective],\r\n exports: [StopDropPropagationDirective, StopPropagationDirective]\r\n})\r\nexport class IgoStopPropagationModule {\r\n static forRoot(): ModuleWithProviders<IgoStopPropagationModule> {\r\n return {\r\n ngModule: IgoStopPropagationModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { EntityTablePaginatorComponent } from './entity-table-paginator.component';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n MatPaginatorModule,\r\n ],\r\n exports: [\r\n EntityTablePaginatorComponent\r\n ],\r\n declarations: [\r\n EntityTablePaginatorComponent,\r\n ]\r\n})\r\nexport class IgoEntityTablePaginatorModule {}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { ImageErrorDirective } from './image-error.directive';\r\nimport { SecureImagePipe } from './secure-image.pipe';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [SecureImagePipe, ImageErrorDirective],\r\n exports: [SecureImagePipe, ImageErrorDirective]\r\n})\r\nexport class IgoImageModule {\r\n static forRoot(): ModuleWithProviders<IgoImageModule> {\r\n return {\r\n ngModule: IgoImageModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\n\r\nimport { IgoStopPropagationModule } from '../../stop-propagation/stop-propagation.module';\r\nimport { IgoCustomHtmlModule } from '../../custom-html/custom-html.module';\r\nimport { EntityTableRowDirective } from './entity-table-row.directive';\r\nimport { EntityTableComponent } from './entity-table.component';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { IgoEntityTablePaginatorModule } from '../entity-table-paginator/entity-table-paginator.module';\r\nimport { IgoImageModule } from '../../image/image.module';\r\nimport { IgoLanguageModule } from '@igo2/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatSelectModule } from '@angular/material/select';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatTableModule,\r\n MatAutocompleteModule,\r\n MatSortModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatPaginatorModule,\r\n MatSelectModule,\r\n IgoStopPropagationModule,\r\n IgoCustomHtmlModule,\r\n IgoEntityTablePaginatorModule,\r\n IgoImageModule,\r\n IgoLanguageModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatDatepickerModule,\r\n MatTooltipModule\r\n ],\r\n exports: [\r\n EntityTableComponent\r\n ],\r\n declarations: [\r\n EntityTableComponent,\r\n EntityTableRowDirective\r\n ]\r\n})\r\nexport class IgoEntityTableModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoEntitySelectorModule } from './entity-selector/entity-selector.module';\r\nimport { IgoEntityTableModule } from './entity-table/entity-table.module';\r\nimport { IgoEntityTablePaginatorModule } from './entity-table-paginator/entity-table-paginator.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n IgoEntitySelectorModule,\r\n IgoEntityTableModule,\r\n IgoEntityTablePaginatorModule\r\n ],\r\n declarations: []\r\n})\r\nexport class IgoEntityModule {}\r\n","import { catchError } from 'rxjs/operators';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport { InteractiveTourOptions } from './interactive-tour.interface';\r\nimport { ConfigService } from '@igo2/core';\r\n\r\n@Injectable()\r\nexport class InteractiveTourLoader {\r\n private jsonURL: string;\r\n private allToursOptions;\r\n\r\n constructor(private http: HttpClient, private configService: ConfigService) {\r\n this.jsonURL = this.getPathToConfigFile();\r\n }\r\n\r\n public loadConfigTour() {\r\n this.getJSON()\r\n .subscribe(\r\n (data) => {\r\n this.allToursOptions = data;\r\n },\r\n (err) => {\r\n throw new Error(`Problem with Interactive tour configuration file: interactiveTour.json not find. Check if the file and is path is set correctly.`);\r\n }\r\n );\r\n }\r\n\r\n public getPathToConfigFile(): string {\r\n return (\r\n this.configService.getConfig('interactiveTour.pathToConfigFile') ||\r\n './config/interactiveTour.json'\r\n );\r\n }\r\n\r\n public getJSON(): Observable<any> {\r\n return this.http.get(this.jsonURL).pipe(\r\n catchError((e) => {\r\n e.error.caught = true;\r\n throw e;\r\n })\r\n );\r\n }\r\n\r\n public getTourOptionData(toolName): InteractiveTourOptions {\r\n if (this.allToursOptions === undefined) {\r\n return undefined;\r\n }\r\n let nameInConfigFile = toolName;\r\n nameInConfigFile = nameInConfigFile.replace(/\\s/g, '');\r\n return this.allToursOptions[nameInConfigFile];\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ShepherdService } from 'angular-shepherd';\r\n\r\nimport { ConfigService, MediaService, LanguageService } from '@igo2/core';\r\nimport { InteractiveTourLoader } from './interactive-tour.loader';\r\nimport {\r\n InteractiveTourOptions,\r\n InteractiveTourStep,\r\n InteractiveTourAction\r\n} from './interactive-tour.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InteractiveTourService {\r\n private previousStep: InteractiveTourStep;\r\n private nextIndex = 1;\r\n\r\n constructor(\r\n private configService: ConfigService,\r\n private mediaService: MediaService,\r\n private languageService: LanguageService,\r\n private interactiveTourLoader: InteractiveTourLoader,\r\n private shepherdService: ShepherdService\r\n ) {\r\n if (this.isAppHaveTour()) {\r\n this.interactiveTourLoader.loadConfigTour();\r\n }\r\n }\r\n\r\n public isAppHaveTour() {\r\n const haveTour = this.configService.getConfig('interactiveTour.activateInteractiveTour');\r\n if (haveTour === undefined) {\r\n return true;\r\n } else {\r\n return haveTour;\r\n }\r\n }\r\n\r\n public isToolHaveTourConfig(toolName: string): boolean {\r\n const checkTourActiveOptions = this.interactiveTourLoader.getTourOptionData(\r\n toolName\r\n );\r\n if (checkTourActiveOptions === undefined) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n public disabledTourButton(toolName: string): boolean {\r\n const stepConfig: InteractiveTourOptions = this.interactiveTourLoader.getTourOptionData(\r\n toolName\r\n );\r\n\r\n if (stepConfig?.conditions) {\r\n for (const condition of stepConfig?.conditions) {\r\n if (document.querySelector(condition) === null) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public isMobile(): boolean {\r\n return this.mediaService.isMobile();\r\n }\r\n\r\n public isTourDisplayInMobile(): boolean {\r\n const showInMobile = this.configService.getConfig(\r\n 'interactiveTour.tourInMobile'\r\n );\r\n if (showInMobile === undefined) {\r\n return true;\r\n }\r\n return this.configService.getConfig('interactiveTour.tourInMobile');\r\n }\r\n\r\n private getButtons(buttonKind?: 'first' | 'last' | 'noBackButton') {\r\n if (buttonKind === 'noBackButton') {\r\n return [\r\n {\r\n classes: 'shepherd-button-primary',\r\n text: this.languageService.translate.instant(\r\n 'igo.common.interactiveTour.nextButton'\r\n ),\r\n type: 'next'\r\n }\r\n ];\r\n }\r\n if (buttonKind === 'first') {\r\n return [\r\n {\r\n classes: 'shepherd-button-secondary',\r\n text: this.languageService.translate.instant(\r\n 'igo.common.interactiveTour.exitButton'\r\n ),\r\n type: 'cancel'\r\n },\r\n {\r\n classes: 'shepherd-button-primary',\r\n text: this.languageService.translate.instant(\r\n 'igo.common.interactiveTour.nextButton'\r\n ),\r\n type: 'next'\r\n }\r\n ];\r\n }\r\n\r\n if (buttonKind === 'last') {\r\n return [\r\n {\r\n classes: 'shepherd-button-secondary',\r\n text: this.languageService.translate.instant(\r\n 'igo.common.interactiveTour.backButton'\r\n ),\r\n type: 'back'\r\n },\r\n {\r\n classes: 'shepherd-button-primary',\r\n text: this.languageService.translate.instant(\r\n 'igo.common.interactiveTour.exitButton'\r\n ),\r\n type: 'cancel'\r\n }\r\n ];\r\n }\r\n\r\n return [\r\n {\r\n classes: 'shepherd-button-secondary',\r\n text: this.languageService.translate.instant(\r\n 'igo.common.interactiveTour.backButton'\r\n ),\r\n type: 'back'\r\n },\r\n {\r\n classes: 'shepherd-button-primary',\r\n text: this.languageService.translate.instant(\r\n 'igo.common.interactiveTour.nextButton'\r\n ),\r\n type: 'next'\r\n }\r\n ];\r\n }\r\n\r\n private getAction(actionName: string) {\r\n const action = {\r\n click: 'click'\r\n };\r\n return action[actionName.toLowerCase()];\r\n }\r\n\r\n private addProgress() {\r\n const self = this as any;\r\n let nbTry = 0;\r\n const maxTry = 21;\r\n const checkExist = setInterval(() => {\r\n if (self.getCurrentStep()) {\r\n if (self.getCurrentStep().options.attachTo.element && !document.querySelector(self.getCurrentStep().options.attachTo.element)) {\r\n self.cancel();\r\n clearInterval(checkExist);\r\n return;\r\n } else {\r\n const currentStepElement = self.getCurrentStep().getElement();\r\n if (currentStepElement) {\r\n const shepherdList = currentStepElement.querySelectorAll('.shepherd-content, .shepherd-text');\r\n shepherdList.forEach(element => {\r\n element.classList.add('mat-typography');\r\n });\r\n }\r\n const header = currentStepElement\r\n ? currentStepElement.querySelector('.shepherd-header')\r\n : undefined;\r\n\r\n nbTry++;\r\n if (header || nbTry > maxTry) {\r\n clearInterval(checkExist);\r\n }\r\n\r\n if (header) {\r\n const stepsArray = self.steps;\r\n const progress = document.createElement('span');\r\n progress.className = 'shepherd-progress';\r\n progress.innerText = `${\r\n stepsArray.indexOf(self.getCurrentStep()) + 1\r\n }/${stepsArray.length}`;\r\n header.insertBefore(\r\n progress,\r\n currentStepElement.querySelector('.shepherd-cancel-icon')\r\n );\r\n }\r\n }\r\n }\r\n }, 100);\r\n }\r\n\r\n private checkNext(index, tour, service) {\r\n if (tour.getCurrentStep()) {\r\n if (tour.getCurrentStep().options.attachTo.element && document.querySelector(tour.getCurrentStep().options.attachTo.element)) {\r\n tour.complete();\r\n return;\r\n }\r\n\r\n if (index.index === tour.steps.length - 1) {\r\n tour.complete();\r\n return;\r\n }\r\n\r\n tour.steps.splice(index.index, 1);\r\n const nextStep = tour.steps[index.index];\r\n if (nextStep.options.attachTo.element && !document.querySelector(nextStep.options.attachTo.element)) {\r\n service.checkNext(index, tour, service);\r\n } else {\r\n tour._setupModal();\r\n tour.show(nextStep.id);\r\n }\r\n }\r\n }\r\n\r\n private executeAction(\r\n step: InteractiveTourStep,\r\n actionConfig: InteractiveTourAction\r\n ) {\r\n if (!actionConfig) {\r\n return;\r\n }\r\n\r\n if (\r\n actionConfig.condition &&\r\n ((actionConfig.condition.charAt(0) === '!' &&\r\n document.querySelector(actionConfig.condition.slice(1))) ||\r\n (actionConfig.condition.charAt(0) !== '!' &&\r\n !document.querySelector(actionConfig.condition)))\r\n ) {\r\n return;\r\n }\r\n\r\n const element: HTMLElement = document.querySelector(\r\n actionConfig.element || step.element\r\n ) as HTMLElement;\r\n const action = this.getAction(actionConfig.action);\r\n if (element && action) {\r\n element[action]();\r\n }\r\n }\r\n\r\n private executeActionPromise(\r\n step: InteractiveTourStep,\r\n actionConfig: InteractiveTourAction\r\n ) {\r\n return new Promise<void>((resolve) => {\r\n this.executeAction(step, actionConfig);\r\n if (!actionConfig || !actionConfig.waitFor) {\r\n resolve();\r\n return;\r\n }\r\n let nbTry = 0;\r\n const maxTry = actionConfig.maxWait ? actionConfig.maxWait / 100 : 20;\r\n const checkExist = setInterval(() => {\r\n nbTry++;\r\n if (nbTry > maxTry || document.querySelector(actionConfig.waitFor)) {\r\n clearInterval(checkExist);\r\n resolve();\r\n }\r\n }, 100);\r\n });\r\n }\r\n\r\n private getShepherdSteps(stepConfig: InteractiveTourOptions) {\r\n const shepherdSteps = [];\r\n\r\n let i = 0;\r\n for (const step of stepConfig.steps) {\r\n shepherdSteps.push({\r\n attachTo: {\r\n element: step.element,\r\n on: step.position || stepConfig.position\r\n },\r\n popperOptions: {\r\n modifiers: [{ name: 'offset', options: { offset: [0, 15] } }]\r\n },\r\n beforeShowPromise: () => {\r\n return Promise.all([\r\n this.executeActionPromise(\r\n this.previousStep,\r\n this.previousStep ? this.previousStep.beforeChange : undefined\r\n ),\r\n this.executeActionPromise(step, step.beforeShow)\r\n ]);\r\n },\r\n buttons: this.getButtons(\r\n i === 0\r\n ? 'first'\r\n : i + 1 === stepConfig.steps.length\r\n ? 'last'\r\n : stepConfig.steps[i].noBackButton\r\n ? 'noBackButton'\r\n : undefined\r\n ),\r\n classes: step.class,\r\n highlightClass: step.highlightClass,\r\n scrollTo: step.scrollToElement || stepConfig.scrollToElement || true,\r\n canClickTarget: step.disableInteraction\r\n ? !step.disableInteraction\r\n : undefined,\r\n title: this.languageService.translate.instant(\r\n step.title || stepConfig.title\r\n ),\r\n text: [this.languageService.translate.instant(step.text)],\r\n when: {\r\n show: () => {\r\n this.executeAction(step, step.onShow);\r\n },\r\n hide: () => {\r\n this.previousStep = step;\r\n this.executeAction(step, step.onHide);\r\n }\r\n }\r\n });\r\n i++;\r\n }\r\n\r\n return shepherdSteps;\r\n }\r\n\r\n public startTour(toolName: string) {\r\n const stepConfig: InteractiveTourOptions = this.interactiveTourLoader.getTourOptionData(\r\n toolName\r\n );\r\n\r\n this.shepherdService.defaultStepOptions = {\r\n classes: stepConfig.class,\r\n highlightClass: stepConfig.highlightClass,\r\n canClickTarget: stepConfig.disableInteraction\r\n ? !stepConfig.disableInteraction\r\n : true,\r\n cancelIcon: {\r\n enabled: true\r\n }\r\n };\r\n\r\n const shepherdSteps = this.getShepherdSteps(stepConfig);\r\n\r\n this.shepherdService.modal = true;\r\n this.shepherdService.confirmCancel = false;\r\n this.shepherdService.addSteps(shepherdSteps);\r\n\r\n this.shepherdService.tourObject.on('show', this.addProgress);\r\n this.shepherdService.tourObject.on('cancel', (index) => {\r\n this.checkNext(index, this.shepherdService.tourObject, this);\r\n });\r\n\r\n this.shepherdService.start();\r\n }\r\n}\r\n","import { EntityRecord, EntityStore } from '../../entity';\r\nimport { Tool, ToolboxOptions } from './tool.interface';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\n\r\n/**\r\n * Service where all available tools and their component are registered.\r\n */\r\nexport class Toolbox {\r\n /**\r\n * Observable of the active tool\r\n */\r\n activeTool$: BehaviorSubject<Tool> = new BehaviorSubject(undefined);\r\n\r\n /**\r\n * Ordered list of tool names to display in a toolbar\r\n */\r\n toolbar$: BehaviorSubject<string[]> = new BehaviorSubject([]);\r\n\r\n /**\r\n * Observable of the active tool\r\n */\r\n private activeTool$$: Subscription;\r\n\r\n /**\r\n * Active tool history. Useful for activating the previous tool.\r\n */\r\n private activeToolHistory: string[] = [];\r\n\r\n /**\r\n * Tool store\r\n */\r\n private store = new EntityStore<Tool>([], {\r\n getKey: (tool: Tool) => tool.name\r\n });\r\n\r\n get tools$(): BehaviorSubject<Tool[]> {\r\n return this.store.entities$;\r\n }\r\n\r\n constructor(private options: ToolboxOptions = {}) {\r\n this.setToolbar(options.toolbar);\r\n this.initStore();\r\n }\r\n\r\n /**\r\n * Destroy the toolbox\r\n */\r\n destroy() {\r\n this.activeTool$$.unsubscribe();\r\n this.store.destroy();\r\n }\r\n\r\n /**\r\n * Return a tool\r\n * @param name Tool name\r\n * @returns tool Tool\r\n */\r\n getTool(name: string): Tool {\r\n return this.store.get(name);\r\n }\r\n\r\n /**\r\n * Return all tools\r\n * @returns Array of tools\r\n */\r\n getTools(): Tool[] {\r\n return this.store.all();\r\n }\r\n\r\n /**\r\n * Set tool configurations\r\n * @param tools Tools\r\n */\r\n setTools(tools: Tool[]) {\r\n this.store.load(tools);\r\n }\r\n\r\n /**\r\n * Get toolbar\r\n * @returns Toolbar value\r\n */\r\n getToolbar(): string[] {\r\n return this.toolbar$.getValue();\r\n }\r\n\r\n /**\r\n * Set toolbar\r\n * @param toolbar A list of tool names\r\n */\r\n setToolbar(toolbar: string[]) {\r\n this.toolbar$.next(toolbar || []);\r\n }\r\n\r\n /**\r\n * Activate a tool (and deactivate other tools)\r\n * @param name Tool name\r\n * @param options Tool options\r\n */\r\n activateTool(name: string, options: { [key: string]: any } = {}) {\r\n const tool = this.getTool(name);\r\n if (tool === undefined) {\r\n return;\r\n }\r\n\r\n this.store.state.update(tool, { active: true, options }, true);\r\n }\r\n\r\n /**\r\n * Activate the previous tool, if any\r\n */\r\n activatePreviousTool() {\r\n if (this.activeToolHistory.length <= 1) {\r\n this.deactivateTool();\r\n return;\r\n }\r\n const [previous, current] = this.activeToolHistory.splice(-2, 2);\r\n this.activateTool(previous);\r\n }\r\n\r\n /**\r\n * Activate the tool below, if any\r\n */\r\n /* activateBelowTool() {\r\n const arrayTools = this.getToolbar();\r\n const index = arrayTools.findIndex(t => t === this.activeTool$.getValue().name);\r\n if (arrayTools[index + 1] !== undefined) {\r\n this.deactivateTool();\r\n const below = arrayTools[index + 1];\r\n this.activateTool(below);\r\n } else {\r\n this.deactivateTool();\r\n const below = arrayTools[0];\r\n this.activateTool(below);\r\n }\r\n } */\r\n\r\n /**\r\n * Activate the tool above, if any\r\n */\r\n /* activateAboveTool() {\r\n const arrayTools = this.getToolbar();\r\n const index = arrayTools.findIndex(t => t === this.activeTool$.getValue().name);\r\n if (arrayTools[index - 1] !== undefined) {\r\n this.deactivateTool();\r\n const above = arrayTools[index - 1];\r\n this.activateTool(above);\r\n } else {\r\n this.deactivateTool();\r\n const above = arrayTools[arrayTools.length - 1];\r\n this.activateTool(above);\r\n }\r\n } */\r\n\r\n /**\r\n * Deactivate the active tool\r\n */\r\n deactivateTool() {\r\n this.clearActiveToolHistory();\r\n this.store.state.updateAll({ active: false });\r\n }\r\n\r\n /**\r\n * Initialize the tool store and start observing the active tool\r\n */\r\n private initStore() {\r\n this.store = new EntityStore<Tool>([], {\r\n getKey: (entity: Tool) => entity.name\r\n });\r\n\r\n this.activeTool$$ = this.store.stateView\r\n .firstBy$((record: EntityRecord<Tool>) => record.state.active === true)\r\n .subscribe((record: EntityRecord<Tool>) => {\r\n if (record === undefined) {\r\n this.setActiveTool(undefined);\r\n return;\r\n }\r\n\r\n const tool = record.entity;\r\n const options = Object.assign(\r\n {},\r\n tool.options || {},\r\n record.state.options || {}\r\n );\r\n this.setActiveTool(Object.assign({}, tool, { options }));\r\n });\r\n }\r\n\r\n /**\r\n * Set the active tool and update the tool history\r\n * @param tool Tool\r\n */\r\n private setActiveTool(tool: Tool | undefined) {\r\n this.activeTool$.next(tool);\r\n if (tool === undefined) {\r\n this.clearActiveToolHistory();\r\n } else {\r\n this.activeToolHistory = this.activeToolHistory\r\n .filter((name: string) => name !== tool.name)\r\n .concat([tool.name]);\r\n }\r\n }\r\n\r\n /**\r\n * Clear the tool history\r\n */\r\n private clearActiveToolHistory() {\r\n this.activeToolHistory = [];\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { Tool } from './tool.interface';\r\nimport { Toolbox } from './toolbox';\r\n\r\n/**\r\n * Service where runtime tool configurations are registered\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToolService {\r\n static tools: { [key: string]: Tool } = {};\r\n\r\n /**\r\n * Toolbox that holds main tools\r\n */\r\n public toolbox: Toolbox = new Toolbox();\r\n\r\n static register(tool: Tool) {\r\n ToolService.tools[tool.name] = tool;\r\n }\r\n\r\n constructor() {\r\n this.toolbox.setTools(this.getTools());\r\n }\r\n\r\n /**\r\n * Return a tool\r\n * @param name Tool name\r\n * @returns tool Tool\r\n */\r\n getTool(name: string): Tool {\r\n return ToolService.tools[name];\r\n }\r\n\r\n /**\r\n * Return all tools\r\n * @returns tTols\r\n */\r\n getTools(): Tool[] {\r\n return Object.values(ToolService.tools);\r\n }\r\n}\r\n","<button *ngIf=\"showTourButton\"\r\n (click) = \"startInteractiveTour()\"\r\n [ngClass]=\"getClass()\"\r\n mat-raised-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [disabled]=disabledTourButton>\r\n <span class=\"interactive-tour-button-title\">{{'igo.common.interactiveTour.buttonTitle' | translate}} {{(discoverTitleInLocale$ | async) | translate}}</span>\r\n <mat-icon\r\n svgIcon=\"presentation-play\"\r\n [matTooltip]=\"disabledTourButton ?\r\n ('igo.common.interactiveTour.disaledTooltipTourToolButton' | translate) :\r\n ('igo.common.interactiveTour.tooltipTourToolButton' | translate)\">\r\n </mat-icon>\r\n</button>\r\n","import { Component, ViewEncapsulation, Input } from '@angular/core';\r\nimport { InteractiveTourService } from './interactive-tour.service';\r\nimport { ToolService } from '../tool/shared/tool.service';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'igo-interactive-tour',\r\n templateUrl: './interactive-tour.component.html',\r\n styleUrls: ['./interactive-tour.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class InteractiveTourComponent {\r\n /**\r\n * Toolbox that holds main tools\r\n */\r\n @Input() tourToStart: string = '';\r\n @Input() styleButton: string;\r\n @Input() discoverTitleInLocale$: Observable<string> = of('IGO');\r\n\r\n getClass() {\r\n return {\r\n 'tour-button-tool-icon': this.styleButton === 'icon',\r\n 'tour-button-tool': this.styleButton === 'raised'\r\n };\r\n }\r\n\r\n get toolbox() {\r\n return this.toolService.toolbox;\r\n }\r\n\r\n getTourToStart() {\r\n if (this.tourToStart) {\r\n return this.tourToStart;\r\n } else {\r\n return this.activeToolName;\r\n }\r\n }\r\n\r\n get activeToolName() {\r\n if (this.toolbox) {\r\n if (this.isActiveTool) {\r\n return this.toolbox.activeTool$.getValue().name;\r\n } else {\r\n return 'global';\r\n }\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n get isActiveTool(): boolean {\r\n if (this.toolbox) {\r\n return this.toolbox.activeTool$.getValue() !== undefined;\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n get isToolHaveTour(): boolean {\r\n if (this.activeToolName === 'about' && !this.tourToStart) {\r\n return false;\r\n }\r\n return this.interactiveTourService.isToolHaveTourConfig(\r\n this.getTourToStart()\r\n );\r\n }\r\n\r\n get showTourButton(): boolean {\r\n // 2 conditions to show: have Tour on tool in Config file and if we are in mobile displayInMobile= true\r\n let haveTour: boolean;\r\n haveTour = this.isToolHaveTour;\r\n if (haveTour === false) {\r\n return false;\r\n }\r\n\r\n let inMobileAndShow: boolean;\r\n if (this.interactiveTourService.isMobile()) {\r\n inMobileAndShow = this.isTourDisplayInMobile;\r\n if (inMobileAndShow === false) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n get isTourDisplayInMobile(): boolean {\r\n return this.interactiveTourService.isTourDisplayInMobile();\r\n }\r\n\r\n get disabledTourButton(): boolean {\r\n return this.interactiveTourService.disabledTourButton(this.activeToolName);\r\n }\r\n\r\n constructor(\r\n private interactiveTourService: InteractiveTourService,\r\n private toolService: ToolService\r\n ) {}\r\n\r\n startInteractiveTour() {\r\n const tour = this.getTourToStart();\r\n if (tour) {\r\n this.interactiveTourService.startTour(tour);\r\n } else {\r\n return;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\nimport { InteractiveTourService } from './interactive-tour.service';\r\nimport { InteractiveTourComponent } from './interactive-tour.component';\r\nimport { InteractiveTourLoader } from './interactive-tour.loader';\r\n\r\n@NgModule({\r\n declarations: [InteractiveTourComponent],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n IgoLanguageModule\r\n ],\r\n providers: [InteractiveTourService, InteractiveTourLoader],\r\n exports: [InteractiveTourComponent]\r\n})\r\nexport class IgoInteractiveTourModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'keyvalue'\r\n})\r\nexport class KeyValuePipe implements PipeTransform {\r\n transform(value: any, args?: any): any {\r\n const keyValues = [];\r\n Object.getOwnPropertyNames(value).forEach((key: string) =>\r\n keyValues.push({ key, value: value[key] })\r\n );\r\n\r\n return keyValues;\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { KeyValuePipe } from './keyvalue.pipe';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [KeyValuePipe],\r\n exports: [KeyValuePipe]\r\n})\r\nexport class IgoKeyValueModule {\r\n static forRoot(): ModuleWithProviders<IgoKeyValueModule> {\r\n return {\r\n ngModule: IgoKeyValueModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","<h1 mat-dialog-title class=\"mat-typography\">{{ title }}</h1>\r\n\r\n<div mat-dialog-content class=\"mat-typography\">\r\n <ng-container *ngTemplateOutlet=\"loopObject;context:{ obj: data }\"></ng-container>\r\n\r\n <ng-template #loopObject let-obj='obj' let-baseKey='baseKey'>\r\n <ng-container *ngFor=\"let property of obj | keyvalue\">\r\n <ng-container *ngIf=\"ignoreKeys.indexOf(getKey(baseKey, property.key)) === -1\">\r\n\r\n <ng-container *ngIf=\"isObject(property.value); else notObject\">\r\n <ng-container *ngTemplateOutlet=\"loopObject;context:{ obj: property.value, baseKey: getKey(baseKey, property.key) }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #notObject>\r\n <p><span><b>{{getKey(baseKey, property.key)}}</b> : </span><span class=\"propertyValue\" [innerHtml]=\"property.value\"></span></p>\r\n </ng-template>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n</div>\r\n\r\n<div mat-dialog-actions>\r\n <button mat-button color=\"primary\"\r\n (click)=\"dialogRef.close(false)\">\r\n OK\r\n </button>\r\n</div>\r\n","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'igo-json-dialog',\r\n templateUrl: './json-dialog.component.html'\r\n})\r\nexport class JsonDialogComponent {\r\n public title: string;\r\n public data: any;\r\n public ignoreKeys: string[];\r\n\r\n constructor(public dialogRef: MatDialogRef<JsonDialogComponent>) {}\r\n\r\n isObject(val) {\r\n return typeof val === 'object' && !Array.isArray(val);\r\n }\r\n\r\n getKey(baseKey, key) {\r\n return (baseKey ? baseKey + '.' : '') + key;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { JsonDialogComponent } from './json-dialog.component';\r\n\r\n@Injectable()\r\nexport class JsonDialogService {\r\n constructor(private dialog: MatDialog) {}\r\n\r\n public open(title: any, data, ignoreKeys?: string[]): Observable<any> {\r\n const dialogRef = this.dialog.open(JsonDialogComponent, {\r\n disableClose: false\r\n });\r\n dialogRef.componentInstance.data = data;\r\n dialogRef.componentInstance.title = title;\r\n dialogRef.componentInstance.ignoreKeys = ignoreKeys;\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\n\r\nimport { IgoKeyValueModule } from '../keyvalue/keyvalue.module';\r\n\r\nimport { JsonDialogComponent } from './json-dialog.component';\r\nimport { JsonDialogService } from './json-dialog.service';\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatButtonModule, MatDialogModule, IgoKeyValueModule],\r\n exports: [JsonDialogComponent],\r\n declarations: [JsonDialogComponent],\r\n providers: [JsonDialogService]\r\n})\r\nexport class IgoJsonDialogModule {\r\n static forRoot(): ModuleWithProviders<IgoJsonDialogModule> {\r\n return {\r\n ngModule: IgoJsonDialogModule\r\n };\r\n }\r\n}\r\n","import {\r\n Directive,\r\n Input,\r\n Output,\r\n ElementRef,\r\n Renderer2,\r\n HostListener,\r\n EventEmitter\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[igoListItem]'\r\n})\r\nexport class ListItemDirective {\r\n\r\n static focusedCls = 'igo-list-item-focused';\r\n static selectedCls = 'igo-list-item-selected';\r\n static disabledCls = 'igo-list-item-disabled';\r\n\r\n @Input()\r\n get color() {\r\n return this._color;\r\n }\r\n set color(value: string) {\r\n this._color = value;\r\n }\r\n private _color = 'primary';\r\n\r\n @Input()\r\n get focused() {\r\n return this._focused;\r\n }\r\n set focused(value: boolean) {\r\n if (value === this._focused) {\r\n return;\r\n }\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n value ? this.beforeFocus.emit(this) : this.beforeUnfocus.emit(this);\r\n\r\n this._focused = value;\r\n if (this.selected !== true) {\r\n this.toggleFocusedClass();\r\n }\r\n\r\n value ? this.focus.emit(this) : this.unfocus.emit(this);\r\n }\r\n private _focused = false;\r\n\r\n @Input()\r\n get selected() {\r\n return this._selected;\r\n }\r\n set selected(value: boolean) {\r\n if (value === this._selected) {\r\n return;\r\n }\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n value ? this.beforeSelect.emit(this) : this.beforeUnselect.emit(this);\r\n\r\n this._selected = value;\r\n this._focused = value;\r\n this.toggleSelectedClass();\r\n\r\n value ? this.select.emit(this) : this.unselect.emit(this);\r\n }\r\n private _selected = false;\r\n\r\n @Input()\r\n get disabled() {\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n if (value === this._disabled) {\r\n return;\r\n }\r\n\r\n if (value === true) {\r\n this.selected = false;\r\n }\r\n\r\n value ? this.beforeDisable.emit(this) : this.beforeEnable.emit(this);\r\n\r\n this._disabled = value;\r\n this.toggleDisabledClass();\r\n\r\n value ? this.disable.emit(this) : this.enable.emit(this);\r\n }\r\n private _disabled = false;\r\n\r\n @Output() beforeSelect = new EventEmitter<ListItemDirective>();\r\n @Output() beforeFocus = new EventEmitter<ListItemDirective>();\r\n @Output() beforeUnselect = new EventEmitter<ListItemDirective>();\r\n @Output() beforeUnfocus = new EventEmitter<ListItemDirective>();\r\n @Output() beforeDisable = new EventEmitter<ListItemDirective>();\r\n @Output() beforeEnable = new EventEmitter<ListItemDirective>();\r\n @Output() focus = new EventEmitter<ListItemDirective>();\r\n @Output() unfocus = new EventEmitter<ListItemDirective>();\r\n @Output() select = new EventEmitter<ListItemDirective>();\r\n @Output() unselect = new EventEmitter<ListItemDirective>();\r\n @Output() disable = new EventEmitter<ListItemDirective>();\r\n @Output() enable = new EventEmitter<ListItemDirective>();\r\n\r\n @HostListener('click')\r\n onClick() {\r\n this.selected = true;\r\n }\r\n\r\n constructor(public renderer: Renderer2, public el: ElementRef) {}\r\n\r\n getOffsetTop(): number {\r\n const padding = 5;\r\n\r\n return this.el.nativeElement.offsetTop - padding;\r\n }\r\n\r\n private toggleFocusedClass() {\r\n if (this.focused) {\r\n this.addCls(ListItemDirective.focusedCls);\r\n } else {\r\n this.removeCls(ListItemDirective.focusedCls);\r\n }\r\n }\r\n\r\n private toggleSelectedClass() {\r\n if (this.selected) {\r\n this.addCls(ListItemDirective.selectedCls);\r\n this.removeCls(ListItemDirective.focusedCls);\r\n } else {\r\n this.removeCls(ListItemDirective.selectedCls);\r\n }\r\n }\r\n\r\n private toggleDisabledClass() {\r\n if (this.disabled) {\r\n this.addCls(ListItemDirective.disabledCls);\r\n } else {\r\n this.removeCls(ListItemDirective.disabledCls);\r\n }\r\n }\r\n\r\n private addCls(cls: string) {\r\n this.renderer.addClass(this.el.nativeElement, cls);\r\n }\r\n\r\n private removeCls(cls: string) {\r\n this.renderer.removeClass(this.el.nativeElement, cls);\r\n }\r\n}\r\n","import {\r\n Component,\r\n AfterViewInit,\r\n OnInit,\r\n OnDestroy,\r\n Input,\r\n ContentChildren,\r\n HostListener,\r\n ElementRef\r\n} from '@angular/core';\r\nimport type { QueryList } from '@angular/core';\r\n\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { ListItemDirective } from './list-item.directive';\r\n\r\n@Component({\r\n selector: 'igo-list',\r\n templateUrl: './list.component.html',\r\n styleUrls: ['./list.component.scss']\r\n})\r\nexport class ListComponent implements AfterViewInit, OnInit, OnDestroy {\r\n @Input()\r\n get navigation() {\r\n return this._navigation;\r\n }\r\n set navigation(value: boolean) {\r\n this._navigation = value;\r\n }\r\n private _navigation = true;\r\n\r\n @Input()\r\n get selection() {\r\n return this._selection;\r\n }\r\n set selection(value: boolean) {\r\n this._selection = value;\r\n }\r\n private _selection = true;\r\n\r\n get selectedItem() {\r\n return this._selectedItem;\r\n }\r\n set selectedItem(value: ListItemDirective) {\r\n this.focusedItem = value;\r\n this._selectedItem = value;\r\n }\r\n private _selectedItem: ListItemDirective;\r\n\r\n get focusedItem() {\r\n return this._focusedItem;\r\n }\r\n set focusedItem(value: ListItemDirective) {\r\n this._focusedItem = value;\r\n }\r\n private _focusedItem: ListItemDirective;\r\n\r\n private navigationEnabled: boolean;\r\n private listItems$$: Subscription;\r\n private subscriptions: Subscription[] = [];\r\n\r\n @ContentChildren(ListItemDirective, { descendants: true })\r\n listItems: QueryList<ListItemDirective>;\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n @HostListener('document:enter', ['$event'])\r\n handleKeyboardEvent(event: KeyboardEvent) {\r\n // It would be nice to be able to unsubscribe to the event\r\n // completely but until ES7 this won't be possible because\r\n // document events are not observables\r\n if (this.navigationEnabled) {\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n this.navigate(event.key);\r\n } else if (event.key === 'Enter') {\r\n this.select(this.focusedItem);\r\n }\r\n }\r\n }\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n ngOnInit() {\r\n this.enableNavigation();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.listItems.length) {\r\n this.init();\r\n }\r\n\r\n this.listItems$$ = this.listItems.changes.subscribe(\r\n (items: ListItemDirective[]) => this.init()\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.listItems$$.unsubscribe();\r\n }\r\n\r\n focus(item?: ListItemDirective) {\r\n if (!this.selection) {\r\n return;\r\n }\r\n\r\n this.unfocus();\r\n\r\n // We need to make this check because dynamic\r\n // lists such as in the search results list may fail\r\n if (item !== undefined) {\r\n item.focused = true;\r\n }\r\n }\r\n\r\n unfocus() {\r\n if (this.focusedItem !== undefined) {\r\n this.focusedItem.focused = false;\r\n }\r\n\r\n this.focusedItem = undefined;\r\n }\r\n\r\n focusNext() {\r\n const items = this.listItems.toArray();\r\n let item;\r\n const igoList = this.el.nativeElement;\r\n let disabled = true;\r\n let index = this.getFocusedIndex();\r\n if (index === undefined) {\r\n index = -1;\r\n }\r\n\r\n while (disabled && index < items.length - 1) {\r\n index += 1;\r\n item = items[index];\r\n disabled = item.disabled;\r\n }\r\n\r\n if (item !== undefined) {\r\n this.focus(item);\r\n }\r\n\r\n if (!items[index + 1]) {\r\n igoList.scrollTop = igoList.scrollHeight - igoList.clientHeight;\r\n return;\r\n }\r\n\r\n if (item !== undefined && !this.isScrolledIntoView(item.el.nativeElement)) {\r\n igoList.scrollTop =\r\n item.el.nativeElement.offsetTop +\r\n item.el.nativeElement.children[0].offsetHeight -\r\n igoList.clientHeight;\r\n }\r\n }\r\n\r\n focusPrevious() {\r\n const items = this.listItems.toArray();\r\n let item: ListItemDirective;\r\n const igoList = this.el.nativeElement;\r\n let disabled = true;\r\n let index = this.getFocusedIndex();\r\n\r\n while (disabled && index > 0) {\r\n index -= 1;\r\n item = items[index];\r\n disabled = item.disabled;\r\n }\r\n\r\n if (item !== undefined) {\r\n this.focus(item);\r\n }\r\n\r\n if (!items[index - 1]) {\r\n igoList.scrollTop = 0;\r\n return;\r\n }\r\n\r\n if (item !== undefined && !this.isScrolledIntoView(item.el.nativeElement)) {\r\n const padding = 3;\r\n igoList.scrollTop = item.el.nativeElement.offsetTop - padding;\r\n }\r\n }\r\n\r\n select(item?: ListItemDirective) {\r\n if (!this.selection) {\r\n return;\r\n }\r\n\r\n this.unselect();\r\n\r\n if (item !== undefined) {\r\n item.selected = true;\r\n }\r\n }\r\n\r\n unselect() {\r\n this.unfocus();\r\n\r\n if (this.selectedItem !== undefined) {\r\n this.selectedItem.selected = false;\r\n }\r\n\r\n this.selectedItem = undefined;\r\n }\r\n\r\n enableNavigation() {\r\n if (this.navigation) {\r\n this.navigationEnabled = true;\r\n }\r\n }\r\n\r\n disableNavigation() {\r\n this.navigationEnabled = false;\r\n }\r\n\r\n scrollToItem(item: ListItemDirective) {\r\n this.el.nativeElement.scrollTop = item.getOffsetTop();\r\n }\r\n\r\n isScrolledIntoView(elem) {\r\n const docViewTop =\r\n this.el.nativeElement.scrollTop + this.el.nativeElement.offsetTop;\r\n const docViewBottom = docViewTop + this.el.nativeElement.clientHeight;\r\n\r\n const elemTop = elem.offsetTop;\r\n const elemBottom = elemTop + elem.children[0].offsetHeight;\r\n return elemBottom <= docViewBottom && elemTop >= docViewTop;\r\n }\r\n\r\n private init() {\r\n this.subscribe();\r\n\r\n this.selectedItem = this.findSelectedItem();\r\n this.focusedItem = this.findFocusedItem();\r\n\r\n this.enableNavigation();\r\n }\r\n\r\n private subscribe() {\r\n this.unsubscribe();\r\n\r\n this.listItems.toArray().forEach(item => {\r\n this.subscriptions.push(\r\n item.beforeSelect.subscribe((item2: ListItemDirective) =>\r\n this.handleItemBeforeSelect(item2)\r\n )\r\n );\r\n\r\n this.subscriptions.push(\r\n item.select.subscribe((item2: ListItemDirective) =>\r\n this.handleItemSelect(item2)\r\n )\r\n );\r\n\r\n this.subscriptions.push(\r\n item.beforeFocus.subscribe((item2: ListItemDirective) =>\r\n this.handleItemBeforeFocus(item2)\r\n )\r\n );\r\n\r\n this.subscriptions.push(\r\n item.focus.subscribe((item2: ListItemDirective) =>\r\n this.handleItemFocus(item2)\r\n )\r\n );\r\n }, this);\r\n }\r\n\r\n private unsubscribe() {\r\n this.subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\r\n this.subscriptions = [];\r\n }\r\n\r\n private handleItemBeforeFocus(item: ListItemDirective) {\r\n if (item !== this.focusedItem) {\r\n this.unfocus();\r\n }\r\n }\r\n\r\n private handleItemFocus(item: ListItemDirective) {\r\n this.focusedItem = item;\r\n }\r\n\r\n private handleItemBeforeSelect(item: ListItemDirective) {\r\n if (item !== this.focusedItem) {\r\n this.unselect();\r\n }\r\n }\r\n\r\n private handleItemSelect(item: ListItemDirective) {\r\n this.selectedItem = item;\r\n }\r\n\r\n private findSelectedItem() {\r\n return this.listItems.toArray().find(item => item.selected);\r\n }\r\n\r\n private findFocusedItem() {\r\n return this.listItems.toArray().find(item => item.focused);\r\n }\r\n\r\n private getFocusedIndex() {\r\n return this.listItems\r\n .toArray()\r\n .findIndex(item => item === this.focusedItem);\r\n }\r\n\r\n private navigate(key: string) {\r\n switch (key) {\r\n case 'ArrowUp':\r\n this.focusPrevious();\r\n break;\r\n case 'ArrowDown':\r\n this.focusNext();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","<mat-list\r\n igoClickout\r\n [ngClass]=\"{'selectable': selection}\"\r\n (clickout)=\"disableNavigation()\"\r\n (click)=\"enableNavigation()\">\r\n <ng-content></ng-content>\r\n</mat-list>\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\n\r\nimport { IgoClickoutModule } from '../clickout/clickout.module';\r\n\r\nimport { ListItemDirective } from './list-item.directive';\r\nimport { ListComponent } from './list.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatIconModule, MatListModule, IgoClickoutModule],\r\n declarations: [ListItemDirective, ListComponent],\r\n exports: [ListItemDirective, ListComponent]\r\n})\r\nexport class IgoListModule {\r\n static forRoot(): ModuleWithProviders<IgoListModule> {\r\n return {\r\n ngModule: IgoListModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","<div *ngIf=\"withHeader\" class=\"igo-panel-header mat-typography\" title=\"\" [ngClass]=\"{'igo-cursor-pointer': cursorPointer === true}\">\r\n <h3>\r\n <ng-content select=\"[panelLeftButton]\"></ng-content>\r\n <div class=\"igo-panel-title\">\r\n {{ title }}\r\n <ng-content select=\"[panelHeader]\"></ng-content>\r\n </div>\r\n <ng-content select=\"[panelRightButton]\"></ng-content>\r\n </h3>\r\n</div>\r\n<div class=\"igo-panel-content\" title=\"\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import {\r\n Component,\r\n Input,\r\n ChangeDetectionStrategy,\r\n HostBinding\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'igo-panel',\r\n templateUrl: './panel.component.html',\r\n styleUrls: ['./panel.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PanelComponent {\r\n @Input() title: string;\r\n\r\n @Input()\r\n @HostBinding('class.igo-panel-with-header')\r\n get withHeader(): boolean {\r\n return this._withHeader;\r\n }\r\n set withHeader(value: boolean) {\r\n this._withHeader = value;\r\n }\r\n private _withHeader = true;\r\n\r\n @Input() cursorPointer: boolean = false;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PanelComponent } from './panel.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n exports: [PanelComponent],\r\n declarations: [PanelComponent]\r\n})\r\nexport class IgoPanelModule {}\r\n","import { Directive, Self, HostListener, Renderer2 } from '@angular/core';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\n\r\n/**\r\n * <igoSidenavShim> directive.\r\n *\r\n * This directive prevents a material sidenav with mode=\"side\"\r\n * from focusing an element after it's closed\r\n */\r\n@Directive({\r\n selector: '[igoSidenavShim]'\r\n})\r\nexport class SidenavShimDirective {\r\n private focusedElement: HTMLElement;\r\n private blurElement: HTMLElement;\r\n\r\n @HostListener('open', ['$event'])\r\n onOpen() {\r\n this.focusedElement = document.activeElement as HTMLElement;\r\n }\r\n\r\n @HostListener('close-start', ['$event'])\r\n onCloseStart() {\r\n const focusedElement = document.activeElement as HTMLElement;\r\n if (focusedElement !== this.focusedElement) {\r\n this.blurElement = this.focusedElement;\r\n } else {\r\n this.blurElement = undefined;\r\n }\r\n }\r\n\r\n @HostListener('close', ['$event'])\r\n onClose() {\r\n if (this.blurElement) {\r\n this.renderer.selectRootElement(this.blurElement).blur();\r\n }\r\n\r\n this.blurElement = undefined;\r\n this.focusedElement = undefined;\r\n }\r\n\r\n constructor(@Self() component: MatSidenav, private renderer: Renderer2) {}\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { SidenavShimDirective } from './sidenav-shim.directive';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [SidenavShimDirective],\r\n exports: [SidenavShimDirective]\r\n})\r\nexport class IgoSidenavModule {\r\n static forRoot(): ModuleWithProviders<IgoSidenavModule> {\r\n return {\r\n ngModule: IgoSidenavModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'igo-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrls: ['./spinner.component.scss']\r\n})\r\nexport class SpinnerComponent {\r\n\r\n public shown$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n @Input()\r\n set shown(value: boolean) { this.shown$.next(value); }\r\n get shown(): boolean { return this.shown$.value; }\r\n\r\n constructor() {}\r\n\r\n show() {\r\n this.shown = true;\r\n }\r\n\r\n hide() {\r\n this.shown = false;\r\n }\r\n}\r\n","<div\r\n [ngClass]=\"{'igo-spinner-container': true, 'igo-spinner-shown': (shown$ | async)}\">\r\n <div class=\"igo-spinner-background\"></div>\r\n <mat-progress-spinner diameter=\"40\" mode=\"indeterminate\"></mat-progress-spinner>\r\n</div>\r\n","import { Directive, Self, OnInit, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { ActivityService } from '@igo2/core';\r\nimport { SpinnerComponent } from './spinner.component';\r\n\r\n/**\r\n * A directive to bind a SpinnerComponent to the activity service.\r\n * The activity service tracks any HTTP request and this directive\r\n * will display the spinner it's attached to when the activity counter\r\n * is greater than 0.\r\n */\r\n@Directive({\r\n selector: '[igoSpinnerActivity]'\r\n})\r\nexport class SpinnerActivityDirective implements OnInit, OnDestroy {\r\n /**\r\n * Subscription to the activity service counter\r\n */\r\n private counter$$: Subscription;\r\n\r\n constructor(\r\n @Self() private spinner: SpinnerComponent,\r\n private activityService: ActivityService\r\n ) {}\r\n\r\n /**\r\n * Subscribe to the activity service counter and display the spinner\r\n * when it's is greater than 0.\r\n * @internal\r\n */\r\n ngOnInit() {\r\n this.counter$$ = this.activityService.counter$\r\n .pipe(debounceTime(50))\r\n .subscribe((count: number) => {\r\n count > 0 ? this.spinner.show() : this.spinner.hide();\r\n });\r\n }\r\n\r\n /**\r\n * Unsubcribe to the activity service counter.\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.counter$$.unsubscribe();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\nimport { SpinnerActivityDirective } from './spinner-activity.directive';\r\nimport { SpinnerComponent } from './spinner.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatProgressSpinnerModule],\r\n declarations: [SpinnerActivityDirective, SpinnerComponent],\r\n exports: [SpinnerActivityDirective, SpinnerComponent]\r\n})\r\nexport class IgoSpinnerModule {}\r\n","import { DataSource } from '@angular/cdk/table';\r\nimport { MatSort } from '@angular/material/sort';\r\n\r\nimport { Observable, BehaviorSubject, merge } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { ObjectUtils } from '@igo2/utils';\r\n\r\nimport { TableDatabase, TableModel } from './index';\r\n\r\nexport class TableDataSource extends DataSource<any> {\r\n get filter(): string {\r\n return this._filterChange.value;\r\n }\r\n set filter(filter: string) {\r\n this._filterChange.next(filter);\r\n }\r\n private _filterChange = new BehaviorSubject('');\r\n\r\n constructor(\r\n private _database: TableDatabase,\r\n private _model: TableModel,\r\n private _sort: MatSort\r\n ) {\r\n super();\r\n }\r\n\r\n // Connect function called by the table to retrieve one stream containing\r\n // the data to render.\r\n connect(): Observable<any[]> {\r\n if (!this._database) {\r\n return merge([]);\r\n }\r\n const displayDataChanges = [\r\n this._database.dataChange,\r\n this._filterChange,\r\n this._sort.sortChange\r\n ];\r\n\r\n return merge(...displayDataChanges).pipe(\r\n map(() => {\r\n return this.getFilteredData(this._database.data);\r\n }),\r\n map(data => {\r\n return this.getSortedData(data);\r\n })\r\n );\r\n }\r\n\r\n disconnect() {}\r\n\r\n getFilteredData(data): any[] {\r\n if (!this.filter) {\r\n return data;\r\n }\r\n return data.slice().filter((item: any) => {\r\n const searchStr: string = this._model.columns\r\n .filter(c => c.filterable)\r\n .map(c => ObjectUtils.resolve(item, c.name))\r\n .join(' ')\r\n .toLowerCase();\r\n\r\n return searchStr.indexOf(this.filter.toLowerCase()) !== -1;\r\n });\r\n }\r\n\r\n getSortedData(data): any[] {\r\n if (!this._sort.active || this._sort.direction === '') {\r\n return data;\r\n }\r\n\r\n return data.sort((a, b) => {\r\n const propertyA: number | string = ObjectUtils.resolve(\r\n a,\r\n this._sort.active\r\n );\r\n const propertyB: number | string = ObjectUtils.resolve(\r\n b,\r\n this._sort.active\r\n );\r\n\r\n return ObjectUtils.naturalCompare(\r\n propertyB,\r\n propertyA,\r\n this._sort.direction\r\n );\r\n });\r\n }\r\n}\r\n","export enum TableActionColor {\r\n primary,\r\n accent,\r\n warn\r\n}\r\n","<div class='table-box'>\r\n <div class='table-header' *ngIf=\"hasFilterInput\">\r\n <mat-form-field floatPlaceholder='never'>\r\n <input matInput #filter [placeholder]=\"'igo.common.table.filter' | translate\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class='table-container'>\r\n <table mat-table #table [dataSource]='dataSource' matSort>\r\n\r\n <!-- Checkbox Column -->\r\n <ng-container matColumnDef=\"selectionCheckbox\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container [matColumnDef]='column.name' *ngFor='let column of model.columns'>\r\n <ng-container *ngIf='column.sortable'>\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header> {{column.title}} </th>\r\n </ng-container>\r\n\r\n <ng-container *ngIf='!column.sortable'>\r\n <th mat-header-cell *matHeaderCellDef> {{column.title}} </th>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!column.html; else cellHTML\">\r\n <td mat-cell *matCellDef='let row' class=\"mat-cell-text\"\r\n [ngClass]=\"model.cellClassFunc ? model.cellClassFunc(row, column) : {}\">\r\n {{getValue(row, column.name)}}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-template #cellHTML>\r\n <td mat-cell *matCellDef='let row' class=\"mat-cell-text\"\r\n [ngClass]=\"model.cellClassFunc ? model.cellClassFunc(row, column) : {}\"\r\n [innerHTML]=\"getValue(row, column.name)\">\r\n </td>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <!-- Action Column -->\r\n <ng-container matColumnDef='action'>\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef='let row'>\r\n <button *ngFor='let action of model.actions'\r\n mat-mini-fab\r\n [color]='getActionColor(action.color)'\r\n (click)='handleClickAction($event, action, row)'>\r\n <mat-icon svgIcon=\"{{action.icon}}\"></mat-icon>\r\n </button>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef='displayedColumns;'></tr>\r\n <tr mat-row\r\n *matRowDef='let row; columns: displayedColumns;'\r\n [ngClass]=\"model.rowClassFunc ? model.rowClassFunc(row) : {}\"\r\n (click)=\"selection.toggle(row)\">\r\n </tr>\r\n\r\n </table>\r\n </div>\r\n\r\n</div>\r\n","import {\r\n Component,\r\n ElementRef,\r\n ViewChild,\r\n Input,\r\n Output,\r\n OnChanges,\r\n OnInit,\r\n AfterViewInit,\r\n EventEmitter\r\n} from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\n\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { fromEvent } from 'rxjs';\r\n\r\nimport { ObjectUtils } from '@igo2/utils';\r\n\r\nimport { TableModel } from './table-model.interface';\r\nimport { TableDatabase } from './table-database';\r\nimport { TableDataSource } from './table-datasource';\r\nimport { TableActionColor } from './table-action-color.enum';\r\n\r\n@Component({\r\n selector: 'igo-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss']\r\n})\r\nexport class TableComponent implements OnChanges, OnInit, AfterViewInit {\r\n @Input()\r\n get database(): TableDatabase {\r\n return this._database;\r\n }\r\n set database(value: TableDatabase) {\r\n this._database = value;\r\n }\r\n private _database: TableDatabase;\r\n\r\n @Input()\r\n get model(): TableModel {\r\n return this._model;\r\n }\r\n set model(value: TableModel) {\r\n this._model = value;\r\n }\r\n private _model: TableModel;\r\n\r\n @Input()\r\n get hasFilterInput(): boolean {\r\n return this._hasFIlterInput;\r\n }\r\n set hasFilterInput(value: boolean) {\r\n this._hasFIlterInput = value;\r\n }\r\n private _hasFIlterInput = true;\r\n\r\n public displayedColumns;\r\n public dataSource: TableDataSource | null;\r\n public selection = new SelectionModel<any>(true, []);\r\n\r\n @Output()\r\n select = new EventEmitter<{\r\n added: any[];\r\n removed: any[];\r\n source: SelectionModel<any>;\r\n }>();\r\n\r\n @ViewChild('filter') filter: ElementRef;\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n ngOnInit() {\r\n this.dataSource = new TableDataSource(this.database, this.model, this.sort);\r\n\r\n if (this.model) {\r\n this.displayedColumns = this.model.columns\r\n .filter(c => c.displayed !== false)\r\n .map(c => c.name);\r\n\r\n if (this.model.selectionCheckbox) {\r\n this.displayedColumns.unshift('selectionCheckbox');\r\n }\r\n if (this.model.actions && this.model.actions.length) {\r\n this.displayedColumns.push('action');\r\n }\r\n }\r\n\r\n this.selection.changed.subscribe(e => this.select.emit(e));\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.filter) {\r\n fromEvent(this.filter.nativeElement, 'keyup')\r\n .pipe(\r\n debounceTime(150),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(() => {\r\n if (!this.dataSource) {\r\n return;\r\n }\r\n this.dataSource.filter = this.filter.nativeElement.value;\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges(change) {\r\n if (change.database) {\r\n this.dataSource = new TableDataSource(\r\n this.database,\r\n this.model,\r\n this.sort\r\n );\r\n this.selection.clear();\r\n }\r\n }\r\n\r\n getActionColor(colorId: number): string {\r\n return TableActionColor[colorId];\r\n }\r\n\r\n getValue(row, key) {\r\n return ObjectUtils.resolve(row, key);\r\n }\r\n\r\n /** Whether the number of selected elements matches the total number of rows. */\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.database.data.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n this.isAllSelected()\r\n ? this.selection.clear()\r\n : this.database.data.forEach(row => this.selection.select(row));\r\n }\r\n\r\n handleClickAction(event, action, row) {\r\n event.stopPropagation();\r\n action.click(row);\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CdkTableModule } from '@angular/cdk/table';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatTableModule } from '@angular/material/table';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\n\r\nimport { TableComponent } from './table.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CdkTableModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTableModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatSortModule,\r\n MatCheckboxModule,\r\n IgoLanguageModule\r\n ],\r\n declarations: [TableComponent],\r\n exports: [TableComponent]\r\n})\r\nexport class IgoTableModule {\r\n static forRoot(): ModuleWithProviders<IgoTableModule> {\r\n return {\r\n ngModule: IgoTableModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { EntityStore } from '../../entity';\r\nimport { Action } from './action.interfaces';\r\n\r\n/**\r\n * The class is a specialized version of an EntityStore that stores\r\n * actions.\r\n */\r\nexport class ActionStore extends EntityStore<Action> {\r\n\r\n}\r\n","export enum ToolboxColor {\r\n White = 'white',\r\n Grey = 'grey',\r\n Primary = 'primary'\r\n}\r\n","import {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n AnimationTriggerMetadata\r\n} from '@angular/animations';\r\n\r\nexport function toolSlideInOut(\r\n speed = '300ms',\r\n type = 'ease-in-out'\r\n): AnimationTriggerMetadata {\r\n return trigger('toolSlideInOut', [\r\n state(\r\n 'enter',\r\n style({\r\n transform: 'translate3d(0, 0, 0)'\r\n })\r\n ),\r\n transition('void => enter', animate(speed + ' ' + type))\r\n ]);\r\n}\r\n","<igo-actionbar\r\n *ngIf=\"(toolbar$ | async).length > 0\"\r\n [store]=\"actionStore\"\r\n [withIcon]=\"true\"\r\n [withTitle]=\"toolbarWithTitle$ | async\"\r\n [withTooltip]=\"(toolbarWithTitle$ | async) === false\"\r\n [scrollActive]=\"toolbarWithTitle$ | async\"\r\n [horizontal]=\"false\">\r\n</igo-actionbar>\r\n\r\n<div\r\n *ngIf=\"activeTool$ | async as tool\"\r\n class=\"igo-tool-container\"\r\n [ngClass]=\"{'igo-tool-container-with-toolbar': !actionStore.empty, 'igo-tool-container-with-animation': animate}\"\r\n [@toolSlideInOut]=\"animation$ | async\"\r\n (@toolSlideInOut.start)=\"onAnimationStart()\"\r\n (@toolSlideInOut.done)=\"onAnimationComplete()\">\r\n\r\n <igo-dynamic-outlet\r\n [component]=\"tool.component\"\r\n [inputs]=\"getToolInputs(tool)\">\r\n </igo-dynamic-outlet>\r\n\r\n</div>\r\n","import {\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n HostBinding,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\n\r\nimport { Subscription, BehaviorSubject, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { Action, ActionStore } from '../../action';\r\nimport { Tool } from '../shared/tool.interface';\r\nimport { ToolboxColor } from '../shared/toolbox.enums';\r\nimport { Toolbox } from '../shared/toolbox';\r\nimport { toolSlideInOut } from './toolbox.animation';\r\n\r\n@Component({\r\n selector: 'igo-toolbox',\r\n templateUrl: 'toolbox.component.html',\r\n styleUrls: ['toolbox.component.scss'],\r\n animations: [toolSlideInOut()],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ToolboxComponent implements OnInit, OnDestroy {\r\n /**\r\n * Observable of the active tool\r\n */\r\n activeTool$: BehaviorSubject<Tool> = new BehaviorSubject(undefined);\r\n\r\n /**\r\n * Store of actions that toggle tools\r\n */\r\n actionStore: ActionStore = new ActionStore([]);\r\n\r\n /**\r\n * Observable of he anmation state\r\n */\r\n animation$: BehaviorSubject<string> = new BehaviorSubject('none');\r\n\r\n /**\r\n * Observable of the toolbar\r\n */\r\n toolbar$: BehaviorSubject<string[]> = new BehaviorSubject([]);\r\n\r\n /**\r\n * Whether the Toolbar should display actions' titles\r\n */\r\n toolbarWithTitle$: Observable<boolean> = this.activeTool$.pipe(\r\n map((tool: Tool | undefined) => tool === undefined)\r\n );\r\n\r\n /**\r\n * Subscription to the active tool\r\n */\r\n private activeTool$$: Subscription;\r\n\r\n /**\r\n * Subscription to the toolbar\r\n */\r\n private toolbar$$: Subscription;\r\n\r\n /**\r\n * Observable of the ongoing animation. This is useful when\r\n * multiple animations are triggered at once i.e. when the user clicks\r\n * too fast on different actions\r\n */\r\n private animating$ = new BehaviorSubject<boolean>(false);\r\n\r\n /**\r\n * Subscription to the ongoing animation\r\n */\r\n private animating$$: Subscription;\r\n\r\n /**\r\n * Toolbox\r\n */\r\n @Input() toolbox: Toolbox;\r\n\r\n /**\r\n * Whether the toolbox should animate the first tool entering\r\n */\r\n @Input() animate: boolean = false;\r\n\r\n /**\r\n * Color of Toolbox\r\n */\r\n @Input() color: ToolboxColor = ToolboxColor.White;\r\n\r\n /**\r\n * @ignore\r\n */\r\n @HostBinding('class.color-grey')\r\n get classColorGrey() {\r\n return this.color === ToolboxColor.Grey;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n @HostBinding('class.color-primary')\r\n get classColorPrimary() {\r\n return this.color === ToolboxColor.Primary;\r\n }\r\n\r\n /**\r\n * Initialize the toolbar and subscribe to the active tool\r\n * @internal\r\n */\r\n ngOnInit() {\r\n this.toolbar$$ = this.toolbox.toolbar$.subscribe((toolbar: string[]) =>\r\n this.onToolbarChange(toolbar)\r\n );\r\n this.activeTool$$ = this.toolbox.activeTool$.subscribe((tool: Tool) =>\r\n this.onActiveToolChange(tool)\r\n );\r\n }\r\n\r\n /**\r\n * Unsubscribe to the active tool and destroy the action store\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.toolbar$$.unsubscribe();\r\n this.activeTool$$.unsubscribe();\r\n this.actionStore.destroy();\r\n }\r\n\r\n /**\r\n * Track the starting animation\r\n * @internal\r\n */\r\n onAnimationStart() {\r\n this.animating$.next(true);\r\n }\r\n\r\n /**\r\n * Untrack the completed animation\r\n * @internal\r\n */\r\n onAnimationComplete() {\r\n this.animating$.next(false);\r\n }\r\n\r\n /**\r\n * Return a tool's inputs\r\n * @param tool Tool\r\n * @returns Tool inputs\r\n * @internal\r\n */\r\n getToolInputs(tool: Tool): { [key: string]: any } {\r\n return tool.options || {};\r\n }\r\n\r\n /**\r\n * Initialize an action store\r\n * @param toolbar Toolbar\r\n */\r\n private onToolbarChange(toolbar: string[]) {\r\n this.setToolbar(toolbar);\r\n }\r\n\r\n /**\r\n * Activate a tool and trigger an animation or not\r\n * @param tool Tool to activate\r\n */\r\n private onActiveToolChange(tool: Tool) {\r\n if (!this.animate) {\r\n this.setActiveTool(tool);\r\n return;\r\n }\r\n this.onAnimate(() => this.setActiveTool(tool));\r\n }\r\n\r\n /**\r\n * Set the active tool\r\n * @param tool Tool to activate\r\n */\r\n private setActiveTool(tool: Tool | undefined) {\r\n if (tool === undefined) {\r\n this.actionStore.state.updateAll({ active: false });\r\n } else {\r\n const action = this.actionStore.get(tool.name);\r\n if (action !== undefined) {\r\n this.actionStore.state.update(action, { active: true }, true);\r\n }\r\n }\r\n\r\n this.activeTool$.next(tool);\r\n if (this.animate) {\r\n this.animation$.next('enter');\r\n }\r\n }\r\n\r\n /**\r\n * Initialize the toolbar\r\n */\r\n private setToolbar(toolbar: string[]) {\r\n const actions = toolbar.reduce((acc: Action[], toolName: string) => {\r\n const tool = this.toolbox.getTool(toolName);\r\n if (tool === undefined) {\r\n return acc;\r\n }\r\n\r\n acc.push({\r\n id: tool.name,\r\n title: tool.title,\r\n icon: tool.icon,\r\n // iconImage: tool.iconImage,\r\n tooltip: tool.tooltip,\r\n args: [tool, this.toolbox],\r\n handler: (_tool: Tool, _toolbox: Toolbox) => {\r\n _toolbox.activateTool(_tool.name);\r\n },\r\n ngClass: (_tool: Tool, _toolbox: Toolbox) => {\r\n return this.toolbox.activeTool$.pipe(\r\n map((activeTool: Tool) => {\r\n let toolActivated = false;\r\n if (activeTool !== undefined && _tool.name === activeTool.name) {\r\n toolActivated = true;\r\n }\r\n\r\n let childrenToolActivated = false;\r\n if (\r\n activeTool !== undefined &&\r\n _tool.name === activeTool.parent\r\n ) {\r\n childrenToolActivated = true;\r\n }\r\n\r\n return {\r\n 'tool-activated': toolActivated,\r\n 'children-tool-activated': childrenToolActivated\r\n };\r\n })\r\n );\r\n }\r\n });\r\n return acc;\r\n }, []);\r\n this.actionStore.load(actions);\r\n this.toolbar$.next(toolbar);\r\n }\r\n\r\n /**\r\n * Observe the ongoing animation and ignore any incoming animation\r\n * while one is still ongoing.\r\n * @param callback Callback to execute when the animation completes\r\n */\r\n private onAnimate(callback: () => void) {\r\n this.unAnimate();\r\n this.animating$$ = this.animating$.subscribe((animation: boolean) => {\r\n if (!animation) {\r\n callback.call(this);\r\n this.unAnimate();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Stop observing an animation when it's complete\r\n */\r\n private unAnimate() {\r\n if (this.animating$$) {\r\n this.animating$$.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoActionModule } from '../../action/action.module';\r\nimport {\r\n IgoDynamicComponentModule\r\n} from '../../dynamic-component/dynamic-component.module';\r\n\r\nimport { ToolboxComponent } from './toolbox.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoActionModule,\r\n IgoDynamicComponentModule\r\n ],\r\n exports: [\r\n ToolboxComponent\r\n ],\r\n declarations: [\r\n ToolboxComponent\r\n ]\r\n})\r\nexport class IgoToolboxModule {}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { ToolService } from './shared/tool.service';\r\nimport { IgoToolboxModule } from './toolbox/toolbox.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n IgoToolboxModule\r\n ],\r\n declarations: []\r\n})\r\nexport class IgoToolModule {\r\n static forRoot(): ModuleWithProviders<IgoToolModule> {\r\n return {\r\n ngModule: IgoToolModule,\r\n providers: [\r\n ToolService\r\n ]\r\n };\r\n }\r\n}\r\n","<igo-dynamic-outlet\r\n *ngIf=\"widget\"\r\n [component]=\"widget\"\r\n [inputs]=\"inputs\"\r\n [subscribers]=\"getEffectiveSubscribers()\">\r\n</igo-dynamic-outlet>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n OnDestroy\r\n} from '@angular/core';\r\n\r\nimport { DynamicComponent } from '../../dynamic-component';\r\n\r\nimport { WidgetComponent } from '../shared/widget.interfaces';\r\n\r\n/**\r\n * This component dynamically renders a widget. It also subscribes\r\n * to the widget's 'cancel' and 'complete' events and destroys it\r\n * when any of those event is emitted.\r\n */\r\n@Component({\r\n selector: 'igo-widget-outlet',\r\n templateUrl: './widget-outlet.component.html',\r\n styleUrls: ['./widget-outlet.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class WidgetOutletComponent implements OnDestroy {\r\n\r\n /**\r\n * Widget subscribers to 'cancel' and 'complete'\r\n * @internal\r\n */\r\n private baseSubscribers = {\r\n cancel: (event: any) => this.onCancel(event),\r\n complete: (event: any) => this.onComplete(event)\r\n };\r\n\r\n /**\r\n * Widget\r\n */\r\n @Input() widget: DynamicComponent<WidgetComponent>;\r\n\r\n /**\r\n * Widget inputs\r\n */\r\n @Input() inputs: {[key: string]: any};\r\n\r\n /**\r\n * Widget subscribers\r\n */\r\n @Input() subscribers: {[key: string]: (event: any) => void} = {};\r\n\r\n /**\r\n * Event emitted when the widget emits 'complete'\r\n */\r\n @Output() complete = new EventEmitter<any>();\r\n\r\n /**\r\n * Event emitted when the widget emits 'cancel'\r\n */\r\n @Output() cancel = new EventEmitter<any>();\r\n\r\n constructor() {}\r\n\r\n /**\r\n * Destroy the current widget and all it's inner subscriptions\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.destroyWidget();\r\n }\r\n\r\n /**\r\n * Get the effective subscribers. That means a combination of the base\r\n * subscribers and any subscriber given as input.\r\n * @returns Combined subscribers\r\n * @internal\r\n */\r\n getEffectiveSubscribers(): {[key: string]: (event: any) => void} {\r\n const subscribers = Object.assign({}, this.subscribers);\r\n\r\n // Base subscribers\r\n Object.keys(this.baseSubscribers).forEach((key: string) => {\r\n const subscriber = subscribers[key];\r\n const baseSubscriber = this.baseSubscribers[key];\r\n if (subscriber !== undefined) {\r\n subscribers[key] = (event: any) => {\r\n subscriber(event);\r\n baseSubscriber(event);\r\n };\r\n } else {\r\n subscribers[key] = baseSubscriber;\r\n }\r\n });\r\n\r\n return subscribers;\r\n }\r\n\r\n /**\r\n * When the widget emits 'cancel', propagate that event and destroy\r\n * the widget\r\n */\r\n private onCancel(event: any) {\r\n this.cancel.emit(event);\r\n this.destroyWidget();\r\n }\r\n\r\n /**\r\n * When the widget emits 'complete', propagate that event and destroy\r\n * the widget\r\n */\r\n private onComplete(event: any) {\r\n this.complete.emit(event);\r\n this.destroyWidget();\r\n }\r\n\r\n /**\r\n * Destroy the current widget\r\n */\r\n private destroyWidget() {\r\n if (this.widget !== undefined) {\r\n this.widget.destroy();\r\n }\r\n this.widget = undefined;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport {\r\n IgoDynamicComponentModule\r\n} from '../../dynamic-component/dynamic-component.module';\r\n\r\nimport { WidgetOutletComponent } from './widget-outlet.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoDynamicComponentModule\r\n ],\r\n exports: [\r\n WidgetOutletComponent\r\n ],\r\n declarations: [\r\n WidgetOutletComponent\r\n ]\r\n})\r\nexport class IgoWidgetOutletModule {}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { DynamicComponentService } from '../../dynamic-component/shared/dynamic-component.service';\r\n\r\nimport { Widget } from './widget';\r\nimport { WidgetComponent } from './widget.interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WidgetService {\r\n\r\n constructor(private dynamicComponentService: DynamicComponentService) {}\r\n\r\n create(widgetCls: any): Widget {\r\n return this.dynamicComponentService.create(widgetCls as WidgetComponent);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoWidgetOutletModule } from './widget-outlet/widget-outlet.module';\r\nimport { WidgetService } from './shared/widget.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoWidgetOutletModule\r\n ],\r\n exports: [\r\n IgoWidgetOutletModule\r\n ],\r\n declarations: [],\r\n providers: [\r\n WidgetService\r\n ]\r\n})\r\nexport class IgoWidgetModule {}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\n\r\nimport { getEntityTitle } from '../../entity';\r\nimport { Workspace } from '../shared/workspace';\r\nimport { WorkspaceStore } from '../shared/store';\r\n\r\n/**\r\n * Drop list that activates the selected workspace emit an event.\r\n */\r\n@Component({\r\n selector: 'igo-workspace-selector',\r\n templateUrl: './workspace-selector.component.html',\r\n styleUrls: ['./workspace-selector.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class WorkspaceSelectorComponent {\r\n\r\n /**\r\n * Store that holds the available workspaces.\r\n */\r\n @Input() store: WorkspaceStore;\r\n\r\n /**\r\n * Wheither the selector must be disabled or not.\r\n */\r\n @Input() disabled: boolean;\r\n\r\n /**\r\n * Event emitted when an workspace is selected or unselected\r\n */\r\n @Output() selectedChange = new EventEmitter<{\r\n selected: boolean;\r\n value: Workspace;\r\n }>();\r\n\r\n /**\r\n * @internal\r\n */\r\n getWorkspaceTitle(workspace: Workspace): string {\r\n return getEntityTitle(workspace);\r\n }\r\n\r\n /**\r\n * When an workspace is manually selected, select it into the\r\n * store and emit an event.\r\n * @internal\r\n * @param event The selection change event\r\n */\r\n onSelectedChange(event: {value: Workspace}) {\r\n const workspace = event.value;\r\n this.store.activateWorkspace(workspace);\r\n this.selectedChange.emit({selected: true, value: workspace});\r\n }\r\n\r\n}\r\n","<igo-entity-selector\r\n [store]=\"store\"\r\n [multi]=\"false\"\r\n [titleAccessor]=\"getWorkspaceTitle\"\r\n [disabled]=\"disabled\"\r\n (selectedChange)=\"onSelectedChange($event)\">\r\n</igo-entity-selector>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoEntitySelectorModule } from '../../entity/entity-selector/entity-selector.module';\r\nimport { WorkspaceSelectorComponent } from './workspace-selector.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoEntitySelectorModule\r\n ],\r\n exports: [\r\n WorkspaceSelectorComponent\r\n ],\r\n declarations: [\r\n WorkspaceSelectorComponent\r\n ]\r\n})\r\nexport class IgoWorkspaceSelectorModule {}\r\n","<ng-container *ngIf=\"widget$ | async as widget\">\r\n <igo-widget-outlet\r\n [widget]=\"widget\"\r\n [inputs]=\"widgetInputs$ | async\"\r\n [subscribers]=\"widgetSubscribers$ | async\"\r\n (cancel)=\"onWidgetCancel(widget)\"\r\n (complete)=\"onWidgetComplete(widget)\">\r\n </igo-widget-outlet>\r\n</ng-container>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { Widget } from '../../widget';\r\nimport { Workspace } from '../shared/workspace';\r\n\r\n/**\r\n * This component dynamically render an Workspace's active widget.\r\n * It also deactivate that widget whenever the widget's component\r\n * emit the 'cancel' or 'complete' event.\r\n */\r\n@Component({\r\n selector: 'igo-workspace-widget-outlet',\r\n templateUrl: './workspace-widget-outlet.component.html',\r\n styleUrls: ['./workspace-widget-outlet.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class WorkspaceWidgetOutletComponent {\r\n\r\n /**\r\n * Workspace\r\n */\r\n @Input() workspace: Workspace;\r\n\r\n /**\r\n * Event emitted when a widget is deactivate which happens\r\n * when the widget's component emits the 'cancel' or 'complete' event.\r\n */\r\n @Output() deactivateWidget = new EventEmitter<Widget>();\r\n\r\n /**\r\n * Observable of the workspace's active widget\r\n * @internal\r\n */\r\n get widget$(): BehaviorSubject<Widget> { return this.workspace.widget$; }\r\n\r\n /**\r\n * Observable of the workspace's widget inputs\r\n * @internal\r\n */\r\n get widgetInputs$(): BehaviorSubject<{[key: string]: any}> {\r\n return this.workspace.widgetInputs$;\r\n }\r\n\r\n /**\r\n * Observable of the workspace's widget inputs\r\n * @internal\r\n */\r\n get widgetSubscribers$(): BehaviorSubject<{[key: string]: (event: any) => void}> {\r\n return this.workspace.widgetSubscribers$;\r\n }\r\n\r\n constructor() {}\r\n\r\n /**\r\n * When a widget's component emit the 'cancel' event,\r\n * deactivate that widget and emit the 'deactivateWidget' event.\r\n * @param widget Widget\r\n * @internal\r\n */\r\n onWidgetCancel(widget: Widget) {\r\n this.workspace.deactivateWidget();\r\n this.deactivateWidget.emit(widget);\r\n }\r\n\r\n /**\r\n * When a widget's component emit the 'cancel' event,\r\n * deactivate that widget and emit the 'deactivateWidget' event.\r\n * @param widget Widget\r\n * @internal\r\n */\r\n onWidgetComplete(widget: Widget) {\r\n this.workspace.deactivateWidget();\r\n this.deactivateWidget.emit(widget);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoWidgetOutletModule } from '../../widget/widget-outlet/widget-outlet.module';\r\n\r\nimport { WorkspaceWidgetOutletComponent } from './workspace-widget-outlet.component';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoWidgetOutletModule\r\n ],\r\n exports: [\r\n WorkspaceWidgetOutletComponent\r\n ],\r\n declarations: [\r\n WorkspaceWidgetOutletComponent\r\n ]\r\n})\r\nexport class IgoWorkspaceWidgetOutletModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IgoWorkspaceSelectorModule } from './workspace-selector/workspace-selector.module';\r\nimport { IgoWorkspaceWidgetOutletModule } from './workspace-widget-outlet/workspace-widget-outlet.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n IgoWorkspaceSelectorModule,\r\n IgoWorkspaceWidgetOutletModule\r\n ],\r\n declarations: []\r\n})\r\nexport class IgoWorkspaceModule {}\r\n","import { BehaviorSubject } from 'rxjs';\r\n\r\nexport class TableDatabase {\r\n /** Stream that emits whenever the data has been modified. */\r\n dataChange: BehaviorSubject<any[]> = new BehaviorSubject<any[]>([]);\r\n get data(): any[] {\r\n return this.dataChange.value;\r\n }\r\n\r\n constructor(data?) {\r\n if (data) {\r\n this.dataChange.next(data);\r\n }\r\n }\r\n\r\n set(data) {\r\n this.dataChange.next(data);\r\n }\r\n\r\n add(item) {\r\n const copiedData = this.data.slice();\r\n copiedData.push(item);\r\n this.set(copiedData);\r\n }\r\n\r\n remove(item) {\r\n const copiedData = this.data.slice();\r\n const index = copiedData.indexOf(item);\r\n copiedData.splice(index, 1);\r\n this.set(copiedData);\r\n }\r\n}\r\n","import { Tool } from './tool.interface';\r\nimport { ToolService } from './tool.service';\r\n\r\nexport function ToolComponent(tool: Partial<Tool>): (cls: any) => any {\r\n return (compType: any) => {\r\n ToolService.register(Object.assign({}, tool, {\r\n component: compType\r\n } as Tool));\r\n };\r\n}\r\n","import { DynamicComponent } from '../../dynamic-component/shared/dynamic-component';\r\nimport { WidgetComponent } from './widget.interfaces';\r\n\r\nexport class Widget extends DynamicComponent<WidgetComponent> {}\r\n","import { EntityStore } from '../../entity';\r\nimport { Workspace } from './workspace';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n/**\r\n * The class is a specialized version of an EntityStore that stores\r\n * workspaces.\r\n */\r\nexport class WorkspaceStore extends EntityStore<Workspace> {\r\n\r\n activeWorkspace$: BehaviorSubject<Workspace> = new BehaviorSubject(undefined);\r\n\r\n /**\r\n * Activate the an workspace workspace and deactivate the one currently active\r\n * @param workspace Workspace\r\n */\r\n activateWorkspace(workspace: Workspace) {\r\n const active = this.activeWorkspace$.value;\r\n if (active !== undefined) {\r\n active.deactivate();\r\n }\r\n\r\n this.deactivateWorkspace();\r\n if (workspace !== undefined) {\r\n this.state.update(workspace, {active: true, selected: true}, true);\r\n this.activeWorkspace$.next(workspace);\r\n workspace.activate();\r\n }\r\n }\r\n\r\n /**\r\n * Deactivate the current workspace\r\n * @param workspace Workspace\r\n */\r\n deactivateWorkspace() {\r\n const active = this.activeWorkspace$.value;\r\n if (active !== undefined) {\r\n active.deactivate();\r\n this.activeWorkspace$.next(undefined);\r\n }\r\n }\r\n\r\n}\r\n","import { Subscription, BehaviorSubject, Subject } from 'rxjs';\r\n\r\nimport { ActionStore } from '../../action';\r\nimport { Widget } from '../../widget';\r\nimport { EntityStore } from '../../entity';\r\n\r\nimport { WorkspaceOptions } from './workspace.interfaces';\r\n\r\n/**\r\n * This class is responsible of managing the relations between\r\n * entities and the actions that consume them. It also defines an\r\n * entity table template that may be used by an entity table component.\r\n */\r\nexport class Workspace<E extends object = object> {\r\n\r\n /**\r\n * Observable of the selected widget\r\n */\r\n readonly widget$ = new BehaviorSubject<Widget>(undefined);\r\n\r\n /**\r\n * Observable of the selected widget's inputs\r\n */\r\n readonly widgetInputs$ = new BehaviorSubject<{[key: string]: any}>({});\r\n\r\n /**\r\n * Observable of the selected widget's subscribers\r\n */\r\n readonly widgetSubscribers$ = new BehaviorSubject<{[key: string]: (event: any) => void}>({});\r\n\r\n /**\r\n * Subscription to the selected entity\r\n */\r\n private entities$$: Subscription;\r\n\r\n /**\r\n * State change that trigger an update of the actions availability\r\n */\r\n private change: Subject<void> = new Subject();\r\n\r\n /**\r\n * Subscription to state changes\r\n */\r\n private change$: Subscription;\r\n\r\n /**\r\n * Workspace id\r\n */\r\n get id(): string { return this.options.id; }\r\n\r\n /**\r\n * Workspace title\r\n */\r\n get title(): string { return this.options.title; }\r\n\r\n /**\r\n * Workspace title\r\n */\r\n get meta(): {[key: string]: any} { return this.options.meta || {}; }\r\n\r\n /**\r\n * Entities store\r\n */\r\n get entityStore(): EntityStore<E> { return this.options.entityStore as EntityStore<E>; }\r\n\r\n /**\r\n * Actions store (some actions activate a widget)\r\n */\r\n get actionStore(): ActionStore { return this.options.actionStore; }\r\n\r\n /**\r\n * Selected widget\r\n */\r\n get widget(): Widget { return this.widget$.value; }\r\n\r\n /**\r\n * Whether a widget is selected\r\n */\r\n get hasWidget(): boolean { return this.widget !== undefined; }\r\n\r\n constructor(protected options: WorkspaceOptions) {}\r\n\r\n /**\r\n * Whether this strategy is active\r\n * @internal\r\n */\r\n get active(): boolean { return this.active$.value; }\r\n readonly active$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n /**\r\n * Activate the workspace. By doing that, the workspace will observe\r\n * the selected entity (from the store) and update the actions availability.\r\n * For example, some actions require an entity to be selected.\r\n */\r\n activate() {\r\n if (this.active === true) {\r\n this.deactivate();\r\n }\r\n this.active$.next(true);\r\n\r\n if (this.entityStore !== undefined) {\r\n this.entities$$ = this.entityStore.stateView.all$()\r\n .subscribe(() => this.onStateChange());\r\n }\r\n\r\n this.change.next();\r\n }\r\n\r\n /**\r\n * Deactivate the workspace. Unsubcribe to the selected entity.\r\n */\r\n deactivate() {\r\n this.active$.next(false);\r\n this.deactivateWidget();\r\n\r\n if (this.entities$$ !== undefined) {\r\n this.entities$$.unsubscribe();\r\n }\r\n if (this.change$ !== undefined) {\r\n this.change$.unsubscribe();\r\n }\r\n }\r\n\r\n /**\r\n * Activate a widget. In itself, activating a widget doesn't render it but,\r\n * if an WorkspaceWidgetOutlet component is bound to this workspace, the widget will\r\n * show up.\r\n * @param widget Widget\r\n * @param inputs Inputs the widget will receive\r\n */\r\n activateWidget(\r\n widget: Widget,\r\n inputs: {[key: string]: any} = {},\r\n subscribers: {[key: string]: (event: any) => void} = {}\r\n ) {\r\n this.widget$.next(widget);\r\n this.widgetInputs$.next(inputs);\r\n this.widgetSubscribers$.next(subscribers);\r\n this.change.next();\r\n }\r\n\r\n /**\r\n * Deactivate a widget.\r\n */\r\n deactivateWidget() {\r\n this.widget$.next(undefined);\r\n this.change.next();\r\n }\r\n\r\n /**\r\n * When the state changes, update the actions availability.\r\n */\r\n private onStateChange() {\r\n this.change.next();\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of common\r\n */\r\n\r\nexport * from './lib/action/action.module';\r\nexport * from './lib/action/actionbar/actionbar.module';\r\nexport * from './lib/backdrop/backdrop.module';\r\nexport * from './lib/badge-icon/badge-icon.module';\r\nexport * from './lib/clickout/clickout.module';\r\nexport * from './lib/clone/clone.module';\r\nexport * from './lib/collapsible/collapsible.module';\r\nexport * from './lib/confirm-dialog/confirm-dialog.module';\r\nexport * from './lib/context-menu/context-menu.module';\r\nexport * from './lib/custom-html/custom-html.module';\r\nexport * from './lib/dom/dom.module';\r\nexport * from './lib/drag-drop/drag-drop.module';\r\nexport * from './lib/dynamic-component/dynamic-component.module';\r\nexport * from './lib/dynamic-component/dynamic-outlet/dynamic-outlet.module';\r\nexport * from './lib/flexible/flexible.module';\r\nexport * from './lib/form/form.module';\r\nexport * from './lib/form/form/form.module';\r\nexport * from './lib/home-button/home-button.module';\r\nexport * from './lib/form/form-field/form-field.module';\r\nexport * from './lib/form/form-group/form-group.module';\r\nexport * from './lib/entity/entity.module';\r\nexport * from './lib/entity/entity-selector/entity-selector.module';\r\nexport * from './lib/entity/entity-table/entity-table.module';\r\nexport * from './lib/entity/entity-table-paginator/entity-table-paginator.module';\r\nexport * from './lib/image/image.module';\r\nexport * from './lib/interactive-tour/interactive-tour.module';\r\nexport * from './lib/json-dialog/json-dialog.module';\r\nexport * from './lib/keyvalue/keyvalue.module';\r\nexport * from './lib/list/list.module';\r\nexport * from './lib/panel/panel.module';\r\nexport * from './lib/sidenav/sidenav.module';\r\nexport * from './lib/spinner/spinner.module';\r\nexport * from './lib/stop-propagation/stop-propagation.module';\r\nexport * from './lib/table/table.module';\r\nexport * from './lib/tool/tool.module';\r\nexport * from './lib/tool/toolbox/toolbox.module';\r\nexport * from './lib/widget/widget.module';\r\nexport * from './lib/widget/widget-outlet/widget-outlet.module';\r\nexport * from './lib/workspace/workspace.module';\r\nexport * from './lib/workspace/workspace-selector/workspace-selector.module';\r\nexport * from './lib/workspace/workspace-widget-outlet/workspace-widget-outlet.module';\r\n\r\nexport * from './lib/action';\r\nexport * from './lib/backdrop';\r\nexport * from './lib/badge-icon';\r\nexport * from './lib/clickout';\r\nexport * from './lib/clone';\r\nexport * from './lib/collapsible';\r\nexport * from './lib/confirm-dialog';\r\nexport * from './lib/context-menu';\r\nexport * from './lib/custom-html';\r\nexport * from './lib/drag-drop';\r\nexport * from './lib/dom';\r\nexport * from './lib/dynamic-component';\r\nexport * from './lib/form';\r\nexport * from './lib/home-button';\r\nexport * from './lib/entity';\r\nexport * from './lib/flexible';\r\nexport * from './lib/image';\r\nexport * from './lib/interactive-tour';\r\nexport * from './lib/json-dialog';\r\nexport * from './lib/keyvalue';\r\nexport * from './lib/list';\r\nexport * from './lib/panel';\r\nexport * from './lib/sidenav';\r\nexport * from './lib/spinner';\r\nexport * from './lib/stop-propagation';\r\nexport * from './lib/table';\r\nexport * from './lib/tool';\r\nexport * from './lib/widget';\r\nexport * from './lib/workspace';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3","_c0","i1.DynamicComponentService","_c2","i1.FormFieldService","i2.InteractiveTourLoader","i1.InteractiveTourService","i2.ToolService","_c1","i1.SpinnerComponent"],"mappings":"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"}
|