mirror of
https://github.com/barsdeveloper/ueblueprint.git
synced 2026-05-20 04:47:35 +08:00
Filterable attributes, Int64 entity
This commit is contained in:
@@ -1,29 +0,0 @@
|
||||
import { html } from "lit"
|
||||
import ByteEntity from "../../entity/ByteEntity"
|
||||
import IInputPinTemplate from "./IInputPinTemplate"
|
||||
import INumericInputPinTemplate from "./INumericInputPinTemplate"
|
||||
|
||||
/** @typedef {import("../../entity/IntegerEntity").default} IntEntity */
|
||||
|
||||
/** @extends INumericInputPinTemplate<ByteEntity> */
|
||||
export default class IntInputPinTemplate extends INumericInputPinTemplate {
|
||||
|
||||
setDefaultValue(values = [], rawValues = values) {
|
||||
const integer = this.element.getDefaultValue(true)
|
||||
if (!(integer instanceof ByteEntity)) {
|
||||
throw new TypeError("Expected DefaultValue to be a ByteEntity")
|
||||
}
|
||||
integer.value = values[0]
|
||||
this.element.requestUpdate("DefaultValue", integer)
|
||||
}
|
||||
|
||||
renderInput() {
|
||||
return html`
|
||||
<div class="ueb-pin-input">
|
||||
<ueb-input .singleLine="${true}"
|
||||
.innerText="${IInputPinTemplate.stringFromUEToInput(this.element.getDefaultValue()?.toString() ?? "0")}">
|
||||
</ueb-input>
|
||||
</div>
|
||||
`
|
||||
}
|
||||
}
|
||||
@@ -13,17 +13,19 @@ export default class INumericPinTemplate extends IInputPinTemplate {
|
||||
if (!values || values.length == 0) {
|
||||
values = [this.getInput()]
|
||||
}
|
||||
let parsedValues = []
|
||||
for (const value of values) {
|
||||
let num = parseFloat(value)
|
||||
if (isNaN(num)) {
|
||||
num = 0
|
||||
updateDefaultValue = false
|
||||
}
|
||||
parsedValues.push(num)
|
||||
}
|
||||
super.setInputs(values, false)
|
||||
this.setDefaultValue(parsedValues, values)
|
||||
if (updateDefaultValue) {
|
||||
let parsedValues = []
|
||||
for (const value of values) {
|
||||
let num = parseFloat(value)
|
||||
if (isNaN(num)) {
|
||||
num = 0
|
||||
updateDefaultValue = false
|
||||
}
|
||||
parsedValues.push(num)
|
||||
}
|
||||
this.setDefaultValue(parsedValues, values)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -13,18 +13,17 @@ export default class InputTemplate extends ITemplate {
|
||||
}
|
||||
#focusoutHandler = () => {
|
||||
this.blueprint.acknowledgeEditText(false)
|
||||
document.getSelection()?.removeAllRanges() // Deselect eventually selected text inside the input
|
||||
getSelection().removeAllRanges() // Deselect eventually selected text inside the input
|
||||
}
|
||||
#inputSingleLineHandler =
|
||||
/** @param {InputEvent} e */
|
||||
e => /** @type {HTMLElement} */(e.target).querySelectorAll("br").forEach(br => br.remove())
|
||||
#onKeydownBlurOnEnterHandler =
|
||||
/** @param {KeyboardEvent} e */
|
||||
e => {
|
||||
if (e.code == "Enter" && !e.shiftKey) {
|
||||
/** @type {HTMLElement} */(e.target).blur()
|
||||
}
|
||||
/** @param {InputEvent} e */
|
||||
#inputSingleLineHandler = e =>
|
||||
/** @type {HTMLElement} */(e.target).querySelectorAll("br").forEach(br => br.remove())
|
||||
/** @param {KeyboardEvent} e */
|
||||
#onKeydownBlurOnEnterHandler = e => {
|
||||
if (e.code == "Enter" && !e.shiftKey) {
|
||||
/** @type {HTMLElement} */(e.target).blur()
|
||||
}
|
||||
}
|
||||
|
||||
/** @param {InputElement} element */
|
||||
initialize(element) {
|
||||
|
||||
23
js/template/pin/Int64PinTemplate.js
Normal file
23
js/template/pin/Int64PinTemplate.js
Normal file
@@ -0,0 +1,23 @@
|
||||
import { html } from "lit"
|
||||
import IntInputPinTemplate from "./IntPinTemplate"
|
||||
import INumericInputPinTemplate from "./INumericInputPinTemplate"
|
||||
|
||||
/** @typedef {import("../../entity/IntegerEntity").default} IntegerEntity */
|
||||
|
||||
export default class Int64InputPinTemplate extends IntInputPinTemplate {
|
||||
|
||||
/** @param {String[]} values */
|
||||
setInputs(values = [], updateDefaultValue = false) {
|
||||
if (!values || values.length == 0) {
|
||||
values = [this.getInput()]
|
||||
}
|
||||
super.setInputs(values, false)
|
||||
if (updateDefaultValue) {
|
||||
if (!values[0].match(/[\-\+]?[0-9]+/)) {
|
||||
return
|
||||
}
|
||||
const parsedValues = [BigInt(values[0])]
|
||||
this.setDefaultValue(parsedValues, values)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,16 @@
|
||||
import { html } from "lit"
|
||||
import IntegerEntity from "../../entity/IntegerEntity"
|
||||
import INumericInputPinTemplate from "./INumericInputPinTemplate"
|
||||
|
||||
/** @typedef {import("../../entity/IntegerEntity").default} IntEntity */
|
||||
/** @typedef {import("../../entity/IntegerEntity").default} IntegerEntity */
|
||||
|
||||
/** @extends INumericInputPinTemplate<IntEntity> */
|
||||
/** @extends INumericInputPinTemplate<IntegerEntity> */
|
||||
export default class IntInputPinTemplate extends INumericInputPinTemplate {
|
||||
|
||||
setDefaultValue(values = [], rawValues = values) {
|
||||
let value = parseInt(values[0])
|
||||
const integer = this.element.getDefaultValue(true)
|
||||
integer.value = values[0]
|
||||
this.element.requestUpdate("DefaultValue", integer)
|
||||
this.inputContentElements[0].innerText = this.element.getDefaultValue()?.toString() // needed
|
||||
this.element.requestUpdate()
|
||||
}
|
||||
|
||||
renderInput() {
|
||||
|
||||
Reference in New Issue
Block a user