@lucca-front/ng 19.3.3 → 19.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core-select/api/api-v4.directive.d.ts +0 -1
- package/fesm2022/lucca-front-ng-core-select-api.mjs +0 -1
- package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-date2.mjs +1 -1
- package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-footer.mjs +2 -2
- package/fesm2022/lucca-front-ng-footer.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-field.mjs +1 -1
- package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-number-format.mjs +12 -10
- package/fesm2022/lucca-front-ng-number-format.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-scrollBox.mjs +17 -9
- package/fesm2022/lucca-front-ng-scrollBox.mjs.map +1 -1
- package/package.json +48 -48
- package/scrollBox/scroll-box.component.d.ts +5 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucca-front-ng-number-format.mjs","sources":["../../../packages/ng/number-format/number-format.models.ts","../../../packages/ng/number-format/number-format.ts","../../../packages/ng/number-format/number-format.pipe.ts","../../../packages/ng/number-format/number-format.directive.ts","../../../packages/ng/number-format/lucca-front-ng-number-format.ts"],"sourcesContent":["export type NumberFormatStyle = 'decimal' | 'currency' | 'percent' | 'unit';\n\nexport type NumberFormatUnit =\n\t| 'acre'\n\t| 'bit'\n\t| 'byte'\n\t| 'celsius'\n\t| 'centimeter'\n\t| 'day'\n\t| 'degree'\n\t| 'fahrenheit'\n\t| 'fluid-ounce'\n\t| 'foot'\n\t| 'gallon'\n\t| 'gigabit'\n\t| 'gigabyte'\n\t| 'gram'\n\t| 'hectare'\n\t| 'hour'\n\t| 'inch'\n\t| 'kilobit'\n\t| 'kilobyte'\n\t| 'kilogram'\n\t| 'kilometer'\n\t| 'liter'\n\t| 'megabit'\n\t| 'megabyte'\n\t| 'meter'\n\t| 'microsecond'\n\t| 'mile'\n\t| 'mile-scandinavian'\n\t| 'milliliter'\n\t| 'millimeter'\n\t| 'millisecond'\n\t| 'minute'\n\t| 'month'\n\t| 'nanosecond'\n\t| 'ounce'\n\t| 'percent'\n\t| 'petabyte'\n\t| 'pound'\n\t| 'second'\n\t| 'stone'\n\t| 'terabit'\n\t| 'terabyte'\n\t| 'week'\n\t| 'yard'\n\t| 'year';\n\nexport type NumberFormatUnitDisplay = 'short' | 'narrow' | 'long';\n\nexport type NumberFormatCurrencyDisplay = 'code' | 'symbol' | 'narrowSymbol' | 'name';\n\nexport interface NumberFormatOptions {\n\tlocale: string;\n\tmin?: number | undefined;\n\tmax?: number | undefined;\n\tstyle: NumberFormatStyle;\n\tcurrency?: string | undefined;\n\tcurrencyDisplay?: NumberFormatCurrencyDisplay | undefined;\n\tunit?: NumberFormatUnit | undefined;\n\tunitDisplay?: NumberFormatUnitDisplay | undefined;\n\tuseGrouping?: boolean | undefined;\n\tminimumIntegerDigits?: number | undefined;\n\tminimumFractionDigits?: number | undefined;\n\tmaximumFractionDigits?: number | undefined;\n\tminimumSignificantDigits?: number | undefined;\n\tmaximumSignificantDigits?: number | undefined;\n}\n\nexport interface NumberFormatSplittedInput {\n\tminusSign: string;\n\tinteger: string;\n\tdelimiter: string;\n\tfraction: string;\n}\n\nexport interface NumberFormatParsedInput {\n\tsplittedInput: NumberFormatSplittedInput;\n\tcleanInput: string;\n\tvalue: number | null;\n}\n\nexport function joinSplittedInput({ minusSign, integer, delimiter, fraction }: NumberFormatSplittedInput): string {\n\treturn `${minusSign}${integer}${delimiter}${fraction}`;\n}\n\nexport function canCastSplittedInputToNumber({ integer, fraction }: NumberFormatSplittedInput): boolean {\n\treturn integer !== '' || fraction !== '';\n}\n","import { canCastSplittedInputToNumber, joinSplittedInput, NumberFormatOptions, NumberFormatParsedInput, NumberFormatSplittedInput } from './number-format.models';\n\nconst VALUE_TYPES: Intl.NumberFormatPartTypes[] = ['integer', 'decimal', 'fraction', 'group', 'minusSign'];\n\nconst DIGIT_TYPES: Intl.NumberFormatPartTypes[] = ['integer', 'decimal', 'fraction'];\n\nconst SUFFIX_PREFIX_TYPES: Intl.NumberFormatPartTypes[] = ['percent', 'percentSign', 'currency', 'unit'];\n\nexport class NumberFormat {\n\treadonly locale: string;\n\treadonly min: number | undefined;\n\treadonly max: number | undefined;\n\treadonly options: Intl.NumberFormatOptions;\n\treadonly #focusIntlNumberFormat: Intl.NumberFormat;\n\treadonly #intlNumberFormat: Intl.NumberFormat;\n\n\tconstructor({ locale, min, max, ...options }: NumberFormatOptions) {\n\t\tthis.locale = locale;\n\t\tthis.min = min;\n\t\tthis.max = max;\n\t\tthis.options = this.#applyBoundariesToDigitOptions(options);\n\t\tthis.#intlNumberFormat = new Intl.NumberFormat(this.locale, this.options);\n\t\tthis.#focusIntlNumberFormat = new Intl.NumberFormat(this.locale, {\n\t\t\t...this.options,\n\t\t\tminimumFractionDigits: 0,\n\t\t});\n\t}\n\n\t#applyBoundariesToDigitOptions({\n\t\tstyle,\n\t\tminimumFractionDigits,\n\t\tmaximumFractionDigits,\n\t\tminimumIntegerDigits,\n\t\tminimumSignificantDigits,\n\t\tmaximumSignificantDigits,\n\t\t...options\n\t}: Intl.NumberFormatOptions): Intl.NumberFormatOptions {\n\t\tstyle = style ?? 'decimal';\n\t\t// https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#minimumfractiondigits\n\t\tminimumFractionDigits = Math.min(Math.max(minimumFractionDigits ?? 0, 0), 20);\n\t\t// https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#maximumfractiondigits\n\t\tmaximumFractionDigits = Math.min(Math.max(maximumFractionDigits ?? 2, minimumFractionDigits), 20);\n\t\t// https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#maximumfractiondigits\n\t\tminimumIntegerDigits = Math.min(Math.max(minimumFractionDigits ?? 1, 1), 21);\n\t\t// https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#minimumsignificantdigits\n\t\tminimumSignificantDigits = Math.min(Math.max(minimumSignificantDigits ?? 1, 1), 21);\n\t\t// https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#maximumsignificantdigits\n\t\tmaximumSignificantDigits = Math.min(Math.max(maximumSignificantDigits ?? 21, minimumSignificantDigits), 21);\n\t\treturn {\n\t\t\t...options,\n\t\t\tstyle,\n\t\t\tminimumFractionDigits,\n\t\t\tmaximumFractionDigits,\n\t\t\tminimumIntegerDigits,\n\t\t\tminimumSignificantDigits,\n\t\t\tmaximumSignificantDigits,\n\t\t};\n\t}\n\n\tgetSuffix(value: number | null): string | null {\n\t\tvalue = value ?? 1;\n\n\t\t// Parts after digits are suffix\n\t\tconst parts = this.#intlNumberFormat.formatToParts(value).reverse();\n\t\tconst indexOfFirstDigit = parts.findIndex((p) => DIGIT_TYPES.includes(p.type));\n\t\tconst indexOfFirstSuffix = parts.findIndex((p) => SUFFIX_PREFIX_TYPES.includes(p.type));\n\t\tif (indexOfFirstSuffix >= 0 && indexOfFirstSuffix < indexOfFirstDigit) {\n\t\t\treturn parts[indexOfFirstSuffix].value;\n\t\t}\n\t\treturn null;\n\t}\n\n\tgetPrefix(value: number | null): string | null {\n\t\tvalue = value ?? 1;\n\n\t\t// Parts before digits are prefix\n\t\tconst parts = this.#intlNumberFormat.formatToParts(value);\n\t\tconst indexOfLastDigit = parts.findIndex((p) => DIGIT_TYPES.includes(p.type));\n\t\tconst indexOfLastSuffix = parts.findIndex((p) => SUFFIX_PREFIX_TYPES.includes(p.type));\n\t\tif (indexOfLastSuffix >= 0 && indexOfLastSuffix < indexOfLastDigit) {\n\t\t\treturn parts[indexOfLastSuffix].value;\n\t\t}\n\t\treturn null;\n\t}\n\n\tapplyRange(value: number | null): number | null {\n\t\tif (value === null) {\n\t\t\treturn null;\n\t\t}\n\t\tif (this.min !== undefined) {\n\t\t\tvalue = Math.max(this.min, value);\n\t\t}\n\t\tif (this.max !== undefined) {\n\t\t\tvalue = Math.min(this.max, value);\n\t\t}\n\t\treturn value;\n\t}\n\n\t#parseAndSplitInput(input: string): NumberFormatSplittedInput {\n\t\tlet minusSign = /^-/g.exec(input)?.[0] ?? '';\n\t\t// if minus sign has been input but range only allows positive values, remove it\n\t\tif (this.min >= 0) {\n\t\t\tminusSign = '';\n\t\t}\n\n\t\t// Add minus sign by default if range only allows negative values\n\t\tif (this.max < 0) {\n\t\t\tminusSign = '-';\n\t\t}\n\n\t\t// Keep only digits and decimal delimiter\n\t\tinput = input.replace(/[^.,0-9]/g, '');\n\n\t\t// Replace decimal delimiter ',' by '.' before casting string to number\n\t\tinput = input.replace(/,/g, '.');\n\n\t\tconst parts = input.split('.');\n\t\tconst integer = parts[0];\n\t\tconst fraction = parts\n\t\t\t.slice(1)\n\t\t\t.join('')\n\t\t\t//ignore digits above maximumFractionDigits\n\t\t\t.slice(0, this.options.maximumFractionDigits ?? 2);\n\t\tconst delimiter = parts.length > 1 ? '.' : '';\n\n\t\tconst splittedInput: NumberFormatSplittedInput = {\n\t\t\tminusSign,\n\t\t\tinteger,\n\t\t\tdelimiter,\n\t\t\tfraction,\n\t\t};\n\n\t\t// cast input in number only if it has integer or fraction\n\t\tif (canCastSplittedInputToNumber(splittedInput)) {\n\t\t\tlet value = +joinSplittedInput(splittedInput);\n\t\t\tif (this.options.style === 'percent') {\n\t\t\t\tvalue /= 100;\n\t\t\t\tvalue = +value.toFixed(this.options.maximumFractionDigits + 2);\n\t\t\t}\n\n\t\t\t// if value is not in range, fix it and split again !\n\t\t\tconst valueInRange = this.applyRange(value);\n\t\t\tif (value !== valueInRange) {\n\t\t\t\treturn this.#parseAndSplitInput(this.getFocusFormat(valueInRange));\n\t\t\t}\n\t\t}\n\n\t\treturn splittedInput;\n\t}\n\n\tparse(input: string): NumberFormatParsedInput {\n\t\tconst splittedInput = this.#parseAndSplitInput(input);\n\t\tconst cleanInput = joinSplittedInput(splittedInput);\n\t\tlet value: number | null = null;\n\n\t\tif (canCastSplittedInputToNumber(splittedInput)) {\n\t\t\tvalue = +joinSplittedInput(splittedInput);\n\t\t\tif (this.options.style === 'percent') {\n\t\t\t\tvalue /= 100;\n\t\t\t\tvalue = +value.toFixed(this.options.maximumFractionDigits + 2);\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsplittedInput,\n\t\t\tcleanInput,\n\t\t\tvalue,\n\t\t};\n\t}\n\n\tformat(value: number | null): string {\n\t\tif (value === null) {\n\t\t\treturn '';\n\t\t}\n\t\treturn this.#intlNumberFormat.format(value);\n\t}\n\n\tgetFocusFormat(value: number | undefined | null): string {\n\t\tif (value === null || value === undefined || isNaN(value)) {\n\t\t\t// Add minus sign by default if range only allows negative values\n\t\t\treturn this.max < 0 ? '-' : '';\n\t\t}\n\t\tconst parts = this.#focusIntlNumberFormat.formatToParts(value);\n\t\tconst minusSign = parts.find((p) => p.type === 'minusSign')?.value ?? '';\n\t\tconst integerPart = parts\n\t\t\t.filter((p) => p.type === 'integer')\n\t\t\t.map((p) => p.value)\n\t\t\t.join('');\n\t\tconst decimal = parts.find((p) => p.type === 'decimal') ? '.' : '';\n\t\tconst fractionPart = parts\n\t\t\t.filter((p) => p.type === 'fraction')\n\t\t\t.map((p) => p.value)\n\t\t\t.join('');\n\n\t\treturn `${minusSign}${integerPart}${decimal}${fractionPart}`;\n\t}\n\n\tgetBlurFormat(value: number | undefined | null): string {\n\t\tif (value === null || value === undefined) {\n\t\t\treturn '';\n\t\t}\n\t\treturn this.#intlNumberFormat\n\t\t\t.formatToParts(value)\n\t\t\t.filter((p) => VALUE_TYPES.includes(p.type))\n\t\t\t.map((p) => {\n\t\t\t\tif (p.type === 'minusSign') {\n\t\t\t\t\treturn '−';\n\t\t\t\t}\n\t\t\t\treturn p.value;\n\t\t\t})\n\t\t\t.join('');\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { NumberFormatOptions } from './number-format.models';\nimport { NumberFormat } from './number-format';\n\n@Pipe({\n\tname: 'luNumberFormat',\n\tstandalone: true,\n})\nexport class LuFormatNumberPipe implements PipeTransform {\n\ttransform(value: number, options: NumberFormatOptions) {\n\t\treturn new NumberFormat(options).format(value);\n\t}\n}\n","// Based on Intl number input\n// (more info: https://dm4t2.github.io/)\n\nimport { computed, Directive, ElementRef, forwardRef, HostListener, inject, input, Renderer2, signal } from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NumberFormat } from './number-format';\nimport { NumberFormatOptions } from './number-format.models';\n\n@Directive({\n\tselector: 'input[luNumberFormatInput]',\n\tstandalone: true,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => NumberFormatDirective),\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class NumberFormatDirective implements ControlValueAccessor {\n\treadonly #inputElement = inject<ElementRef<HTMLInputElement>>(ElementRef<HTMLInputElement>).nativeElement;\n\treadonly #renderer = inject(Renderer2);\n\n\t#value = signal<number | undefined | null>(null);\n\t#isFocused = signal<boolean>(false);\n\n\tformatOptions = input.required<NumberFormatOptions>();\n\t#numberFormat = computed(() => {\n\t\treturn new NumberFormat(this.formatOptions());\n\t});\n\n\tonChange: (_value: number | undefined | null) => void = () => {};\n\n\tonTouched: () => void = (): void => {};\n\n\twriteValue(value: number | undefined | null): void {\n\t\tvalue = this.#numberFormat().applyRange(value);\n\t\tthis.#value.set(value);\n\t\tthis.#inputElement.value = this.#isFocused() ? this.#numberFormat().getFocusFormat(value) : this.#numberFormat().getBlurFormat(value);\n\t}\n\n\tregisterOnChange(fn: (_value: number | undefined | null) => void): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: () => void): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.#renderer.setProperty(this.#inputElement, 'disabled', isDisabled);\n\t}\n\t@HostListener('focus') focus(): void {\n\t\tthis.#isFocused.set(true);\n\t\tthis.#inputElement.value = this.#numberFormat().getFocusFormat(this.#value());\n\t}\n\n\t@HostListener('blur') lostFocus(): void {\n\t\tthis.#isFocused.set(false);\n\t\tthis.#inputElement.value = this.#numberFormat().getBlurFormat(this.#value());\n\t\tthis.onTouched();\n\t}\n\n\t@HostListener('input') input(): void {\n\t\tconst parsedInput = this.#numberFormat().parse(this.#inputElement.value);\n\n\t\tthis.#inputElement.value = parsedInput.cleanInput;\n\n\t\tthis.#value.set(parsedInput.value);\n\n\t\tthis.onChange?.(parsedInput.value);\n\t}\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":"lucca-front-ng-number-format.mjs","sources":["../../../packages/ng/number-format/number-format.models.ts","../../../packages/ng/number-format/number-format.ts","../../../packages/ng/number-format/number-format.pipe.ts","../../../packages/ng/number-format/number-format.directive.ts","../../../packages/ng/number-format/lucca-front-ng-number-format.ts"],"sourcesContent":["export type NumberFormatStyle = 'decimal' | 'currency' | 'percent' | 'unit';\n\nexport type NumberFormatUnit =\n\t| 'acre'\n\t| 'bit'\n\t| 'byte'\n\t| 'celsius'\n\t| 'centimeter'\n\t| 'day'\n\t| 'degree'\n\t| 'fahrenheit'\n\t| 'fluid-ounce'\n\t| 'foot'\n\t| 'gallon'\n\t| 'gigabit'\n\t| 'gigabyte'\n\t| 'gram'\n\t| 'hectare'\n\t| 'hour'\n\t| 'inch'\n\t| 'kilobit'\n\t| 'kilobyte'\n\t| 'kilogram'\n\t| 'kilometer'\n\t| 'liter'\n\t| 'megabit'\n\t| 'megabyte'\n\t| 'meter'\n\t| 'microsecond'\n\t| 'mile'\n\t| 'mile-scandinavian'\n\t| 'milliliter'\n\t| 'millimeter'\n\t| 'millisecond'\n\t| 'minute'\n\t| 'month'\n\t| 'nanosecond'\n\t| 'ounce'\n\t| 'percent'\n\t| 'petabyte'\n\t| 'pound'\n\t| 'second'\n\t| 'stone'\n\t| 'terabit'\n\t| 'terabyte'\n\t| 'week'\n\t| 'yard'\n\t| 'year';\n\nexport type NumberFormatUnitDisplay = 'short' | 'narrow' | 'long';\n\nexport type NumberFormatCurrencyDisplay = 'code' | 'symbol' | 'narrowSymbol' | 'name';\n\nexport interface NumberFormatOptions {\n\tlocale: string;\n\tmin?: number | undefined;\n\tmax?: number | undefined;\n\tstyle: NumberFormatStyle;\n\tcurrency?: string | undefined;\n\tcurrencyDisplay?: NumberFormatCurrencyDisplay | undefined;\n\tunit?: NumberFormatUnit | undefined;\n\tunitDisplay?: NumberFormatUnitDisplay | undefined;\n\tuseGrouping?: boolean | undefined;\n\tminimumIntegerDigits?: number | undefined;\n\tminimumFractionDigits?: number | undefined;\n\tmaximumFractionDigits?: number | undefined;\n\tminimumSignificantDigits?: number | undefined;\n\tmaximumSignificantDigits?: number | undefined;\n}\n\nexport interface NumberFormatSplittedInput {\n\tminusSign: string;\n\tinteger: string;\n\tdelimiter: string;\n\tfraction: string;\n}\n\nexport interface NumberFormatParsedInput {\n\tsplittedInput: NumberFormatSplittedInput;\n\tcleanInput: string;\n\tvalue: number | null;\n}\n\nexport function joinSplittedInput({ minusSign, integer, delimiter, fraction }: NumberFormatSplittedInput): string {\n\treturn `${minusSign}${integer}${delimiter}${fraction}`;\n}\n\nexport function canCastSplittedInputToNumber({ integer, fraction }: NumberFormatSplittedInput): boolean {\n\treturn integer !== '' || fraction !== '';\n}\n","import { canCastSplittedInputToNumber, joinSplittedInput, NumberFormatOptions, NumberFormatParsedInput, NumberFormatSplittedInput } from './number-format.models';\n\nconst VALUE_TYPES: Intl.NumberFormatPartTypes[] = ['integer', 'decimal', 'fraction', 'group', 'minusSign'];\n\nconst DIGIT_TYPES: Intl.NumberFormatPartTypes[] = ['integer', 'decimal', 'fraction'];\n\nconst SUFFIX_PREFIX_TYPES: Intl.NumberFormatPartTypes[] = ['percent', 'percentSign', 'currency', 'unit'];\n\nexport class NumberFormat {\n\treadonly locale: string;\n\treadonly min: number | undefined;\n\treadonly max: number | undefined;\n\treadonly options: Intl.NumberFormatOptions;\n\treadonly #focusIntlNumberFormat: Intl.NumberFormat;\n\treadonly #intlNumberFormat: Intl.NumberFormat;\n\n\tconstructor({ locale, min, max, ...options }: NumberFormatOptions) {\n\t\tthis.locale = locale;\n\t\tthis.min = min;\n\t\tthis.max = max;\n\t\tthis.options = this.#applyBoundariesToDigitOptions(options);\n\t\tthis.#intlNumberFormat = new Intl.NumberFormat(this.locale, this.options);\n\t\tthis.#focusIntlNumberFormat = new Intl.NumberFormat(this.locale, {\n\t\t\t...this.options,\n\t\t\tminimumFractionDigits: 0,\n\t\t});\n\t}\n\n\t#applyBoundariesToDigitOptions({\n\t\tstyle,\n\t\tminimumFractionDigits,\n\t\tmaximumFractionDigits,\n\t\tminimumIntegerDigits,\n\t\tminimumSignificantDigits,\n\t\tmaximumSignificantDigits,\n\t\t...options\n\t}: Intl.NumberFormatOptions): Intl.NumberFormatOptions {\n\t\tstyle = style ?? 'decimal';\n\t\tif (style !== 'currency') {\n\t\t\t// https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#minimumfractiondigits\n\t\t\tminimumFractionDigits = Math.min(Math.max(minimumFractionDigits ?? 0, 0), 20);\n\t\t\t// https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#maximumfractiondigits\n\t\t\tmaximumFractionDigits = Math.min(Math.max(maximumFractionDigits ?? 2, minimumFractionDigits), 20);\n\t\t\t// https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#maximumfractiondigits\n\t\t\tminimumIntegerDigits = Math.min(Math.max(minimumFractionDigits ?? 1, 1), 21);\n\t\t\t// https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#minimumsignificantdigits\n\t\t\tminimumSignificantDigits = Math.min(Math.max(minimumSignificantDigits ?? 1, 1), 21);\n\t\t\t// https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#maximumsignificantdigits\n\t\t\tmaximumSignificantDigits = Math.min(Math.max(maximumSignificantDigits ?? 21, minimumSignificantDigits), 21);\n\t\t}\n\t\treturn {\n\t\t\t...options,\n\t\t\tstyle,\n\t\t\tminimumFractionDigits,\n\t\t\tmaximumFractionDigits,\n\t\t\tminimumIntegerDigits,\n\t\t\tminimumSignificantDigits,\n\t\t\tmaximumSignificantDigits,\n\t\t};\n\t}\n\n\tgetSuffix(value: number | null): string | null {\n\t\tvalue = value ?? 1;\n\n\t\t// Parts after digits are suffix\n\t\tconst parts = this.#intlNumberFormat.formatToParts(value).reverse();\n\t\tconst indexOfFirstDigit = parts.findIndex((p) => DIGIT_TYPES.includes(p.type));\n\t\tconst indexOfFirstSuffix = parts.findIndex((p) => SUFFIX_PREFIX_TYPES.includes(p.type));\n\t\tif (indexOfFirstSuffix >= 0 && indexOfFirstSuffix < indexOfFirstDigit) {\n\t\t\treturn parts[indexOfFirstSuffix].value;\n\t\t}\n\t\treturn null;\n\t}\n\n\tgetPrefix(value: number | null): string | null {\n\t\tvalue = value ?? 1;\n\n\t\t// Parts before digits are prefix\n\t\tconst parts = this.#intlNumberFormat.formatToParts(value);\n\t\tconst indexOfLastDigit = parts.findIndex((p) => DIGIT_TYPES.includes(p.type));\n\t\tconst indexOfLastSuffix = parts.findIndex((p) => SUFFIX_PREFIX_TYPES.includes(p.type));\n\t\tif (indexOfLastSuffix >= 0 && indexOfLastSuffix < indexOfLastDigit) {\n\t\t\treturn parts[indexOfLastSuffix].value;\n\t\t}\n\t\treturn null;\n\t}\n\n\tapplyRange(value: number | null): number | null {\n\t\tif (value === null) {\n\t\t\treturn null;\n\t\t}\n\t\tif (this.min !== undefined) {\n\t\t\tvalue = Math.max(this.min, value);\n\t\t}\n\t\tif (this.max !== undefined) {\n\t\t\tvalue = Math.min(this.max, value);\n\t\t}\n\t\treturn value;\n\t}\n\n\t#parseAndSplitInput(input: string): NumberFormatSplittedInput {\n\t\tlet minusSign = /^-/g.exec(input)?.[0] ?? '';\n\t\t// if minus sign has been input but range only allows positive values, remove it\n\t\tif (this.min >= 0) {\n\t\t\tminusSign = '';\n\t\t}\n\n\t\t// Add minus sign by default if range only allows negative values\n\t\tif (this.max < 0) {\n\t\t\tminusSign = '-';\n\t\t}\n\n\t\t// Keep only digits and decimal delimiter\n\t\tinput = input.replace(/[^.,0-9]/g, '');\n\n\t\t// Replace decimal delimiter ',' by '.' before casting string to number\n\t\tinput = input.replace(/,/g, '.');\n\n\t\tconst parts = input.split('.');\n\t\tconst integer = parts[0];\n\t\tconst fraction = parts\n\t\t\t.slice(1)\n\t\t\t.join('')\n\t\t\t//ignore digits above maximumFractionDigits\n\t\t\t.slice(0, this.options.maximumFractionDigits ?? 2);\n\t\tconst delimiter = parts.length > 1 ? '.' : '';\n\n\t\tconst splittedInput: NumberFormatSplittedInput = {\n\t\t\tminusSign,\n\t\t\tinteger,\n\t\t\tdelimiter,\n\t\t\tfraction,\n\t\t};\n\n\t\t// cast input in number only if it has integer or fraction\n\t\tif (canCastSplittedInputToNumber(splittedInput)) {\n\t\t\tlet value = +joinSplittedInput(splittedInput);\n\t\t\tif (this.options.style === 'percent') {\n\t\t\t\tvalue /= 100;\n\t\t\t\tvalue = +value.toFixed(this.options.maximumFractionDigits + 2);\n\t\t\t}\n\n\t\t\t// if value is not in range, fix it and split again !\n\t\t\tconst valueInRange = this.applyRange(value);\n\t\t\tif (value !== valueInRange) {\n\t\t\t\treturn this.#parseAndSplitInput(this.getFocusFormat(valueInRange));\n\t\t\t}\n\t\t}\n\t\treturn splittedInput;\n\t}\n\n\tparse(input: string): NumberFormatParsedInput {\n\t\tconst splittedInput = this.#parseAndSplitInput(input);\n\t\tconst cleanInput = joinSplittedInput(splittedInput);\n\t\tlet value: number | null = null;\n\n\t\tif (canCastSplittedInputToNumber(splittedInput)) {\n\t\t\tvalue = +joinSplittedInput(splittedInput);\n\t\t\tif (this.options.style === 'percent') {\n\t\t\t\tvalue /= 100;\n\t\t\t\tvalue = +value.toFixed(this.options.maximumFractionDigits + 2);\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsplittedInput,\n\t\t\tcleanInput,\n\t\t\tvalue,\n\t\t};\n\t}\n\n\tformat(value: number | null): string {\n\t\tif (value === null) {\n\t\t\treturn '';\n\t\t}\n\t\treturn this.#intlNumberFormat.format(value);\n\t}\n\n\tgetFocusFormat(value: number | undefined | null): string {\n\t\tif (value === null || value === undefined || isNaN(value)) {\n\t\t\t// Add minus sign by default if range only allows negative values\n\t\t\treturn this.max < 0 ? '-' : '';\n\t\t}\n\t\tconst parts = this.#focusIntlNumberFormat.formatToParts(value);\n\t\tconst minusSign = parts.find((p) => p.type === 'minusSign')?.value ?? '';\n\t\tconst integerPart = parts\n\t\t\t.filter((p) => p.type === 'integer')\n\t\t\t.map((p) => p.value)\n\t\t\t.join('');\n\t\tconst decimal = parts.find((p) => p.type === 'decimal') ? '.' : '';\n\t\tconst fractionPart = parts\n\t\t\t.filter((p) => p.type === 'fraction')\n\t\t\t.map((p) => p.value)\n\t\t\t.join('');\n\n\t\treturn `${minusSign}${integerPart}${decimal}${fractionPart}`;\n\t}\n\n\tgetBlurFormat(value: number | undefined | null): string {\n\t\tif (value === null || value === undefined) {\n\t\t\treturn '';\n\t\t}\n\t\treturn this.#intlNumberFormat\n\t\t\t.formatToParts(value)\n\t\t\t.filter((p) => VALUE_TYPES.includes(p.type))\n\t\t\t.map((p) => {\n\t\t\t\tif (p.type === 'minusSign') {\n\t\t\t\t\treturn '−';\n\t\t\t\t}\n\t\t\t\treturn p.value;\n\t\t\t})\n\t\t\t.join('');\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { NumberFormatOptions } from './number-format.models';\nimport { NumberFormat } from './number-format';\n\n@Pipe({\n\tname: 'luNumberFormat',\n\tstandalone: true,\n})\nexport class LuFormatNumberPipe implements PipeTransform {\n\ttransform(value: number, options: NumberFormatOptions) {\n\t\treturn new NumberFormat(options).format(value);\n\t}\n}\n","// Based on Intl number input\n// (more info: https://dm4t2.github.io/)\n\nimport { computed, Directive, ElementRef, forwardRef, HostListener, inject, input, Renderer2, signal } from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NumberFormat } from './number-format';\nimport { NumberFormatOptions } from './number-format.models';\n\n@Directive({\n\tselector: 'input[luNumberFormatInput]',\n\tstandalone: true,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => NumberFormatDirective),\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class NumberFormatDirective implements ControlValueAccessor {\n\treadonly #inputElement = inject<ElementRef<HTMLInputElement>>(ElementRef<HTMLInputElement>).nativeElement;\n\treadonly #renderer = inject(Renderer2);\n\n\t#value = signal<number | undefined | null>(null);\n\t#isFocused = signal<boolean>(false);\n\n\tformatOptions = input.required<NumberFormatOptions>();\n\t#numberFormat = computed(() => {\n\t\treturn new NumberFormat(this.formatOptions());\n\t});\n\n\tonChange: (_value: number | undefined | null) => void = () => {};\n\n\tonTouched: () => void = (): void => {};\n\n\twriteValue(value: number | undefined | null): void {\n\t\tvalue = this.#numberFormat().applyRange(value);\n\t\tthis.#value.set(value);\n\t\tthis.#inputElement.value = this.#isFocused() ? this.#numberFormat().getFocusFormat(value) : this.#numberFormat().getBlurFormat(value);\n\t}\n\n\tregisterOnChange(fn: (_value: number | undefined | null) => void): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: () => void): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.#renderer.setProperty(this.#inputElement, 'disabled', isDisabled);\n\t}\n\t@HostListener('focus') focus(): void {\n\t\tthis.#isFocused.set(true);\n\t\tthis.#inputElement.value = this.#numberFormat().getFocusFormat(this.#value());\n\t}\n\n\t@HostListener('blur') lostFocus(): void {\n\t\tthis.#isFocused.set(false);\n\t\tthis.#inputElement.value = this.#numberFormat().getBlurFormat(this.#value());\n\t\tthis.onTouched();\n\t}\n\n\t@HostListener('input') input(): void {\n\t\tconst parsedInput = this.#numberFormat().parse(this.#inputElement.value);\n\n\t\tthis.#inputElement.value = parsedInput.cleanInput;\n\n\t\tthis.#value.set(parsedInput.value);\n\n\t\tthis.onChange?.(parsedInput.value);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,18 @@ class ScrollBoxComponent {
|
|
|
6
6
|
this.#elementRef = inject(ElementRef);
|
|
7
7
|
this.isFirstVisible = signal(false);
|
|
8
8
|
this.isLastVisible = signal(false);
|
|
9
|
+
this.observeFirstAndLastElement = () => {
|
|
10
|
+
const children = this.#elementRef.nativeElement.children;
|
|
11
|
+
[].forEach.call(children, (child, index) => {
|
|
12
|
+
if (index === 0) {
|
|
13
|
+
this.initObserver(child, true);
|
|
14
|
+
}
|
|
15
|
+
if (index === children.length - 1) {
|
|
16
|
+
this.initObserver(child, false);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
this.observer = new MutationObserver(this.observeFirstAndLastElement);
|
|
9
21
|
}
|
|
10
22
|
#elementRef;
|
|
11
23
|
get isFirstVisibleClass() {
|
|
@@ -29,15 +41,11 @@ class ScrollBoxComponent {
|
|
|
29
41
|
}).observe(element);
|
|
30
42
|
}
|
|
31
43
|
ngOnInit() {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (index === children.length - 1) {
|
|
38
|
-
this.initObserver(child, false);
|
|
39
|
-
}
|
|
40
|
-
});
|
|
44
|
+
this.observeFirstAndLastElement();
|
|
45
|
+
this.observer.observe(this.#elementRef.nativeElement, { childList: true });
|
|
46
|
+
}
|
|
47
|
+
ngOnDestroy() {
|
|
48
|
+
this.observer.disconnect();
|
|
41
49
|
}
|
|
42
50
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: ScrollBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
43
51
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: ScrollBoxComponent, isStandalone: true, selector: "lu-scroll-box", host: { properties: { "class.is-firstVisible": "this.isFirstVisibleClass", "class.is-lastVisible": "this.isLastVisibleClass" }, classAttribute: "scrollBox" }, ngImport: i0, template: '<ng-content />', isInline: true, styles: [".scrollBox{--components-scrollBox-backgroundColor: var(--pr-t-elevation-surface-default);--components-scrollBox-shadowColor: var(--palettes-neutral-400);--components-scrollBox-shadowSize: var(--pr-t-spacings-150);--components-scrollBox-beforeOpacity: 1;--components-scrollBox-afterOpacity: 1;--components-scrollBox-gap: var(--pr-t-spacings-100);--components-scrollBox-scrollBarWidth: thin;--components-scrollBox-paddingInline: var(--pr-t-spacings-200);--components-scrollBox-paddingBlock: var(--pr-t-spacings-100);--components-scrollBox-marginInline: calc(var(--components-scrollBox-paddingInline) * -1);--components-scrollBox-marginBlock: calc(var(--components-scrollBox-paddingBlock) * -1);--components-scrollBox-wrap: nowrap;--components-scrollBox-pseudoElementsContent: \"\";background-color:var(--components-scrollBox-backgroundColor);position:relative;display:flex;flex-wrap:var(--components-scrollBox-wrap);gap:var(--components-scrollBox-gap);overflow:auto;scrollbar-width:var(--components-scrollBox-scrollBarWidth);margin-inline:var(--components-scrollBox-marginInline);padding-inline:var(--components-scrollBox-paddingInline);padding-block:var(--components-scrollBox-paddingBlock);margin-block:var(--components-scrollBox-marginBlock);border-radius:var(--commons-borderRadius-M)}.scrollBox:focus-visible{outline:2px solid var(--palettes-product-700);outline-offset:0}.scrollBox:before,.scrollBox:after{content:var(--components-scrollBox-pseudoElementsContent);pointer-events:none;position:sticky;flex-shrink:0;inline-size:var(--components-scrollBox-shadowSize);inset-block:0;margin-block:calc(var(--components-scrollBox-paddingBlock) * -1);background-repeat:no-repeat;z-index:10;align-self:stretch;background-size:75% 100%,25% 100%,1px 100%}.scrollBox:before{opacity:var(--components-scrollBox-beforeOpacity);inset-inline-start:calc(var(--components-scrollBox-paddingInline) * -1);margin-inline-end:calc(var(--components-scrollBox-shadowSize) * -1 - var(--components-scrollBox-gap));background-position:0% 50%;background-image:radial-gradient(farthest-side at 0% 50%,color-mix(in var(--commons-colorSpace, srgb),var(--components-scrollBox-shadowColor) 24%,transparent),color-mix(in var(--commons-colorSpace, srgb),var(--palettes-neutral-900) 0%,transparent)),radial-gradient(farthest-side at 0% 50%,color-mix(in var(--commons-colorSpace, srgb),var(--components-scrollBox-shadowColor) 32%,transparent) 50%,color-mix(in var(--commons-colorSpace, srgb),var(--palettes-neutral-900) 0%,transparent)),radial-gradient(farthest-side at 0% 50%,color-mix(in var(--commons-colorSpace, srgb),var(--components-scrollBox-shadowColor) 100%,transparent) calc(100% - 1px),color-mix(in var(--commons-colorSpace, srgb),var(--palettes-neutral-900) 0%,transparent))}.scrollBox:after{opacity:var(--components-scrollBox-afterOpacity);inset-inline-end:calc(var(--components-scrollBox-paddingInline) * -1);margin-inline-start:calc(var(--components-scrollBox-shadowSize) * -1 - var(--components-scrollBox-gap));background-position:100% 50%;background-image:radial-gradient(farthest-side at 100% 50%,color-mix(in var(--commons-colorSpace, srgb),var(--components-scrollBox-shadowColor) 24%,transparent),color-mix(in var(--commons-colorSpace, srgb),var(--palettes-neutral-900) 0%,transparent)),radial-gradient(farthest-side at 100% 50%,color-mix(in var(--commons-colorSpace, srgb),var(--components-scrollBox-shadowColor) 32%,transparent) 50%,color-mix(in var(--commons-colorSpace, srgb),var(--palettes-neutral-900) 0%,transparent)),radial-gradient(farthest-side at 100% 50%,color-mix(in var(--commons-colorSpace, srgb),var(--components-scrollBox-shadowColor) 100%,transparent) calc(100% - 1px),color-mix(in var(--commons-colorSpace, srgb),var(--palettes-neutral-900) 0%,transparent))}.scrollBox.is-firstVisible{--components-scrollBox-beforeOpacity: 0}.scrollBox.is-lastVisible{--components-scrollBox-afterOpacity: 0}.scrollBox.is-disabled{--components-scrollBox-wrap: wrap;--components-scrollBox-pseudoElementsContent: none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucca-front-ng-scrollBox.mjs","sources":["../../../packages/ng/scrollBox/scroll-box.component.ts","../../../packages/ng/scrollBox/lucca-front-ng-scrollBox.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, inject, OnInit, signal, ViewEncapsulation } from '@angular/core';\n\n@Component({\n\tselector: 'lu-scroll-box',\n\tstandalone: true,\n\ttemplate: '<ng-content />',\n\tstyleUrls: ['./scroll-box.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\timports: [],\n\thost: {\n\t\tclass: 'scrollBox',\n\t},\n})\nexport class ScrollBoxComponent implements OnInit {\n\t#elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t@HostBinding('class.is-firstVisible')\n\tget isFirstVisibleClass() {\n\t\treturn this.isFirstVisible();\n\t}\n\tisFirstVisible = signal(false);\n\n\t@HostBinding('class.is-lastVisible')\n\tget isLastVisibleClass() {\n\t\treturn this.isLastVisible();\n\t}\n\tisLastVisible = signal(false);\n\n\tinitObserver(element: Element, isFirst: boolean) {\n\t\tnew IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tentries.forEach((entry) => {\n\t\t\t\t\tif (isFirst) {\n\t\t\t\t\t\tthis.isFirstVisible.set(entry.isIntersecting);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.isLastVisible.set(entry.isIntersecting);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t{\n\t\t\t\tthreshold: 1.0,\n\t\t\t},\n\t\t).observe(element);\n\t}\n\n\
|
|
1
|
+
{"version":3,"file":"lucca-front-ng-scrollBox.mjs","sources":["../../../packages/ng/scrollBox/scroll-box.component.ts","../../../packages/ng/scrollBox/lucca-front-ng-scrollBox.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, inject, OnDestroy, OnInit, signal, ViewEncapsulation } from '@angular/core';\n\n@Component({\n\tselector: 'lu-scroll-box',\n\tstandalone: true,\n\ttemplate: '<ng-content />',\n\tstyleUrls: ['./scroll-box.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\timports: [],\n\thost: {\n\t\tclass: 'scrollBox',\n\t},\n})\nexport class ScrollBoxComponent implements OnInit, OnDestroy {\n\t#elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t@HostBinding('class.is-firstVisible')\n\tget isFirstVisibleClass() {\n\t\treturn this.isFirstVisible();\n\t}\n\tisFirstVisible = signal(false);\n\n\t@HostBinding('class.is-lastVisible')\n\tget isLastVisibleClass() {\n\t\treturn this.isLastVisible();\n\t}\n\tisLastVisible = signal(false);\n\n\tinitObserver(element: Element, isFirst: boolean) {\n\t\tnew IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tentries.forEach((entry) => {\n\t\t\t\t\tif (isFirst) {\n\t\t\t\t\t\tthis.isFirstVisible.set(entry.isIntersecting);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.isLastVisible.set(entry.isIntersecting);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t{\n\t\t\t\tthreshold: 1.0,\n\t\t\t},\n\t\t).observe(element);\n\t}\n\n\tobserveFirstAndLastElement = () => {\n\t\tconst children = this.#elementRef.nativeElement.children;\n\n\t\t[].forEach.call(children, (child, index) => {\n\t\t\tif (index === 0) {\n\t\t\t\tthis.initObserver(child as Element, true);\n\t\t\t}\n\n\t\t\tif (index === children.length - 1) {\n\t\t\t\tthis.initObserver(child as Element, false);\n\t\t\t}\n\t\t});\n\t};\n\n\tobserver = new MutationObserver(this.observeFirstAndLastElement);\n\n\tngOnInit() {\n\t\tthis.observeFirstAndLastElement();\n\t\tthis.observer.observe(this.#elementRef.nativeElement, { childList: true });\n\t}\n\n\tngOnDestroy() {\n\t\tthis.observer.disconnect();\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lucca-front/ng",
|
|
3
|
-
"version": "19.3.
|
|
3
|
+
"version": "19.3.4",
|
|
4
4
|
"description": "A library of icons made by the team @Lucca",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"@angular/common": "^19.0.0",
|
|
27
27
|
"@angular/core": "^19.0.0",
|
|
28
28
|
"@angular/cdk": "^19.0.0",
|
|
29
|
-
"@lucca-front/icons": "19.3.
|
|
30
|
-
"@lucca-front/scss": "19.3.
|
|
29
|
+
"@lucca-front/icons": "19.3.4",
|
|
30
|
+
"@lucca-front/scss": "19.3.4",
|
|
31
31
|
"isomorphic-dompurify": "^2.17.0",
|
|
32
32
|
"date-fns": "^3.6.0",
|
|
33
33
|
"rxjs": "^7.8.0",
|
|
@@ -83,14 +83,14 @@
|
|
|
83
83
|
"types": "./a11y/index.d.ts",
|
|
84
84
|
"default": "./fesm2022/lucca-front-ng-a11y.mjs"
|
|
85
85
|
},
|
|
86
|
-
"./button": {
|
|
87
|
-
"types": "./button/index.d.ts",
|
|
88
|
-
"default": "./fesm2022/lucca-front-ng-button.mjs"
|
|
89
|
-
},
|
|
90
86
|
"./animations": {
|
|
91
87
|
"types": "./animations/index.d.ts",
|
|
92
88
|
"default": "./fesm2022/lucca-front-ng-animations.mjs"
|
|
93
89
|
},
|
|
90
|
+
"./button": {
|
|
91
|
+
"types": "./button/index.d.ts",
|
|
92
|
+
"default": "./fesm2022/lucca-front-ng-button.mjs"
|
|
93
|
+
},
|
|
94
94
|
"./breadcrumbs": {
|
|
95
95
|
"types": "./breadcrumbs/index.d.ts",
|
|
96
96
|
"default": "./fesm2022/lucca-front-ng-breadcrumbs.mjs"
|
|
@@ -119,30 +119,30 @@
|
|
|
119
119
|
"types": "./core-select/index.d.ts",
|
|
120
120
|
"default": "./fesm2022/lucca-front-ng-core-select.mjs"
|
|
121
121
|
},
|
|
122
|
-
"./department": {
|
|
123
|
-
"types": "./department/index.d.ts",
|
|
124
|
-
"default": "./fesm2022/lucca-front-ng-department.mjs"
|
|
125
|
-
},
|
|
126
122
|
"./date": {
|
|
127
123
|
"types": "./date/index.d.ts",
|
|
128
124
|
"default": "./fesm2022/lucca-front-ng-date.mjs"
|
|
129
125
|
},
|
|
130
|
-
"./
|
|
131
|
-
"types": "./
|
|
132
|
-
"default": "./fesm2022/lucca-front-ng-
|
|
126
|
+
"./date2": {
|
|
127
|
+
"types": "./date2/index.d.ts",
|
|
128
|
+
"default": "./fesm2022/lucca-front-ng-date2.mjs"
|
|
129
|
+
},
|
|
130
|
+
"./department": {
|
|
131
|
+
"types": "./department/index.d.ts",
|
|
132
|
+
"default": "./fesm2022/lucca-front-ng-department.mjs"
|
|
133
133
|
},
|
|
134
134
|
"./dialog": {
|
|
135
135
|
"types": "./dialog/index.d.ts",
|
|
136
136
|
"default": "./fesm2022/lucca-front-ng-dialog.mjs"
|
|
137
137
|
},
|
|
138
|
-
"./date2": {
|
|
139
|
-
"types": "./date2/index.d.ts",
|
|
140
|
-
"default": "./fesm2022/lucca-front-ng-date2.mjs"
|
|
141
|
-
},
|
|
142
138
|
"./empty-state": {
|
|
143
139
|
"types": "./empty-state/index.d.ts",
|
|
144
140
|
"default": "./fesm2022/lucca-front-ng-empty-state.mjs"
|
|
145
141
|
},
|
|
142
|
+
"./divider": {
|
|
143
|
+
"types": "./divider/index.d.ts",
|
|
144
|
+
"default": "./fesm2022/lucca-front-ng-divider.mjs"
|
|
145
|
+
},
|
|
146
146
|
"./dropdown": {
|
|
147
147
|
"types": "./dropdown/index.d.ts",
|
|
148
148
|
"default": "./fesm2022/lucca-front-ng-dropdown.mjs"
|
|
@@ -175,34 +175,34 @@
|
|
|
175
175
|
"types": "./form-field/index.d.ts",
|
|
176
176
|
"default": "./fesm2022/lucca-front-ng-form-field.mjs"
|
|
177
177
|
},
|
|
178
|
-
"./highlight-data": {
|
|
179
|
-
"types": "./highlight-data/index.d.ts",
|
|
180
|
-
"default": "./fesm2022/lucca-front-ng-highlight-data.mjs"
|
|
181
|
-
},
|
|
182
178
|
"./forms": {
|
|
183
179
|
"types": "./forms/index.d.ts",
|
|
184
180
|
"default": "./fesm2022/lucca-front-ng-forms.mjs"
|
|
185
181
|
},
|
|
186
|
-
"./
|
|
187
|
-
"types": "./
|
|
188
|
-
"default": "./fesm2022/lucca-front-ng-
|
|
182
|
+
"./highlight-data": {
|
|
183
|
+
"types": "./highlight-data/index.d.ts",
|
|
184
|
+
"default": "./fesm2022/lucca-front-ng-highlight-data.mjs"
|
|
189
185
|
},
|
|
190
186
|
"./icon": {
|
|
191
187
|
"types": "./icon/index.d.ts",
|
|
192
188
|
"default": "./fesm2022/lucca-front-ng-icon.mjs"
|
|
193
189
|
},
|
|
190
|
+
"./horizontal-navigation": {
|
|
191
|
+
"types": "./horizontal-navigation/index.d.ts",
|
|
192
|
+
"default": "./fesm2022/lucca-front-ng-horizontal-navigation.mjs"
|
|
193
|
+
},
|
|
194
194
|
"./inline-message": {
|
|
195
195
|
"types": "./inline-message/index.d.ts",
|
|
196
196
|
"default": "./fesm2022/lucca-front-ng-inline-message.mjs"
|
|
197
197
|
},
|
|
198
|
-
"./link": {
|
|
199
|
-
"types": "./link/index.d.ts",
|
|
200
|
-
"default": "./fesm2022/lucca-front-ng-link.mjs"
|
|
201
|
-
},
|
|
202
198
|
"./input": {
|
|
203
199
|
"types": "./input/index.d.ts",
|
|
204
200
|
"default": "./fesm2022/lucca-front-ng-input.mjs"
|
|
205
201
|
},
|
|
202
|
+
"./link": {
|
|
203
|
+
"types": "./link/index.d.ts",
|
|
204
|
+
"default": "./fesm2022/lucca-front-ng-link.mjs"
|
|
205
|
+
},
|
|
206
206
|
"./multi-select": {
|
|
207
207
|
"types": "./multi-select/index.d.ts",
|
|
208
208
|
"default": "./fesm2022/lucca-front-ng-multi-select.mjs"
|
|
@@ -219,10 +219,6 @@
|
|
|
219
219
|
"types": "./number/index.d.ts",
|
|
220
220
|
"default": "./fesm2022/lucca-front-ng-number.mjs"
|
|
221
221
|
},
|
|
222
|
-
"./number-format": {
|
|
223
|
-
"types": "./number-format/index.d.ts",
|
|
224
|
-
"default": "./fesm2022/lucca-front-ng-number-format.mjs"
|
|
225
|
-
},
|
|
226
222
|
"./numeric-badge": {
|
|
227
223
|
"types": "./numeric-badge/index.d.ts",
|
|
228
224
|
"default": "./fesm2022/lucca-front-ng-numeric-badge.mjs"
|
|
@@ -231,6 +227,10 @@
|
|
|
231
227
|
"types": "./option/index.d.ts",
|
|
232
228
|
"default": "./fesm2022/lucca-front-ng-option.mjs"
|
|
233
229
|
},
|
|
230
|
+
"./number-format": {
|
|
231
|
+
"types": "./number-format/index.d.ts",
|
|
232
|
+
"default": "./fesm2022/lucca-front-ng-number-format.mjs"
|
|
233
|
+
},
|
|
234
234
|
"./page-header": {
|
|
235
235
|
"types": "./page-header/index.d.ts",
|
|
236
236
|
"default": "./fesm2022/lucca-front-ng-page-header.mjs"
|
|
@@ -255,22 +255,22 @@
|
|
|
255
255
|
"types": "./popup/index.d.ts",
|
|
256
256
|
"default": "./fesm2022/lucca-front-ng-popup.mjs"
|
|
257
257
|
},
|
|
258
|
-
"./qualification": {
|
|
259
|
-
"types": "./qualification/index.d.ts",
|
|
260
|
-
"default": "./fesm2022/lucca-front-ng-qualification.mjs"
|
|
261
|
-
},
|
|
262
258
|
"./popup-employee": {
|
|
263
259
|
"types": "./popup-employee/index.d.ts",
|
|
264
260
|
"default": "./fesm2022/lucca-front-ng-popup-employee.mjs"
|
|
265
261
|
},
|
|
266
|
-
"./
|
|
267
|
-
"types": "./
|
|
268
|
-
"default": "./fesm2022/lucca-front-ng-
|
|
262
|
+
"./qualification": {
|
|
263
|
+
"types": "./qualification/index.d.ts",
|
|
264
|
+
"default": "./fesm2022/lucca-front-ng-qualification.mjs"
|
|
269
265
|
},
|
|
270
266
|
"./read-more": {
|
|
271
267
|
"types": "./read-more/index.d.ts",
|
|
272
268
|
"default": "./fesm2022/lucca-front-ng-read-more.mjs"
|
|
273
269
|
},
|
|
270
|
+
"./safe-content": {
|
|
271
|
+
"types": "./safe-content/index.d.ts",
|
|
272
|
+
"default": "./fesm2022/lucca-front-ng-safe-content.mjs"
|
|
273
|
+
},
|
|
274
274
|
"./scroll": {
|
|
275
275
|
"types": "./scroll/index.d.ts",
|
|
276
276
|
"default": "./fesm2022/lucca-front-ng-scroll.mjs"
|
|
@@ -279,14 +279,14 @@
|
|
|
279
279
|
"types": "./scrollBox/index.d.ts",
|
|
280
280
|
"default": "./fesm2022/lucca-front-ng-scrollBox.mjs"
|
|
281
281
|
},
|
|
282
|
-
"./sidepanel": {
|
|
283
|
-
"types": "./sidepanel/index.d.ts",
|
|
284
|
-
"default": "./fesm2022/lucca-front-ng-sidepanel.mjs"
|
|
285
|
-
},
|
|
286
282
|
"./select": {
|
|
287
283
|
"types": "./select/index.d.ts",
|
|
288
284
|
"default": "./fesm2022/lucca-front-ng-select.mjs"
|
|
289
285
|
},
|
|
286
|
+
"./sidepanel": {
|
|
287
|
+
"types": "./sidepanel/index.d.ts",
|
|
288
|
+
"default": "./fesm2022/lucca-front-ng-sidepanel.mjs"
|
|
289
|
+
},
|
|
290
290
|
"./simple-select": {
|
|
291
291
|
"types": "./simple-select/index.d.ts",
|
|
292
292
|
"default": "./fesm2022/lucca-front-ng-simple-select.mjs"
|
|
@@ -327,14 +327,14 @@
|
|
|
327
327
|
"types": "./core-select/api/index.d.ts",
|
|
328
328
|
"default": "./fesm2022/lucca-front-ng-core-select-api.mjs"
|
|
329
329
|
},
|
|
330
|
-
"./core-select/job-qualification": {
|
|
331
|
-
"types": "./core-select/job-qualification/index.d.ts",
|
|
332
|
-
"default": "./fesm2022/lucca-front-ng-core-select-job-qualification.mjs"
|
|
333
|
-
},
|
|
334
330
|
"./core-select/establishment": {
|
|
335
331
|
"types": "./core-select/establishment/index.d.ts",
|
|
336
332
|
"default": "./fesm2022/lucca-front-ng-core-select-establishment.mjs"
|
|
337
333
|
},
|
|
334
|
+
"./core-select/job-qualification": {
|
|
335
|
+
"types": "./core-select/job-qualification/index.d.ts",
|
|
336
|
+
"default": "./fesm2022/lucca-front-ng-core-select-job-qualification.mjs"
|
|
337
|
+
},
|
|
338
338
|
"./core-select/user": {
|
|
339
339
|
"types": "./core-select/user/index.d.ts",
|
|
340
340
|
"default": "./fesm2022/lucca-front-ng-core-select-user.mjs"
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import { OnInit } from '@angular/core';
|
|
1
|
+
import { OnDestroy, OnInit } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class ScrollBoxComponent implements OnInit {
|
|
3
|
+
export declare class ScrollBoxComponent implements OnInit, OnDestroy {
|
|
4
4
|
#private;
|
|
5
5
|
get isFirstVisibleClass(): boolean;
|
|
6
6
|
isFirstVisible: import("@angular/core").WritableSignal<boolean>;
|
|
7
7
|
get isLastVisibleClass(): boolean;
|
|
8
8
|
isLastVisible: import("@angular/core").WritableSignal<boolean>;
|
|
9
9
|
initObserver(element: Element, isFirst: boolean): void;
|
|
10
|
+
observeFirstAndLastElement: () => void;
|
|
11
|
+
observer: MutationObserver;
|
|
10
12
|
ngOnInit(): void;
|
|
13
|
+
ngOnDestroy(): void;
|
|
11
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScrollBoxComponent, never>;
|
|
12
15
|
static ɵcmp: i0.ɵɵComponentDeclaration<ScrollBoxComponent, "lu-scroll-box", never, {}, {}, never, ["*"], true, never>;
|
|
13
16
|
}
|