Skip to content

Commit

Permalink
fix(all): prevent double registration
Browse files Browse the repository at this point in the history
  • Loading branch information
MaximBalaganskiy committed Apr 26, 2024
1 parent fb61768 commit c7c9057
Show file tree
Hide file tree
Showing 43 changed files with 338 additions and 131 deletions.
25 changes: 16 additions & 9 deletions packages/all/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,20 +39,27 @@ import { TooltipConfiguration } from '@aurelia-mdc-web/tooltip';
import { BaseConfiguration } from '@aurelia-mdc-web/base';
import { TreeViewConfiguration } from '@aurelia-mdc-web/tree-view';

let registered = false;

export const AllConfiguration = {
/**
* Apply this configuration to the provided container.
*/
register(container: IContainer): IContainer {
return container.register(
BaseConfiguration, BannerConfiguration, ButtonConfiguration, CardConfiguration, CheckboxConfiguration, ChipsConfiguration, CircularProgressConfiguration,
DataTableConfiguration, DialogConfiguration, DrawerConfiguration, ElevationConfiguration, ExpandableConfiguration, FabConfiguration,
FloatingLabelConfiguration, FormFieldConfiguration, IconButtonConfiguration, IconConfiguration, ImageListConfiguration, LayoutGridConfiguration,
LineRippleConfiguration, LinearProgressConfiguration, ListConfiguration, LookupConfiguration, MenuConfiguration, MenuSurfaceConfiguration,
NotchedOutlineConfiguration, RadioConfiguration, RippleConfiguration, SegmentedButtonConfiguration, SelectConfiguration, SliderConfiguration,
SnackbarConfiguration, SwitchConfiguration, TabBarConfiguration, TextFieldConfiguration, TooltipConfiguration, TopAppBarConfiguration,
TreeViewConfiguration, TypographyConfiguration,
);
if (registered) {
return container;
} else {
registered = true;
return container.register(
BaseConfiguration, BannerConfiguration, ButtonConfiguration, CardConfiguration, CheckboxConfiguration, ChipsConfiguration, CircularProgressConfiguration,
DataTableConfiguration, DialogConfiguration, DrawerConfiguration, ElevationConfiguration, ExpandableConfiguration, FabConfiguration,
FloatingLabelConfiguration, FormFieldConfiguration, IconButtonConfiguration, IconConfiguration, ImageListConfiguration, LayoutGridConfiguration,
LineRippleConfiguration, LinearProgressConfiguration, ListConfiguration, LookupConfiguration, MenuConfiguration, MenuSurfaceConfiguration,
NotchedOutlineConfiguration, RadioConfiguration, RippleConfiguration, SegmentedButtonConfiguration, SelectConfiguration, SliderConfiguration,
SnackbarConfiguration, SwitchConfiguration, TabBarConfiguration, TextFieldConfiguration, TooltipConfiguration, TopAppBarConfiguration,
TreeViewConfiguration, TypographyConfiguration,
);
}
},
/**
* Create a new container with this configuration applied to it.
Expand Down
9 changes: 8 additions & 1 deletion packages/banner/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,15 @@ import { ButtonConfiguration } from '@aurelia-mdc-web/button';

export { MdcBanner };

let registered = false;

export const BannerConfiguration = {
register(container: IContainer): IContainer {
return container.register(MdcBanner, ButtonConfiguration);
if (registered) {
return container;
} else {
registered = true;
return container.register(MdcBanner, ButtonConfiguration);
}
}
};
9 changes: 8 additions & 1 deletion packages/base/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,15 @@ export { defaultSlotProcessContent } from './default-slot-process-content';
export { MdcFocusTrap } from './attributes/mdc-focus-trap';
export { nextElement } from './next-element';

let registered = false;

export const BaseConfiguration = {
register(container: IContainer): IContainer {
return container.register(MdcPromisifyReference, MdcFocusTrap);
if (registered) {
return container;
} else {
registered = true;
return container.register(MdcPromisifyReference, MdcFocusTrap);
}
}
};
8 changes: 7 additions & 1 deletion packages/button/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,15 @@ import { MdcButtonLabel } from './mdc-button-label';
import { EnhanceMdcButton } from './enhance-mdc-button';

export { MdcButton, MdcButtonLabel };
let registered = false;

export const ButtonConfiguration = {
register(container: IContainer): IContainer {
return container.register(MdcButton, MdcButtonLabel, EnhanceMdcButton);
if (registered) {
return container;
} else {
registered = true;
return container.register(MdcButton, MdcButtonLabel, EnhanceMdcButton);
}
}
};
12 changes: 0 additions & 12 deletions packages/button/src/mdc-button.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,19 +55,7 @@ export class MdcButton {
}
}

// this is necessary for the route-href to work
@bindable
href: string;
hrefChanged() {
if (this.href) {
this.root.setAttribute('href', this.href);
} else {
this.root.removeAttribute('href');
}
}

attached() {
this.hrefChanged();
const icons = this.root.querySelectorAll('mdc-icon');
Array.from(icons).forEach(x => x.classList.add('mdc-button__icon'));
}
Expand Down
9 changes: 8 additions & 1 deletion packages/card/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,15 @@ import { MdcCard } from './mdc-card';

export { MdcCard } from './mdc-card';

let registered = false;

export const CardConfiguration = {
register(container: IContainer): IContainer {
return container.register(MdcCard, MdcCardActions, MdcCardMedia, MdcCardActionButtons, MdcCardPrimaryAction, MdcCardActionIcons);
if (registered) {
return container;
} else {
registered = true;
return container.register(MdcCard, MdcCardActions, MdcCardMedia, MdcCardActionButtons, MdcCardPrimaryAction, MdcCardActionIcons);
}
}
};
6 changes: 4 additions & 2 deletions packages/checkbox/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,17 @@ let configured = false;

export const CheckboxConfiguration = {
register(container: IContainer): IContainer {
if (!configured) {
if (configured) {
return container;
} else {
AppTask.creating(IContainer, c => {
const attrMapper = c.get(IAttrMapper);
const nodeObserverLocator = c.get(NodeObserverLocator);
attrMapper.useTwoWay((el, property) => el.tagName === 'MDC-CHECKBOX' ? property === 'checked' : false);
nodeObserverLocator.useConfig('MDC-CHECKBOX', 'checked', { events: ['change'], type: CheckedObserver });
}).register(container);
configured = true;
return container.register(MdcCheckbox, RippleConfiguration);
}
return container.register(MdcCheckbox, RippleConfiguration);
}
};
6 changes: 4 additions & 2 deletions packages/chips/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,17 @@ let configured = false;

export const ChipsConfiguration = {
register(container: IContainer): IContainer {
if (!configured) {
if (configured) {
return container;
} else {
AppTask.creating(IContainer, c => {
const attrMapper = c.get(IAttrMapper);
const nodeObserverLocator = c.get(NodeObserverLocator);
attrMapper.useTwoWay((el, property) => el.tagName === 'MDC-CHIP' ? property === 'checked' : false);
nodeObserverLocator.useConfig('MDC-CHIP', 'checked', { events: ['change'], type: CheckedObserver });
}).register(container);
configured = true;
return container.register(MdcChip, MdcChipAction, EnhanceMdcChipAction, MdcChipSet, RippleConfiguration);
}
return container.register(MdcChip, MdcChipAction, EnhanceMdcChipAction, MdcChipSet, RippleConfiguration);
}
};
3 changes: 2 additions & 1 deletion packages/chips/src/mdc-chip-action/mdc-chip-action.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { MDCRippleCapableSurface } from '@material/ripple';
import { MDCChipTrailingActionFoundation } from '@material/chips/action/trailing-foundation';
import { MDCChipPrimaryActionFoundation } from '@material/chips/action/primary-foundation';
import { GRAPHIC_SELECTED_WIDTH_STYLE_PROP, computePrimaryActionRippleClientRect } from '@material/chips/action/component-ripple';
import { bindable, customElement } from 'aurelia';
import { bindable, customElement, inject } from 'aurelia';
import { processContent } from '@aurelia/runtime-html';
import template from './mdc-chip-action.html';

Expand All @@ -18,6 +18,7 @@ let actionId = 0;
* @hidden
* @selector mdc-chip-action
*/
@inject(Element)
@customElement({ name: 'mdc-chip-action', template })
@processContent(defaultSlotProcessContent)
export class MdcChipAction extends MdcComponent<MDCChipActionFoundation> implements MDCRippleCapableSurface {
Expand Down
9 changes: 8 additions & 1 deletion packages/circular-progress/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,15 @@ import { MdcCircularProgress } from './mdc-circular-progress';

export { MdcCircularProgress };

let registered = false;

export const CircularProgressConfiguration = {
register(container: IContainer): IContainer {
return container.register(MdcCircularProgress);
if (registered) {
return container;
} else {
registered = true;
return container.register(MdcCircularProgress);
}
}
};
9 changes: 8 additions & 1 deletion packages/data-table/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,16 @@ import { MdcDataTableRow } from './mdc-data-table-row';

export { MdcDataTable } from './mdc-data-table';

let registered = false;

export const DataTableConfiguration = {
register(container: IContainer): IContainer {
return container.register(MdcDataTable, MdcDataTableRow, CheckboxConfiguration);
if (registered) {
return container;
} else {
registered = true;
return container.register(MdcDataTable, MdcDataTableRow, CheckboxConfiguration);
}
}
};

Expand Down
9 changes: 8 additions & 1 deletion packages/dialog/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,16 @@ import { FocusTrap } from '@material/dom/focus-trap';
export { MdcDialog } from './mdc-dialog';
export { MdcDialogService, IMdcDialogOptions } from './mdc-dialog-service';

let registered = false;

export const DialogConfiguration = {
register(container: IContainer): IContainer {
return container.register(MdcDialog, MdcDialogActions, MdcDialogTitle, MdcDialogContent);
if (registered) {
return container;
} else {
registered = true;
return container.register(MdcDialog, MdcDialogActions, MdcDialogTitle, MdcDialogContent);
}
}
};

Expand Down
9 changes: 8 additions & 1 deletion packages/drawer/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,15 @@ import { MdcDrawerHeader } from './mdc-drawer-header/mdc-drawer-header';

export { MdcDrawer, MdcDrawerContent, MdcDrawerAppContent, MdcDrawerHeader };

let registered = false;

export const DrawerConfiguration = {
register(container: IContainer): IContainer {
return container.register(MdcDrawer, MdcDrawerContent, MdcDrawerAppContent, MdcDrawerHeader);
if (registered) {
return container;
} else {
registered = true;
return container.register(MdcDrawer, MdcDrawerContent, MdcDrawerAppContent, MdcDrawerHeader);
}
}
};
9 changes: 8 additions & 1 deletion packages/elevation/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,15 @@ import { MdcElevation } from './mdc-elevation';

export { MdcElevation } from './mdc-elevation';

let registered = false;

export const ElevationConfiguration = {
register(container: IContainer): IContainer {
return container.register(MdcElevation);
if (registered) {
return container;
} else {
registered = true;
return container.register(MdcElevation);
}
}
};
9 changes: 8 additions & 1 deletion packages/expandable/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,15 @@ import { MdcExpandable } from './mdc-expandable';

export { MdcExpandable } from './mdc-expandable';

let registered = false;

export const ExpandableConfiguration = {
register(container: IContainer): IContainer {
return container.register(MdcExpandable, RippleConfiguration);
if (registered) {
return container;
} else {
registered = true;
return container.register(MdcExpandable, RippleConfiguration);
}
}
};
9 changes: 8 additions & 1 deletion packages/fab/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,16 @@ import { EnhanceMdcFab } from './enhance-mdc-fab';

export { MdcFab } from './mdc-fab';

let registered = false;

export const FabConfiguration = {
register(container: IContainer): IContainer {
return container.register(MdcFab, MdcFabIcon, RippleConfiguration, EnhanceMdcFab);
if (registered) {
return container;
} else {
registered = true;
return container.register(MdcFab, MdcFabIcon, RippleConfiguration, EnhanceMdcFab);
}
}
};

9 changes: 8 additions & 1 deletion packages/floating-label/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,15 @@ import { IContainer } from 'aurelia';

export { MdcFloatingLabel } from './mdc-floating-label';

let registered = false;

export const FloatingLabelConfiguration = {
register(container: IContainer): IContainer {
return container.register(MdcFloatingLabel);
if (registered) {
return container;
} else {
registered = true;
return container.register(MdcFloatingLabel);
}
}
};
9 changes: 8 additions & 1 deletion packages/form-field/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,15 @@ import { MdcFormField } from './mdc-form-field';

export { MdcFormField } from './mdc-form-field';

let registered = false;

export const FormFieldConfiguration = {
register(container: IContainer): IContainer {
return container.register(MdcFormField);
if (registered) {
return container;
} else {
registered = true;
return container.register(MdcFormField);
}
}
};
9 changes: 8 additions & 1 deletion packages/icon-button/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,15 @@ import { EnhanceMdcIconButton } from './enhance-mdc-icon-button';

export { MdcIconButton, MdcIconButtonIcon };

let registered = false;

export const IconButtonConfiguration = {
register(container: IContainer): IContainer {
return container.register(MdcIconButton, MdcIconButtonIcon, EnhanceMdcIconButton);
if (registered) {
return container;
} else {
registered = true;
return container.register(MdcIconButton, MdcIconButtonIcon, EnhanceMdcIconButton);
}
}
};
9 changes: 8 additions & 1 deletion packages/icon/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,15 @@ import { MdcIcon } from './mdc-icon';

export { MdcIcon };

let registered = false;

export const IconConfiguration = {
register(container: IContainer): IContainer {
return container.register(MdcIcon);
if (registered) {
return container;
} else {
registered = true;
return container.register(MdcIcon);
}
}
};
9 changes: 8 additions & 1 deletion packages/image-list/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,15 @@ import { MdcImageListItem } from './mdc-image-list-item/mdc-image-list-item';

export { MdcImageList } from './mdc-image-list';

let registered = false;

export const ImageListConfiguration = {
register(container: IContainer): IContainer {
return container.register(MdcImageList, MdcImageListItem);
if (registered) {
return container;
} else {
registered = true;
return container.register(MdcImageList, MdcImageListItem);
}
}
};
Loading

0 comments on commit c7c9057

Please sign in to comment.