- /**
- @module ember-flexberry
- */
-
- import { computed } from '@ember/object';
- import FlexberryFile from './../flexberry-file';
-
- /**
- Mobile version of {{#crossLink "FlexberryFileComponent"}}flexberry-file{{/crossLink}} component (with mobile-specific defaults).
-
- @class Mobile.FlexberryFileComponent
- @extends FlexberryFileComponent
- */
- export default FlexberryFile.extend({
- /**
- Flag: whether component is mobile or not.
- Used in base class for class names bindings.
-
- @property _isMobile
- @type Boolean
- @default true
- @private
- */
- _isMobile: true,
-
- /**
- Items for component's menu.
-
- @readOnly
- @property _menuItems
- @type Object[]
- @private
- */
- _menuItems: computed('showPreview', 'readonly', 'i18n.locale', '_uploadButtonIsVisible', '_downloadButtonIsVisible', function() {
- let menuSubItems = [];
- if (this.get('showPreview')) {
- menuSubItems.push({
- icon: 'zoom icon',
- title: this.get('i18n').t('components.flexberry-file.menu-for-file.zoom-image-item-caption'),
- isZoomItem: true
- });
- }
-
- if (!this.get('readonly')) {
- menuSubItems.push({
- icon: 'file outline icon',
- title: this.get('i18n').t('components.flexberry-file.menu-for-file.replace-file-item-caption'),
- isReplaceItem: true
- });
- }
-
- if (!this.get('readonly')) {
- menuSubItems.push({
- icon: 'trash icon',
- title: this.get('i18n').t('components.flexberry-file.menu-for-file.delete-file-item-caption'),
- isDeleteItem: true
- });
- }
- if (this.get('_uploadButtonIsVisible')) {
- menuSubItems.push({
- icon: 'upload outline icon',
- title: this.get('i18n').t('components.flexberry-file.upload-button-title'),
- isUploadItem: true
- });
- }
- if (this.get('_downloadButtonIsVisible')) {
- menuSubItems.push({
- icon: 'download outline icon',
- title: this.get('i18n').t('components.flexberry-file.download-button-title'),
- isDownloadItem: true
- });
- }
- return [{
- icon: 'list layout icon',
- itemsAlignment: undefined,
- items: menuSubItems
- }];
- }),
-
- actions: {
- /**
- Handles click on menu item of selected file.
-
- @method actions.onMenuItemClick
- @param {Object} e Information about selected menu item.
- @param {Object} [e.data] Data of selected menu item.
- @public
- */
- onMenuItemClick(e) {
- if (!e.item) {
- return;
- }
-
- if (e.item.isZoomItem) {
- this.send('viewLoadedImage');
-
- return;
- }
-
- if (e.item.isReplaceItem) {
- let addButton = this.$('.flexberry-file-add-button');
- addButton.click();
-
- return;
- }
-
- if (e.item.isDeleteItem) {
- this.removeFile();
-
- return;
- }
-
- if (e.item.isDownloadItem) {
- this.downloadFile();
-
- return;
- }
-
- if (e.item.isUploadItem){
- this.uploadFile();
-
- return;
- }
- }
- },
-
- /**
- Components class names bindings.
-
- @property classNameBindings
- @type String[]
- @default ['isMobile:mobile']
- */
- classNameBindings: ['_isMobile:mobile'],
-
- /**
- Flag: indicates whether to show preview element for images or not.
-
- @property showPreview
- @type Boolean
- @default true
- */
- showPreview: true,
-
- /**
- Handles end of rerender.
- Dropdown part of menu is initialized here in order to get dropdown behavior,
- when menu disappeares after item selecting.
- */
- didRender() {
- this._super(...arguments);
-
- // TODO: Move collapse menu logic into flexberry-menu component,
- // make it available through component setting (for example collapseMenuOnItemClick=true),
- // and remove all didRender logic then.
- let dropdownElement = this.$('.flexberry-file-menu .dropdown');
- if (dropdownElement && dropdownElement.length > 0) {
- dropdownElement.dropdown();
- }
- },
- });
-
-