@theseam/ui-common 0.4.13 → 0.4.15
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/buttons/public-api.d.ts +1 -0
- package/buttons/testing/anchor-badge-button.harness.d.ts +16 -0
- package/buttons/testing/anchor-button.harness.d.ts +16 -0
- package/buttons/testing/badge-button.harness.d.ts +15 -0
- package/buttons/testing/base-badge-button.harness.d.ts +15 -0
- package/buttons/testing/base-button.harness.d.ts +19 -0
- package/buttons/testing/button.harness.d.ts +15 -0
- package/buttons/testing/index.d.ts +5 -0
- package/buttons/testing/toggle-button.harness.d.ts +21 -0
- package/checkbox/checkbox.component.d.ts +1 -1
- package/checkbox/checkbox.module.d.ts +2 -3
- package/datatable/datatable.module.d.ts +1 -1
- package/esm2020/buttons/button/button.component.mjs +2 -1
- package/esm2020/buttons/public-api.mjs +2 -1
- package/esm2020/buttons/testing/anchor-badge-button.harness.mjs +18 -0
- package/esm2020/buttons/testing/anchor-button.harness.mjs +18 -0
- package/esm2020/buttons/testing/badge-button.harness.mjs +14 -0
- package/esm2020/buttons/testing/base-badge-button.harness.mjs +29 -0
- package/esm2020/buttons/testing/base-button.harness.mjs +41 -0
- package/esm2020/buttons/testing/button.harness.mjs +16 -0
- package/esm2020/buttons/testing/index.mjs +6 -0
- package/esm2020/buttons/testing/toggle-button.harness.mjs +25 -0
- package/esm2020/checkbox/checkbox.component.mjs +8 -3
- package/esm2020/checkbox/checkbox.module.mjs +5 -12
- package/esm2020/datatable/datatable.module.mjs +5 -5
- package/esm2020/form-field/form-field.component.mjs +4 -4
- package/esm2020/framework/schema-form/index.mjs +2 -1
- package/esm2020/framework/schema-form/schema-form-framework.component.mjs +6 -3
- package/esm2020/framework/schema-form/schema-form-framework.mjs +62 -7
- package/esm2020/framework/schema-form/schema-form-widget.mjs +2 -0
- package/esm2020/framework/schema-form/schema-form.module.mjs +1 -8
- package/esm2020/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.mjs +21 -11
- package/esm2020/framework/schema-form-controls/schema-form-divider/schema-form-divider.component.mjs +20 -0
- package/esm2020/framework/schema-form-controls/schema-form-input/schema-form-input.component.mjs +17 -8
- package/esm2020/framework/schema-form-controls/schema-form-number/schema-form-number.component.mjs +14 -5
- package/esm2020/framework/schema-form-controls/schema-form-select/schema-form-select.component.mjs +19 -9
- package/esm2020/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.mjs +21 -13
- package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +30 -18
- package/esm2020/framework/schema-form-controls/schema-form-tel/schema-form-tel.component.mjs +48 -0
- package/esm2020/framework/schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component.mjs +57 -0
- package/esm2020/google-maps/google-maps/google-maps.component.mjs +9 -2
- package/esm2020/google-maps/google-maps-api-loader/lazy-google-maps-api-loader.mjs +2 -1
- package/esm2020/menu/public-api.mjs +5 -1
- package/esm2020/menu/testing/menu-footer.harness.mjs +28 -0
- package/esm2020/menu/testing/menu-header.harness.mjs +23 -0
- package/esm2020/menu/testing/menu-item.harness.mjs +59 -0
- package/esm2020/menu/testing/menu.harness.mjs +163 -0
- package/esm2020/menu/testing/utils.mjs +13 -0
- package/esm2020/story-helpers/args-to-tpl.mjs +83 -0
- package/esm2020/story-helpers/public-api.mjs +2 -2
- package/esm2020/tel-input/public-api.mjs +2 -1
- package/esm2020/tel-input/tel-input/tel-input.component.mjs +22 -10
- package/esm2020/tel-input/tel-input.directive.mjs +12 -13
- package/esm2020/tel-input/tel-input.module.mjs +10 -9
- package/esm2020/tel-input/testing/tel-input.harness.mjs +49 -0
- package/esm2020/testing/harnesses/ng-select-dropdown.harness.mjs +39 -0
- package/esm2020/testing/harnesses/ng-select-option.harness.mjs +26 -0
- package/esm2020/testing/harnesses/ng-select.harness.mjs +104 -0
- package/esm2020/testing/public-api.mjs +4 -1
- package/esm2020/tiled-select/components/tiled-select/tiled-select.component.mjs +1 -1
- package/fesm2015/theseam-ui-common-buttons.mjs +181 -3
- package/fesm2015/theseam-ui-common-buttons.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-checkbox.mjs +12 -14
- package/fesm2015/theseam-ui-common-checkbox.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-datatable.mjs +4 -4
- package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-form-field.mjs +3 -3
- package/fesm2015/theseam-ui-common-form-field.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-framework.mjs +248 -164
- package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-google-maps.mjs +10 -1
- package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-menu.mjs +329 -3
- package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-story-helpers.mjs +86 -1
- package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-tel-input.mjs +105 -29
- package/fesm2015/theseam-ui-common-tel-input.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-testing.mjs +197 -1
- package/fesm2015/theseam-ui-common-testing.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-tiled-select.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-buttons.mjs +154 -2
- package/fesm2020/theseam-ui-common-buttons.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-checkbox.mjs +12 -14
- package/fesm2020/theseam-ui-common-checkbox.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-datatable.mjs +4 -4
- package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-form-field.mjs +3 -3
- package/fesm2020/theseam-ui-common-form-field.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-framework.mjs +236 -162
- package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-google-maps.mjs +9 -1
- package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-menu.mjs +275 -2
- package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-story-helpers.mjs +84 -1
- package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-tel-input.mjs +89 -29
- package/fesm2020/theseam-ui-common-tel-input.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-testing.mjs +165 -1
- package/fesm2020/theseam-ui-common-testing.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-tiled-select.mjs.map +1 -1
- package/framework/schema-form/index.d.ts +1 -0
- package/framework/schema-form/schema-form-framework.d.ts +12 -1
- package/framework/schema-form/schema-form-widget.d.ts +61 -0
- package/framework/schema-form/schema-form.module.d.ts +1 -2
- package/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.d.ts +12 -11
- package/framework/schema-form-controls/schema-form-divider/schema-form-divider.component.d.ts +12 -0
- package/framework/schema-form-controls/schema-form-input/schema-form-input.component.d.ts +10 -9
- package/framework/schema-form-controls/schema-form-number/schema-form-number.component.d.ts +8 -7
- package/framework/schema-form-controls/schema-form-select/schema-form-select.component.d.ts +10 -9
- package/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.d.ts +10 -9
- package/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.d.ts +10 -9
- package/framework/schema-form-controls/schema-form-tel/schema-form-tel.component.d.ts +23 -0
- package/framework/schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component.d.ts +32 -0
- package/google-maps/google-maps/google-maps.component.d.ts +2 -1
- package/google-maps/google-maps-api-loader/lazy-google-maps-api-loader.d.ts +1 -0
- package/menu/menu-footer-action/menu-footer-action.component.d.ts +1 -1
- package/menu/public-api.d.ts +4 -0
- package/menu/testing/menu-footer.harness.d.ts +22 -0
- package/menu/testing/menu-header.harness.d.ts +18 -0
- package/menu/testing/menu-item.harness.d.ts +37 -0
- package/menu/testing/menu.harness.d.ts +74 -0
- package/menu/testing/utils.d.ts +5 -0
- package/package.json +1 -1
- package/story-helpers/args-to-tpl.d.ts +25 -0
- package/story-helpers/public-api.d.ts +1 -0
- package/tel-input/public-api.d.ts +1 -0
- package/tel-input/tel-input/tel-input.component.d.ts +2 -2
- package/tel-input/tel-input.directive.d.ts +1 -1
- package/tel-input/tel-input.module.d.ts +7 -7
- package/tel-input/testing/tel-input.harness.d.ts +19 -0
- package/testing/harnesses/ng-select-dropdown.harness.d.ts +23 -0
- package/testing/harnesses/ng-select-option.harness.d.ts +18 -0
- package/testing/harnesses/ng-select.harness.d.ts +50 -0
- package/testing/public-api.d.ts +3 -0
- package/tiled-select/components/tiled-select/tiled-select.component.d.ts +10 -10
- package/esm2020/framework/schema-form-controls/schema-form-controls.module.mjs +0 -79
- package/framework/schema-form-controls/schema-form-controls.module.d.ts +0 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theseam-ui-common-testing.mjs","sources":["../../../projects/ui-common/testing/fake-toastr.ts","../../../projects/ui-common/testing/render-story.ts","../../../projects/ui-common/testing/tick-helper.ts","../../../projects/ui-common/testing/current-tick-time.ts","../../../projects/ui-common/testing/story-expect.ts","../../../projects/ui-common/testing/get-harness.ts","../../../projects/ui-common/testing/theseam-ui-common-testing.ts"],"sourcesContent":["import { ActiveToast, GlobalConfig, IndividualConfig, ToastContainerDirective } from 'ngx-toastr'\n\nexport class FakeToastrService {\n toastrConfig!: GlobalConfig\n currentlyActive = 0\n toasts: ActiveToast<any>[] = []\n overlayContainer!: ToastContainerDirective\n previousToastMessage: string | undefined\n\n /** show toast */\n show(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {},\n type = ''\n ) { }\n\n /** show successful toast */\n success(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /** show error toast */\n error(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /** show info toast */\n info(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /** show warning toast */\n warning(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /**\n * Remove all or a single toast by id\n */\n clear(toastId?: number) { }\n\n /**\n * Remove and destroy a single toast by id\n */\n remove(toastId: number) { }\n\n /**\n * Determines if toast message is already shown\n */\n findDuplicate(message: string, resetOnDuplicate: boolean, countDuplicates: boolean) { }\n\n}\n","// import { createMountableStoryComponent } from '@storybook/testing-angular'\nimport { render, RenderResult } from '@testing-library/angular'\n\n// NOTE: This is an experimental attempt at removing some of the boilerplate. If\n// this ends up being worth it, then I will add it to `@storybook/testing-angular`.\nexport async function renderStory<ComponentType = any>(story: any): Promise<RenderResult<ComponentType, ComponentType>> {\n // const { component, ngModule } = createMountableStoryComponent(\n // story({}, {} as any)\n // )\n // return await render(component, { imports: [ ngModule ] })\n return null as any\n}\n","import { tick } from '@angular/core/testing'\n\n/**\n * Helps advance tests to specific elapsed times.\n *\n * # When to use\n *\n * If a test needs to do something at 100 ticks, but expected values should\n * also be tested at multiple ticks before 100 ticks, then the previous tick\n * sum needs to be counted. If the elapsed can be easily counted by just\n * skimming the code you should just use `tick()`.\n *\n * The following example is simple enough that `tick()` is probably better, but\n * it shows how it is used.\n *\n * ## Example without\n *\n * ```ts\n * const thing = new Thing()\n * thing.dieAfterTicks(100)\n *\n * tick(25)\n * expect(thing.isAlive).toBe(true)\n *\n * tick(25)\n * expect(thing.isAlive).toBe(true)\n *\n * tick(25)\n * expect(thing.isAlive).toBe(true)\n *\n * tick(25)\n * expect(thing.isAlive).toBe(false)\n * ```\n *\n * ## Example with\n *\n * ```ts\n * const t = new TickHelper()\n * const thing = new Thing()\n * thing.dieAfterTicks(100)\n *\n * t.tickTo(25)\n * expect(thing.isAlive).toBe(true)\n *\n * t.tickTo(50)\n * expect(thing.isAlive).toBe(true)\n *\n * t.tickTo(75)\n * expect(thing.isAlive).toBe(true)\n *\n * t.tickTo(100)\n * expect(thing.isAlive).toBe(false)\n * ```\n */\nexport class TickHelper {\n\n private _startTime = Date.now()\n\n /**\n * Returns the number of ticks that have elapsed since this class was\n * initialized.\n */\n public get ticksElapsed() { return Date.now() - this._startTime }\n\n /**\n * Calls `tick()` for the remaining number of ticks to reach elapsed ticks.\n *\n * ```\n * const t = new TickHelper()\n * tick(3)\n * t.tickTo(10) // Equivalent to `tick(7)` in this case to reach 10 ticks.\n * ```\n */\n public tickTo(ticks: number) { tick(ticks - this.ticksElapsed) }\n\n}\n","\n/**\n * When using `fakeAsync` this can access the internal currentTickTime of the\n * fake zone's scheduler.\n *\n * NOTE: Do **NOT** rely on this in tests. It is accesses private properties\n * that could break or change at any time, which could cause it to not have the\n * same meaning and be inaccurate in a future version.\n *\n * NOTE: This is accessing private properties, so I don't recommend relying on\n * this in tests. I find it useful to sometimes set this on a global property\n * that I can observe in the debugger's watch variables.\n */\nexport function currentTickTime(documentWindow: any = window): number {\n return documentWindow.Zone.current._properties.FakeAsyncTestZoneSpec._scheduler._currentTickTime\n}\n","// eslint-disable-next-line import/no-named-default\nimport { default as expectPatched } from '@storybook/expect'\nimport { instrument } from '@storybook/instrumenter'\nimport * as mock from 'jest-mock'\n\nexport const { jest } = instrument({ jest: mock })\n\n// const expectJasmineFn = (window as any).expect\nconst expectJestFn = expectPatched\n// const isInJasmine = expectJasmineFn !== undefined && expectJasmineFn !== null\n// const expectFn = expectJasmineFn || exp\nconst isInJasmine = false\n\n// console.log('isInJasmine', isInJasmine)\n\nconst { expect } = instrument(\n // { expect: expectJasmineFn || expectJestFn },\n { expect: expectJestFn },\n // { intercept: (method, path) => path[0] !== 'expect' }\n { intercept: (method, path) => {\n // console.log('intercept', method, path)\n return path[0] !== 'expect'\n } }\n)\n\nfunction toBeFn(matcher: any): (value: any) => Promise<void> {\n // if (isInJasmine) {\n // // @ts-ignore\n // const m = matcher as jasmine.Matchers<any>\n // return async (value: any) => m.toBe(value) as any\n // } else {\n // const m = matcher as ReturnType<typeof expectJestFn>\n // return async (value: any) => m.toBe(value) as any\n // }\n const m = matcher as ReturnType<typeof expectJestFn>\n return async (value: any) => m.toBe(value) as any\n}\n\nexport function expectFn(value: any) {\n // const t = isInJasmine ? expectJasmineFn(value) : expect(value)\n const t = expect(value)\n return {\n toBe: toBeFn(t),\n toStrictEqual: t.toStrictEqual\n }\n}\n","import { ComponentHarness, ComponentHarnessConstructor, HarnessQuery } from '@angular/cdk/testing'\nimport { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'\nimport { ComponentFixture } from '@angular/core/testing'\n\nimport { StorybookHarnessEnvironment } from '@marklb/storybook-harness'\n\nexport interface GetHarnessOptions<TComponent = any> {\n canvasElement?: HTMLElement\n fixture?: ComponentFixture<TComponent>\n}\n\nexport async function getHarness<T extends ComponentHarness>(\n harnessType: HarnessQuery<T>,\n options: GetHarnessOptions\n): Promise<T> {\n if (options.fixture !== undefined) {\n if (isComponentHarnessConstructor(harnessType)) {\n return TestbedHarnessEnvironment.harnessForFixture(options.fixture, harnessType)\n }\n throw Error(`Unable to get harness. harnessType must be a ComponentHarness.`)\n }\n\n if (options.canvasElement !== undefined) {\n return (new StorybookHarnessEnvironment(options.canvasElement))\n .getHarness(harnessType)\n }\n\n throw Error(`Unable to get harness. fixture or canvasElement must be provided.`)\n}\n\nfunction isComponentHarnessConstructor<T extends ComponentHarness>(value: HarnessQuery<T>): value is ComponentHarnessConstructor<T> {\n return typeof value === 'function' && Object.prototype.hasOwnProperty.call(value, 'hostSelector')\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"theseam-ui-common-testing.mjs","sources":["../../../projects/ui-common/testing/harnesses/ng-select-option.harness.ts","../../../projects/ui-common/testing/harnesses/ng-select-dropdown.harness.ts","../../../projects/ui-common/testing/harnesses/ng-select.harness.ts","../../../projects/ui-common/testing/fake-toastr.ts","../../../projects/ui-common/testing/render-story.ts","../../../projects/ui-common/testing/tick-helper.ts","../../../projects/ui-common/testing/current-tick-time.ts","../../../projects/ui-common/testing/story-expect.ts","../../../projects/ui-common/testing/get-harness.ts","../../../projects/ui-common/testing/theseam-ui-common-testing.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing'\n\nexport interface TheSeamNgSelectOptionHarnessFilters extends BaseHarnessFilters {\n /** Filters based on the value of the field. */\n value?: string | RegExp\n}\n\nexport class TheSeamNgSelectOptionHarness extends ComponentHarness {\n static hostSelector = '.ng-option'\n\n /** Creates a `HarnessPredicate` used to locate a particular `MyMenuHarness`. */\n static with(options: TheSeamNgSelectOptionHarnessFilters): HarnessPredicate<TheSeamNgSelectOptionHarness> {\n return new HarnessPredicate(TheSeamNgSelectOptionHarness, options)\n .addOption('option value', options.value,\n (harness, value) => HarnessPredicate.stringMatches(harness.getValue(), value))\n }\n\n /**\n * NOTE: Only works with string values, curently.\n * @returns value of the select option\n */\n public async getValue(): Promise<any> {\n return (await this.host()).text()\n }\n\n /** Whether the ng-select is disabled. */\n async isDisabled(): Promise<boolean> {\n const disabled = (await this.host()).getAttribute('disabled')\n return coerceBooleanProperty(await disabled)\n }\n\n public async click(): Promise<void> {\n return (await this.host()).click()\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing'\n\nimport { TheSeamFormFieldRequiredIndicatorHarness } from '@theseam/ui-common/form-field'\nimport { TheSeamNgSelectOptionHarness, TheSeamNgSelectOptionHarnessFilters } from './ng-select-option.harness'\n\nexport interface TheSeamNgSelectDropdownHarnessFilters extends BaseHarnessFilters {\n /** Filters based on the name of the field. */\n id?: string | RegExp\n}\n\nexport class TheSeamNgSelectDropdownHarness extends ComponentHarness {\n static hostSelector = 'ng-dropdown-panel'\n\n // private readonly _ngSelect = this.locatorFor(TheSeamNgSelectDropdownHarness)\n // private readonly _requiredIndicator = this.locatorFor(TheSeamFormFieldRequiredIndicatorHarness)\n // private readonly _valueLabel = this.locatorForOptional('.ng-value-label')\n // private readonly _options = this.locatorForOptional(TheSeamNgSelectOptionHarness)\n\n /** Creates a `HarnessPredicate` used to locate a particular `MyMenuHarness`. */\n static with(options: TheSeamNgSelectDropdownHarnessFilters): HarnessPredicate<TheSeamNgSelectDropdownHarness> {\n return new HarnessPredicate(TheSeamNgSelectDropdownHarness, options)\n .addOption('field id', options.id,\n (harness, id) => HarnessPredicate.stringMatches(harness.getId(), id))\n }\n\n public async getId(): Promise<string | null> {\n return (await this.host()).getAttribute('id')\n }\n\n /**\n * Gets a list of `TheSeamNgSelectOptionHarness` representing the items in the menu.\n * @param filters Optionally filters which menu items are included.\n */\n async getOptions(\n filters?: Omit<TheSeamNgSelectOptionHarnessFilters, 'ancestor'>,\n ): Promise<TheSeamNgSelectOptionHarness[]> {\n return this.locatorForAll(\n TheSeamNgSelectOptionHarness.with({\n ...(filters || {}),\n } satisfies TheSeamNgSelectOptionHarnessFilters),\n )()\n }\n\n /**\n * Clicks an option in the dropdown.\n * @param optionFilter A filter used to represent which option in the dropdown should be clicked. The\n * first matching dropdown option will be clicked.\n */\n async clickOption(\n optionFilter: Omit<TheSeamNgSelectOptionHarnessFilters, 'ancestor'>\n ): Promise<void> {\n const options = await this.getOptions(optionFilter)\n if (!options.length) {\n throw Error(`Could not find option matching ${JSON.stringify(optionFilter)}`)\n }\n\n return options[0].click()\n }\n\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing'\n\nimport { TheSeamFormFieldRequiredIndicatorHarness } from '@theseam/ui-common/form-field'\nimport { TheSeamNgSelectOptionHarness, TheSeamNgSelectOptionHarnessFilters } from './ng-select-option.harness'\nimport { TheSeamNgSelectDropdownHarness, TheSeamNgSelectDropdownHarnessFilters } from './ng-select-dropdown.harness'\n\nexport interface TheSeamNgSelectHarnessFilters extends BaseHarnessFilters {\n /** Filters based on the name of the field. */\n // name?: string | RegExp\n}\n\nexport class TheSeamNgSelectHarness extends ComponentHarness {\n private _documentRootLocator = this.documentRootLocatorFactory()\n\n static hostSelector = 'ng-select'\n\n private readonly _value = this.locatorForOptional('.ng-value')\n private readonly _valueLabel = this.locatorForOptional('.ng-value-label')\n\n /** Creates a `HarnessPredicate` used to locate a particular `MyMenuHarness`. */\n static with(options: TheSeamNgSelectHarnessFilters): HarnessPredicate<TheSeamNgSelectHarness> {\n return new HarnessPredicate(TheSeamNgSelectHarness, options)\n // .addOption('field name', options.name,\n // (harness, name) => HarnessPredicate.stringMatches(harness.getName(), name))\n }\n\n public async getId(): Promise<string | null> {\n return (await this.getInputElement()).getAttribute('id')\n }\n\n public async getAriaControls(): Promise<string | null> {\n return (await this.getInputElement()).getAttribute('aria-controls')\n }\n\n public async getName(): Promise<string | null> {\n return (await this.getInputElement()).getAttribute('name')\n }\n\n /**\n * NOTE: Only works with string values, curently.\n * @returns value of the select\n */\n public async getValue(): Promise<any> {\n const valueLabel = await this._valueLabel()\n if (valueLabel === null) {\n const value = await this._value()\n if (value === null) {\n return null\n }\n\n return value.text()\n }\n\n return valueLabel.text()\n }\n\n /**\n * Gets a list of `TheSeamNgSelectOptionHarness` representing the options in the dropdown.\n *\n * NOTE: Must open the dropdown first. eg. `await ngSelectHarness.click()`\n *\n * @param filters Optionally filters which menu items are included.\n */\n async getOptions(\n filters?: Omit<TheSeamNgSelectOptionHarnessFilters, 'ancestor'>,\n ): Promise<TheSeamNgSelectOptionHarness[]> {\n const dropdown = await this._getDropdown()\n if (dropdown === null) {\n return []\n }\n\n return dropdown.getOptions(filters)\n }\n\n /**\n * Clicks an option in the dropdown.\n * @param optionFilter A filter used to represent which option in the dropdown should be clicked. The\n * first matching dropdown option will be clicked.\n */\n async clickOption(\n optionFilter: Omit<TheSeamNgSelectOptionHarnessFilters, 'ancestor'>\n ): Promise<void> {\n await this.click()\n const dropdown = await this._getDropdown()\n if (dropdown === null) {\n throw Error(`Could not find dropdown.`)\n }\n\n return dropdown.clickOption(optionFilter)\n }\n\n /** Whether the ng-select is disabled. */\n async isDisabled(): Promise<boolean> {\n const disabled = (await this.host()).getAttribute('disabled')\n return coerceBooleanProperty(await disabled)\n }\n\n /**\n * Returns the required state of the ng-select.\n *\n * @returns true if the ng-select is required, false if not\n */\n public async isRequired(): Promise<boolean> {\n const required = await (await this.host()).getAttribute('required')\n return required === undefined ? true : coerceBooleanProperty(required)\n }\n\n public async click(): Promise<void> {\n return (await this.getInputElement()).click()\n }\n\n /**\n * Returns the input element of the checkbox.\n *\n * @returns the input element of the checkbox\n */\n public async getInputElement() {\n return this.locatorFor('input')()\n }\n\n private async _getDropdown(): Promise<TheSeamNgSelectDropdownHarness | null> {\n const ariaControls = await this.getAriaControls()\n if (ariaControls) {\n return this._documentRootLocator.locatorForOptional(\n TheSeamNgSelectDropdownHarness.with({\n id: ariaControls,\n } satisfies TheSeamNgSelectDropdownHarnessFilters),\n )()\n }\n return null\n }\n}\n","import { ActiveToast, GlobalConfig, IndividualConfig, ToastContainerDirective } from 'ngx-toastr'\n\nexport class FakeToastrService {\n toastrConfig!: GlobalConfig\n currentlyActive = 0\n toasts: ActiveToast<any>[] = []\n overlayContainer!: ToastContainerDirective\n previousToastMessage: string | undefined\n\n /** show toast */\n show(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {},\n type = ''\n ) { }\n\n /** show successful toast */\n success(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /** show error toast */\n error(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /** show info toast */\n info(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /** show warning toast */\n warning(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /**\n * Remove all or a single toast by id\n */\n clear(toastId?: number) { }\n\n /**\n * Remove and destroy a single toast by id\n */\n remove(toastId: number) { }\n\n /**\n * Determines if toast message is already shown\n */\n findDuplicate(message: string, resetOnDuplicate: boolean, countDuplicates: boolean) { }\n\n}\n","// import { createMountableStoryComponent } from '@storybook/testing-angular'\nimport { render, RenderResult } from '@testing-library/angular'\n\n// NOTE: This is an experimental attempt at removing some of the boilerplate. If\n// this ends up being worth it, then I will add it to `@storybook/testing-angular`.\nexport async function renderStory<ComponentType = any>(story: any): Promise<RenderResult<ComponentType, ComponentType>> {\n // const { component, ngModule } = createMountableStoryComponent(\n // story({}, {} as any)\n // )\n // return await render(component, { imports: [ ngModule ] })\n return null as any\n}\n","import { tick } from '@angular/core/testing'\n\n/**\n * Helps advance tests to specific elapsed times.\n *\n * # When to use\n *\n * If a test needs to do something at 100 ticks, but expected values should\n * also be tested at multiple ticks before 100 ticks, then the previous tick\n * sum needs to be counted. If the elapsed can be easily counted by just\n * skimming the code you should just use `tick()`.\n *\n * The following example is simple enough that `tick()` is probably better, but\n * it shows how it is used.\n *\n * ## Example without\n *\n * ```ts\n * const thing = new Thing()\n * thing.dieAfterTicks(100)\n *\n * tick(25)\n * expect(thing.isAlive).toBe(true)\n *\n * tick(25)\n * expect(thing.isAlive).toBe(true)\n *\n * tick(25)\n * expect(thing.isAlive).toBe(true)\n *\n * tick(25)\n * expect(thing.isAlive).toBe(false)\n * ```\n *\n * ## Example with\n *\n * ```ts\n * const t = new TickHelper()\n * const thing = new Thing()\n * thing.dieAfterTicks(100)\n *\n * t.tickTo(25)\n * expect(thing.isAlive).toBe(true)\n *\n * t.tickTo(50)\n * expect(thing.isAlive).toBe(true)\n *\n * t.tickTo(75)\n * expect(thing.isAlive).toBe(true)\n *\n * t.tickTo(100)\n * expect(thing.isAlive).toBe(false)\n * ```\n */\nexport class TickHelper {\n\n private _startTime = Date.now()\n\n /**\n * Returns the number of ticks that have elapsed since this class was\n * initialized.\n */\n public get ticksElapsed() { return Date.now() - this._startTime }\n\n /**\n * Calls `tick()` for the remaining number of ticks to reach elapsed ticks.\n *\n * ```\n * const t = new TickHelper()\n * tick(3)\n * t.tickTo(10) // Equivalent to `tick(7)` in this case to reach 10 ticks.\n * ```\n */\n public tickTo(ticks: number) { tick(ticks - this.ticksElapsed) }\n\n}\n","\n/**\n * When using `fakeAsync` this can access the internal currentTickTime of the\n * fake zone's scheduler.\n *\n * NOTE: Do **NOT** rely on this in tests. It is accesses private properties\n * that could break or change at any time, which could cause it to not have the\n * same meaning and be inaccurate in a future version.\n *\n * NOTE: This is accessing private properties, so I don't recommend relying on\n * this in tests. I find it useful to sometimes set this on a global property\n * that I can observe in the debugger's watch variables.\n */\nexport function currentTickTime(documentWindow: any = window): number {\n return documentWindow.Zone.current._properties.FakeAsyncTestZoneSpec._scheduler._currentTickTime\n}\n","// eslint-disable-next-line import/no-named-default\nimport { default as expectPatched } from '@storybook/expect'\nimport { instrument } from '@storybook/instrumenter'\nimport * as mock from 'jest-mock'\n\nexport const { jest } = instrument({ jest: mock })\n\n// const expectJasmineFn = (window as any).expect\nconst expectJestFn = expectPatched\n// const isInJasmine = expectJasmineFn !== undefined && expectJasmineFn !== null\n// const expectFn = expectJasmineFn || exp\nconst isInJasmine = false\n\n// console.log('isInJasmine', isInJasmine)\n\nconst { expect } = instrument(\n // { expect: expectJasmineFn || expectJestFn },\n { expect: expectJestFn },\n // { intercept: (method, path) => path[0] !== 'expect' }\n { intercept: (method, path) => {\n // console.log('intercept', method, path)\n return path[0] !== 'expect'\n } }\n)\n\nfunction toBeFn(matcher: any): (value: any) => Promise<void> {\n // if (isInJasmine) {\n // // @ts-ignore\n // const m = matcher as jasmine.Matchers<any>\n // return async (value: any) => m.toBe(value) as any\n // } else {\n // const m = matcher as ReturnType<typeof expectJestFn>\n // return async (value: any) => m.toBe(value) as any\n // }\n const m = matcher as ReturnType<typeof expectJestFn>\n return async (value: any) => m.toBe(value) as any\n}\n\nexport function expectFn(value: any) {\n // const t = isInJasmine ? expectJasmineFn(value) : expect(value)\n const t = expect(value)\n return {\n toBe: toBeFn(t),\n toStrictEqual: t.toStrictEqual\n }\n}\n","import { ComponentHarness, ComponentHarnessConstructor, HarnessQuery } from '@angular/cdk/testing'\nimport { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'\nimport { ComponentFixture } from '@angular/core/testing'\n\nimport { StorybookHarnessEnvironment } from '@marklb/storybook-harness'\n\nexport interface GetHarnessOptions<TComponent = any> {\n canvasElement?: HTMLElement\n fixture?: ComponentFixture<TComponent>\n}\n\nexport async function getHarness<T extends ComponentHarness>(\n harnessType: HarnessQuery<T>,\n options: GetHarnessOptions\n): Promise<T> {\n if (options.fixture !== undefined) {\n if (isComponentHarnessConstructor(harnessType)) {\n return TestbedHarnessEnvironment.harnessForFixture(options.fixture, harnessType)\n }\n throw Error(`Unable to get harness. harnessType must be a ComponentHarness.`)\n }\n\n if (options.canvasElement !== undefined) {\n return (new StorybookHarnessEnvironment(options.canvasElement))\n .getHarness(harnessType)\n }\n\n throw Error(`Unable to get harness. fixture or canvasElement must be provided.`)\n}\n\nfunction isComponentHarnessConstructor<T extends ComponentHarness>(value: HarnessQuery<T>): value is ComponentHarnessConstructor<T> {\n return typeof value === 'function' && Object.prototype.hasOwnProperty.call(value, 'hostSelector')\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;AAQM,MAAO,4BAA6B,SAAQ,gBAAgB,CAAA;;IAIhE,OAAO,IAAI,CAAC,OAA4C,EAAA;AACtD,QAAA,OAAO,IAAI,gBAAgB,CAAC,4BAA4B,EAAE,OAAO,CAAC;aAC7D,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,EACpC,CAAC,OAAO,EAAE,KAAK,KAAK,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;KACvF;AAED;;;AAGG;IACU,QAAQ,GAAA;;YACnB,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAA;SAClC,CAAA,CAAA;AAAA,KAAA;;IAGK,UAAU,GAAA;;AACd,YAAA,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,CAAA;AAC7D,YAAA,OAAO,qBAAqB,CAAC,MAAM,QAAQ,CAAC,CAAA;SAC7C,CAAA,CAAA;AAAA,KAAA;IAEY,KAAK,GAAA;;YAChB,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAA;SACnC,CAAA,CAAA;AAAA,KAAA;;AAzBM,4BAAY,CAAA,YAAA,GAAG,YAAY;;ACE9B,MAAO,8BAA+B,SAAQ,gBAAgB,CAAA;;;;;;IASlE,OAAO,IAAI,CAAC,OAA8C,EAAA;AACxD,QAAA,OAAO,IAAI,gBAAgB,CAAC,8BAA8B,EAAE,OAAO,CAAC;aAC/D,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,EAC7B,CAAC,OAAO,EAAE,EAAE,KAAK,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;KAC9E;IAEY,KAAK,GAAA;;AAChB,YAAA,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;SAC9C,CAAA,CAAA;AAAA,KAAA;AAED;;;AAGG;AACG,IAAA,UAAU,CACd,OAA+D,EAAA;;AAE/D,YAAA,OAAO,IAAI,CAAC,aAAa,CACvB,4BAA4B,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAC3B,OAAO,IAAI,EAAE,EAC6B,CAAA,CACjD,EAAE,CAAA;SACJ,CAAA,CAAA;AAAA,KAAA;AAED;;;;AAIG;AACG,IAAA,WAAW,CACf,YAAmE,EAAA;;YAEnE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AACnD,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACnB,MAAM,KAAK,CAAC,CAAA,+BAAA,EAAkC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAE,CAAA,CAAC,CAAA;AAC9E,aAAA;AAED,YAAA,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;SAC1B,CAAA,CAAA;AAAA,KAAA;;AA9CM,8BAAY,CAAA,YAAA,GAAG,mBAAmB;;ACArC,MAAO,sBAAuB,SAAQ,gBAAgB,CAAA;AAA5D,IAAA,WAAA,GAAA;;AACU,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAA;QAI/C,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAA;QAC7C,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAA;KAkH1E;;IA/GC,OAAO,IAAI,CAAC,OAAsC,EAAA;AAChD,QAAA,OAAO,IAAI,gBAAgB,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAA;;;KAG7D;IAEY,KAAK,GAAA;;AAChB,YAAA,OAAO,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;SACzD,CAAA,CAAA;AAAA,KAAA;IAEY,eAAe,GAAA;;AAC1B,YAAA,OAAO,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,YAAY,CAAC,eAAe,CAAC,CAAA;SACpE,CAAA,CAAA;AAAA,KAAA;IAEY,OAAO,GAAA;;AAClB,YAAA,OAAO,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;SAC3D,CAAA,CAAA;AAAA,KAAA;AAED;;;AAGG;IACU,QAAQ,GAAA;;AACnB,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;YAC3C,IAAI,UAAU,KAAK,IAAI,EAAE;AACvB,gBAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;gBACjC,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,oBAAA,OAAO,IAAI,CAAA;AACZ,iBAAA;AAED,gBAAA,OAAO,KAAK,CAAC,IAAI,EAAE,CAAA;AACpB,aAAA;AAED,YAAA,OAAO,UAAU,CAAC,IAAI,EAAE,CAAA;SACzB,CAAA,CAAA;AAAA,KAAA;AAED;;;;;;AAMG;AACG,IAAA,UAAU,CACd,OAA+D,EAAA;;AAE/D,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;YAC1C,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,gBAAA,OAAO,EAAE,CAAA;AACV,aAAA;AAED,YAAA,OAAO,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;SACpC,CAAA,CAAA;AAAA,KAAA;AAED;;;;AAIG;AACG,IAAA,WAAW,CACf,YAAmE,EAAA;;AAEnE,YAAA,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;AAClB,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;YAC1C,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,gBAAA,MAAM,KAAK,CAAC,CAA0B,wBAAA,CAAA,CAAC,CAAA;AACxC,aAAA;AAED,YAAA,OAAO,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;SAC1C,CAAA,CAAA;AAAA,KAAA;;IAGK,UAAU,GAAA;;AACd,YAAA,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,CAAA;AAC7D,YAAA,OAAO,qBAAqB,CAAC,MAAM,QAAQ,CAAC,CAAA;SAC7C,CAAA,CAAA;AAAA,KAAA;AAED;;;;AAIG;IACU,UAAU,GAAA;;AACrB,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,CAAA;AACnE,YAAA,OAAO,QAAQ,KAAK,SAAS,GAAG,IAAI,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;SACvE,CAAA,CAAA;AAAA,KAAA;IAEY,KAAK,GAAA;;YAChB,OAAO,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,CAAA;SAC9C,CAAA,CAAA;AAAA,KAAA;AAED;;;;AAIG;IACU,eAAe,GAAA;;AAC1B,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAA;SAClC,CAAA,CAAA;AAAA,KAAA;IAEa,YAAY,GAAA;;AACxB,YAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;AACjD,YAAA,IAAI,YAAY,EAAE;gBAChB,OAAO,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CACjD,8BAA8B,CAAC,IAAI,CAAC;AAClC,oBAAA,EAAE,EAAE,YAAY;iBAC+B,CAAC,CACnD,EAAE,CAAA;AACJ,aAAA;AACD,YAAA,OAAO,IAAI,CAAA;SACZ,CAAA,CAAA;AAAA,KAAA;;AApHM,sBAAY,CAAA,YAAA,GAAG,WAAW;;MCbtB,iBAAiB,CAAA;AAA9B,IAAA,WAAA,GAAA;AAEE,QAAA,IAAe,CAAA,eAAA,GAAG,CAAC,CAAA;AACnB,QAAA,IAAM,CAAA,MAAA,GAAuB,EAAE,CAAA;KAuDhC;;AAlDC,IAAA,IAAI,CACF,OAAgB,EAChB,KAAc,EACd,QAAA,GAAsC,EAAE,EACxC,IAAI,GAAG,EAAE,KACN;;IAGL,OAAO,CACL,OAAgB,EAChB,KAAc,EACd,QAAsC,GAAA,EAAE,EAAA,GACrC;;IAGL,KAAK,CACH,OAAgB,EAChB,KAAc,EACd,QAAsC,GAAA,EAAE,EAAA,GACrC;;IAGL,IAAI,CACF,OAAgB,EAChB,KAAc,EACd,QAAsC,GAAA,EAAE,EAAA,GACrC;;IAGL,OAAO,CACL,OAAgB,EAChB,KAAc,EACd,QAAsC,GAAA,EAAE,EAAA,GACrC;AAEL;;AAEG;IACH,KAAK,CAAC,OAAgB,EAAA,GAAK;AAE3B;;AAEG;IACH,MAAM,CAAC,OAAe,EAAA,GAAK;AAE3B;;AAEG;AACH,IAAA,aAAa,CAAC,OAAe,EAAE,gBAAyB,EAAE,eAAwB,KAAK;AAExF;;ACzDD;AACA;AACM,SAAgB,WAAW,CAAsB,KAAU,EAAA;;;;;;AAK/D,QAAA,OAAO,IAAW,CAAA;KACnB,CAAA,CAAA;AAAA;;ACTD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDG;MACU,UAAU,CAAA;AAAvB,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;KAmBhC;AAjBC;;;AAGG;AACH,IAAA,IAAW,YAAY,GAAA,EAAK,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAA,EAAE;AAEjE;;;;;;;;AAQG;AACI,IAAA,MAAM,CAAC,KAAa,EAAI,EAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA,EAAE;AAEjE;;AC1ED;;;;;;;;;;;AAWG;AACa,SAAA,eAAe,CAAC,cAAA,GAAsB,MAAM,EAAA;AAC1D,IAAA,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,UAAU,CAAC,gBAAgB,CAAA;AAClG;;ACVO,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAC;AAElD;AACA,MAAM,YAAY,GAAG,aAAa,CAAA;AAClC;AACA;AACA,MAAM,WAAW,GAAG,KAAK,CAAA;AAEzB;AAEA,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU;AAC3B;AACA,EAAE,MAAM,EAAE,YAAY,EAAE;AACxB;AACA,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,IAAI,KAAI;;AAE5B,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAA;KAC5B,EAAE,CACJ,CAAA;AAED,SAAS,MAAM,CAAC,OAAY,EAAA;;;;;;;;;IAS1B,MAAM,CAAC,GAAG,OAA0C,CAAA;AACpD,IAAA,OAAO,CAAO,KAAU,oDAAK,OAAA,CAAC,CAAC,IAAI,CAAC,KAAK,CAAQ,CAAA,GAAA,CAAA;AACnD,CAAC;AAEK,SAAU,QAAQ,CAAC,KAAU,EAAA;;AAEjC,IAAA,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACvB,OAAO;AACL,QAAA,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACf,aAAa,EAAE,CAAC,CAAC,aAAa;KAC/B,CAAA;AACH;;AClCsB,SAAA,UAAU,CAC9B,WAA4B,EAC5B,OAA0B,EAAA;;AAE1B,QAAA,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,6BAA6B,CAAC,WAAW,CAAC,EAAE;gBAC9C,OAAO,yBAAyB,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;AACjF,aAAA;AACD,YAAA,MAAM,KAAK,CAAC,CAAgE,8DAAA,CAAA,CAAC,CAAA;AAC9E,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE;YACvC,OAAO,CAAC,IAAI,2BAA2B,CAAC,OAAO,CAAC,aAAa,CAAC;iBAC3D,UAAU,CAAC,WAAW,CAAC,CAAA;AAC3B,SAAA;AAED,QAAA,MAAM,KAAK,CAAC,CAAmE,iEAAA,CAAA,CAAC,CAAA;KACjF,CAAA,CAAA;AAAA,CAAA;AAED,SAAS,6BAA6B,CAA6B,KAAsB,EAAA;AACvF,IAAA,OAAO,OAAO,KAAK,KAAK,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;AACnG;;AChCA;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theseam-ui-common-tiled-select.mjs","sources":["../../../projects/ui-common/tiled-select/testing/tiled-select-tile-harness.ts","../../../projects/ui-common/tiled-select/testing/tiled-select-harness.ts","../../../projects/ui-common/tiled-select/directives/tiled-select-tile-overlay.directive.ts","../../../projects/ui-common/tiled-select/directives/tiled-select-tile-label-tpl.directive.ts","../../../projects/ui-common/tiled-select/directives/tiled-select-tile-icon-tpl.directive.ts","../../../projects/ui-common/tiled-select/components/tiled-select-tile-icon/tiled-select-tile-icon.component.ts","../../../projects/ui-common/tiled-select/components/tiled-select-tile-icon/tiled-select-tile-icon.component.html","../../../projects/ui-common/tiled-select/components/tiled-select-tile/tiled-select-tile.component.ts","../../../projects/ui-common/tiled-select/components/tiled-select-tile/tiled-select-tile.component.html","../../../projects/ui-common/tiled-select/components/tiled-select/tiled-select.component.ts","../../../projects/ui-common/tiled-select/components/tiled-select/tiled-select.component.html","../../../projects/ui-common/tiled-select/tiled-select.module.ts","../../../projects/ui-common/tiled-select/theseam-ui-common-tiled-select.ts"],"sourcesContent":["import { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing'\n\nimport { TiledSelectItem } from '../tiled-select.models'\n\ninterface TheSeamTiledSelectTileHarnessFilters extends BaseHarnessFilters {\n /** Filters based on the tile index of the tile. */\n tileIndex?: number | string | RegExp\n\n /** Filters based on the tile name of the tile. */\n tileName?: string | RegExp\n}\n\nexport class TheSeamTiledSelectTileHarness extends ComponentHarness {\n static hostSelector = 'seam-tiled-select-tile'\n\n /** Creates a `HarnessPredicate` used to locate a particular `MyMenuHarness`. */\n static with(options: TheSeamTiledSelectTileHarnessFilters): HarnessPredicate<TheSeamTiledSelectTileHarness> {\n return new HarnessPredicate(TheSeamTiledSelectTileHarness, options)\n .addOption('tile index', options.tileIndex,\n (harness, index) => HarnessPredicate.stringMatches(harness.getTileIndex(), `${index}`))\n .addOption('tile name', options.tileName,\n (harness, name) => HarnessPredicate.stringMatches(harness.getTileName(), name))\n }\n\n public async getTileIndex() {\n return (await this.host()).getAttribute('data-tile-index')\n }\n\n public async getTileName(): Promise<string | null> {\n return (await this.host()).getAttribute('data-tile-name')\n }\n\n public async getValue(): Promise<any> {\n return (await this.host()).getProperty('value')\n }\n\n public async getButtonElement() {\n return this.locatorFor('button')()\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing'\n\nimport { TheSeamTiledSelectTileHarness } from './tiled-select-tile-harness'\n\nexport class TheSeamTiledSelectHarness extends ComponentHarness {\n static hostSelector = 'seam-tiled-select'\n\n public async getTiles() {\n return this.locatorForAll(TheSeamTiledSelectTileHarness)\n }\n\n public getTileAtIndex(index: number) {\n const getTileAtIndex = this.locatorFor(TheSeamTiledSelectTileHarness.with({ tileIndex: index }))\n return getTileAtIndex()\n // return this.locatorFor(TheSeamTiledSelectTileHarness.with({ tileIndex: index }))\n }\n\n public async getTileByName(name: string) {\n const getTileByName = this.locatorFor(TheSeamTiledSelectTileHarness.with({ tileName: name }))\n return getTileByName()\n }\n\n public async getValue() {\n return (await this.host()).getProperty('value')\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core'\n\nimport { ITiledSelectItem } from '../tiled-select.models'\n\n@Directive({\n selector: '[seamTiledSelectTileOverlay]',\n exportAs: 'seamTiledSelectTileOverlay'\n})\nexport class TiledSelectTileOverlayDirective {\n\n @Input() record: ITiledSelectItem | undefined | null\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamTiledSelectTileLabelTpl]'\n})\nexport class TiledSelectTileLabelTplDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamTiledSelectTileIconTpl]',\n exportAs: 'seamTiledSelectTileIconTpl'\n})\nexport class TiledSelectTileIconTplDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { Component, ContentChild, HostBinding, Input } from '@angular/core'\n\nimport { IconProp } from '@fortawesome/fontawesome-svg-core'\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { SeamIcon } from '@theseam/ui-common/icon'\n\nimport { TiledSelectTileIconTplDirective } from '../../directives/tiled-select-tile-icon-tpl.directive'\nimport { TiledSelectLayout } from '../../tiled-select.models'\n\nconst needToFix = /(MSIE 10)|(Trident.*rv:11\\.0)|( Edge\\/[\\d.]+$)/.test(navigator.userAgent)\n\n@Component({\n selector: 'seam-tiled-select-tile-icon',\n templateUrl: './tiled-select-tile-icon.component.html',\n styleUrls: ['./tiled-select-tile-icon.component.scss']\n})\nexport class TiledSelectTileIconComponent {\n static ngAcceptInputType_grayscaleOnDisable: BooleanInput\n static ngAcceptInputType_disabled: BooleanInput\n\n needToFix = needToFix\n\n @HostBinding('class.grid') get _cssClassGrid() { return this.layout === 'grid' }\n @HostBinding('class.list') get _cssClassList() { return this.layout === 'list' }\n\n @Input()\n set layout(value: TiledSelectLayout) { this._layout = value || 'grid' }\n get layout(): TiledSelectLayout { return this._layout }\n private _layout: TiledSelectLayout = 'grid'\n\n @Input() @InputBoolean() grayscaleOnDisable = false\n @Input() @InputBoolean() disabled = false\n\n @Input() iconClass: string | undefined | null\n\n @Input()\n get icon(): SeamIcon | undefined | null { return this._iconUrl || this._iconObj }\n set icon(value: SeamIcon | undefined | null) {\n if (typeof value === 'string') {\n this._iconUrl = value\n this._iconObj = undefined\n } else {\n this._iconUrl = undefined\n this._iconObj = value\n }\n }\n\n public _iconUrl: string | undefined | null\n public _iconObj: IconProp | undefined | null\n\n @ContentChild(TiledSelectTileIconTplDirective, { static: true }) iconTpl?: TiledSelectTileIconTplDirective\n\n}\n","<ng-container *ngIf=\"iconTpl; else noIconTpl\">\n <ng-template\n [ngTemplateOutlet]=\"iconTpl.template\"\n [ngTemplateOutletContext]=\"{ $implicit: icon, icon: icon }\">\n </ng-template>\n</ng-container>\n<ng-template #noIconTpl>\n\n <fa-icon *ngIf=\"_iconObj\"\n class=\"tiled-select-tile-icon--fa {{ iconClass }}\"\n [icon]=\"_iconObj\"></fa-icon>\n\n <ng-container *ngIf=\"_iconUrl\">\n <!-- Partial fix for IE greyscale -->\n <ng-container *ngIf=\"needToFix\">\n <ng-container *ngIf=\"disabled && grayscaleOnDisable\">\n <span class=\"grayscale-fix\" style=\"display: inline-block; position: relative;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" id=\"svgroot\" style=\"position: absolute; left: 0; right: 0;\" viewBox=\"0 0 48 48\" width=\"100%\" height=\"100%\">\n <defs><filter id=\"gray\"><feColorMatrix type=\"matrix\" values=\"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\" /></filter></defs>\n <image filter=\"url("#gray")\" preserveAspectRatio=\"none meet\" x=\"0\" y=\"0\" width=\"48\" height=\"48\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n [attr.xlink:href]=\"_iconUrl\" />\n </svg>\n <img class=\"tiled-select-tile-panel--icon-img {{ iconClass }}\" style=\"display: block; visibility: hidden;\" alt=\"Icon\" [src]=\"_iconUrl\">\n </span>\n </ng-container>\n <ng-container *ngIf=\"!disabled\">\n <img class=\"tiled-select-tile-panel--icon-img {{ iconClass }}\" [src]=\"_iconUrl\" alt=\"Icon\">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!needToFix\">\n <img class=\"tiled-select-tile-panel--icon-img {{ iconClass }}\" [src]=\"_iconUrl\" alt=\"Icon\">\n </ng-container>\n </ng-container>\n\n</ng-template>\n","import { animate, animation, keyframes, style, transition, trigger, useAnimation } from '@angular/animations'\nimport { BooleanInput } from '@angular/cdk/coercion'\nimport { ChangeDetectorRef, Component, ContentChild, EventEmitter, HostBinding, Input, Output } from '@angular/core'\n\nimport { faCheckCircle } from '@fortawesome/free-regular-svg-icons'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { SeamIcon } from '@theseam/ui-common/icon'\n\nimport { TiledSelectTileLabelTplDirective } from '../../directives/tiled-select-tile-label-tpl.directive'\nimport { TiledSelectTileOverlayDirective } from '../../directives/tiled-select-tile-overlay.directive'\nimport { TiledSelectLayout } from '../../tiled-select.models'\n\nexport const tilePulse = animation(\n animate(\n '{{ timing }}s {{ delay }}s',\n keyframes([\n style({ transform: 'scale3d(1, 1, 1)' }),\n style({ transform: 'scale3d({{ scale }}, {{ scale }}, {{ scale }})' }),\n style({ transform: 'scale3d(1, 1, 1)' }),\n ])\n ),\n { params: { scale: 1.05, timing: 0.75, delay: 0 } }\n)\n\nexport const tileScaleUp = animation(\n animate(\n '{{ timing }}s {{ delay }}s',\n keyframes([\n style({ transform: 'scale3d({{ scale }}, {{ scale }}, {{ scale }})' }),\n ])\n ),\n { params: { scale: 1.05, timing: 0.75, delay: 0 } }\n)\n\nexport const tileScaleDown = animation(\n animate(\n '{{ timing }}s {{ delay }}s',\n keyframes([\n style({ transform: 'scale3d(1, 1, 1)' }),\n ])\n ),\n { params: { scale: 1.05, timing: 0.75, delay: 0 } }\n)\n\n@Component({\n selector: 'seam-tiled-select-tile',\n templateUrl: './tiled-select-tile.component.html',\n styleUrls: ['./tiled-select-tile.component.scss'],\n animations: [\n trigger('pulse', [\n transition('false => true', [\n useAnimation(tilePulse)\n // useAnimation(tileScaleUp)\n ]),\n // transition('true => false', [\n // useAnimation(tileScaleDown)\n // ])\n ]),\n // trigger('openClose', [\n // state('true', style({ height: '*' })),\n // state('false', style({ height: '0px' })),\n // transition('false <=> true', animate(500))\n // ])\n ],\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TiledSelectTileComponent {\n static ngAcceptInputType_disabled: BooleanInput\n static ngAcceptInputType_selected: BooleanInput\n static ngAcceptInputType_tileBackdrop: BooleanInput\n static ngAcceptInputType_selectable: BooleanInput\n static ngAcceptInputType_grayscaleOnDisable: BooleanInput\n static ngAcceptInputType_showLabel: BooleanInput\n static ngAcceptInputType_showSelectedIcon: BooleanInput\n\n faCheckCircle = faCheckCircle\n\n @HostBinding('@pulse') pulseAnimationState = true\n @HostBinding('attr.data-tile-name') get _tileNameAttr() { return this.name }\n\n @Input() layout: TiledSelectLayout = 'grid'\n\n @Input() name: string | undefined | null\n @Input() label: string | undefined | null\n @Input() icon: SeamIcon | undefined | null\n @Input() @InputBoolean() disabled = false\n @Input() @InputBoolean() selected = false\n\n @Input() @InputBoolean() tileBackdrop = false\n @Input() @InputBoolean() selectable = false\n @Input() @InputBoolean() grayscaleOnDisable = true\n @Input() @InputBoolean() showLabel = true\n @Input() @InputBoolean() showSelectedIcon = true\n\n @Input() iconClass: string | undefined | null\n\n @Input() overlayTpl: TiledSelectTileOverlayDirective | undefined | null\n\n @Output() activated = new EventEmitter<any>()\n\n @ContentChild(TiledSelectTileLabelTplDirective, { static: true }) labelTpl?: TiledSelectTileLabelTplDirective\n\n pulsing = false\n pulsingTimeout: number | undefined\n\n constructor(\n private cdr: ChangeDetectorRef\n ) { }\n\n onTileClick(event: any) {\n if (!this.selectable) { return }\n this.activated.emit(event)\n\n // this.pulsing = true\n // setTimeout(() => {\n // this.pulsing = false\n // }, 750)\n }\n\n mDown() {\n if (this.pulsingTimeout) {\n clearTimeout(this.pulsingTimeout)\n }\n\n if (!this.pulsing) {\n this.pulsing = true\n // this.cdr.detectChanges()\n }\n\n // console.log('start')\n this.pulsingTimeout = window.setTimeout(() => {\n this.pulsing = false\n // this.cdr.detectChanges()\n this.pulsingTimeout = undefined\n }, 750)\n }\n\n}\n","<button\n class=\"btn tiled-select-tile-panel\"\n [disabled]=\"disabled\"\n [class.grid]=\"layout === 'grid'\"\n [class.list]=\"layout === 'list'\"\n [class.selected]=\"selectable && selected\"\n [class.selectable]=\"selectable\"\n [class.no-grayscale]=\"!grayscaleOnDisable\"\n (click)=\"onTileClick($event)\"\n [@pulse]=\"pulsing ? true : false\"\n [attr.data-category]=\"name\"\n [attr.title]=\"showLabel ? '' : label\"\n type=\"button\">\n <div class=\"tiled-select-tile-panel--content\">\n <seam-tiled-select-tile-icon\n class=\"tiled-select-tile-panel--icon\"\n [class.invisible]=\"!icon\"\n [icon]=\"icon\"\n [iconClass]=\"iconClass\"\n [layout]=\"layout\"\n [grayscaleOnDisable]=\"grayscaleOnDisable\"\n [disabled]=\"disabled\">\n </seam-tiled-select-tile-icon>\n <div class=\"tiled-select-tile-panel--label-container\" *ngIf=\"showLabel\">\n <span *ngIf=\"!labelTpl\" class=\"tiled-select-tile-panel--label\">{{ label }}</span>\n <ng-template *ngIf=\"labelTpl\"\n [ngTemplateOutlet]=\"labelTpl.template\"\n [ngTemplateOutletContext]=\"{ $implicit: label, label: label }\">\n </ng-template>\n </div>\n <div *ngIf=\"tileBackdrop\" class=\"selected-backdrop\"\n [class.bg-success]=\"selected\"></div>\n <fa-icon\n *ngIf=\"selected && showSelectedIcon\"\n class=\"tiled-select-tile-panel--selected text-success\"\n [icon]=\"faCheckCircle\"\n size=\"3x\">\n </fa-icon>\n </div>\n <div class=\"tiled-select-tile-panel--overlay\" *ngIf=\"overlayTpl\">\n <ng-template [ngTemplateOutlet]=\"overlayTpl.template\"></ng-template>\n </div>\n</button>\n","import { animate, animation, query, stagger, style, transition, trigger, useAnimation } from '@angular/animations'\nimport { BooleanInput, coerceArray } from '@angular/cdk/coercion'\nimport { Platform } from '@angular/cdk/platform'\nimport { ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, forwardRef, Input, Output, QueryList, Renderer2 } from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { TiledSelectTileOverlayDirective } from './../../directives/tiled-select-tile-overlay.directive'\n\nimport { ITiledSelectItem, TiledSelectLayout } from '../../tiled-select.models'\n\nexport const slideEnterAnimation = animation([\n style({ opacity: 0, transform: 'translateX(-15px)' }),\n stagger(100, [\n animate('0.5s', style({ opacity: 1, transform: 'translateX(0)' }))\n ])\n])\n\nexport const TILED_SELECT_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TheSeamTiledSelectComponent),\n multi: true,\n}\n\n@Component({\n selector: 'seam-tiled-select',\n templateUrl: './tiled-select.component.html',\n styleUrls: ['./tiled-select.component.scss'],\n providers: [ TILED_SELECT_VALUE_ACCESSOR ],\n host: {\n '[attr.data-testid]': '\"tiled-select\"'\n },\n animations: [\n trigger('tiles', [\n transition('* => *', [\n query(':enter', useAnimation(slideEnterAnimation), { optional: true })\n ])\n ])\n ],\n})\nexport class TheSeamTiledSelectComponent implements ControlValueAccessor {\n static ngAcceptInputType_val: BooleanInput\n static ngAcceptInputType_disabled: BooleanInput\n static ngAcceptInputType_multiple: BooleanInput\n static ngAcceptInputType_selectionToggleable: BooleanInput\n static ngAcceptInputType_tileBackdrop: BooleanInput\n static ngAcceptInputType_showSelectedIcon: BooleanInput\n static ngAcceptInputType_animationsDisabled: BooleanInput\n\n @Input() layout: TiledSelectLayout = 'grid'\n @Input()\n get tiles() { return this._tiles }\n set tiles(value: ITiledSelectItem[]) {\n const _value = [ ...(value || []) ]\n for (const v of _value) {\n if (v.value === undefined) {\n if (v.name === undefined) {\n throw new Error('If value is undefined then name must be defined.')\n }\n v.value = v.name\n }\n }\n\n const prev = this._tiles\n if (prev.length !== _value.length) {\n this.tilesAnimationState = !this.tilesAnimationState\n } else {\n for (const t of _value) {\n if (!prev.find(p => p.name === t.name)) {\n this.tilesAnimationState = !this.tilesAnimationState\n break\n }\n }\n }\n\n this._tiles = _value\n }\n private _tiles: ITiledSelectItem[] = []\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('value') val: string | string[] | undefined\n\n @Input() @InputBoolean() disabled = false\n @Input() @InputBoolean() multiple = false\n @Input() @InputBoolean() selectionToggleable = true\n @Input() @InputBoolean() tileBackdrop = false\n @Input() @InputBoolean() showSelectedIcon = true\n @Input() @InputBoolean() animationsDisabled: boolean = this._platform.IOS\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly change = new EventEmitter<string | string[] | undefined>()\n\n tilesAnimationState = false\n\n onChange: any\n onTouched: any\n\n @ContentChildren(TiledSelectTileOverlayDirective)\n public overlayTpls?: QueryList<TiledSelectTileOverlayDirective>\n\n constructor(\n private readonly _platform: Platform,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _renderer: Renderer2,\n private readonly _elementRef: ElementRef\n ) { }\n\n get value(): string | string[] | undefined {\n return this.val\n }\n\n set value(value: string | string[] | undefined) {\n this.val = (this.multiple) ? [ ...(value as string[] || []) ] : value || ''\n\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', this.val)\n\n if (this.onChange) {\n this.onChange(this.val)\n this.change.emit(this.val)\n this._cdr.markForCheck()\n }\n if (this.onTouched) { this.onTouched() }\n }\n\n writeValue(value: any): void {\n this.value = value\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled\n }\n\n onTileSelected(event: MouseEvent, tile: ITiledSelectItem) {\n this.toggleTileSelected(tile)\n }\n\n public isSelected(tile: ITiledSelectItem) {\n if (!this.multiple) {\n if (this.value === tile.value) {\n return true\n }\n } else {\n if (this.value) {\n for (const v of this.value) {\n if (v === tile.value) {\n return true\n }\n }\n }\n }\n\n return false\n }\n\n public toggleTileSelected(tile: ITiledSelectItem): void {\n if (!this.selectionToggleable && this.isSelected(tile)) {\n return\n }\n\n if (this.isSelected(tile)) {\n this.unselectTile(tile)\n } else {\n this.selectTile(tile)\n }\n }\n\n public selectTile(tile: ITiledSelectItem): void {\n if (this.multiple) {\n if (!this.isSelected(tile)) {\n const value: string[] = this.value as string[] || []\n this.value = [ ...coerceArray(value), tile.value ]\n }\n } else {\n this.value = tile.value\n }\n }\n\n public unselectTile(tile: ITiledSelectItem): void {\n if (this.multiple) {\n const value: string[] = this.value as string[] || []\n this.value = value.filter(v => v !== tile.value)\n } else {\n this.value = undefined\n }\n }\n\n public getSelectedTiles(): ITiledSelectItem[] {\n return this.tiles.filter(t => this.isSelected(t))\n }\n\n getOverlayTpl(tile: ITiledSelectItem): TiledSelectTileOverlayDirective | undefined {\n // console.log('overlayTpls', this.overlayTpls)\n return (this.overlayTpls || []).find(t => t.record?.name === tile.name)\n }\n\n}\n\n/** @deprecated Use `TheSeamTiledSelectComponent`. */\nexport type TiledSelectComponent = TheSeamTiledSelectComponent\n","<div class=\"tiled-select--container\"\n [class.grid]=\"layout === 'grid'\"\n [class.list]=\"layout === 'list'\"\n [@tiles]=\"tilesAnimationState\"\n [@.disabled]=\"animationsDisabled\">\n <ng-container *ngFor=\"let tile of tiles; let index = index\">\n <div class=\"tile-wrapper\" [ngClass]=\"tile.customClass || ''\">\n <seam-tiled-select-tile\n class=\"tiled-select-tile\"\n [ngClass]=\"tile.customClass || ''\"\n [name]=\"tile.name\"\n [label]=\"tile.label\"\n [icon]=\"tile.icon\"\n [disabled]=\"disabled || tile.disabled\"\n [attr.hidden]=\"tile.hidden\"\n [layout]=\"layout\"\n [selected]=\"isSelected(tile)\"\n [selectable]=\"true\"\n [tileBackdrop]=\"tileBackdrop\"\n [showSelectedIcon]=\"showSelectedIcon\"\n [overlayTpl]=\"getOverlayTpl(tile)\"\n (activated)=\"onTileSelected($event, tile)\"\n [attr.data-tile-index]=\"index\"\n [attr.data-testid]=\"tile.name\">\n </seam-tiled-select-tile>\n </div>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome'\n\nimport { TiledSelectTileIconComponent } from './components/tiled-select-tile-icon/tiled-select-tile-icon.component'\nimport { TiledSelectTileComponent } from './components/tiled-select-tile/tiled-select-tile.component'\nimport { TheSeamTiledSelectComponent } from './components/tiled-select/tiled-select.component'\nimport { TiledSelectTileIconTplDirective } from './directives/tiled-select-tile-icon-tpl.directive'\nimport { TiledSelectTileLabelTplDirective } from './directives/tiled-select-tile-label-tpl.directive'\nimport { TiledSelectTileOverlayDirective } from './directives/tiled-select-tile-overlay.directive'\n\n@NgModule({\n imports: [\n CommonModule,\n FontAwesomeModule\n ],\n declarations: [\n TheSeamTiledSelectComponent,\n TiledSelectTileComponent,\n TiledSelectTileOverlayDirective,\n TiledSelectTileIconComponent,\n TiledSelectTileIconTplDirective,\n TiledSelectTileLabelTplDirective\n ],\n exports: [\n TheSeamTiledSelectComponent,\n TiledSelectTileComponent,\n TiledSelectTileOverlayDirective,\n TiledSelectTileIconTplDirective,\n TiledSelectTileLabelTplDirective\n ]\n})\nexport class TheSeamTiledSelectModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3.TiledSelectTileIconComponent","i1","i2","i3.TiledSelectTileComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"theseam-ui-common-tiled-select.mjs","sources":["../../../projects/ui-common/tiled-select/testing/tiled-select-tile-harness.ts","../../../projects/ui-common/tiled-select/testing/tiled-select-harness.ts","../../../projects/ui-common/tiled-select/directives/tiled-select-tile-overlay.directive.ts","../../../projects/ui-common/tiled-select/directives/tiled-select-tile-label-tpl.directive.ts","../../../projects/ui-common/tiled-select/directives/tiled-select-tile-icon-tpl.directive.ts","../../../projects/ui-common/tiled-select/components/tiled-select-tile-icon/tiled-select-tile-icon.component.ts","../../../projects/ui-common/tiled-select/components/tiled-select-tile-icon/tiled-select-tile-icon.component.html","../../../projects/ui-common/tiled-select/components/tiled-select-tile/tiled-select-tile.component.ts","../../../projects/ui-common/tiled-select/components/tiled-select-tile/tiled-select-tile.component.html","../../../projects/ui-common/tiled-select/components/tiled-select/tiled-select.component.ts","../../../projects/ui-common/tiled-select/components/tiled-select/tiled-select.component.html","../../../projects/ui-common/tiled-select/tiled-select.module.ts","../../../projects/ui-common/tiled-select/theseam-ui-common-tiled-select.ts"],"sourcesContent":["import { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing'\n\nimport { TiledSelectItem } from '../tiled-select.models'\n\ninterface TheSeamTiledSelectTileHarnessFilters extends BaseHarnessFilters {\n /** Filters based on the tile index of the tile. */\n tileIndex?: number | string | RegExp\n\n /** Filters based on the tile name of the tile. */\n tileName?: string | RegExp\n}\n\nexport class TheSeamTiledSelectTileHarness extends ComponentHarness {\n static hostSelector = 'seam-tiled-select-tile'\n\n /** Creates a `HarnessPredicate` used to locate a particular `MyMenuHarness`. */\n static with(options: TheSeamTiledSelectTileHarnessFilters): HarnessPredicate<TheSeamTiledSelectTileHarness> {\n return new HarnessPredicate(TheSeamTiledSelectTileHarness, options)\n .addOption('tile index', options.tileIndex,\n (harness, index) => HarnessPredicate.stringMatches(harness.getTileIndex(), `${index}`))\n .addOption('tile name', options.tileName,\n (harness, name) => HarnessPredicate.stringMatches(harness.getTileName(), name))\n }\n\n public async getTileIndex() {\n return (await this.host()).getAttribute('data-tile-index')\n }\n\n public async getTileName(): Promise<string | null> {\n return (await this.host()).getAttribute('data-tile-name')\n }\n\n public async getValue(): Promise<any> {\n return (await this.host()).getProperty('value')\n }\n\n public async getButtonElement() {\n return this.locatorFor('button')()\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing'\n\nimport { TheSeamTiledSelectTileHarness } from './tiled-select-tile-harness'\n\nexport class TheSeamTiledSelectHarness extends ComponentHarness {\n static hostSelector = 'seam-tiled-select'\n\n public async getTiles() {\n return this.locatorForAll(TheSeamTiledSelectTileHarness)\n }\n\n public getTileAtIndex(index: number) {\n const getTileAtIndex = this.locatorFor(TheSeamTiledSelectTileHarness.with({ tileIndex: index }))\n return getTileAtIndex()\n // return this.locatorFor(TheSeamTiledSelectTileHarness.with({ tileIndex: index }))\n }\n\n public async getTileByName(name: string) {\n const getTileByName = this.locatorFor(TheSeamTiledSelectTileHarness.with({ tileName: name }))\n return getTileByName()\n }\n\n public async getValue() {\n return (await this.host()).getProperty('value')\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core'\n\nimport { ITiledSelectItem } from '../tiled-select.models'\n\n@Directive({\n selector: '[seamTiledSelectTileOverlay]',\n exportAs: 'seamTiledSelectTileOverlay'\n})\nexport class TiledSelectTileOverlayDirective {\n\n @Input() record: ITiledSelectItem | undefined | null\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamTiledSelectTileLabelTpl]'\n})\nexport class TiledSelectTileLabelTplDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamTiledSelectTileIconTpl]',\n exportAs: 'seamTiledSelectTileIconTpl'\n})\nexport class TiledSelectTileIconTplDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { Component, ContentChild, HostBinding, Input } from '@angular/core'\n\nimport { IconProp } from '@fortawesome/fontawesome-svg-core'\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { SeamIcon } from '@theseam/ui-common/icon'\n\nimport { TiledSelectTileIconTplDirective } from '../../directives/tiled-select-tile-icon-tpl.directive'\nimport { TiledSelectLayout } from '../../tiled-select.models'\n\nconst needToFix = /(MSIE 10)|(Trident.*rv:11\\.0)|( Edge\\/[\\d.]+$)/.test(navigator.userAgent)\n\n@Component({\n selector: 'seam-tiled-select-tile-icon',\n templateUrl: './tiled-select-tile-icon.component.html',\n styleUrls: ['./tiled-select-tile-icon.component.scss']\n})\nexport class TiledSelectTileIconComponent {\n static ngAcceptInputType_grayscaleOnDisable: BooleanInput\n static ngAcceptInputType_disabled: BooleanInput\n\n needToFix = needToFix\n\n @HostBinding('class.grid') get _cssClassGrid() { return this.layout === 'grid' }\n @HostBinding('class.list') get _cssClassList() { return this.layout === 'list' }\n\n @Input()\n set layout(value: TiledSelectLayout) { this._layout = value || 'grid' }\n get layout(): TiledSelectLayout { return this._layout }\n private _layout: TiledSelectLayout = 'grid'\n\n @Input() @InputBoolean() grayscaleOnDisable = false\n @Input() @InputBoolean() disabled = false\n\n @Input() iconClass: string | undefined | null\n\n @Input()\n get icon(): SeamIcon | undefined | null { return this._iconUrl || this._iconObj }\n set icon(value: SeamIcon | undefined | null) {\n if (typeof value === 'string') {\n this._iconUrl = value\n this._iconObj = undefined\n } else {\n this._iconUrl = undefined\n this._iconObj = value\n }\n }\n\n public _iconUrl: string | undefined | null\n public _iconObj: IconProp | undefined | null\n\n @ContentChild(TiledSelectTileIconTplDirective, { static: true }) iconTpl?: TiledSelectTileIconTplDirective\n\n}\n","<ng-container *ngIf=\"iconTpl; else noIconTpl\">\n <ng-template\n [ngTemplateOutlet]=\"iconTpl.template\"\n [ngTemplateOutletContext]=\"{ $implicit: icon, icon: icon }\">\n </ng-template>\n</ng-container>\n<ng-template #noIconTpl>\n\n <fa-icon *ngIf=\"_iconObj\"\n class=\"tiled-select-tile-icon--fa {{ iconClass }}\"\n [icon]=\"_iconObj\"></fa-icon>\n\n <ng-container *ngIf=\"_iconUrl\">\n <!-- Partial fix for IE greyscale -->\n <ng-container *ngIf=\"needToFix\">\n <ng-container *ngIf=\"disabled && grayscaleOnDisable\">\n <span class=\"grayscale-fix\" style=\"display: inline-block; position: relative;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" id=\"svgroot\" style=\"position: absolute; left: 0; right: 0;\" viewBox=\"0 0 48 48\" width=\"100%\" height=\"100%\">\n <defs><filter id=\"gray\"><feColorMatrix type=\"matrix\" values=\"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\" /></filter></defs>\n <image filter=\"url("#gray")\" preserveAspectRatio=\"none meet\" x=\"0\" y=\"0\" width=\"48\" height=\"48\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n [attr.xlink:href]=\"_iconUrl\" />\n </svg>\n <img class=\"tiled-select-tile-panel--icon-img {{ iconClass }}\" style=\"display: block; visibility: hidden;\" alt=\"Icon\" [src]=\"_iconUrl\">\n </span>\n </ng-container>\n <ng-container *ngIf=\"!disabled\">\n <img class=\"tiled-select-tile-panel--icon-img {{ iconClass }}\" [src]=\"_iconUrl\" alt=\"Icon\">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!needToFix\">\n <img class=\"tiled-select-tile-panel--icon-img {{ iconClass }}\" [src]=\"_iconUrl\" alt=\"Icon\">\n </ng-container>\n </ng-container>\n\n</ng-template>\n","import { animate, animation, keyframes, style, transition, trigger, useAnimation } from '@angular/animations'\nimport { BooleanInput } from '@angular/cdk/coercion'\nimport { ChangeDetectorRef, Component, ContentChild, EventEmitter, HostBinding, Input, Output } from '@angular/core'\n\nimport { faCheckCircle } from '@fortawesome/free-regular-svg-icons'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { SeamIcon } from '@theseam/ui-common/icon'\n\nimport { TiledSelectTileLabelTplDirective } from '../../directives/tiled-select-tile-label-tpl.directive'\nimport { TiledSelectTileOverlayDirective } from '../../directives/tiled-select-tile-overlay.directive'\nimport { TiledSelectLayout } from '../../tiled-select.models'\n\nexport const tilePulse = animation(\n animate(\n '{{ timing }}s {{ delay }}s',\n keyframes([\n style({ transform: 'scale3d(1, 1, 1)' }),\n style({ transform: 'scale3d({{ scale }}, {{ scale }}, {{ scale }})' }),\n style({ transform: 'scale3d(1, 1, 1)' }),\n ])\n ),\n { params: { scale: 1.05, timing: 0.75, delay: 0 } }\n)\n\nexport const tileScaleUp = animation(\n animate(\n '{{ timing }}s {{ delay }}s',\n keyframes([\n style({ transform: 'scale3d({{ scale }}, {{ scale }}, {{ scale }})' }),\n ])\n ),\n { params: { scale: 1.05, timing: 0.75, delay: 0 } }\n)\n\nexport const tileScaleDown = animation(\n animate(\n '{{ timing }}s {{ delay }}s',\n keyframes([\n style({ transform: 'scale3d(1, 1, 1)' }),\n ])\n ),\n { params: { scale: 1.05, timing: 0.75, delay: 0 } }\n)\n\n@Component({\n selector: 'seam-tiled-select-tile',\n templateUrl: './tiled-select-tile.component.html',\n styleUrls: ['./tiled-select-tile.component.scss'],\n animations: [\n trigger('pulse', [\n transition('false => true', [\n useAnimation(tilePulse)\n // useAnimation(tileScaleUp)\n ]),\n // transition('true => false', [\n // useAnimation(tileScaleDown)\n // ])\n ]),\n // trigger('openClose', [\n // state('true', style({ height: '*' })),\n // state('false', style({ height: '0px' })),\n // transition('false <=> true', animate(500))\n // ])\n ],\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TiledSelectTileComponent {\n static ngAcceptInputType_disabled: BooleanInput\n static ngAcceptInputType_selected: BooleanInput\n static ngAcceptInputType_tileBackdrop: BooleanInput\n static ngAcceptInputType_selectable: BooleanInput\n static ngAcceptInputType_grayscaleOnDisable: BooleanInput\n static ngAcceptInputType_showLabel: BooleanInput\n static ngAcceptInputType_showSelectedIcon: BooleanInput\n\n faCheckCircle = faCheckCircle\n\n @HostBinding('@pulse') pulseAnimationState = true\n @HostBinding('attr.data-tile-name') get _tileNameAttr() { return this.name }\n\n @Input() layout: TiledSelectLayout = 'grid'\n\n @Input() name: string | undefined | null\n @Input() label: string | undefined | null\n @Input() icon: SeamIcon | undefined | null\n @Input() @InputBoolean() disabled = false\n @Input() @InputBoolean() selected = false\n\n @Input() @InputBoolean() tileBackdrop = false\n @Input() @InputBoolean() selectable = false\n @Input() @InputBoolean() grayscaleOnDisable = true\n @Input() @InputBoolean() showLabel = true\n @Input() @InputBoolean() showSelectedIcon = true\n\n @Input() iconClass: string | undefined | null\n\n @Input() overlayTpl: TiledSelectTileOverlayDirective | undefined | null\n\n @Output() activated = new EventEmitter<any>()\n\n @ContentChild(TiledSelectTileLabelTplDirective, { static: true }) labelTpl?: TiledSelectTileLabelTplDirective\n\n pulsing = false\n pulsingTimeout: number | undefined\n\n constructor(\n private cdr: ChangeDetectorRef\n ) { }\n\n onTileClick(event: any) {\n if (!this.selectable) { return }\n this.activated.emit(event)\n\n // this.pulsing = true\n // setTimeout(() => {\n // this.pulsing = false\n // }, 750)\n }\n\n mDown() {\n if (this.pulsingTimeout) {\n clearTimeout(this.pulsingTimeout)\n }\n\n if (!this.pulsing) {\n this.pulsing = true\n // this.cdr.detectChanges()\n }\n\n // console.log('start')\n this.pulsingTimeout = window.setTimeout(() => {\n this.pulsing = false\n // this.cdr.detectChanges()\n this.pulsingTimeout = undefined\n }, 750)\n }\n\n}\n","<button\n class=\"btn tiled-select-tile-panel\"\n [disabled]=\"disabled\"\n [class.grid]=\"layout === 'grid'\"\n [class.list]=\"layout === 'list'\"\n [class.selected]=\"selectable && selected\"\n [class.selectable]=\"selectable\"\n [class.no-grayscale]=\"!grayscaleOnDisable\"\n (click)=\"onTileClick($event)\"\n [@pulse]=\"pulsing ? true : false\"\n [attr.data-category]=\"name\"\n [attr.title]=\"showLabel ? '' : label\"\n type=\"button\">\n <div class=\"tiled-select-tile-panel--content\">\n <seam-tiled-select-tile-icon\n class=\"tiled-select-tile-panel--icon\"\n [class.invisible]=\"!icon\"\n [icon]=\"icon\"\n [iconClass]=\"iconClass\"\n [layout]=\"layout\"\n [grayscaleOnDisable]=\"grayscaleOnDisable\"\n [disabled]=\"disabled\">\n </seam-tiled-select-tile-icon>\n <div class=\"tiled-select-tile-panel--label-container\" *ngIf=\"showLabel\">\n <span *ngIf=\"!labelTpl\" class=\"tiled-select-tile-panel--label\">{{ label }}</span>\n <ng-template *ngIf=\"labelTpl\"\n [ngTemplateOutlet]=\"labelTpl.template\"\n [ngTemplateOutletContext]=\"{ $implicit: label, label: label }\">\n </ng-template>\n </div>\n <div *ngIf=\"tileBackdrop\" class=\"selected-backdrop\"\n [class.bg-success]=\"selected\"></div>\n <fa-icon\n *ngIf=\"selected && showSelectedIcon\"\n class=\"tiled-select-tile-panel--selected text-success\"\n [icon]=\"faCheckCircle\"\n size=\"3x\">\n </fa-icon>\n </div>\n <div class=\"tiled-select-tile-panel--overlay\" *ngIf=\"overlayTpl\">\n <ng-template [ngTemplateOutlet]=\"overlayTpl.template\"></ng-template>\n </div>\n</button>\n","import { animate, animation, query, stagger, style, transition, trigger, useAnimation } from '@angular/animations'\nimport { BooleanInput, coerceArray } from '@angular/cdk/coercion'\nimport { Platform } from '@angular/cdk/platform'\nimport { ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, forwardRef, Input, Output, QueryList, Renderer2 } from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { TiledSelectTileOverlayDirective } from './../../directives/tiled-select-tile-overlay.directive'\n\nimport { TiledSelectItem, TiledSelectLayout } from '../../tiled-select.models'\n\nexport const slideEnterAnimation = animation([\n style({ opacity: 0, transform: 'translateX(-15px)' }),\n stagger(100, [\n animate('0.5s', style({ opacity: 1, transform: 'translateX(0)' }))\n ])\n])\n\nexport const TILED_SELECT_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TheSeamTiledSelectComponent),\n multi: true,\n}\n\n@Component({\n selector: 'seam-tiled-select',\n templateUrl: './tiled-select.component.html',\n styleUrls: ['./tiled-select.component.scss'],\n providers: [ TILED_SELECT_VALUE_ACCESSOR ],\n host: {\n '[attr.data-testid]': '\"tiled-select\"'\n },\n animations: [\n trigger('tiles', [\n transition('* => *', [\n query(':enter', useAnimation(slideEnterAnimation), { optional: true })\n ])\n ])\n ],\n})\nexport class TheSeamTiledSelectComponent implements ControlValueAccessor {\n static ngAcceptInputType_val: BooleanInput\n static ngAcceptInputType_disabled: BooleanInput\n static ngAcceptInputType_multiple: BooleanInput\n static ngAcceptInputType_selectionToggleable: BooleanInput\n static ngAcceptInputType_tileBackdrop: BooleanInput\n static ngAcceptInputType_showSelectedIcon: BooleanInput\n static ngAcceptInputType_animationsDisabled: BooleanInput\n\n @Input() layout: TiledSelectLayout = 'grid'\n @Input()\n get tiles() { return this._tiles }\n set tiles(value: TiledSelectItem[]) {\n const _value = [ ...(value || []) ]\n for (const v of _value) {\n if (v.value === undefined) {\n if (v.name === undefined) {\n throw new Error('If value is undefined then name must be defined.')\n }\n v.value = v.name\n }\n }\n\n const prev = this._tiles\n if (prev.length !== _value.length) {\n this.tilesAnimationState = !this.tilesAnimationState\n } else {\n for (const t of _value) {\n if (!prev.find(p => p.name === t.name)) {\n this.tilesAnimationState = !this.tilesAnimationState\n break\n }\n }\n }\n\n this._tiles = _value\n }\n private _tiles: TiledSelectItem[] = []\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('value') val: string | string[] | undefined\n\n @Input() @InputBoolean() disabled = false\n @Input() @InputBoolean() multiple = false\n @Input() @InputBoolean() selectionToggleable = true\n @Input() @InputBoolean() tileBackdrop = false\n @Input() @InputBoolean() showSelectedIcon = true\n @Input() @InputBoolean() animationsDisabled: boolean = this._platform.IOS\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly change = new EventEmitter<string | string[] | undefined>()\n\n tilesAnimationState = false\n\n onChange: any\n onTouched: any\n\n @ContentChildren(TiledSelectTileOverlayDirective)\n public overlayTpls?: QueryList<TiledSelectTileOverlayDirective>\n\n constructor(\n private readonly _platform: Platform,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _renderer: Renderer2,\n private readonly _elementRef: ElementRef\n ) { }\n\n get value(): string | string[] | undefined {\n return this.val\n }\n\n set value(value: string | string[] | undefined) {\n this.val = (this.multiple) ? [ ...(value as string[] || []) ] : value || ''\n\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', this.val)\n\n if (this.onChange) {\n this.onChange(this.val)\n this.change.emit(this.val)\n this._cdr.markForCheck()\n }\n if (this.onTouched) { this.onTouched() }\n }\n\n writeValue(value: any): void {\n this.value = value\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled\n }\n\n onTileSelected(event: MouseEvent, tile: TiledSelectItem) {\n this.toggleTileSelected(tile)\n }\n\n public isSelected(tile: TiledSelectItem) {\n if (!this.multiple) {\n if (this.value === tile.value) {\n return true\n }\n } else {\n if (this.value) {\n for (const v of this.value) {\n if (v === tile.value) {\n return true\n }\n }\n }\n }\n\n return false\n }\n\n public toggleTileSelected(tile: TiledSelectItem): void {\n if (!this.selectionToggleable && this.isSelected(tile)) {\n return\n }\n\n if (this.isSelected(tile)) {\n this.unselectTile(tile)\n } else {\n this.selectTile(tile)\n }\n }\n\n public selectTile(tile: TiledSelectItem): void {\n if (this.multiple) {\n if (!this.isSelected(tile)) {\n const value: string[] = this.value as string[] || []\n this.value = [ ...coerceArray(value), tile.value ]\n }\n } else {\n this.value = tile.value\n }\n }\n\n public unselectTile(tile: TiledSelectItem): void {\n if (this.multiple) {\n const value: string[] = this.value as string[] || []\n this.value = value.filter(v => v !== tile.value)\n } else {\n this.value = undefined\n }\n }\n\n public getSelectedTiles(): TiledSelectItem[] {\n return this.tiles.filter(t => this.isSelected(t))\n }\n\n getOverlayTpl(tile: TiledSelectItem): TiledSelectTileOverlayDirective | undefined {\n // console.log('overlayTpls', this.overlayTpls)\n return (this.overlayTpls || []).find(t => t.record?.name === tile.name)\n }\n\n}\n\n/** @deprecated Use `TheSeamTiledSelectComponent`. */\nexport type TiledSelectComponent = TheSeamTiledSelectComponent\n","<div class=\"tiled-select--container\"\n [class.grid]=\"layout === 'grid'\"\n [class.list]=\"layout === 'list'\"\n [@tiles]=\"tilesAnimationState\"\n [@.disabled]=\"animationsDisabled\">\n <ng-container *ngFor=\"let tile of tiles; let index = index\">\n <div class=\"tile-wrapper\" [ngClass]=\"tile.customClass || ''\">\n <seam-tiled-select-tile\n class=\"tiled-select-tile\"\n [ngClass]=\"tile.customClass || ''\"\n [name]=\"tile.name\"\n [label]=\"tile.label\"\n [icon]=\"tile.icon\"\n [disabled]=\"disabled || tile.disabled\"\n [attr.hidden]=\"tile.hidden\"\n [layout]=\"layout\"\n [selected]=\"isSelected(tile)\"\n [selectable]=\"true\"\n [tileBackdrop]=\"tileBackdrop\"\n [showSelectedIcon]=\"showSelectedIcon\"\n [overlayTpl]=\"getOverlayTpl(tile)\"\n (activated)=\"onTileSelected($event, tile)\"\n [attr.data-tile-index]=\"index\"\n [attr.data-testid]=\"tile.name\">\n </seam-tiled-select-tile>\n </div>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome'\n\nimport { TiledSelectTileIconComponent } from './components/tiled-select-tile-icon/tiled-select-tile-icon.component'\nimport { TiledSelectTileComponent } from './components/tiled-select-tile/tiled-select-tile.component'\nimport { TheSeamTiledSelectComponent } from './components/tiled-select/tiled-select.component'\nimport { TiledSelectTileIconTplDirective } from './directives/tiled-select-tile-icon-tpl.directive'\nimport { TiledSelectTileLabelTplDirective } from './directives/tiled-select-tile-label-tpl.directive'\nimport { TiledSelectTileOverlayDirective } from './directives/tiled-select-tile-overlay.directive'\n\n@NgModule({\n imports: [\n CommonModule,\n FontAwesomeModule\n ],\n declarations: [\n TheSeamTiledSelectComponent,\n TiledSelectTileComponent,\n TiledSelectTileOverlayDirective,\n TiledSelectTileIconComponent,\n TiledSelectTileIconTplDirective,\n TiledSelectTileLabelTplDirective\n ],\n exports: [\n TheSeamTiledSelectComponent,\n TiledSelectTileComponent,\n TiledSelectTileOverlayDirective,\n TiledSelectTileIconTplDirective,\n TiledSelectTileLabelTplDirective\n ]\n})\nexport class TheSeamTiledSelectModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3.TiledSelectTileIconComponent","i1","i2","i3.TiledSelectTileComponent"],"mappings":"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"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { ThemeNames, OutlineThemeNames } from '@theseam/ui-common/models';
|
|
2
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
3
|
+
import { HarnessPredicate, ContentContainerComponentHarness } from '@angular/cdk/testing';
|
|
1
4
|
import * as i0 from '@angular/core';
|
|
2
5
|
import { Component, ChangeDetectionStrategy, Input, HostBinding, forwardRef, EventEmitter, Output, NgModule } from '@angular/core';
|
|
3
6
|
import { mixinSize, mixinTheme, mixinDisabled, InputBoolean, InputNumber } from '@theseam/ui-common/core';
|
|
@@ -5,10 +8,158 @@ import * as i1 from '@angular/cdk/a11y';
|
|
|
5
8
|
import { __decorate } from 'tslib';
|
|
6
9
|
import * as i2 from '@theseam/ui-common/progress';
|
|
7
10
|
import { TheSeamProgressModule } from '@theseam/ui-common/progress';
|
|
8
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
9
11
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
10
12
|
import { CommonModule } from '@angular/common';
|
|
11
13
|
|
|
14
|
+
const THEME_NAMES$1 = [...ThemeNames, ...OutlineThemeNames];
|
|
15
|
+
const THEME_CLASSES$1 = THEME_NAMES$1.map(t => `btn-${t}`);
|
|
16
|
+
function getButtonThemeClass(classListString) {
|
|
17
|
+
return (classListString?.split(' ') || []).find(c => THEME_CLASSES$1.includes(c));
|
|
18
|
+
}
|
|
19
|
+
function createBaseButtonComponentHarnessPredicate(componentHarness, options = {}) {
|
|
20
|
+
return new HarnessPredicate(componentHarness, options)
|
|
21
|
+
.addOption('text', options.text, (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text))
|
|
22
|
+
.addOption('type', options.type, (harness, type) => HarnessPredicate.stringMatches(harness.getType(), type));
|
|
23
|
+
}
|
|
24
|
+
class TheSeamBaseButtonComponentHarness extends ContentContainerComponentHarness {
|
|
25
|
+
/** Whether the button is disabled. */
|
|
26
|
+
async isDisabled() {
|
|
27
|
+
const disabled = (await this.host()).getAttribute('disabled');
|
|
28
|
+
return coerceBooleanProperty(await disabled);
|
|
29
|
+
}
|
|
30
|
+
async hasDisabledAria() {
|
|
31
|
+
const ariaValue = await (await this.host()).getAttribute('aria-disabled');
|
|
32
|
+
return ariaValue === 'true';
|
|
33
|
+
}
|
|
34
|
+
async getType() {
|
|
35
|
+
return (await this.host()).getAttribute('type');
|
|
36
|
+
}
|
|
37
|
+
/** Gets the text of the button item. */
|
|
38
|
+
async getText() {
|
|
39
|
+
return (await this.host()).text();
|
|
40
|
+
}
|
|
41
|
+
/** Gets the theme of the button item. */
|
|
42
|
+
async getTheme() {
|
|
43
|
+
return (await this.host()).getAttribute('class').then(c => getButtonThemeClass(c)?.replace('btn-', '') || null);
|
|
44
|
+
}
|
|
45
|
+
async click() {
|
|
46
|
+
return (await this.host()).click();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const THEME_NAMES = [...ThemeNames, ...OutlineThemeNames];
|
|
51
|
+
const THEME_CLASSES = THEME_NAMES.map(t => `badge-${t}`);
|
|
52
|
+
function getbadgeThemeClass(classListString) {
|
|
53
|
+
return (classListString?.split(' ') || []).find(c => THEME_CLASSES.includes(c));
|
|
54
|
+
}
|
|
55
|
+
function createBaseBadgeButtonComponentHarnessPredicate(componentHarness, options = {}) {
|
|
56
|
+
return createBaseButtonComponentHarnessPredicate(componentHarness, options);
|
|
57
|
+
}
|
|
58
|
+
class TheSeamBaseBadgeButtonComponentHarness extends TheSeamBaseButtonComponentHarness {
|
|
59
|
+
constructor() {
|
|
60
|
+
super(...arguments);
|
|
61
|
+
this._badgeElement = this.locatorFor('.badge');
|
|
62
|
+
}
|
|
63
|
+
/** Gets the text of the button item. */
|
|
64
|
+
async getText() {
|
|
65
|
+
return (await this.host()).text({ exclude: '.badge' });
|
|
66
|
+
}
|
|
67
|
+
/** Gets the text of the badge. */
|
|
68
|
+
async getBadgeText() {
|
|
69
|
+
return (await this._badgeElement()).text();
|
|
70
|
+
}
|
|
71
|
+
/** Gets the theme of the badge. */
|
|
72
|
+
async getBadgeTheme() {
|
|
73
|
+
return (await this._badgeElement()).getAttribute('class').then(c => getbadgeThemeClass(c)?.replace('badge-', '') || null);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
class TheSeamAnchorBadgeButtonComponentHarness extends TheSeamBaseBadgeButtonComponentHarness {
|
|
78
|
+
/**
|
|
79
|
+
* Gets a `HarnessPredicate` that can be used to search for a button item with specific attributes.
|
|
80
|
+
* @param options Options for filtering which button item instances are considered a match.
|
|
81
|
+
* @return a `HarnessPredicate` configured with the given options.
|
|
82
|
+
*/
|
|
83
|
+
static with(options = {}) {
|
|
84
|
+
return createBaseBadgeButtonComponentHarnessPredicate(this, options);
|
|
85
|
+
}
|
|
86
|
+
async getTabIndex() {
|
|
87
|
+
const tabIndex = await (await this.host()).getAttribute('tabindex');
|
|
88
|
+
return Number(tabIndex);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/** The selector for the host element of a `TheSeamAnchorBadgeButtonComponent` instance. */
|
|
92
|
+
TheSeamAnchorBadgeButtonComponentHarness.hostSelector = 'a[seamBadgeButton]';
|
|
93
|
+
|
|
94
|
+
class TheSeamAnchorButtonComponentHarness extends TheSeamBaseButtonComponentHarness {
|
|
95
|
+
/**
|
|
96
|
+
* Gets a `HarnessPredicate` that can be used to search for a button item with specific attributes.
|
|
97
|
+
* @param options Options for filtering which button item instances are considered a match.
|
|
98
|
+
* @return a `HarnessPredicate` configured with the given options.
|
|
99
|
+
*/
|
|
100
|
+
static with(options = {}) {
|
|
101
|
+
return createBaseButtonComponentHarnessPredicate(this, options);
|
|
102
|
+
}
|
|
103
|
+
async getTabIndex() {
|
|
104
|
+
const tabIndex = await (await this.host()).getAttribute('tabindex');
|
|
105
|
+
return Number(tabIndex);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/** The selector for the host element of a `TheSeamAnchorButtonComponent` instance. */
|
|
109
|
+
TheSeamAnchorButtonComponentHarness.hostSelector = 'a[seamButton]';
|
|
110
|
+
|
|
111
|
+
class TheSeamBadgeButtonComponentHarness extends TheSeamBaseBadgeButtonComponentHarness {
|
|
112
|
+
/**
|
|
113
|
+
* Gets a `HarnessPredicate` that can be used to search for a button item with specific attributes.
|
|
114
|
+
* @param options Options for filtering which button item instances are considered a match.
|
|
115
|
+
* @return a `HarnessPredicate` configured with the given options.
|
|
116
|
+
*/
|
|
117
|
+
static with(options = {}) {
|
|
118
|
+
return createBaseBadgeButtonComponentHarnessPredicate(this, options);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/** The selector for the host element of a `TheSeamBadgeButtonComponent` instance. */
|
|
122
|
+
TheSeamBadgeButtonComponentHarness.hostSelector = 'button[seamBadgeButton]';
|
|
123
|
+
|
|
124
|
+
// import { TheSeamMenuHarness } from './button.harness'
|
|
125
|
+
// import { animatingWait } from './utils'
|
|
126
|
+
class TheSeamButtonComponentHarness extends TheSeamBaseButtonComponentHarness {
|
|
127
|
+
/**
|
|
128
|
+
* Gets a `HarnessPredicate` that can be used to search for a button item with specific attributes.
|
|
129
|
+
* @param options Options for filtering which button item instances are considered a match.
|
|
130
|
+
* @return a `HarnessPredicate` configured with the given options.
|
|
131
|
+
*/
|
|
132
|
+
static with(options = {}) {
|
|
133
|
+
return createBaseButtonComponentHarnessPredicate(this, options);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/** The selector for the host element of a `TheSeamButtonComponent` instance. */
|
|
137
|
+
TheSeamButtonComponentHarness.hostSelector = 'button[seamButton]';
|
|
138
|
+
|
|
139
|
+
class TheSeamToggleButtonComponentHarness extends TheSeamBaseButtonComponentHarness {
|
|
140
|
+
/**
|
|
141
|
+
* Gets a `HarnessPredicate` that can be used to search for a button item with specific attributes.
|
|
142
|
+
* @param options Options for filtering which button item instances are considered a match.
|
|
143
|
+
* @return a `HarnessPredicate` configured with the given options.
|
|
144
|
+
*/
|
|
145
|
+
static with(options = {}) {
|
|
146
|
+
return createBaseButtonComponentHarnessPredicate(this, options);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Clicks the button.
|
|
150
|
+
*/
|
|
151
|
+
async click() {
|
|
152
|
+
return (await this.host()).click();
|
|
153
|
+
}
|
|
154
|
+
/** Gets the theme of the button item. */
|
|
155
|
+
async isActive() {
|
|
156
|
+
return (await this.host()).getAttribute('class')
|
|
157
|
+
.then(c => (c?.split(' ').indexOf('active') !== -1) || false);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/** The selector for the host element of a `TheSeamToggleButtonComponent` instance. */
|
|
161
|
+
TheSeamToggleButtonComponentHarness.hostSelector = 'button[seamToggleButton]';
|
|
162
|
+
|
|
12
163
|
class TheSeamButtonBase {
|
|
13
164
|
constructor(_elementRef, _focusMonitor, _renderer) {
|
|
14
165
|
this._elementRef = _elementRef;
|
|
@@ -80,6 +231,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
80
231
|
type: Component,
|
|
81
232
|
args: [{ selector: 'a[seamButton]', exportAs: 'seamButton,seamButtonBaseAnchor', inputs: ['disabled', 'theme', 'size'], host: {
|
|
82
233
|
'class': 'btn',
|
|
234
|
+
// '[class.disabled]': 'disabled || null',
|
|
83
235
|
'[attr.tabindex]': 'disabled ? -1 : (tabIndex || 0)',
|
|
84
236
|
'[attr.disabled]': 'disabled || null',
|
|
85
237
|
'[attr.aria-disabled]': 'disabled.toString()',
|
|
@@ -310,5 +462,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
310
462
|
* Generated bundle index. Do not edit.
|
|
311
463
|
*/
|
|
312
464
|
|
|
313
|
-
export { TOGGLE_BUTTON_VALUE_ACCESSOR, TheSeamAnchorBadgeButtonComponent, TheSeamAnchorButtonComponent, TheSeamBadgeButtonComponent, TheSeamButtonComponent, TheSeamButtonsModule, TheSeamProgressCircleButtonComponent, TheSeamToggleButtonComponent };
|
|
465
|
+
export { TOGGLE_BUTTON_VALUE_ACCESSOR, TheSeamAnchorBadgeButtonComponent, TheSeamAnchorBadgeButtonComponentHarness, TheSeamAnchorButtonComponent, TheSeamAnchorButtonComponentHarness, TheSeamBadgeButtonComponent, TheSeamBadgeButtonComponentHarness, TheSeamButtonComponent, TheSeamButtonComponentHarness, TheSeamButtonsModule, TheSeamProgressCircleButtonComponent, TheSeamToggleButtonComponent, TheSeamToggleButtonComponentHarness };
|
|
314
466
|
//# sourceMappingURL=theseam-ui-common-buttons.mjs.map
|