Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/biocad-cloud/data.ts
Browse files Browse the repository at this point in the history
  • Loading branch information
xieguigang committed Feb 27, 2024
2 parents d2fb8a2 + 1cd814a commit 81773b7
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 5 deletions.
1 change: 1 addition & 0 deletions LINQ.ts/DOM/Extensions/Abstract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ interface HTMLExtensions {
hide(): IHTMLElement;
addClass(name: string): IHTMLElement;
removeClass(name: string): IHTMLElement;
hasClass(name: string): boolean;
/**
* 当class列表中指定的class名称出现或者消失的时候将会触发给定的action调用
*/
Expand Down
3 changes: 3 additions & 0 deletions LINQ.ts/DOM/Extensions/TypeScriptExtends.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@ namespace TypeExtensions {
extendsNode.removeClass(name);
return node;
}
obj.hasClass = function (name: string): boolean {
return node.classList.contains(name);
}
obj.onClassChanged = function (className: string, action: Delegate.Sub, includesRemoves?: boolean) {
let predicate = new DOM.Events.StatusChanged(function () {
return node.classList.contains(className);
Expand Down
26 changes: 23 additions & 3 deletions LINQ.ts/DOM/InputValueSetter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,24 @@
* 如果目标id标记的控件不是输入类型的,则如果处于非严格模式下,
* 即这个参数为``false``的时候会直接强制读取value属性值
*/
export function setValue(resource: string, value: string, strict: boolean = true) {
export function setValue(resource: string, value: string | number | boolean, strict: boolean = true) {
let input = $ts(resource);
let type: TypeScript.Reflection.TypeInfo = $ts.typeof(input);

if (isNullOrUndefined(value)) {
value = "0";
}

if (!(typeof value === "string")) {
value = value.toString();
}

if (type.isEnumerator) {
setValues(new DOMEnumerator<IHTMLElement>(<any>input), value, strict);
} else {
switch (input.tagName.toLowerCase()) {
case "input":
input.asInput.value = value;
setValues(new DOMEnumerator<IHTMLElement>([input]), value, strict);
break;
case "select":
setSelection(<any>input, value);
Expand Down Expand Up @@ -52,6 +60,18 @@
}
}

function setChecks(inputs: DOMEnumerator<IHTMLElement>, value: boolean) {
for (let input of inputs.Select(i => <HTMLInputElement><any>i).ToArray()) {
input.value = value.toString();

if (value) {
input.checked = true;
} else {
input.checked = false;
}
}
}

/**
* Set option value for checkbox or radio button
*/
Expand Down Expand Up @@ -80,7 +100,7 @@

switch (type.toLowerCase()) {
case "checkbox":
setOption(inputs, value);
setChecks(inputs, typeof value === "string" ? parseBoolean(value) : value);
break;

case "radio":
Expand Down
2 changes: 1 addition & 1 deletion LINQ.ts/Framework/Define/Abstracts/TS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@
*
* @returns 对于checkbox类型的input而言,逻辑值是以字符串的形式返回
*/
value(id: string, set_value?: string, strict?: boolean): any;
value(id: string, set_value?: string | number | boolean, strict?: boolean): any;

typeof<T extends object>(any: T): TypeScript.Reflection.TypeInfo;
clone<T>(obj: T): T;
Expand Down
2 changes: 1 addition & 1 deletion LINQ.ts/Framework/Define/Internal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ namespace Internal {
}
HttpHelpers.Imports.doEval(script, callback);
}
ts.value = function (resource: string, value: string = null, strict: boolean = false) {
ts.value = function (resource: string, value: string | number | boolean = null, strict: boolean = false) {
if (isNullOrUndefined(value)) {
return DOM.InputValueGetter.getValue(resource, strict);
} else {
Expand Down

0 comments on commit 81773b7

Please sign in to comment.